2013-04-10 913 views
-1

我有一个像数据在此如何计算二阶的转移概率矩阵马尔可夫链

Broker.Position的形式

IP BP SP IP IP ..

我想计算这种形式的二阶转换矩阵

   BP IP SP 

BPBP

SPSP

IPIP

黑花生衣色素

SPBP

IPSP

SPIP

BPIP

IPBP

+0

这可能是有用的链接:http://www.mathworks.com/matlabcentral/fileexchange/37322-multi-order-state-transition-matrix/content//getTransitionMatrix.m – dexterdev 2014-11-10 05:13:07

回答

2

您可以使用embed生成对连续过渡, table算来, apply计算总计和计数转换成概率, dcastmelt到数组转换成数据。帧。

# Sample data 
states <- sample(LETTERS[1:3], 1e5, replace=TRUE) 

# Pairs of transitions 
d <- embed(states, 3) 
colnames(d) <- c("today", "yesterday", "day before yesterday") 
head(d) 

# Count the transitions 
counts <- table(as.data.frame(d)) 

# Divide by the total number of transitions, to have probabilities 
probabilities <- counts 
probabilities[] <- as.vector(counts)/rep(as.vector(apply(counts, 2:3, sum)), each=dim(counts)[1]) 

# Check that the probabilities sum up to 1 
apply(probabilities, 2:3, sum) 

# Convert the 3-dimensional array to a data.frame 
library(reshape2) 
dcast(melt(probabilities), yesterday + `day before yesterday` ~ today)