Ayk dizilerini (LS / AO / TC) R'deki tsoutliers paketini kullanarak tespit etmek. Aykırı değerlerin denklem biçiminde nasıl gösterilmesi gerekir?


35

Yorumlar: Öncelikle , 1993'te Amerikan İstatistik Kurumu Dergisi’nde Açık Kaynak kodlu yazılımda R’de yayınlanan Chen ve Liu’nun zaman çizelgesi aykırı tespitini uygulayan yeni tsoutliers paketinin yazarına çok teşekkür etmek istiyorum .R,

Paket, zaman serisi verilerinde yinelenerek 5 farklı aykırı türü algılar:

  1. Ekstra Aykırı (AO)
  2. İnovasyon Uzatıcı (IO)
  3. Seviye Değişimi (LS)
  4. Geçici değişim (TC)
  5. Mevsimsel Seviye Değişimi (SLS)

Daha da iyisi, bu paketin auto.arima'yı tahmin paketinden uygulamasıdır, bu nedenle aykırı değerlerin tespit edilmesi kusursuzdur. Ayrıca paket, zaman serisi verilerinin daha iyi anlaşılması için hoş grafikler de üretir.

Aşağıda benim sorularım:

Bu paketi kullanarak birkaç örnek çalıştırmayı denedim ve harika çalıştı. Eklemeli ayraçlar ve seviye kayması sezgiseldir. Ancak, Geçici Değişiklik ayracı ve Yenilikçi ayraçları anlayamadığım konusunda 2 sorum vardı.

Geçici Değişim Outlier Örneği:

Aşağıdaki örneği düşünün:

library(tsoutliers)
library(expsmooth)
library(fma)

outlier.chicken <- tsoutliers::tso(chicken,types = c("AO","LS","TC"),maxit.iloop=10)
outlier.chicken
plot(outlier.chicken)

Program, aşağıdaki konumda bir seviye kayması ve geçici bir değişikliği doğru olarak algılar.

Outliers:
  type ind time coefhat tstat
1   LS  12 1935   37.14 3.153
2   TC  20 1943   36.38 3.350

