马尔可夫链中的比例加起来不等于 1

Proportions in Markov chain do not add up to 1

我有以下两态马尔可夫链:

pre<-cbind(c(rep("rain",100),rep("sun",100),rep("rain",100)))
post<-cbind(c(rep("rain",50),rep("sun",70),rep("rain",100),rep("sun",80)))
df<-cbind(pre,post)
df<-as.data.frame(df)
colnames(df)<-c("pre","post")

states<-c("rain","sun")

probsCase<-function(i,j){
sum(as.character(df$pre)==states[i] & as.character(df$post)==states[j])/sum(as.character(df$pre)==states[i])
}

transitionMatrix<-outer(1:2,1:2,Vectorize(probsCase))
colnames(transitionMatrix)<-states
rownames(transitionMatrix)<-states

library(diagram)
plotmat(transitionMatrix,relsize=0.75)

产生以下情节:

我觉得"sun"和"rain"之间的箭头应该指向相反的方向,否则各自的比例加起来不等于1。

为了比较,你可以在网上看看这个类似的图,其中do的比例加起来是1

有什么想法吗?

上图的数字表示进入目标状态的数量。进入该状态的所有行的总数加起来为 1。在底部图上,离开先前状态的所有行的总数加为 1。可以通过任何一种方式计算值,但应标记图以显示正在显示的内容.

你只需要绘制转置矩阵就可以得到你需要的东西。

所以这个:

plotmat(t(transitionMatrix),relsize=0.75)

会玩的