Contoh yang bagus di mana seri tanpa root unit tidak stasioner?

18

Saya telah melihat beberapa kali orang menolak nol dalam tes Dickey-Fuller yang diperbesar , dan kemudian mengklaim bahwa itu menunjukkan seri mereka diam (sayangnya, saya tidak dapat menunjukkan sumber klaim ini, tetapi saya membayangkan klaim serupa ada di sana-sini di satu atau jurnal lain).

Saya berpendapat bahwa ini adalah kesalahpahaman (bahwa penolakan terhadap nol dari root unit tidak selalu sama dengan memiliki seri stasioner, terutama karena bentuk-bentuk nonstasioner alternatif jarang diselidiki atau bahkan dipertimbangkan ketika tes tersebut dilakukan).

Apa yang saya cari adalah:

a) contoh tandingan yang jelas dan bagus untuk klaim (saya dapat membayangkan pasangan saat ini tetapi saya bertaruh seseorang selain saya akan memiliki sesuatu yang lebih baik daripada yang ada dalam pikiran saya). Ini bisa berupa deskripsi situasi tertentu, mungkin dengan data (disimulasikan atau nyata; keduanya memiliki kelebihan); atau

b) argumen yang meyakinkan mengapa penolakan dalam Dickey-Fuller yang diperbesar harus dilihat sebagai membangun stasioneritas

(atau bahkan keduanya (a) dan (b) jika Anda merasa pintar)

Glen_b -Reinstate Monica
sumber
3
Xn=(1)n dengan probabilitas 1.
kardinal
@ cardinal Nah, itu pasti akan mendapatkan penolakan oleh tes ADF (edit: ya, benar), dan itu jelas nonstationary (root pada lingkaran unit, tetapi bukan root sama dengan 1 yang dideteksi ADF); jadi itu akan dihitung.
Glen_b -Reinstate Monica
Perhatikan bahwa tes ADF memiliki varian di mana tren disertakan. Jika nol ditolak, seri adalah trend-stasioner, yaitu stasioner jika tren dihapus, namun tidak stasioner.
mpiktas
+1. Glen_b, apakah tren linear + AR stasioner (1) akan dianggap sebagai contoh berlawanan?
Amoeba berkata Reinstate Monica

Jawaban:

15

Berikut adalah contoh dari seri non-stasioner yang bahkan tidak dapat dideteksi oleh tes white noise (apalagi tes tipe Dickey-Fuller):

ini bukan white noise

Ya, ini mungkin mengejutkan tetapi ini bukan white noise .

Kebanyakan contoh penghitung non-stasioner didasarkan pada pelanggaran terhadap dua kondisi pertama stasioner: tren deterministik (rerata non-konstan) atau unit root / deret waktu heteroskedastik (varian tidak konstan). Namun, Anda juga dapat memiliki proses non-stasioner yang memiliki mean dan varians konstan, tetapi mereka melanggar kondisi ketiga: fungsi autocovariance (ACVF) harus konstan dari waktu ke waktu dan fungsihanya.| s - t |cov(xs,xt)|st|

Rangkaian waktu di atas adalah contoh dari rangkaian seperti itu, yang memiliki nol rata-rata, varian unit, tetapi ACVF tergantung pada waktu. Lebih tepatnya, proses di atas adalah proses MA stasioner lokal (1) dengan parameter sedemikian sehingga menjadi white noise palsu (lihat Referensi di bawah): parameter proses MA berubah seiring waktuxt=εt+θ1εt1

θ1(u)=0.51u,

di mana adalah waktu yang dinormalisasi. Alasan mengapa ini terlihat seperti white noise (meskipun menurut definisi matematika jelas tidak), adalah bahwa ACVF yang bervariasi waktu berintegrasi menjadi nol dari waktu ke waktu. Karena sampel ACVF menyatu dengan ACVF rata-rata, ini berarti bahwa sampel autocovariance (dan autocorrelation (ACF)) akan menyatu ke fungsi yang terlihat seperti white noise. Jadi, bahkan tes Ljung-Box tidak akan dapat mendeteksi non-stasioneritas ini. Makalah (penafian: Saya penulis) tentang Pengujian white noise terhadap alternatif stasioner lokal mengusulkan perpanjangan tes Box untuk berurusan dengan proses stasioner lokal tersebut.u=t/T

