Saya mencoba mereproduksi algoritma prediksi yang ada, yang diturunkan oleh seorang pensiunan peneliti. Langkah pertama adalah mencocokkan beberapa data yang diamati dengan distribusi Weibull, untuk mendapatkan bentuk dan skala yang akan digunakan untuk memprediksi nilai masa depan. Saya menggunakan R untuk melakukan ini. Ini contoh kode saya:
x<-c(23,19,37,38,40,36,172,48,113,90,54,104,90,54,157,51,77,78,144,34,29,45,16,15,37,218,170,44,121)
f<-fitdistr(x, 'weibull')
Ini berfungsi dengan baik kecuali jika ada nol di array input, yang menyebabkannya gagal sepenuhnya. Hal yang sama terjadi di SAS. Seperti yang saya pahami, ini karena salah satu langkah dalam menghitung distribusi Weibull adalah mengambil log natural, yang tidak ditentukan untuk 0. Apakah ada cara yang masuk akal untuk mengatasi ini?
Sejauh ini yang terbaik yang saya temukan adalah menambahkan 1 ke semua nilai input saya, pas kurva, dan kemudian mengurangi satu dari nilai prediksi saya ("menggeser" kurva ke atas dan kemudian mundur ke bawah dengan 1). Ini cocok dengan data yang diprediksi sebelumnya dengan cukup baik, tetapi sepertinya itu cara yang salah untuk melakukannya.
sunting: Nilai-nilai dalam array input diamati, data dunia nyata (jumlah kemunculan sesuatu) untuk rentang tahun. Jadi dalam beberapa tahun jumlah kejadiannya nol. Apakah itu cara terbaik atau tidak (saya setuju mungkin tidak), pembuat algoritma asli mengklaim telah menggunakan distribusi Weibull, dan saya harus mencoba meniru proses mereka.
sumber
Jawaban:
(Seperti yang telah ditunjukkan orang lain, distribusi Weibull tidak mungkin menjadi perkiraan yang tepat ketika data hanya bilangan bulat. Berikut ini dimaksudkan hanya untuk membantu Anda menentukan apa yang dilakukan peneliti sebelumnya, benar atau salah.)
Ada beberapa metode alternatif yang tidak terpengaruh oleh nol dalam data, seperti menggunakan berbagai metode penaksir momen. Ini biasanya memerlukan solusi numerik persamaan yang melibatkan fungsi gamma, karena momen-momen distribusi Weibull diberikan dalam hal fungsi ini. Saya tidak terbiasa dengan R, tapi inilah program Sage yang menggambarkan salah satu metode yang lebih sederhana - mungkin bisa disesuaikan dengan R? (Anda dapat membaca tentang ini dan metode lain semacam itu di, misalnya, "Distribusi Weibull: buku pegangan" oleh Horst Rinne, hal. 455ff - namun, ada kesalahan ketik pada eq.12.4b-nya, sebagai '-1' redundan).
Ini menghasilkan output
maka prosedur yang sama menghasilkan output
EDIT: Saya baru saja menginstal R untuk mencobanya. Dengan risiko membuat jawaban ini terlalu lama, bagi siapa pun yang tertarik inilah kode-R saya untuk metode Blischke-Scheuer:
Ini mereproduksi (hingga lima digit signifikan) dua contoh Sage di atas:
sumber
fitdistr
fitdistr
Kemudian minimalkan fungsi ini menggunakan optimasi satu dimensi:
di mana saya baru saja membuat "+10" berdasarkan apa-apa.
Untuk data dengan tiga nilai terkecil yang diganti dengan nol, kita mendapatkan:
bar$minimum
adalah MLE darifitdistr
sumber
Itu harus gagal, Anda harus bersyukur bahwa itu gagal.
Pengamatan Anda menunjukkan bahwa kegagalan terjadi pada saat Anda mulai mengamatinya. Jika ini adalah proses nyata, yang berasal dari data nyata (dan bukan data yang disimulasikan), Anda perlu menjelaskan alasan mengapa Anda mendapatkan angka nol. Saya telah melihat studi bertahan hidup di mana 0 kali muncul sebagai konsekuensi dari salah satu dari beberapa hal:
Jadi untuk kasus 1: Anda perlu menggunakan metode sensor yang tepat, bahkan jika itu berarti menarik catatan secara retrospektif. Kasus 2 berarti Anda dapat menggunakan algoritma EM karena Anda memiliki masalah presisi. Metode Bayesian bekerja dengan cara yang sama di sini. Kasus 3 berarti Anda hanya perlu mengecualikan nilai-nilai yang seharusnya hilang.
sumber
Saya setuju dengan jawaban kardinal di atas. Namun, juga cukup umum untuk menambahkan konstanta untuk menghindari nol. Nilai lain yang umum digunakan adalah 0,5, tetapi konstanta positif apa pun mungkin telah digunakan. Anda dapat mencoba rentang nilai untuk melihat apakah Anda dapat mengidentifikasi nilai tepat yang digunakan oleh peneliti sebelumnya. Maka Anda bisa yakin bahwa Anda dapat mereproduksi hasilnya, sebelum mencari distribusi yang lebih baik.
sumber
[Dengan asumsi Weibull tepat] Buku Johnson Kotz dan Balakrishnan memiliki banyak cara untuk memperkirakan parameter Weibull. Beberapa di antaranya tidak bergantung pada data yang tidak termasuk nol (misalnya menggunakan mean dan standar deviasi, atau menggunakan persentil tertentu).
Johnson, NL, Kotz, S., dan Balakrishnan, N. (1994). Distribusi Univariat Berkelanjutan. New York: Wiley, kira-kira di halaman 632.
sumber