2016-04-23 7 views
1

私はR markovchainパッケージを使用しようとしていました。R Markovchainパッケージ - 状態行列に基づいてマルコフ連鎖を適合させる

markovchainFit関数とシーケンス行列に関する質問があります。

デフォルトでは、markovchainFit関数は状態のシーケンスをパラメータとして実行されます。 次に、ドキュメント内では、この関数がそのシーケンスをシーケンス・マトリックスに変更し、createSequenceMatrix関数を使用して取得できると言われています。

私の質問は - ですが、何とかmarkovchainFitをパラメータとして(または少なくとも複数のデータシーケンスのvecotrを使って)シーケンスマトリックスで実行できますか?

私のモデルでは複数の吸収状態があるので、私は尋ねています。 これは、例のシーケンスが吸収状態で終了するため、短いかもしれないことを意味します。 私は自分のデータセットに複数のシーケンスを持っており、それらに基づいてシーケンスマトリックスを作成することができます。 しかし、私はmarkovchainFitのパラメータとして使うことができる1つの長いシーケンスを持っていません(各シーケンスは2つの状態の後に吸収されるので)。私の質問で


用語は、次のドキュメントに基づいています。簡単なシナリオが導入された記事の天気例でmarkovchainパッケージ

へ CRAN紹介。 3つの状態(晴れ、曇り、雨)と遷移行列は、入力でのように与えられるがある:そのマトリックスマルコフ連鎖オブジェクトが構築されているに基づい

 sunny cloudy rain 
sunny 0.7 0.20 0.10 
cloudy 0.3 0.40 0.30 
rain 0.2 0.45 0.35 

:そして

R> weatherMatrix <- matrix(data = c(0.70, 0.2, 0.1, 
+         0.3, 0.4, 0.3, 
+         0.2, 0.45, 0.35), byrow = byRow, nrow = 3, 
+ dimnames = list(weatherStates, weatherStates)) 
R> mcWeather <- new("markovchain", states = weatherStates, byrow = byRow, 
+ transitionMatrix = weatherMatrix, name = "Weather") 

配列がデータのマルコフ連鎖から生成される - バックそのサンプルからモデルをフィットする方法を実証するために:

R> weathersOfDays <- rmarkovchain(n = 365, object = mcWeather, t0 = "sunny") 

次に、新しいマルコフ連鎖は、データに基づいて装着されている:

R> weatherFittedLAPLACE <- markovchainFit(data = weathersOfDays, 
+         method = "laplace", laplacian = 0.01, 
+         name = "Weather LAPLACE") 
R> weatherFittedLAPLACE$estimate 

推定結果は、データが元の遷移行列に近い方法を示すために、以下に示す:

 cloudy rain  sunny 
cloudy 0.3944786 0.32110428 0.2844171 
rain 0.4050361 0.37972922 0.2152347 
sunny 0.1932057 0.07958871 0.7272056 

継手が「配列行列」に基づいていると言われています

私の問題は、多くの吸収状態があり、鎖が比較的短いため、複数の配列形式のデータがあることです。

私はそれらをフィードしてモデルにフィットさせたいと思いますが、パッケージはデータの1つのシーケンスを供給することができます。あるいは、上記のように配列行列を構築してモデルに供給することもできますが、パッケージ内で関数を処理することはできません。

短いストーリー - 私は複数の短いデータシーケンスを持っており、それに基づいてマルコフチェーンモデルを適合させたいと思っています。

+0

"シーケンスマトリックス"の特定の例を含めるように質問を編集した方が簡単です。私は自分の背景から、「遷移マトリックス」に基づいて実現を望んでいると言われていたと思いますが、多分異なる用語で作業しています。 –

答えて

0

あなたの要求に少なくとも部分的に答えている例があります。 holson「data.frame」は、実際に行が人生の軌跡と列の時間配列である行列であり、遷移行列

singleMc<-markovchainFit(data=holson[,2:12],name="holson") 

を実行することにより、フィット感です。これには、シーケンス長が偶数であることが必要です。あなたの例では、吸収状態に達したときにシーケンスの録音を停止すると長さが不均一になる可能性があると思います。したがって、ライフ履歴の最大長に達するまで、その行の最後の状態を繰り返す必要があります。

関連する問題