12

我想在 R 中做一个简单的一阶马尔可夫链。我知道有像 MCMC 这样的包,但找不到一个以图形方式显示它的包。这甚至可能吗?如果给定一个转换矩阵和一个初始状态,那将是很好的,人们可以直观地看到通过马尔可夫链的路径(也许我必须手动这样做......)。

谢谢。

4

4 回答 4

10

这显示了如何将随机转换矩阵应用于特定的起始向量:c(1,0,0,0):

set.seed(123)
tmat <- matrix(rnorm(16)^2,ncol=4) 
   # need entries to be positive, could have used abs()
tmat <- tmat/rowSums(tmat) # need the rows to sum to 1
tmat
            [,1]       [,2]       [,3]        [,4]
[1,] 0.326123580 0.01735335 0.48977444 0.166748625
[2,] 0.016529424 0.91768404 0.06196453 0.003822008
[3,] 0.546050789 0.04774713 0.33676288 0.069439199
[4,] 0.001008839 0.32476060 0.02627217 0.647958394
require(expm)   # for the %^% function
matplot( t(         # need to transpose to get arguments to matplot correctly
       sapply(1:20, function(x) matrix(c(1,0,0,0), ncol=4) %*% (tmat %^% x) ) ) )

你可以看到它接近平衡: 在此处输入图像描述

于 2011-11-06T18:36:30.460 回答
4

包 coda ( http://cran.r-project.org/web/packages/coda/index.html ) 具有分析 MCMC 结果的工具,包括一些绘图功能。

于 2011-11-06T20:07:35.980 回答
2

也许 Biostar 上的这个查询可以帮助你:Visualizing HMM files of HMMER3。它指向两个外部应用程序,LogoMat-MHMMeditor,用于可视化 Profile Hidden Markov Models (pHMMs)。

于 2011-11-06T14:26:48.923 回答
2

您可以使用 markovchain R 包,它模拟离散时间马尔可夫链并包含基于 igraph 包的绘图工具。

library(markovchain) #loading the package
myMatr<-matrix(c(0,.2,.8,.1,.8,.1,.3,0,.7),byrow=TRUE,nrow = 3) #defining a transition matrix
rownames(myMatr)<-colnames(myMatr)<-c("a","b","c")
myMc<-as(myMatr, "markovchain")
plot(myMc)
于 2015-03-10T15:46:35.827 回答