Saya memiliki empat seri pengukuran waktu yang berbeda:
- Konsumsi panas di dalam rumah
- Suhu di luar rumah
- Radiasi matahari
- Kecepatan angin
Saya ingin dapat memprediksi konsumsi panas di dalam rumah. Ada tren musiman yang jelas, baik secara tahunan, dan setiap hari. Karena ada korelasi yang jelas antara seri yang berbeda, saya ingin memasangnya dengan menggunakan model ARIMAX. Ini dapat dilakukan dalam R, menggunakan fungsi arimax dari paket TSA.
Saya mencoba membaca dokumentasi tentang fungsi ini, dan membaca tentang fungsi transfer, tetapi sejauh ini, kode saya:
regParams = ts.union(ts(dayy))
transferParams = ts.union(ts(temp))
model10 = arimax(heat,order=c(2,1,1),seasonal=list(order=c(0,1,1),period=24),xreg=regParams,xtransf=transferParams,transfer=list(c(1,1))
pred10 = predict(model10, newxreg=regParams)
memberi saya:
di mana garis hitam adalah data yang diukur sebenarnya, dan garis hijau adalah model yang cocok saya sebagai perbandingan. Bukan hanya itu bukan model yang baik, tetapi jelas ada sesuatu yang salah.
Saya akan mengakui bahwa pengetahuan saya tentang model-ARIMAX dan fungsi transfer terbatas. Dalam fungsi arimax (), (sejauh yang saya mengerti), xtransf adalah deret waktu eksogen yang ingin saya gunakan (menggunakan fungsi transfer) untuk memprediksi deret waktu utama saya. Tapi apa sebenarnya perbedaan antara xreg dan xtransf?
Secara umum, apa yang telah saya lakukan salah? Saya ingin bisa mendapatkan yang lebih baik daripada yang dicapai dari lm (panas ~ temp radi wind * time).
Suntingan: Berdasarkan beberapa komentar, saya menghapus transfer, dan menambahkan xreg sebagai gantinya:
regParams = ts.union(ts(dayy), ts(temp), ts(time))
model10 = arimax(heat,order=c(2,1,1),seasonal=list(order=c(0,1,1),period=24),xreg=regParams)
di mana dayy adalah "angka hari dalam setahun", dan waktu adalah jam dalam sehari. Temp adalah suhu di luar. Ini memberi saya hasil berikut:
mana yang lebih baik, tetapi tidak hampir seperti yang saya harapkan.
sumber
predict()
digunakan untuk perkiraan, sambilfitted()
mengembalikan model yang cocok selama periode historis. Jika Anda ingin bantuan yang lebih spesifik, Anda harus memposting contoh yang dapat direproduksi dengan beberapa kode.heat
akan meningkat secara linear dengan jam sehari, dan kemudian melompat kembali ketika jam kembali ke 1. Jika Anda menggunakan variabel dummy, setiap jam dalam sehari akan mendapatkan efeknya sendiri. Jalankan melalui kode contoh saya, dan perhatikan bagaimana saya membangun objek xreg saya.stats
danforecast
adalah bahwa mereka tidak cocok dengan fungsi transfer prober. Dokumentasistats::arima
fungsi menyatakan sebagai berikut: Jika istilah xreg disertakan, regresi linier (dengan suku konstanta jika include. Berarti benar dan tidak ada perbedaan) dilengkapi dengan model ARMA untuk istilah kesalahan. Jadi, jika Anda benar-benar harus menyesuaikan fungsi transfer sepertinyaTSA::arimax
fungsi adalah cara untuk masukR
.Saya telah menggunakan R untuk melakukan prakiraan beban untuk sementara waktu dan saya dapat menyarankan Anda untuk menggunakan
forecast
paket dan fungsinya yang tak ternilai (sepertiauto.arima
).Anda dapat membangun model ARIMA dengan perintah berikut:
dengan
y
prediksi Anda dan (saya kiradayy
),order
urutan model Anda (mempertimbangkan musim) danexogenous_data
suhu Anda, radiasi matahari, dll. Fungsi iniauto.arima
membantu Anda menemukan urutan model yang optimal. Anda dapat menemukan tutorial singkat tentang paket `ramalan 'di sini .sumber
Saya pribadi tidak mengerti fungsi transfer, tapi saya pikir Anda dapat
xtransf
danxreg
membalikkannya. Setidaknya dalam basis R,arima
ituxreg
berisi variabel eksogen Anda. Ini kesan saya bahwa fungsi transfer menjelaskan bagaimana (data yang tertinggal mempengaruhi nilai masa depan) daripada apa .Saya akan mencoba menggunakan
xreg
untuk variabel eksogen Anda, mungkin menggunakanarima
jikaarimax
menuntut fungsi transfer. Masalahnya adalah bahwa model Anda setiap hari, tetapi data Anda memiliki musiman harian dan tahunan, dan saya tidak yakin sekarang apakah perbedaan pertamaorder=(*, 1, *)
akan mengatasi hal itu atau tidak. (Anda tentu tidak akan mendapatkan ramalan sepanjang tahun ajaib dari model yang hanya mempertimbangkan musiman harian.)PS Apa
time
yang Anda gunakan di Andalm
? Waktu jam literal atau angka pengamatan 1-up? Saya pikir Anda bisa mendapatkan sesuatu dengan menggunakan model efek-campuran (lmer
dalamlme4
paket), meskipun saya belum menemukan apakah melakukan hal itu dengan benar bertanggung jawab atas autokorelasi yang akan terjadi dalam rangkaian waktu. Jika tidak diperhitungkan, dan yanglm
tidak, Anda mungkin mendapatkan kecocokan yang menarik, tetapi konsep Anda tentang seberapa akurat prediksi Anda akan terlalu optimis.sumber