Mengapa fungsi stl memberikan variasi musiman yang signifikan dengan data acak

11

Saya diplot dengan kode berikut dengan fungsi stl (Seasonal Decomposition of Time Series by Loess):

plot(stl(ts(rnorm(144), frequency=12), s.window="periodic"))

Ini menunjukkan variasi musiman yang signifikan dengan data acak dimasukkan ke dalam kode di atas (fungsi rnorm). Variasi yang signifikan terlihat setiap kali dijalankan, meskipun polanya berbeda. Dua pola tersebut ditunjukkan di bawah ini:

masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini

Bagaimana kita bisa mengandalkan fungsi stl pada beberapa data ketika itu menunjukkan variasi musiman. Apakah variasi musiman ini perlu dilihat mengingat beberapa parameter lain? Terima kasih atas wawasan Anda.

Kode telah diambil dari halaman ini: Apakah ini metode yang tepat untuk menguji efek musiman dalam data jumlah bunuh diri?

juga
sumber
1
Itu terjadi karena ada "pola" dalam data acak, jika teknik pemasangan Anda memiliki parameter yang cukup.
bill_080
3
Istilah "signifikan" di sini tampaknya tidak mencerminkan segala jenis pengujian signifikansi.
Nick Cox
1
Stl adalah metode yang didorong oleh data nonparametrik, sehingga tidak ada cara untuk mengukur tidak adanya ketidakpastian musiman melalui pengujian signifikansi.
peramal

Jawaban:

12

Dekomposisi loess dimaksudkan untuk memperlancar rangkaian dengan menerapkan rata-rata pada data sehingga runtuh menjadi komponen, misalnya tren atau musiman, yang menarik untuk analisis data. Tetapi metodologi ini tidak dimaksudkan untuk melakukan tes formal untuk keberadaan musiman .

Meskipun dalam contoh Anda stlmengembalikan pola periodisitas musiman yang dihaluskan, pola ini tidak relevan untuk menjelaskan dinamika rangkaian. Untuk melihat itu, kita dapat membandingkan varian dari masing-masing komponen sehubungan dengan varian dari seri asli.

set.seed(123)
x <- ts(rnorm(144, sd=1), frequency=12)
a <- stl(x, s.window="periodic")
apply(a$time.series, 2, var) / var(x)
#   seasonal      trend  remainder 
# 0.07080362 0.07487838 0.81647852 

Kita dapat melihat bahwa itu adalah sisanya yang menjelaskan sebagian besar varians dalam data (seperti yang kita harapkan untuk proses white noise).

Jika kita mengambil seri dengan musiman, varians relatif dari komponen musiman jauh lebih relevan (walaupun kita tidak memiliki cara langsung untuk mengujinya karena loess bukan parametrik).

y <- diff(log(AirPassengers))
b <- stl(y, s.window="periodic")
apply(b$time.series, 2, var) / var(y)
#    seasonal       trend   remainder 
# 0.875463620 0.001959407 0.117832537 

Variasi relatif menunjukkan bahwa musiman adalah komponen utama yang menjelaskan dinamika seri.


Pandangan ceroboh pada plot dari stldapat menipu. Pola yang bagus dikembalikan oleh stlmungkin membuat kita berpikir bahwa pola musiman yang relevan dapat diidentifikasi dalam data, tetapi melihat lebih dekat dapat mengungkapkan bahwa itu sebenarnya tidak terjadi. Jika tujuannya adalah untuk memutuskan keberadaan musiman, dekomposisi loess dapat berguna sebagai pandangan awal tetapi harus dilengkapi dengan alat lain.

javlacalle
sumber
Dalam contoh AirPassengers Anda, tidak ada tren yang keluar, sementara ada tren yang jelas pada plot (AirPassengers). Tren mencapai 0,86 (dengan musiman hanya 0,1) jika pernyataan "diff (log (AirPassengers))" dihapus. Apa yang harus dilakukan?
rnso
Saya memberi contoh yang jelas secara numerik. Dalam praktiknya, hanya dengan membandingkan varian komponen yang dihaluskan mungkin tidak cukup untuk mencapai kesimpulan tentang keberadaan musiman. Sebagai contoh, seperti yang Anda temukan dalam kasus ini, jika tren tidak dihilangkan dengan mengambil perbedaan, varian tren mendominasi varian komponen musiman. Pertanyaannya adalah: apakah varians relatif 0,1 cukup besar untuk mempertimbangkan komponen ini relevan? Masalahnya adalah, berdasarkan loess, tidak ada cara langsung untuk menguji apakah varians komponennya signifikan.
javlacalle
Seperti yang saya katakan, apa yang harus kita lakukan dalam kasus ini dan lainnya adalah menggunakan metode lain untuk menguji keberadaan musiman. Lihat misalnya bagian kedua dari jawaban saya di sini . Setelah kami menyimpulkan bahwa musiman hadir dalam data, kita dapat menggunakan loess untuk mendapatkan pola komponen ini.
javlacalle
Hanya untuk klarifikasi lebih lanjut, bagaimana varians relatif menunjukkan seberapa banyak peran dekomposisi dalam data keseluruhan? Yaitu 70% musiman, tren 20%. dll
Ted Mosby
1
@TedMosby Varians adalah ukuran variabilitas / dispersi dalam data. Jumlah varian komponen (misalnya tren, musiman) dan varian sisanya menambah varian seri aslinya. Dengan cara ini, dengan membandingkan varians komponen dengan varians dari seri asli, kita bisa mendapatkan gagasan tentang seberapa relevan komponen tersebut (yaitu, seberapa banyak variabilitas dalam data dijelaskan oleh komponen).
javlacalle
2

Dalam nada yang sama saya telah melihat pemanfaatan Model Fourier untuk data non-musiman, memaksa struktur musiman ke dalam nilai-nilai fit dan perkiraan, menyebabkan hasil yang sama (terkesiap!). Menyesuaikan model yang diperkirakan memberi pengguna apa yang dia impikan / anggap yang tidak selalu disarankan / disampaikan oleh analisis yang baik.

IrishStat
sumber
1
stl()tidak didasarkan pada ide Fourier. Meskipun saya belum melihat siapa pun yang mengadvokasi analisis "mindless", perhatikan bahwa setiap model keluarga yang cocok dapat dianggap dipaksakan atau dianggap. Pertanyaannya adalah seberapa jauh setiap prosedur menawarkan ruang bagi pengguna untuk menyadari jika dan bagaimana cara kerjanya buruk untuk dataset tertentu.
Nick Cox
@NickCox cukup benar ....
IrishStat