Untuk lebih banyak kode R dan lebih detail lihat juga posting blog ini .

Pembaruan setelah komentar mpiktas :

Memang benar bahwa ini mungkin terlihat seperti kasus yang menarik secara teoritis yang tidak terlihat dalam praktik. Saya setuju bahwa tidak mungkin untuk melihat white noise palsu seperti itu dalam dataset dunia nyata secara langsung, tetapi Anda akan melihat ini di hampir semua residual dari model stasioner. Tanpa membahas terlalu banyak detail teoretis, bayangkan saja model umum yang bervariasi waktu dengan fungsi kovarians yang bervariasi waktu . Jika Anda memasukkan model konstan , maka estimasi ini akan mendekati rata-rata waktu dari model sebenarnya ; dan secara alami residu sekarang akan dekat dengan , yang dengan konstruksiθ(u)γθ(k,u)θ^θ(u)θ(u)θ^θ^akan diintegrasikan ke nol (kurang-lebih). Lihat Goerg (2012) untuk detailnya.

Mari kita lihat sebuah contoh

library(fracdiff)
library(data.table)

tree.ring <- ts(fread(file.path(data.path, "tree-rings.txt"))[, V1])
layout(matrix(1:4, ncol = 2))
plot(tree.ring)
acf(tree.ring)
mod.arfima <- fracdiff(tree.ring)
mod.arfima$d


## [1] 0.236507

Jadi kami menyesuaikan fraksi noise dengan parameter (karena kami pikir semuanya baik-baik saja dan kami memiliki model stasioner). Mari kita periksa residu:d^=0.23d^<0.5

arfima.res <- diffseries(tree.ring, mod.arfima$d)
plot(arfima.res)
acf(arfima.res)

seri waktu dan plot acf

Terlihat bagus kan? Masalahnya adalah residualnya adalah white noise palsu . Bagaimana aku tahu? Pertama, saya bisa mengujinya

Box.test(arfima.res, type = "Ljung-Box")
## 
##  Box-Ljung test
## 
## data:  arfima.res
## X-squared = 1.8757, df = 1, p-value = 0.1708

Box.test.ls(arfima.res, K = 4, type = "Ljung-Box")
## 
##  LS Ljung-Box test; Number of windows = 4; non-overlapping window
##  size = 497
## 
## data:  arfima.res
## X-squared = 39.361, df = 4, p-value = 5.867e-08

dan kedua, kita tahu dari literatur bahwa data cincin pohon sebenarnya adalah suara fraksional stasioner lokal: lihat Goerg (2012) dan Ferreira, Olea, dan Palma (2013) .

Ini menunjukkan bahwa contoh saya - yang secara teoritis terlihat - sebenarnya terjadi dalam kebanyakan contoh dunia nyata.

