Python'da mann-kendall trend testi nasıl yapılır?
Zaman serisi verilerinde trend olup olmadığını belirlemek için Mann-Kendall trend testi kullanılmaktadır. Bu parametrik olmayan bir testtir, yani verilerin normalliği hakkında hiçbir temel varsayım yapılmaz.
Test hipotezleri aşağıdaki gibidir:
H 0 (sıfır hipotezi): verilerde herhangi bir eğilim mevcut değildir.
H A (alternatif hipotez): Verilerde bir eğilim mevcuttur. (Bu olumlu ya da olumsuz bir eğilim olabilir)
Testin p değeri belirli bir anlamlılık düzeyinin altındaysa (ortak seçenekler 0,10, 0,05 ve 0,01’dir), o zaman zaman serisinden elde edilen verilerde bir eğilimin mevcut olduğuna dair istatistiksel olarak anlamlı bir kanıt vardır.
Bu eğitimde Python’da Mann-Kendall trend testinin nasıl gerçekleştirileceği açıklanmaktadır.
Örnek: Python’da Mann-Kendall trend testi
Python’da Mann-Kendall trend testi gerçekleştirmek için öncelikle pymannkendall paketini kuracağız:
pip install pymannkendall
Bu paketi kurduktan sonra Mann-Kendall trend testini zaman serisi veri seti üzerinde gerçekleştirebiliriz:
#create dataset data = [31, 29, 28, 28, 27, 26, 26, 27, 27, 27, 28, 29, 30, 29, 30, 29, 28] #perform Mann-Kendall Trend Test import pymannkendall as mk mk. original_test (data) Mann_Kendall_Test(trend='no trend', h=False, p=0.422586268671707, z=0.80194241623, Tau=0.147058823529, s=20.0, var_s=561.33333333, slope=0.0384615384615, intercept=27.692307692)
Test sonucunu nasıl yorumlayacağınız aşağıda açıklanmıştır:
- trend : Bu trendi gösterir. Olası sonuç, artan, azalan veya trendin olmamasını içerir.
- h: trend mevcutsa doğrudur. Herhangi bir trend yoksa yanlış.
- p: Testin p değeri.
- z: normalizasyon testi istatistiği.
- Tau: Kendall Tau.
- s: Mann-Kendal skoru
- var_s: sapma S
- eğim: Theil-Sen/eğim tahmincisi
- müdahale: Sağlam Kendall-Theil hattının durdurulması
İlgilendiğimiz asıl değer, verilerde istatistiksel olarak anlamlı bir eğilimin olup olmadığını bize söyleyen p değeridir.
Bu örnekte p değeri 0,4226’dır ve 0,05’ten az değildir. Bu nedenle zaman serisi verilerinde anlamlı bir trend görülmemektedir.
Mann-Kendall trend testini gerçekleştirmenin yanı sıra, gerçek zaman serisi verilerini görselleştirmek için Matplotlib’i kullanarak hızlı bir çizgi grafiği oluşturabiliriz:
import matplotlib. pyplot as plt plt. plot (data)
zamanlar
Grafikten verilerin biraz dağınık olduğunu görebiliyoruz, bu da verilerde net bir trend olmadığını doğruluyor.
Ek kaynaklar
Matplotlib’de bir zaman serisi nasıl çizilir
Python’da artırılmış Dickey-Fuller testi nasıl yapılır?
Pandas DataFrame’den birden fazla seri nasıl çizilir