2016-12-31 11 views
1

私は列にテキストがあり、マルコフチェーンを構築したいと考えています。私は、状態A、B、C、Dのためのマルコフ連鎖を構築し、その状態でマルコフ連鎖を生成する方法があるのだろうと思っていました。何かご意見は?あなたがデータからのMLEと遷移確率行列を(行の確率論的)計算したい場合はrの建物のマーキングチェーン

A<- c('A-B-C-D', 'A-B-C-A', 'A-B-A-B') 
+0

あなたは、もう少し具体的なことができますか?どのように遷移確率の行列を指定したいですか? –

+0

この質問は関連しています/その回答が役に立つと思われるようですhttp://stackoverflow.com/questions/2754469/r-library-for-discrete-markov-chain-simulation?rq=1 – hodgenovice

+0

何を試しましたか? Rとマルコフ連鎖に関する多くの情報があります。また、[このパッケージ](https://cran.r-project.org/web/packages/markovchain/index.html)もあります。 –

答えて

2

あなたがstatetable.msmで作業する方法を知っていることを述べたので、ここにありますそれが処理できる形式にデータを変換する方法:

​​

ダッシュ上の分割および列に並べる:

d2 <- data.frame(do.call(cbind,strsplit(dd,"-"))) 

は、シーケンスによって識別されるデータフレームに配置:

d3 <- tidyr::gather(d2) 

は、遷移行列を構築する:

statetable.msm(value,key,data=d3) 
2

、これを試してみてください。

A <- c('A-B-C-D', 'A-B-C-A', 'A-B-A-B', 'D-B-C-A') # the data: by modifying your example data little bit 
df <- as.data.frame(do.call(rbind, lapply(strsplit(A, split='-'), function(x) t(sapply(1:(length(x)-1), function(i) c(x[i], x[i+1])))))) 
tr.mat <- table(df[,1], df[,2]) 
tr.mat <- tr.mat/rowSums(tr.mat) # make the matrix row-stochastic 
tr.mat 

    #   A   B   C   D 
    # A 0.0000000 1.0000000 0.0000000 0.0000000 # P(A|A), P(B|A), P(C|A), P(D|A) with MLE from data 
    # B 0.2500000 0.0000000 0.7500000 0.0000000 
    # C 0.6666667 0.0000000 0.0000000 0.3333333 
    # D 0.0000000 1.0000000 0.0000000 0.0000000