Aşağıda arsa ve benim sorularım var.

  • Geçici değişiklik denklem biçiminde nasıl yazılır? (Seviye kayması kolayca bir ikili değişken olarak yazılabilir, 1935'ten önce herhangi bir zamanda / Obs 12, 0 ve 1935'ten sonra ve 1'den sonra olabilir.)

Paket el kitabındaki geçici değişiklik denklemi ve makale aşağıdaki gibi verilmiştir:

L(B)=11-δB

δ

  • İkinci sorum ise inovatif dışlayıcı ile ilgili
    , pratikte asla inovatif bir dışlayıcıyla karşılaşmamıştım. Herhangi bir sayısal örnek veya vaka örneği çok yardımcı olacaktır.

aykırı

Düzenleme: @Irishstat, tsoutliers işlevi aykırı değerlerin belirlenmesi ve uygun bir ARIMA modeli önermek için mükemmel bir iş çıkarır. Nil veri kümesine bakarken, aşağıya bakınız auto.arima uygulaması ve ardından tsoutliers uygulayın (varsayılan olarak auto.arima içeren):

auto.arima(Nile)
Series: Nile 
ARIMA(1,1,1)                    

Coefficients:
         ar1      ma1
      0.2544  -0.8741
s.e.  0.1194   0.0605

sigma^2 estimated as 19769:  log likelihood=-630.63
AIC=1267.25   AICc=1267.51   BIC=1275.04

Tsoutliers işlevini uyguladıktan sonra, bir LS outlier ve katkı outlier'ı tanımlar ve bir ARIMA siparişi önerir (0,0,0).

nile.outliers <- tso(Nile,types = c("AO","LS","TC"))
nile.outliers
Series: Nile 
ARIMA(0,0,0) with non-zero mean 

Coefficients:
      intercept       LS29       AO43
      1097.7500  -242.2289  -399.5211
s.e.    22.6783    26.7793   120.8446

sigma^2 estimated as 14401:  log likelihood=-620.65
AIC=1249.29   AICc=1249.71   BIC=1259.71

Outliers:
  type ind time coefhat  tstat
1   LS  29 1899  -242.2 -9.045
2   AO  43 1913  -399.5 -3.306

görüntü tanımını buraya girin


8
Paketi yararlı bulduğuna sevindim, teşekkürler! BTW Sonuçları paketleyen fonksiyonda bir yazım hatası düzelttim, böylece paketin bir sonraki sürümünde y ekseni hem orijinal hem de ayarlanmış serinin aralığını kapsayacak.
javlacalle

2
Paketin son sürümünde, paketin içinde aynı isimdeki bir işlevle çakışmayı önlemek için işlev tsoutliersyeniden adlandırıldı . tsoforecast
javlacalle

1
@javlacalle tsoutliers paketini hala tso olmayan tsoutliers paketine indirdim. Paketin ne zaman güncelleneceğini bilmiyorum. Farklı funtion isimlerimiz olduğuna sevindim.
Tahminci

Güncelleme hakkında bilgi veren biraz koştu. CRAN'da güncellenmesi biraz zaman alabilir. CRAN'dan en son 0.4 sürümün indirilebildiğini gördüm.
javlacalle

@javlacalle Tsoutliers'ın mac bilgisayarıma kurulumu gerçekten zor buldum. Ben GSL yüklü demlemek, ben kullanarak derlemeye çalıştık clangve gccve ne işleri. Harika bir paket olduğunu düşünüyorum ama kurulum gerçekten kalbimi kırdı.
B.Mr.W.

Yanıtlar:


19

filterδ=0δ=1

tc <- rep(0, 50)
tc[20] <- 1
tc1 <- filter(tc, filter = 0, method = "recursive")
tc2 <- filter(tc, filter = 0.3, method = "recursive")
tc3 <- filter(tc, filter = 0.7, method = "recursive")
tc4 <- filter(tc, filter = 1, method = "recursive")
par(mfrow = c(2,2))
plot(tc1, main = "TC delta = 0")
plot(tc2, main = "TC delta = 0.3")
plot(tc3, main = "TC delta = 0.7")
plot(tc4, main = "TC delta = 1", type = "s")

güncel değişim

Örnekte, outliers.effectstespit edilen aykırı değerlerin gözlenen dizi üzerindeki etkilerini temsil etmek için işlevi kullanabilirsiniz :

# unit impulse
m1 <- ts(outliers.effects(outlier.chicken$outliers, n = length(chicken), weights = FALSE))
tsp(m1) <- tsp(chicken)
# weighted by the estimated coefficients
m2 <- ts(outliers.effects(outlier.chicken$outliers, n = length(chicken), weights = TRUE))
tsp(m2) <- tsp(chicken)

Yenilikçi dış hat, IO daha kendine özgüdür. Göz önünde bulundurulan diğer aykırı türlerin aksine, IO'nun tsoutliersetkisi seçilen modele ve parametre tahminlerine bağlıdır. Bu gerçek, birçok aykırı ile seri halinde zahmetli olabilir. Algoritmanın ilk yinelemelerinde (aykırı değerlerin bazılarının tespiti ve düzeltilmediği durumlarda) ARIMA modelinin tahminlerinin kalitesi, IO'yu doğru tanımlayacak kadar iyi olmayabilir. Ayrıca, algoritma ilerlerken yeni bir ARIMA modeli seçilebilir. Böylece, bir IO'yu bir ARIMA modeli ile ön aşamada tespit etmek mümkündür, ancak sonunda dinamik, son aşamada seçilen başka bir ARIMA modeli tarafından tanımlanır.

Gelen bu belgede bazı durumlarda, bir IO etkisi oluşun tarihi olarak artabilir, bu gösterilir yorumlamak veya varsaymak zor bir şeydir geçmişe, içine daha uzak hale gelir.

IO ilginç bir potansiyele sahiptir çünkü mevsimsel aykırılıkları yakalayabilmektedir. Düşünülen diğer aykırı türler, tsoutliersmevsimsel kalıpları yakalayamaz. Bununla birlikte, bazı durumlarda IO yerine muhtemel bir mevsimsel seviye kayması, SLS aramak daha iyi olabilir (daha önce belirtilen belgede gösterildiği gibi).

IO'nun çekici bir yorumu var. Bazen, bozulma terimini etkileyen ve ardından ARIMA modelinin dinamiğine göre seriye yayılan bir katkı maddesi olarak anlaşılmaktadır. Bu anlamda, IO ek bir aykırı gibidir, ikisi de tek bir gözlemi etkiler, ancak IO rahatsızlık teriminde bir itici güç iken, AO doğrudan ARIMA modeli tarafından üretilen değerlere veya veri üretme işlemine eklenen bir impulsdır. . Aykırı olanların yenilikleri etkileyip etkilemediği veya rahatsızlık terimi dışında olup olmadığı tartışma konusu olabilir.

Önceki referansta, IO'nun tespit edildiği bazı gerçek veri örnekleri bulabilirsiniz.


Detaylı cevap için teşekkür ederiz. gerçekten onu takdir ederim. Birkaç sorum daha var. Auto.arima kullanmak, p, d, q tanımlamak ve ardından arima'yı tsmethod olarak kullanmak için tsoutliers kullanmanın herhangi bir avantajı var mı?
Tahminci

1
Kullanmanın ana avantajı forecast::auto.arimaile birlikte tsoutliersher şey otomatik alır olmasıdır. Bununla birlikte, otomatik prosedürleri alternatif seçeneklerle yapmanız önerilir. Örneğin, önce ACF'ye veya birim kök testlerine bakabilir ve ardından iletilecek bir ARIMA modeli seçebilirsiniz tsoutliers. Önerilen modeliniz için herhangi bir aykırı değer bulunursa, o zaman ayarlanan serinin analizini tekrarlayabilirsiniz. Bu yinelemeli bir süreçtir. Otomatik prosedür yararlı bir rehber sağlar, ancak nihai veya benzersiz bir çözüm sağlamayabilir.
javlacalle

1
Aykırı değerlerin yerini belirleme prosedürü yinelemelidir. Güvenlik için izin verilen yineleme sayısında bir sınır belirlenir. Uyarıyı gözlemlediğinizde, argümanı maxit.iloop5-6'ya yükselterek algoritmayı çalıştırmayı deneyebilir ve sonuçların değişip değişmediğini görebilirsiniz. Uyarı büyük maxit.iloop(örneğin 20 veya daha fazla) ile döndürülürse, bir şeylerin doğru bir şekilde modellenmediğinin işareti olabilir. Göz önünde bulundurulacak aykırı türlerden GÇ'yi kaldırmak, bazı durumlarda iyi bir seçenek olabilir. Çoğu durumda uyarıyı görmezden gelebilirsiniz. suppressWarningsOnlardan kaçınmak için kullanabilirsiniz .
javlacalle

2
@mugen Bu konuyu tam olarak kapsayan bir ders kitabı tanımıyorum. Bu yazıda ele alınan yaklaşım müdahale analizi ile ilgili olduğundan, bu konuda bir bölümü olan herhangi bir ders kitabı (Ekonometri veya Zaman Serileri) yararlı olacaktır; örneğin, Zaman Serisi Analizi. R Uygulamaları . Ayrıntılar için, örneğin Chen ve Liu (1993) ve buradaki referanslardan başlayarak, bu konuyla ilgili pek çok dergi makalesinden bazılarını gözden geçirmelisiniz.
javlacalle

2
@mugen, ben de kontrol ediyorum Tsay en makalesine. Ayrıca, Pankratz'ın klasik kitaplarını aykırı olanlarla iyi bir şekilde ilgilenir .
tahminci
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.