Georg M. Goerg
sumber
+1, contoh yang sangat bagus! Saya tertarik meskipun ada contoh kehidupan nyata dari seri seperti itu?
mpiktas
@mpiktas Saya menambahkan pembaruan ke posting yang seharusnya menjawab pertanyaan Anda.
Georg M. Goerg
Terima kasih untuk contohnya. Saya menemukan beberapa kesalahan di blog Anda dan di tulisan Ferreira et al. Di blog Anda, Anda menyatakan bahwa , padahal sebenarnya itu adalah . Juga sampel ACF, yaitu konvergen ke 0, bukan karena , tetapi karena , yaitu harus dipilih sesuai dengan agar pernyataan tetap berlaku. Dalam Ferreira et al, definisi (4) tidak memiliki . γ1(u)=θ(u)σ(u)σ(u1/T)θ(u)γ^101θ(u)du=001θ(u)σ2(u)du=0σ(u)θ(u)εt
mpiktas
Contoh yang Anda berikan mengatakan bahwa ketika kami memiliki model yang bervariasi waktu, pemasangan model yang tidak bervariasi waktu akan menyebabkan inferensi yang salah. Tapi ini jauh dari mengatakan bahwa setiap rangkaian waktu nyata dapat dimodelkan dengan model yang bervariasi waktu. Di sisi lain tes Anda dapat diterapkan untuk menguji keberadaan variasi waktu. Sekali lagi terima kasih atas wawasan yang menarik.
mpiktas
@mpikta terima kasih telah menunjukkannya. Saya memperbaikinya di blogpost juga. Dalam hal ini kebetulan bekerja dengan cara yang sama karena bahkan di sekitar titik tengah (dengan ). Dan kembali berlatih: Saya tidak mengatakan setiap rangkaian waktu dapat dimodelkan seperti itu. Namun dalam praktiknya ketika seseorang memodelkannya dengan model ARFIMA stasioner favorit mereka, maka mereka sudah menganggap bahwa itu ada di kelas keluarga ini. (model stasioner adalah probabilitas nol subset dari yang stasioner lokal). 0,5 T σ(u)20.5T
Georg M. Goerg
7

Contoh 1

Proses unit-root dengan komponen MA negatif yang kuat diketahui menyebabkan tes ADF dengan ukuran empiris jauh lebih tinggi daripada yang nominal (misalnya, Schwert, JBES 1989 ).

Yaitu, jika dengan , akar dari bagian AR dan MA akan hampir dibatalkan, sehingga proses akan menyerupai white noise dalam sampel hingga, yang menyebabkan banyak penolakan palsu terhadap null, karena prosesnya masih memiliki unit root (bersifat nonstasioner).q - 1

Yt=Yt1+ϵt+θϵt1,
θ1

Di bawah ini adalah contoh untuk tes ADF yang Anda sebutkan. [Schwert mensimulasikan bahwa ukuran empiris yang jauh lebih ekstrem dapat dihasilkan dengan struktur MA yang kurang ekstrim jika Anda melihat statistik koefisien atau sebaliknya uji Phillips-Perron, lihat tabelnya 5-10.]T(ρ^1)

library(urca)
reps <- 1000
n <- 100
rejections <- matrix(NA,nrow=reps)

for (i in 1:reps){
  y <- cumsum(arima.sim(n = n, list(ma = -0.98)))
  rejections[i] <- (summary(ur.df(y, type = "drift", selectlags="Fixed",lags=12*(n/100)^.25))@teststat[1] < -2.89)
}
mean(rejections)

Contoh 2

Proses yang reverting jahat tetapi tidak stasioner. Sebagai contoh, mungkin merupakan proses AR (1) dengan koefisien AR kurang dari satu dalam nilai absolut, tetapi dengan proses inovasi yang variansnya berubah secara permanen di beberapa titik waktu ("heteroskedastisitas tanpa syarat"). Proses kemudian tidak memiliki root unit, tetapi juga tidak stasioner, karena distribusi tanpa syarat berubah dari waktu ke waktu.Yt

Tergantung pada jenis perubahan varians, tes ADF masih akan sering ditolak. Dalam contoh saya di bawah ini, kami memiliki varian break ke bawah, yang membuat tes "percaya" bahwa seri bertemu, yang mengarah ke penolakan nol dari root unit.

library(urca)
reps <- 1000
n <- 100
rejections <- matrix(NA,nrow=reps)

for (i in 1:reps){
  u_1 <- rnorm(n/2,sd=5)
  u_2 <- rnorm(n/2,sd=1)
  u <- c(u_1,u_2)
  y <- arima.sim(n=n,list(ar = 0.8),innov=u)
  rejections[i] <- (summary(ur.df(y, type = "drift"))@teststat[1] < -2.89)      
}
mean(rejections)

(Sebagai tambahan, tes ADF "kehilangan" distribusi nol asimptotik yang sangat penting di hadapan heteroskedastisitas tanpa syarat.)

