Bu Trend Zaman Serisi Neden Durağan?

Artırılmış Dickey-Fuller (ADF) üzerine bir çalışma tuhaf bir örnekle test edin

Fotoğraf Jan Huber on Unsplash

Durağanlık, zaman serisi analizinin en temel kavramlarından biridir. Genel olarak durağanlık, zaman serilerinin çeşitli istatistiksel yöntemlerle modellenmesi için mükemmel özellikler sağlayacaktır. Artırılmış Dickey-Fuller (ADF) Durağanlığın kontrol edilmesinde muhtemelen en yaygın kullanılan yaklaşım testtir.

Bu konuyla ilgili internette tonlarca makale var. Durağanlığın tanımı, ADF testlerinin nasıl yapılacağı gibi temel girişlerle zamanınızı boşa harcamayacağım. Bu yazıda, bir uygulamada garip bir durumla karşılaştıktan sonra ADF testini keşfetme yolculuğumu paylaşacağım.

Göstereceğim öğrenme yolu, veri bilimini öğrenmek için tipiktir. Öncelikle bir aracı ya da kavramı anladığımızı sanırız ama sadece terimi kabul edip hatırlarız. Bunu gerçek verilere uyguladığımızda bizi daha fazla araştırmaya ve daha iyi anlamaya iten beklenmedik, zorlayıcı sorunlarla karşılaşabiliriz.

Yine kodumu GitHub'da paylaşacağım; lütfen bağlantıyı en sonunda referans bölümünde bulun.

Beklenmedik bir yolculuğun başlangıcı

Geçen gün bazı zaman serileri üzerinde çalışıyordum. Şekil 1 bunlardan birini göstermektedir. bunun iki katı yoktur yükseliş eğilimi mevcut, ve varyans da zamanla değişir. Bu net görselleştirme sayesinde durağanlığı test etmem gerekmedi. Bazı nedenlerden dolayı hatırlamıyorum, yine de ADF testiyle denedim. Şaşırtıcı bir şekilde, p değeri neredeyse 0'dır, bu da Sıfır hipotezini reddetmem ve onun durağan olduğunu kabul etmem gerektiği anlamına gelir.

Şekil 1. Trendli zaman serisi (Yazarın Resmi)

Bu garip. Test sonucu yanlış görünüyordu. ADF testinin arkasında neler olup bittiğini araştırmak istedim. Denediğim ilk adım, bu sorunu sentetik verilerle çoğaltmaktı. Aşağıdaki kodla bazı test verileri oluşturdum. Kod yalnızca yavaş trend davranışını taklit ediyordu ancak mevsimselliği taklit etmiyordu.

Şekil 20,000'de 1 gözlem var, bu da trendin son derece yavaş yükseldiğini gösteriyor. 0.0005'lik küçük bir eğime sahip bir zaman serisi oluşturuyorum. Zaman serisinin ortalama değeri 0 gözlemden sonra 0.5'dan 1000'e çıkar. O zaman bunu adfuller() fonksiyonuyla test edelim. statsmodels.tsa.stattools varsayılan parametrelerle. P değeri 0.01'dir ve "sorun" yeniden ortaya çıkar. Şekil 2 sonucu göstermektedir. Başlığı görmezden gelip yükseliş trendine odaklanabilirsiniz. Neden üç farklı ADF testinden p değerlerine sahip olduğumuzu daha sonra açıklayacağım.

Şekil 2. ADF test sonucuyla birlikte sentetik zaman serisi (Yazarın Resmi)

DF testinin arkasındaki matematik

