Saya sedang menulis sebuah program yang rata-rata berat pengguna di hari yang berbeda. Saya berencana untuk menggunakan rata-rata bergerak 5 poin (hari ini, dua sebelum dan dua setelah). Terkadang, titik data hilang selama 1-2 hari. Bagaimana kasus-kasus ini biasanya ditangani?
(jika ada filter low-pass yang lebih baik yang bisa saya gunakan, saya akan suka saran)
Jawaban:
Sebagai kesan umum, regresi akan bekerja lebih baik secara otomatis menyesuaikan poin yang hilang daripada filter rata-rata bergerak yang Anda pilih.
Jika Anda menggunakan AR (filter regresif otomatis) atau filter ARMA - Anda dapat memiliki nilai prediksi sampel output berdasarkan input sebelumnya.
Di mana adalah nilai prediksi.X^[ i ]
Khususnya dalam kasus Anda, katakan Anda tahu bobot orang tersebut memiliki rentang tertentu . Sekarang jika Anda tidak memiliki nilai - menerapkan dua substitusi berbeda - satu dengan Min dan satu dengan Max dan berdasarkan model yang tersedia Anda akan memiliki dua hasil kasus ekstrim untuk dan Anda dapat pilih sesuatu di antara mereka. x [ i - 1 ] X [ i ]Xm a x, Xm i n x [ i - 1 ] X^[ i ]
Ada berbagai alternatif lain - yang bisa Anda pertahankan
X [i]=panjang jangka sampel rata-rata X
Pada dasarnya itu adalah permainan prediksi nilai yang dikatakan dan terus menggunakannya sebagai sinyal. Tentu saja, prediksi tidak akan sama dengan sampel asli, tetapi bukan itu harga yang Anda bayar karena tidak memiliki data.
sumber
Metode sederhana dan umum untuk mengisi data yang hilang, jika Anda memiliki data lengkap, adalah dengan menggunakan
regresi Linear . Katakanlah Anda memiliki 1000 run dari 5 berturut-turut tanpa ada yang hilang.
Siapkan 1000 x 1 vektor y dan 1000 x 4 matriks X:
Regresi akan memberi Anda 4 angka abcd yang memberikan kecocokan terbaik
untuk 1000 baris data Anda - data berbeda, abc berbeda d.
Kemudian Anda menggunakan abcd ini untuk memperkirakan (memprediksi, menginterpolasi) yang tidak ada dengan [0].
(Untuk bobot manusia, saya harapkan sekitar sekitar 1/4.)
Dalam python, lihat numpy.linalg.lstsq .
(Ada banyak buku dan makalah tentang regresi, di semua tingkatan. Namun, untuk hubungan dengan interpolasi, saya tidak tahu pengantar yang bagus; siapa pun?)
sumber
sumber
Saya pikir cara paling sederhana adalah "memprediksi" tanggal untuk "keseluruhan" dalam rangkaian waktu menggunakan data yang datang sebelumnya. maka Anda dapat menggunakan rentang waktu ini untuk estimasi parameter. (Anda kemudian dapat melanjutkan dan memprediksikan kembali nilai yang hilang menggunakan perkiraan parameter Anda dari seluruh rentang waktu (selesai) dan ulangi ini sampai mereka bertemu). Anda harus mendapatkan batas kepercayaan dari jumlah titik data nyata yang Anda miliki, dan bukan dari panjang kumpulan data yang lengkap.
sumber