“复合”我的意思是转移矩阵满足马尔可夫属性,即我有两列s_t
和s_t+k
代表两个句点t
和{{}中每个人的状态1}}分别。
我想要的是找到矩阵M
t+k
使矩阵s_t+k = M^k * s_t
满足马尔可夫属性。
我的默认工作语言是Stata,其中M
,tab
或svy:tab
等命令可以生成一个句点转换矩阵,但这些矩阵不会必然满足马尔可夫财产。所以我想知道如何在Stata或其他常用语言(如R或Python)中实现我的目标。
“十年平均转移矩阵的估算基于 从1960年到2010年采用的五十年过渡矩阵 数值优化程序。而不是采取简单的平均值 对于五个过渡矩阵(遭受Jensen的影响) 不等式),我们估计一个可以给出精确的转移矩阵 5年期限转换矩阵(1960年进入,2010年退出) 通过它的力量5 。“
答案 0 :(得分:1)
在R
中,您可以使用markovchain
包来获取满足markov属性的转换矩阵。您可以使用以下示例代码...
library(markovchain)
data(rain)
mysequence<-rain$rain
createSequenceMatrix(mysequence)
myFit<-markovchainFit(data=mysequence,,method="bootstrap",nboot=5, name="Bootstrap Mc")
myFit
myFit是您估算的转换矩阵。此示例使用Alofi降雨数据集。
答案 1 :(得分:0)
R中矩阵的乘法不是*
而是%*%
。
我在 R 中编写了一个简单的函数来解决问题。
trans_mat = function(k,s_t,M){ for(i in 1:k){ M = M % * % M } return(M%*%s_t)}现在,您需要做的是键入k(您想要的时间长度),s_t(原始状态)和M(马尔可夫属性)。
s_t+k = trans_mat(k,s_t,M)
答案 2 :(得分:0)
markovchain包直接实现任何markovchain对象的能力:
require(markovchain)
#creating the MC
myMatr<-matrix(data=c(0.2,0.8,.6,.4),ncol=2,byrow=TRUE)
myMc<-as(myMatr,"markovchain")
#5th power of the MC
myMc5<-myMc^5
myMc5