Bagaimana cara memprediksi probabilitas keadaan atau status untuk data baru dengan paket DepmixS4, untuk Hidden Markov Models

8

Sepertinya saya bisa mempelajari parameter dengan baik dan menemukan probabilitas posterior untuk data pelatihan tetapi saya tidak tahu bagaimana membuat prediksi baru pada data baru. Masalahnya terutama berasal dari probabilitas transisi yang berubah pada kovariat sehingga tidak mudah untuk menulis kode untuk memprediksi data baru.

Pendekatan standar adalah untuk menentukan campuran (tergantung) dan sesuai dengan model:

mod <- depmix(EventTime ~ 1, data = data[1:40320,], nstates = 2, family
=multinomial("identity"), transition = ~ Count, instart = runif(2))

fm <- fit(mod, emcontrol=em.control(classification="soft", maxit = 60))

Apa yang kita miliki di atas harus berfungsi sama dengan HMM biner karena mencoba untuk mengklasifikasikan apakah suatu peristiwa terjadi sebagai variabel dependen 1/0 bergerak melalui urutan. Transisi kovariat adalah variabel penghitungan frekuensi yang harus secara langsung memengaruhi probabilitas transisi dari keadaan yang selanjutnya harus mengontrol probabilitas emisi dari variabel dependen 1/0.

Dimungkinkan untuk mendapatkan parameter dari model dan mengatur parameter ke model baru lainnya. Namun, tidak ada metode prediksi yang jelas, meskipun harus ada di suatu tempat di nyali perpustakaan.

modNew <- depmix(EventTime~1,data=data2,transition=~Count,nstates=2,
family=multinomial("identity"))

modNew <- setpars(modNew,getpars(fm))

Catatan, dalam dokumentasi dikatakan bahwa dimungkinkan untuk menjalankan algoritma viterbi untuk menghasilkan status untuk data baru. Namun, ini tidak terlalu berguna bagi saya dan tampaknya sangat cocok dengan data yang menyarankan itu masih belajar agar sesuai dengan data baru.

probs2 <- viterbi(modNew)

Catatan, saya baru mengenal topik ini. Tahap implementasi ini sulit bagi saya, namun entah bagaimana sepertinya bagian dasar dari analisis.

iuppiter
sumber
Setelah setpars, terapkan viterbi (modNew) Ini akan menghasilkan tabel dengan probabilitas negara
Andrey Boarão

Jawaban:

0

Pas dengan model baru dan kemudian menelepon posterior().

modNew <- depmix(EventTime~1,data=data2,transition=~Count,nstates=2,
family=multinomial("identity"))

modNew <- setpars(modNew,getpars(fm))

modNew <- fit(modNew)

predStates <- posterior(modNew)

predStates$state
Alejandro Andrade
sumber
3
Saya tidak mengerti mengapa kita harus mereparasi model karena parameter telah "dipelajari" pertama kali, apakah saya salah?
Patrick
0

Sudahkah Anda memecahkan ini? Jika tidak, mungkin Anda bisa mencoba:

sum(forwardbackward(setpars(depmix(list(var~1), data=newData, nstates=3,family=list(gaussian())), getpars(originalModel)))[["alpha"]][nrow(data),])

One-liner ini mendapatkan kemungkinan data baru dengan menjalankan algoritma forward pada model asli Anda. Tolong beri tahu saya jika Anda sampai pada solusi yang lebih baik, karena saya sendiri yang menangani masalah ini.

Michael
sumber