Saya mencoba meramalkan penjualan produk di vending machine. Masalahnya adalah bahwa mesin diisi pada interval yang tidak teratur dan pada setiap pengisian kita hanya dapat mencatat penjualan agregat sejak pengisian terakhir mesin (yaitu kita tidak memiliki data penjualan harian). Jadi pada dasarnya kami memiliki data untuk penjualan agregat pada interval tidak teratur. Interval biasanya antara 2 hari dan 3 minggu. Berikut adalah contoh data untuk satu mesin penjual otomatis dan satu produk:
27/02/2012 48
17/02/2012 24
09/02/2012 16
02/02/2012 7
25/01/2012 12
16/01/2012 16
05/01/2012 16
23/12/2011 4
16/12/2011 14
09/12/2011 4
02/12/2011 2
Algoritma naif kami saat ini adalah untuk menghitung rata-rata penjualan per hari dengan membagi jumlah total yang terjual selama 90 hari terakhir dengan 90.
Apakah Anda tahu bagaimana cara meningkatkan perkiraan penjualan per hari? Saya perlu memperkirakan apa yang akan dijual pada kunjungan mesin berikutnya. Apakah mungkin untuk menggunakan semacam algoritma pemulusan eksponensial mengingat sifat data kami?
Terima kasih sebelumnya!
PEMBARUAN: Terima kasih banyak untuk semua jawaban dan komentar. Biarkan saya mencoba untuk memberikan konteks yang sedikit lebih (kasus bisnis di balik pertanyaan - tentu saja sangat disederhanakan). Kami memiliki ratusan mesin penjual otomatis. Setiap hari kita harus memutuskan yang mana dari 20 yang akan mereka kunjungi untuk diisi ulang. Untuk melakukannya, kami mencoba memprediksi status mesin saat ini dan memilih 20 mesin "paling kosong". Untuk setiap mesin dan produk, kami menghitung rata-rata penjualan per hari (SPD) menggunakan algoritma naif yang dijelaskan di atas. Kemudian kami mengalikan SPD dengan jumlah hari sejak pengisian terakhir mesin dan hasilnya adalah kuantitas yang diprediksi terjual.
sumber
Jawaban:
Mari kita fokus pada masalah bisnis, mengembangkan strategi untuk mengatasinya, dan mulai menerapkan strategi itu dengan cara yang sederhana. Nantinya, hal itu dapat ditingkatkan jika upaya menjaminnya.
Masalah bisnisnya adalah memaksimalkan keuntungan, tentu saja. Itu dilakukan di sini dengan menyeimbangkan biaya pengisian ulang mesin dengan biaya kehilangan penjualan. Dalam formulasi saat ini, biaya pengisian ulang mesin ditetapkan: 20 dapat diisi ulang setiap hari. Karenanya, biaya penjualan yang hilang tergantung pada frekuensi mesin mana yang kosong.
Model statistik konseptual untuk masalah ini dapat diperoleh dengan merancang beberapa cara untuk memperkirakan biaya untuk masing-masing mesin, berdasarkan data sebelumnya. Yang diharapkanbiaya untuk tidak melayani mesin hari ini kira-kira sama dengan peluang mesin habis saat digunakan. Misalnya, jika mesin memiliki peluang 25% kosong hari ini dan rata-rata menjual 4 botol per hari, biaya yang diharapkan sama dengan 25% * 4 = 1 botol dalam penjualan yang hilang. (Terjemahkan itu ke dalam dolar sesuka Anda, jangan lupa bahwa satu penjualan yang hilang menimbulkan biaya yang tidak berwujud: orang melihat mesin kosong, mereka belajar untuk tidak bergantung padanya, dll. Anda bahkan dapat menyesuaikan biaya ini sesuai dengan lokasi mesin; memiliki beberapa yang tidak jelas mesin berjalan kosong untuk sementara waktu mungkin menimbulkan beberapa biaya tidak berwujud.) Adalah wajar untuk mengasumsikan bahwa mengisi ulang mesin akan segera mengatur ulang kerugian yang diharapkan menjadi nol - jarang terjadi bahwa mesin akan dikosongkan setiap hari (tidak Anda inginkan. ..) Seiring berjalannya waktu,
Titik merah menunjukkan urutan penjualan; titik biru adalah estimasi berdasarkan estimasi kemungkinan maksimum dari tingkat penjualan tipikal.
Dengan bagan seperti ini untuk setiap mesin (yang sepertinya ada beberapa ratus), Anda dapat dengan mudah mengidentifikasi 20 mesin yang saat ini mengalami kerugian terbesar yang diharapkan: melayani mereka adalah keputusan bisnis yang optimal. (Perhatikan bahwa setiap mesin akan memiliki laju perkiraan sendiri dan akan berada pada titiknya sendiri di sepanjang kurva, tergantung pada kapan terakhir kali diservis.) Tidak ada yang benar-benar harus melihat grafik ini: mengidentifikasi mesin untuk diservis berdasarkan ini adalah mudah diotomatisasi dengan program sederhana atau bahkan dengan spreadsheet.
Ini baru permulaan. Seiring waktu, data tambahan dapat menyarankan modifikasi pada model sederhana ini: Anda dapat memperhitungkan akhir pekan dan hari libur atau pengaruh yang diantisipasi lainnya pada penjualan; mungkin ada siklus mingguan atau siklus musiman lainnya; mungkin ada tren jangka panjang untuk dimasukkan dalam perkiraan. Anda mungkin ingin melacak nilai-nilai terluar yang mewakili operasi satu kali yang tidak terduga pada mesin dan memasukkan kemungkinan ini dalam perkiraan kerugian, dll. Namun, saya ragu bahwa perlu khawatir tentang korelasi serial penjualan: sulit untuk berpikir mekanisme apa pun untuk menyebabkan hal seperti itu.
untuk Excel (
A2
adalah sel yang berisi waktu sejak isi ulang terakhir danTheta
merupakan perkiraan tingkat penjualan harian) danuntuk R.)
Model yang lebih mewah (yang menggabungkan tren, siklus, dll) perlu menggunakan regresi Poisson untuk perkiraan mereka.
sumber
Saya pikir Anda biasanya akan memiliki langkah pertama untuk mengubah ke deret waktu reguler. Anda bilang Anda perlu rata-rata 90 hari. Karena Anda memiliki data yang lebih sering dari itu, saya pikir lebih masuk akal untuk menggunakan sebagian besar dari apa yang Anda miliki dengan mengambil hari antara setiap pengamatan dan membaginya dengan jumlah barang yang dijual untuk periode itu (dengan asumsi itulah yang Anda kolom kedua adalah).
Sebagai penafian, saya adalah seorang amatir total, jadi Anda ingin mengambil saran dari seorang ahli seperti IrishStat atas kode berikut (misalnya, katanya ETS adalah model yang buruk, jadi hanya memperlakukan ini sebagai contoh mainan), tetapi dengan harapan bahwa ini menghemat waktu Anda, berikut adalah beberapa kode R yang dapat Anda mainkan:
Plot yang dihasilkan adalah:
sumber
Apa yang Anda miliki adalah "Masalah Permintaan Berselang". Kami telah memecahkan masalah ini dengan mengubah permintaan menjadi nilai dengan membagi permintaan aktual dengan jumlah hari dalam interval antara servis. Tingkat ini kemudian dapat dimodelkan sebagai Fungsi Transfer untuk memprediksi tingkat yang diberikan prediksi interval. Kurs yang diprediksi ini kemudian dapat dikonversi ke permintaan. Perawatan harus diambil untuk mendeteksi pergeseran struktural dalam laju melalui Intervensi Deteksi. Coba googling "Pendekatan pemodelan Permintaan Intermiten menggunakan metodologi fungsi Transfer". Sray sangat jelas dengan pendekatan model dugaan Croston atau Exponential Smoothing karena mereka cukup kurang.
ANALISIS TAMBAHAN:
Ketika saya memodelkan Rate sebagai fungsi Interval, saya mendapatkan yang berikut ini. Menggunakan prediksi INTERVAL menggunakan masa lalu persamaan ini kemudian dapat memprediksi tingkat, yang dapat digunakan untuk memprediksi permintaan. Model semacam ini memungkinkan struktur autoregresif dalam laju untuk dimasukkan serta memungkinkan untuk Pulsa, Pergeseran Level dan / atau Tren Waktu Lokal dalam laju.
# (BOP) NILAI NILAI KESALAHAN
SERI INPUT X1 INTERVAL
SERI INPUT X2 I ~ P00002 12/03/11 PULSA
SERI INPUT X3 I ~ P00007 12/08/11 PULSA
SERI INPUT X4 I ~ P00010 12/11/11 PULSE
sumber