Menggunakan paket perkiraan R dengan nilai yang hilang dan / atau deret waktu yang tidak teratur


16

Saya terkesan dengan forecastpaket R , serta misalnya zoopaket untuk seri waktu tidak beraturan dan interpolasi nilai yang hilang.

Aplikasi saya ada di bidang perkiraan lalu lintas pusat panggilan, sehingga data pada akhir pekan selalu (hampir) hilang, yang dapat ditangani dengan baik zoo. Juga, beberapa titik diskrit mungkin hilang, saya hanya menggunakan R NAuntuk itu.

Masalahnya adalah: semua keajaiban bagus dari paket perkiraan, seperti eta(), auto.arima()dll, tampaknya mengharapkan tsobjek biasa , yaitu deret waktu equispaced tidak berisi data yang hilang. Saya pikir aplikasi dunia nyata untuk seri waktu hanya-equispaced pasti ada, tetapi - menurut saya - sangat terbatas.

Masalah beberapa NAnilai diskrit dapat dengan mudah dipecahkan dengan menggunakan salah satu fungsi interpolasi yang ditawarkan zoodan juga oleh forecast::interp. Setelah itu, saya menjalankan ramalan.

Pertanyaan saya:

  1. Adakah yang menyarankan solusi yang lebih baik?
  2. (pertanyaan utama saya) Setidaknya dalam domain aplikasi saya, perkiraan lalu lintas pusat panggilan (dan sejauh yang saya bayangkan sebagian besar domain masalah lainnya), deret waktu tidak sama. Setidaknya kami memiliki skema "hari kerja" berulang atau sesuatu. Apa cara terbaik untuk mengatasinya dan masih menggunakan semua sihir keren dari paket ramalan?

    Haruskah saya "mengompres" deret waktu untuk mengisi akhir pekan, melakukan ramalan, dan kemudian "menggembungkan" data lagi untuk memasukkan kembali nilai-nilai NA di akhir pekan? (Itu akan memalukan, saya pikir?)

    Apakah ada rencana untuk membuat paket perkiraan sepenuhnya kompatibel dengan paket seri waktu tidak teratur seperti kebun binatang atau nya? Jika ya, kapan dan jika tidak, mengapa tidak?

Saya cukup baru dalam meramalkan (dan statistik secara umum), jadi saya mungkin mengabaikan sesuatu yang penting.


Selamat datang di situs dan perkiraan! Aplikasi dunia nyata untuk deret waktu khusus-equispaced jelas tidak terlalu terbatas. Saya kebetulan tahu sedikit tentang peramalan yang masuk ke supermarket Anda memiliki cukup banyak produk untuk menangani permintaan promosi, dan percayalah, berjuta-juta seri waktu (20.000 SKU di 1.000 toko sangat umum) memang sangat pas. (Maaf, tetapi Anda agak memintanya ...) Tetapi saya akan mencoba untuk membuat sesuatu yang lebih bermanfaat bagi Anda sebentar lagi.
Stephan Kolassa

2
Bisakah Anda lebih eksplisit mengapa data call center tidak sama? (Mungkin saya salah paham apa yang Anda maksud dengan "equispaced".) Metode perkiraan pusat panggilan yang saya lihat biasanya menyatukan panggilan masuk ke interval 15 menit, yang memenuhi definisi saya "equispaced". Kami kemudian harus berurusan dengan musiman kompleks (intra-harian, intra-mingguan, tahunan), untuk topik mana ini dapat membantu Anda: stats.stackexchange.com/questions/44704/… Apakah ini menjawab pertanyaan Anda? Jika tidak, beri tahu kami apa yang Anda butuhkan.
Stephan Kolassa

5
auto.arimadapat menangani nilai yang hilang.
Rob Hyndman

1
Terima kasih atas semua komentar konstruktif! Stephan, data saya tidak lengkap dalam dua cara: 1. Banyak pusat panggilan tutup pada hari Sabtu dan Minggu. Beberapa ditutup hanya pada hari Minggu. Jadi ruang "normal" antara dua titik data yang berdekatan adalah satu hari, kecuali dari Jumat hingga Senin, yaitu tiga hari. Jadi ruangnya tidak sama, yaitu tidak equispaced. Kedua, bisa saja ada data yang hilang secara acak di suatu tempat karena mereka hanya lupa untuk menghidupkan alat pengukur mereka pada hari itu atau apa pun. Saya harap itu membuat poin saya jelas.
entreprogreur

1
Hanya pemikiran (provokatif). Jika Anda mengatakan pusat panggilan ditutup pada akhir minggu. Maka Anda tidak memiliki data yang hilang. Rentang waktu Anda mencakup Mo-Fr. 5 hari. cukup setara. Menginterpolasi akhir pekan tampaknya secara resmi salah, karena Anda tahu bahwa tidak ada panggilan yang terjadi dan informasi apa pun yang Anda nyatakan salah. Saya berpendapat bahwa Anda tidak pernah dapat meningkatkan taksiran dengan menciptakan data ...
bermakna-

Jawaban:


1

Saya bukan ahli R jadi mungkin ada cara yang lebih sederhana tapi saya pernah menemukan ini sebelumnya. Apa yang saya lakukan sebelumnya adalah mengimplementasikan fungsi yang mengukur jarak (dalam satuan waktu) antara tanggal aktual dan menyimpannya di kolom baru dalam rangkaian waktu yang ada. Jadi kita punya sesuatu seperti:

index/date | value | distance  
01.01.2011 |  15   |   1  
02.01.2011 |  17   |   3  
05.01.2011 |  22   |   ..   

Dengan cara ini, jika deret waktu Anda belum dikaitkan dengan serangkaian titik waktu aktual (atau format yang salah atau apa pun), maka Anda masih dapat menggunakannya.

Selanjutnya, Anda menulis fungsi yang membuat deret waktu baru untuk Anda, seperti:

Pertama, Anda menghitung berapa unit waktu yang seharusnya dimiliki deret waktu antara tanggal pemilihan ponsel Anda dan buat garis waktu itu di kebun binatang atau kebun binatang atau apa pun pilihannya dengan nilai kosong.

Kedua, Anda mengambil array deret waktu yang tidak lengkap dan, menggunakan loop, mengisi nilai-nilai ke dalam garis waktu yang benar, sesuai dengan batas yang Anda pilih. Ketika Anda menemukan sebuah baris di mana jarak unit tidak satu (hari (unit) tidak ada), Anda mengisi nilai-nilai yang diinterpolasi.

Sekarang, karena ini adalah fungsi Anda, Anda sebenarnya dapat memilih cara interpolasi. Misalnya Anda memutuskan bahwa jika jaraknya kurang dari dua unit, Anda menggunakan interpolasi linier standar. Jika satu minggu hilang, Anda melakukan sesuatu yang lain dan jika ambang batas tanggal yang hilang tercapai, Anda memberikan peringatan tentang data - benar-benar apa pun yang ingin Anda bayangkan.

Jika loop mencapai tanggal akhir Anda mengembalikan ts Anda yang baru.

Keuntungan dari fungsi tersebut adalah bahwa Anda dapat menggunakan interpolasi yang berbeda atau prosedur penanganan tergantung pada panjang celah dan mengembalikan seri menciptakan rapi dalam format yang Anda pilih. Setelah ditulis, ini memungkinkan Anda mendapatkan data tabular yang bersih dan bagus. Semoga ini bisa membantu Anda.


Terima kasih, IMA, atas jawaban yang bermanfaat! Jadi, apa yang saya lakukan sekarang: untuk nilai-nilai yang hilang diskrit, saya menggunakan interpolasi (serta "penyesuaian" yang disediakan pengguna) untuk mengisi data yang hilang. IMA, jawaban Anda dalam peningkatan lebih lanjut yang sangat membantu. Untuk data yang hilang "biasa" seperti akhir pekan, saya mengubah data saya menjadi data yang kedua, "semu" hanya untuk tujuan peramalan, dan kemudian mengubah hasilnya kembali ke seri waktu "yang benar", sehingga juga perkiraan tersebut akan memiliki nilai yang hilang di akhir pekan. Saya masih akan berterima kasih atas saran yang lebih elegan tentang cara menangani "celah" reguler di akhir pekan.
Pengusaha

@entreprogreur, saya tidak menjawab, IMA melakukannya. IMA dapatkan kredit penuh di sini. Saya baru saja mengubah format sehingga akan ditampilkan dengan baik.
gung - Reinstate Monica

1

Anda harus sangat berhati-hati ketika menerapkan interpolasi sebelum perawatan statistik lebih lanjut. Pilihan yang Anda lakukan untuk interpolasi Anda menimbulkan bias pada data Anda. Ini adalah sesuatu yang Anda pasti ingin hindari, karena dapat mengubah kualitas prediksi Anda. Menurut pendapat saya untuk nilai-nilai yang hilang seperti yang Anda sebutkan, yang secara teratur diberi jarak waktu dan yang sesuai dengan penghentian dalam kegiatan, mungkin lebih tepat untuk tidak menggunakan model Anda hari ini. Di dunia kecil pusat panggilan Anda (model yang Anda buat tentang itu), mungkin lebih baik untuk mempertimbangkan bahwa waktu hanya berhenti ketika ditutup daripada menciptakan pengukuran aktivitas yang tidak ada. Di sisi lain, model ARIMA secara statistik dibangun berdasarkan asumsi bahwa data memiliki jarak yang sama. Sejauh yang saya tahu tidak ada adaptasi ARIMA untuk kasus Anda. Jika Anda hanya melewatkan beberapa pengukuran pada hari kerja yang sebenarnya, Anda mungkin terpaksa menggunakan interpolasi.


0

Saya tidak akan menginterpolasi data sebelum memperkirakan model pada data ini, seperti dicatat oleh @Remi. Itu ide yang buruk. Contoh ekstrem: bayangkan Anda memiliki dua titik data Jan 2013 dan Jan 2014. Sekarang interpolasi 10 poin bulanan di antaranya: Februari hingga Desember 2013, dan jalankan regresi pada tanggal bulanan. Pada kenyataannya itu tidak akan seburuk ini, tetapi itu adalah ide yang sama: Anda akan menggelembungkan statistik Anda yang terbaik.

Cara untuk pergi adalah dengan menggunakan metode deret waktu yang menangani data yang hilang. Misalnya, nyatakan metode ruang. Lihatlah paket astsa R. Muncul dengan buku yang bagus tentang analisis deret waktu. Ini akan menangani data yang hilang dengan baik. Matlab sekarang memiliki fungsi serupa dalam paket ssm . Anda harus belajar mengubah model Anda menjadi bentuk ruang angkasa, tetapi Anda harus mempelajarinya jika Anda ingin menjauh dari auto.arima"sihir".

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.