2011-11-06 2 views
12

Я бы хотел сделать простую цепочку марков первого порядка в R. Я знаю, что есть такие пакеты, как MCMC, но не смог найти ее для графического отображения. Возможно ли это? Было бы неплохо, если бы была задана матрица перехода и начальное состояние, можно визуально увидеть путь через цепочку марков (возможно, я должен сделать это вручную ...).Простая марковская цепочка в R (визуализация)

Спасибо.

+0

Я не знаком с пакетами в этой области, но если вы не можете найти консервированную замышляет команду, которую вы хотите, вы всегда можете извлечь матрицам себя и построить их: http://stackoverflow.com/questions/5453336/r-plot-corre-matrix-into-graph –

+0

спасибо. это была бы другая идея, если бы не было ничего подобного :). – user1028531

+0

немного больше разъяснений или грубый пример того, что вы хотите, было бы полезно: ответы ниже представлены по всей карте, потому что люди интерпретируют ваш вопрос по-разному. –

ответ

2

Возможно, этот запрос на Biostar может вам помочь: Visualizing HMM files of HMMER3. Он указывает на два внешних приложения: LogoMat-M и HMMeditor, для визуализации профиля скрытых марковских моделей (pHMM).

10

Это показывает, как применить случайную матрицу перехода к определенному начальному вектору: с (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)))) 

Вы можете увидеть его приближение равновесия: enter image description here

+0

Я получаю 'Ошибка: неожиданно '[' in" [" Выполнение приостановлено ' –

+0

Мне очень жаль это слышать. Код по-прежнему работает именно с этим выходом в R 3.1.2 –

+0

Хм ... кажется, работает в Rstudio (хотя он также печатает «Ошибка: неожиданно» ['in "[" '), но не тогда, когда я выполняю его как Rscript через bash. Вы знаете, почему? –

2

Вы можете использовать пакет markovchain R, который моделирует цепь Markov Choice и содержит средство построения графиков на основе пакета 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) 
Смежные вопросы