Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何计算二阶马尔可夫链的转移概率矩阵_R_Markov Chains_Markov_Markov Models - Fatal编程技术网

R 如何计算二阶马尔可夫链的转移概率矩阵

R 如何计算二阶马尔可夫链的转移概率矩阵,r,markov-chains,markov,markov-models,R,Markov Chains,Markov,Markov Models,我有这样的数据 经纪人.职位 知识产权 英国石油公司 服务提供商 知识产权 知识产权 我想用这种形式计算二阶转移矩阵 BP IP SP BPBP SPSP IPIP BPSP SPBP IPSP SPIP BPIP IPBP您可以使用embed生成连续转换对, 表格要计算它们, 应用计算总数并将计数转换为概率, dcast和melt将数组转换为data.frame # Sample data states <- sample(LETTERS[1:3], 1e5

我有这样的数据

经纪人.职位

知识产权 英国石油公司 服务提供商 知识产权 知识产权

我想用这种形式计算二阶转移矩阵

             BP IP SP
BPBP

SPSP

IPIP

BPSP

SPBP

IPSP

SPIP

BPIP


IPBP

您可以使用
embed
生成连续转换对,
表格
要计算它们,
应用
计算总数并将计数转换为概率,
dcast
melt
将数组转换为data.frame

# 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 )
#示例数据
说明这可能是有用的链接: