隠れマルコフモデルの場合、DepmixS4パッケージで新しいデータの状態確率または状態を予測する方法


8

パラメータをうまく学習してトレーニングデータの事後確率を見つけることができるようですが、新しいデータで新しい予測を行う方法についての手がかりはありません。特に問題は、共変量で変化する遷移確率に起因するため、新しいデータを予測するコードを書くのは簡単ではありません。

標準的なアプローチは、(依存する)混合を定義し、モデルに適合させることです:

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))

上記の内容は、イベントがシーケンスを移動する1/0従属変数として発生したかどうかを分類しようとしているため、バイナリHMMと同様に機能するはずです。遷移共変量は、状態の遷移確率に直接影響する頻度カウント変数で、その後、1/0従属変数の放出確率を制御します。

モデルのパラメーターを取得し、別の新しいモデルにパラメーターを設定することが可能です。しかし、ライブラリの根本のどこかにあるはずですが、明確な予測方法はありません。

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

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

ドキュメントでは、ビタビアルゴリズムを実行して新しいデータの状態を生成することが可能であると記載されています。ただし、これは私にとって特に有用ではなく、データに完全に適合しているように見えますが、それでも新しいデータに適合できることを学習しています。

probs2 <- viterbi(modNew)

注:私はこのトピックを初めて使用します。実装のこの段階は私には難しいですが、どういうわけかそれは分析の基本的な部分のようです。


setparsの後で、viterbi(modNew)を適用します。状態確率を含むテーブルが生成されます
AndreyBoarãoNov

回答:


0

新しいモデルを取り付けてから、を呼び出します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

3
パラメータが最初に「学習された」ため、モデルを再フィットする必要がある理由がわかりません。
Patrick、

0

これを解決しましたか?そうでない場合、おそらくあなたは試すことができます:

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

このワンライナーは、元のモデルでフォワードアルゴリズムを実行することにより、新しいデータの確率を取得します。私がこの問題に自分で取り組んでいるので、より良い解決策に到達したかどうかをお知らせください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.