Christoph Hanck
sumber
@ Glen_b, itu (saya harap) bisa menjadi jawaban untuk paragraf pertama Anda, tetapi tidak benar-benar untuk judul pertanyaan Anda - apakah ada perbedaan atau kurangnya pemahaman di pihak saya?
Christoph Hanck
"Itu" = Contoh 1
Christoph Hanck
Itu tergantung pada apa "unit root" didefinisikan. Saya awalnya mempelajarinya sebagai "root pada lingkaran unit" (akar dari modulus 1) tetapi sekarang tampaknya (dan dalam konteks tes ADF berhubungan dengan) akar dari polinomial karakteristik sebenarnya sama dengan 1 . Bahkan jika saya memiliki perasaan yang salah dalam judul jawaban Anda menjawab pertanyaan yang dimaksud, jadi anggaplah itu baik-baik saja.
Glen_b -Reinstate Monica
Maksud saya mungkin tidak secara jelas diutarakan: Dalam judul Anda mencari contoh seri "tanpa akar unit", sedangkan paragraf pertama (bagi saya) terdengar seperti mencari contoh di mana penolakan itu salah. Contoh pertama saya adalah satu untuk kasus terakhir, di mana ADF cenderung menolak, meskipun prosesnya memang memiliki unit root.
Christoph Hanck
Ah, maaf, saya tidak memikirkannya dengan baik. Ya, sebenarnya tidak sesuai dengan salah satu interpretasi dari judul, tetapi masih menanggapi pertanyaan yang lebih luas di tubuh. (Judul tentu kurang bernuansa, jadi ini bukan masalah.) ... Saya pikir itu jawaban yang sangat menarik, dan jika ada sesuatu yang melayani tujuan saya yang sebenarnya lebih baik daripada apa yang diminta judulnya.
Glen_b -Reinstate Monica
7

Pengujian unit root sangat sulit. Menggunakan satu tes biasanya tidak cukup dan Anda harus sangat berhati-hati tentang asumsi yang tepat dari tes yang digunakan.

Cara ADF dibangun membuatnya rentan terhadap serangkaian tren non-linear sederhana dengan tambahan white noise. Berikut ini sebuah contoh:

library(dplyr)
library(tseries)
set.seed(1000)
oo <- 1:1000  %>% lapply(function(n)adf.test(exp(seq(0, 2, by = 0.01)) + rnorm(201)))
pp <- oo %>% sapply("[[","p.value")

> sum(pp < 0.05)
[1] 680

Di sini kita memiliki tren eksponensial dan kita melihat bahwa ADF berkinerja sangat buruk. Ia menerima nol unit root 30% dari waktu dan menolaknya 70% dari waktu.

Biasanya hasil analisis apa pun bukan untuk mengklaim bahwa seri itu diam atau tidak. Jika metode yang digunakan dalam analisis memerlukan stasioneritas, asumsi yang salah bahwa seri itu stasioner padahal sebenarnya tidak, biasanya bermanifestasi dalam beberapa cara atau lainnya. Jadi saya pribadi melihat keseluruhan analisis, tidak hanya bagian pengujian unit root. Misalnya OLS dan NLS berfungsi dengan baik untuk data non-stasioner, di mana non-stasioneritas dalam mean, yaitu tren. Jadi, jika seseorang salah mengklaim bahwa seri ini stasioner dan berlaku OLS / NLS, klaim ini mungkin tidak relevan.

mpiktas
sumber
1
p>0.05
Ah ya, saya bingung tanda-tandanya. Saya memperbaiki jawabannya. Terima kasih telah memperhatikan!
mpiktas
Kenapa kamu tidak menggunakan sapply(oo, "[[","p.value")?
germcd
Yah saya menggunakannya, hanya dengan sintaksis pipa. Saya suka pipa :)
mpiktas
1
Saya suka dplyr juga. Untuk kode ini tidak perlu, memuat magrittr sudah cukup.
mpiktas