ADF testinin tam olarak ne yaptığını görmek için derinlere inmeliyiz. Matematik geçmişinin karmaşık olmadığı ortaya çıktı. İlk olarak, ADF testi sadece gelişmiş bir versiyonudur. Dickey-Fuller testi. Var DF testinin üç ana versiyonu (Wikipedia'dan):

Sürüm 1: Birim kök testi: ∆yᵢ = δyᵢ₋₁ + uᵢ

Sürüm 2: Sabit bir birim kökü test edin: ∆yᵢ = a₀ + δyᵢ₋₁ + uᵢ

Sürüm 3. Sabit ve deterministik eğilime sahip birim kökü test edin: ∆yᵢ = a₀ + a₁*t + δyᵢ₋₁ + uᵢ

Her versiyonda, sıfır hipotezi, bir birim kök olduğu, δ=0 olduğu yönündedir.

Statsmodels paketi, parametreye sahip üç sürümün tümünü destekler “gerileme”.

Versiyon 1 için regresyon 'n'dir (sabit yok, trend yok).

Sürüm 2 için regresyon 'c'dir (yalnızca sabit); bu varsayılan ayardır.

Versiyon 3 için regresyon 'ct'dir (sabit ve trend).

Testi üç farklı ayarla tekrar çalıştırıyorum ve aşağıda yeni sonuçlar var.

Sürüm 1 için p değeri 0.09'dur. Sıfır hipotezini reddetmemeliyiz.

Versiyon 2 için p değeri 0.01'dir. Varsayılan ayar bu olduğundan bunu zaten bir sorun olarak ele aldık.

Sürüm 3 için p değeri 0.00'dır. Bu bekleniyor çünkü zaman serisi gerçekten deterministik bir trendle durağan.

Yani bu örnek veriyi sürüm 1 (regression='n') ile test edersek, bunun durağan olduğunu söyleyemeyiz. Muhtemelen varsayılan ayarı kullanmamalıyız. Ama aynı zamanda sabit terimin burada neden bu kadar büyük bir fark yarattığını da merak edebilirsiniz. Daha fazla kazalım.

DF testinden doğrusal regresyona

Yukarıdaki tanıma dayanarak DF testi sadece doğrusal regresyondur. Şekil 3 doğrusal regresyonun tüm noktalarını göstermektedir. Y ekseni ∆yᵢ'dir, X ekseni yᵢ₋₁'dir ve uᵢ artıktır. Versiyon 1, kesişmeden (sabit değil) bir çizgiye uymamız gerektiği anlamına gelir. Versiyon 2, kesişen (sabit) bir çizgiye uymamız gerektiği anlamına gelir.

Şekil 3. ∆yᵢ ve yᵢ₋₁ (Yazarın Resmi)

Skitlearn Doğrusal Regresyon fit_intercept parametresiyle bu iki seçeneği iyi bir şekilde destekler. Şekil 4'ün altında iki takılı çizgi bulunmaktadır. Gördüğünüz gibi, kesişen çizgi, kesişmeyen doğruya göre daha iyi uyuyor. R-kare puanı da bunu açıkça doğruladı. Ayrıca turuncu çizginin eğiminin mavi çizgiden daha küçük olduğunu unutmayın. Başka bir deyişle turuncu çizginin eğimi 0'a yakındır.

Şekil 4. Doğrusal regresyon sonucu (Yazarın Resmi)

Ayrıca görselleştirme yoluyla da düşünebiliriz: noktalar (0,0) etrafında ortalanmamıştır, dolayısıyla takılan regresyon çizgisi (0,0)'ı geçmemelidir. Kesim noktası 0'dan büyük olmalıdır. 0 başlangıç ​​ortalaması olduğundan, ∆y 0'dan büyük olmalıdır, dolayısıyla genel ortalama artacaktır. Regresyon doğrusunu (0,0)'dan geçmeye zorlarsak verilere yetersiz uyum sağlar ve (0)'ın etkisiyle eğim 0,0'a yaklaşır.

Kesişme etkilerinin dahil edilmesinin doğrusal regresyona uyup uymadığını gördük. Bir hattın nasıl takıldığı ADF test sonuçlarını neden etkiler ve p değeri nereden gelir?

Doğrusal regresyondan p değerine

Şimdi burası biraz karmaşıklaşıyor. DF testinin son p değeri, doğrusal regresyondan elde edilen katsayıların p değerinden değildir. Temel olarak istatistiğin Dickey-Fuller tablosu olarak bilinen belirli bir dağılımı vardır. Daha sonra test istatistiği için MacKinnon'un yaklaşık p değerini kullanırız. Detayları şurada bulabilirsiniz Statsmodels kaynak kodu.

Çünkü sıfır hipotezi δ=0'dır, yani uygun çizginin eğiminin test edilmesi 0'dır. P değerinin nasıl elde edileceğine dair ayrıntılara girmemize gerek yok. P değeri ile eğim (doğrusal regresyonda δ, trend eğimi değil) arasındaki ilişkinin mantık zinciri şu şekildedir:

Genel olarak, eğer eğim 0'dan uzaksa, p-değeri daha küçük olmalıdır, bu da büyük ihtimalle boş hipotezi reddeder ve birim kökün olmadığını ve durağan olduğunu öne sürer. Eğim 0 ise veya 0'a çok yakınsa, p-değeri daha yüksek olmalıdır; bu durumda sıfır hipotezinin kabul edilmesi ve birim kök ve durağan olmamasının önerilmesi daha olasıdır. İkinci senaryo için Vikipedi şöyle diyor: "Testlerin istatistiksel gücü düşüktür, çünkü çoğu zaman gerçek birim kök süreçleri (δ = 0) ile birim köke yakın süreçler (δ 0'a yakındır) arasında ayrım yapamazlar." Bu yüzden ilk etapta sorunumuz var. Birim köke yakın bir süreçle uğraşıyoruz. Sürüm 1 birim kök buluyor ve sürüm 2 birim kök bulamıyor.

Sürüm 1 neden yukarıdaki örnekte çalışıyor?

Sürüm 1, Şekil 2'deki veriler için işe yarar çünkü eğimi 0'a yaklaştırıyoruz, dolayısıyla p değeri daha yüksek oluyor.

Ancak sürüm 1'i varsayılan ayar olarak kullanamayız. Sürüm 1 için iki durum vardır (satırı (0,0) üzerinden geçmeye zorlamak):

Durum 1: (0,0) tüm veri noktalarına daha yakındır. Eğer çizginin (0,0)'dan geçmesi gerekiyorsa, o zaman çizgi daha düz olacak ve eğim 0'a yaklaşacaktır. Şekil 4 bu durumu göstermektedir. Lütfen Şekil 4'teki gösterimin yalnızca bir değişken yᵢ₋₁'ye uyduğunu, gerçek ADF'nin daha fazla gecikme değişkenine uyacağını unutmayın.

Durum 2: (0,0) tüm veri noktalarından uzaktadır. Eğer çizginin (0,0)'dan geçmesi gerekiyorsa, bağlantıda başarısız olabiliriz; esasen eğim 0'dır, yani ∆yᵢ ve yᵢ₋₁ arasında bir çizginin (0,0)'ı geçip veri noktalarının çoğunu kaplayacağı doğrusal bir ilişki bulamayız. Bu nedenle, test sonucu bir kök birime sahip olma yönünde önyargılı olacaktır..

Aşağıdaki Şekil 5, Sıfır hipotezini (p-değeri 1) reddetmede başarısız olan Versiyon 0.6 testinin bir örneğini göstermektedir ve veriler, ortalama 10 ile durağandır. Şekil 6, bunun nedenini açıklamaktadır. Gördüğünüz gibi, kesişmesi olmayan bir çizgi bulamayız (R-kare 0'dır), dolayısıyla takılan çizginin eğimi 0'dır (∆yᵢ, yᵢ₋₁'ye bağlı değildir).

Şekil 5. Versiyon 1, durağan bir zaman serisini tanıyamadı (Yazarın Resmi)
Şekil 6. Doğrusal regresyon, kesişmeyen bir doğruyu bulamıyor ((0,0) geçerek) (Yazarın Resmi)

DF testinden ADF testine

Artık DF testinin doğrusal regresyon olduğunu ve doğrusal regresyondan p değerinin nasıl elde edileceğini anladığımıza göre ADF'ye geçelim. ADF'nin formülü:

Yine doğrusal regresyon. “Artırılmış” kısım, daha fazla katsayı sığdırmamız gerektiğidir.

Statsmodels paketi, AFT testinin ayrıntılı bir özetini göstermeye olanak tanır. Şekil 7 sonuçtur.

Şekil 7. Ayrıntılı özetli ADF testi (Yazarın Resmi)

'OLS Regresyon' (doğrusal regresyon için varsayılan çözüm) ve 17 katsayıyı görüyoruz. Maksimum gecikmeyi belirtmedim, bu nedenle test, zaman serisinin uzunluğuna göre 17 olan bir sayıya kadar deneyecek.

Const (kesişme) de takılıdır. Değer 0.0596'dır.

Scikit-learn'de doğrusal regresyon kullanarak ADF testini uygulamaya çalışalım. Şekil 8 kod ve çıktıdır.

Şekil 8. Scikit-learn ile ADF testi (sadece doğrusal regresyon kısmı) (Yazarın Resmi)

Kesişme noktası 0.0596'dır ve diğer katsayılar Şekil 7'dekiyle aynıdır. Scikit-learn'deki doğrusal regresyon sadece düz OLS'dir. Aynı şeyi yapıyoruz, dolayısıyla sonuçların aynı olması şaşırtıcı değil.

yolculuğun sonu

Parametrenin nasıl ayarlanacağını çözdükten sonra, Şekil 1'deki orijinal zaman serisini versiyon 1'i (regresyon ='n') kullanarak test ettim ve p-değerini 0.08 elde ettim, bu da bunun durağan olmadığını gösteriyor. Lütfen Şekil 1'deki verilerin sıfır ortalamalı olduğuna dikkat edin, dolayısıyla (0,0)'ın (∆yᵢ, yᵢ₋₁) veri noktalarına daha yakın olduğunu hayal edebilirsiniz. Versiyon 1 testini kullanmak bize yardımcı olacaktır.

Şekil 1'deki eğilim eğimi minimum olduğundan, zaman serisini adımlarla yeniden örnekleyebiliriz, bu da eğimi artırır. Örneğin, dört adımla ( value[::4] ) test edersem, varsayılan ayarla ADF testini geçemez (regression='c' için p değeri 0.17'dir).

Sorun çözüldü.

Takeaways

ADF sonuçlarına körü körüne güvenmeyin. Görselleştirme arkadaşınızdır.

ADF testi basit bir doğrusal regresyondur ve istatistik modellerinin uygulanması, regresyon problemini çözmek için OLS'yi kullanır. Daha sonra, uygun regresyondan ilk gecikme değişkeninin katsayısının 0 olduğuna ilişkin Boş hipotezi doğrulayan p-değerini çıkarmak için Dickey-Fuller tablosunu kullanır.

ADF testinin birim köke yakın süreçleri test ederken sınırlamaları vardır (δ 0'a yakındır).

Buna göre uygun ADF versiyonunu seçmemiz gerekiyor. Örneğin sabit bir trend gördüğünüzde ve 'trend durağanlığını' test etmek istediğinizde parametre olarak 'ct'yi seçmeniz gerekir. Şekil 0 ve Şekil 1'de olduğu gibi ortalaması 2 olması gereken bir sinyal için yavaş bir trend yakalayacaksanız, belki de kesişme noktasının uyma etkisini önlemek için parametre olarak 'n'yi seçmeniz gerekebilir. İstatistik modelleri aynı zamanda 'ctt' parametresi ile niceliksel eğilimi de destekler. Bu gelişmiş seçenek bazı durumlarda iyi bir seçim olabilir. Daha fazla kazmak isterseniz, lütfen şuraya bakın: Kesişme ve deterministik zaman trendi terimlerini dahil etme konusundaki belirsizlikle başa çıkmak.

Umarım ADF testi hakkında bir şeyler öğrenmişsinizdir.

Zaman serinizle eğlenin!

Bana ulaşın LinkedIn.

Not: Zaman serisi verileri konusunda deneyimim ve tutkum var. Bu makaleyi beğendiyseniz diğer makalem de ilginizi çekebilir zaman serisi hakkındaki gönderiler.

Referanslar

GitHub'daki not defteri dosyası

Bu Trend Zaman Serisi Neden Durağan? Kaynak https://towardsdatascience.com/why-is-this-trending-time-series-stationary-f3fb9447336f?source=rss—-7f60cf5620c9—4 adresinden https://towardsdatascience.com/feed aracılığıyla yayımlanmıştır.

<!–

->

Zaman Damgası:

Den fazla Blockchain Danışmanları