Python'da kpss testi nasıl yapılır?
Bir zaman serisinin durağan bir trende sahip olup olmadığını belirlemek için KPSS testi kullanılabilir.
Bu test aşağıdaki boş ve alternatif hipotezi kullanır:
- H 0 : Zaman serisi durağan bir trende sahiptir.
- H A : Zaman serisi durağan bir trende sahip değildir .
Testin p değeri belirli bir anlamlılık düzeyinin altındaysa (örneğin α = 0,05), boş hipotezi reddeder ve zaman serisinin durağan bir trende sahip olmadığı sonucuna varırız.
Aksi halde sıfır hipotezini reddetmede başarısız oluruz.
Aşağıdaki örnekler Python’da KPSS testinin nasıl gerçekleştirileceğini göstermektedir.
Örnek 1: Python’da KPSS testi (durağan verilerle)
Öncelikle Python’da çalışmak için bazı sahte veriler oluşturalım:
import numpy as np
import matplotlib. pyplot as plt
#make this example reproducible
n.p. random . seed ( 1 )
#create time series data
data = np. random . normal (size= 100 )
#create line plot of time series data
plt. plot (data)
Bu zaman serisi verileri üzerinde KPSS testi gerçekleştirmek için statsmodels paketindeki kpss() fonksiyonunu kullanabiliriz:
import statsmodels. api as sm
#perform KPSS test
sm. tsa . stattools . kpss (data, regression=' ct ')
(0.0477617848370993,
0.1,
1,
{'10%': 0.119, '5%': 0.146, '2.5%': 0.176, '1%': 0.216})
InterpolationWarning: The test statistic is outside of the range of p-values available
in the look-up table. The actual p-value is greater than the p-value returned.
Sonucun nasıl yorumlanacağı aşağıda açıklanmıştır:
- KPSS sınav istatistiği: 0.04776
- P değeri: 0,1
- Kesme ofset parametresi: 1
- %10 , %5 , %2,5 ve %1’de kritik değerler
P değeri 0,1’dir . Bu değer 0,05’ten küçük olmadığı için KPSS testinin sıfır hipotezini reddedemiyoruz.
Bu, zaman serisinin durağan bir trende sahip olduğunu varsayabileceğimiz anlamına gelir.
Not 1 : P değeri aslında 0,1’den büyüktür ancak kpss() fonksiyonunun üreteceği en düşük değer 0,1’dir.
Not 2 : Testin boş hipotezinin verilerin durağan bir trende sahip olduğunu belirtmek için regression=’ct’ argümanını kullanmanız gerekir.
Örnek 2: Python’da KPSS testi (durağan olmayan verilerle)
Öncelikle Python’da çalışmak için bazı sahte veriler oluşturalım:
import numpy as np
import matplotlib. pyplot as plt
#make this example reproducible
n.p. random . seed ( 1 )
#create time series data
data =np. array ([0, 3, 4, 3, 6, 7, 5, 8, 15, 13, 19, 12, 29, 15, 45, 23, 67, 45])
#create line plot of time series data
plt. plot (data)
Yine bu zaman serisi verileri üzerinde KPSS testi gerçekleştirmek için statsmodels paketindeki kpss() fonksiyonunu kullanabiliriz:
import statsmodels. api as sm
#perform KPSS test
sm. tsa . stattools . kpss (data, regression=' ct ')
(0.15096358910843685,
0.04586367574296928,
3,
{'10%': 0.119, '5%': 0.146, '2.5%': 0.176, '1%': 0.216})
Sonucun nasıl yorumlanacağı aşağıda açıklanmıştır:
- KPSS sınav istatistiği: 0.1509
- P değeri: 0,0458
- Kesme ofseti parametresi: 3
- %10 , %5 , %2,5 ve %1’de kritik değerler
P değeri 0,0458’dir . Bu değerin 0,05’ten küçük olması nedeniyle KPSS testinin sıfır hipotezini reddediyoruz.
Bu durum zaman serisinin durağan olmadığı anlamına gelmektedir.
Not : Kpss() işlevine ilişkin tüm belgeleri buradaki statsmodels paketinde bulabilirsiniz.
Ek kaynaklar
Aşağıdaki eğitimler Python’da zaman serisi verileriyle nasıl çalışılacağı hakkında ek bilgi sağlar:
Python’da artırılmış Dickey-Fuller testi nasıl yapılır?
Python’da Mann-Kendall Trend Testi Nasıl Gerçekleştirilir
Matplotlib’de bir zaman serisi nasıl çizilir