R语言离散时间马尔可夫链(Markov chain)模型分类案例可视化分析

简介: R语言离散时间马尔可夫链(Markov chain)模型分类案例可视化分析


有许多用于马尔可夫链的复杂应用。这些包括用于将多态模型拟合为面板数据的msm和SemiMarkov,用于生存分析应用的mstate,用于估计3状态进行性疾病模型的转移概率的TPmsm,用于将马尔科夫模型应用于健康护理经济应用的hemod,用于拟合隐马尔可夫模型和mcmc与蒙特Carlo马尔科夫链使用点击文末“阅读原文”获取完整代码数据

相关视频

image.png

在本文中,我们将探索离散时间Markov链的一些基本属性。

使用离散时间马尔科夫链的大部分涉及操纵与链相关联的转移概率的矩阵。第一部分代码复制了Oz转移概率矩阵。然后,来自expm包的有效算符%^%用于将Oz矩阵提高到三次方。最后,OZ ^ 3的左矩阵乘以分布向量u =(1/3,1/3,1/3)给出三天前的天气预报。

stteNs <- c("Rain","Nice","Snow")  
Oz <- mtrx(c(.5,.25,.25,.5,0,.5,.25,.25,.5),  
             nrw=3, brw=TRUE)

99cf9d6240bf073ca5f987ec1582284f.png

pta(Oz,pos = c(1,2),  
        lwd = 1, box.lwd = 2,  
     
        self.shiftx = .13,  
        main = "")

31b6152228b48b9ce414da1d030a24d9.png


点击标题查阅往期内容


R语言如何做马尔可夫转换模型markov switching model



左右滑动查看更多



01




Oz3 <- Oz %^% 3  
rnd(Oz3,3)

57c3ea9e889127a569bea5f21f5775e7.png

rud(u %*% Oz3,3)

45a0eb89a3eb614225a2fa272b7e7047.png

下一个代码块再现了5状态Drunkward的步行示例,其给出了吸收马尔可夫链的基本原理。首先,描述链的转移矩阵被实例化为S4类makrovchain的对象。然后,来自马尔可夫链包的函数用于识别链的吸收和瞬变状态,并将转换矩阵P置于规范形式中。

DW <- matrix(dw,5,5,byrow=TRUE)  
  
Dmc

b408b88a079ada2f61230851714c3318.png

醉酒的步行问题

一个具有以下状态的5维离散马尔科夫链 0 1 2 3 4 ,转换矩阵(按行)定义如下:

#0 1 2 3 4 
#0 1.0 0.0 0.0 0.0 0.0 
#1 0.5 0.0 0.5 0.0 0.0 
#2 0.0 0.5 0.0 0.5 0.0 
#3 0.0 0.0 0.5 0.0 0.5 
#4 0.0 0.0 0.0 0.0 1.0

确定瞬时状态

trnieSttes(Dmc)

32d8d96b59e874d32f6c4f616bf675d0.png

#确定吸收状态
absrngtates(DWmc)

b64514db2fdea9b83f0e21baf17869a3.png

规范形式

在规范形式中,转换矩阵P被分割成恒等矩阵I,一个0的矩阵,矩阵Q包含瞬态的概率,矩阵R包含吸收的概率状态。

接下来,我们通过反转(I-Q)找到基本矩阵N. 对于每个瞬态状态,j,nij给出了处于状态j的过程的预期次数,假定它在瞬态i开始。ui是给定处理在状态i开始的吸收的预期时间。最后,我们计算矩阵B,其中bij是在状态j中处理将被吸收的概率,假设它在状态i开始。

查找矩阵Q

gRQ <- funton(M,type="Q"){  
tm <- M@trasitnatrix  
d <- diag(tm)  
m <- ax(whch(d == 1))  
n <- lngh(d)  
ifese(te=="Q",  
A <- tm[(m+1):n,(m+1):n],  
}

将DWmc放入规范表单

P <- cniorm(Wmc)  
P

91700a9defeb67d428ba578706c5fc00.png

Q <- geRQ(P)

查找基本矩阵

I <- dag(im(Q)[2])  
N <- sle(I - Q)  
N

e34c86e831cc4ddc1743c5435525ed49.png

计算吸收时间

c <- rp(1im(N)[2])  
u <- N %*% c  
u

26b7ac26f3a23c90af64880d3f181101.png

R <- gtQ(P,"R")  
B <- N %*% R  
B

1f90189dc6d851b2af6d36d146c5c808.png

对于处理正则和遍历马尔科夫链,我们返回到Oz,并且提供用于计算稳态的四个选项,或者限定该规则转移矩阵的概率分布。前三个选项涉及在R中容易获得的标准方法。方法1使用%^%来将矩阵O z提高到足够高的值。方法2计算特征向量1的特征值,方法3计算空间或与矩阵相关联的线性变换的核。要使用此函数,我们首先将Oz转换为markovchain对象。

Ergodic Markov链

四种获得稳定状态的方法 :

方法1:计算Matrix上的权重

rud(Oz %^% 6,2

1941d04f421340dec27f5b8ff16264d8.png

方法2:计算特征值1的特征向量

eieOz <- en(t(Oz))  
ev <- egOz$vcors[,1] / sum(eienz$vcrs[,1])  
ev

43751f78ca05af0f5d34b1dce29b6192.png

方法3:计算(P-I)

I <- dag(3)  
ns <- npae(t(Oz - I))  
ns <- rund(ns / sum(ns),2)  
ns

e74dfd6aced7b533bd45f74676e18a23.png

方法4:使用函数

OC<-nw("akovhain",  
staes=statNams,  
transtinMarix=  
nrow=3,  
bo=TRUE,  
dimnaes=ist(staeNas,satNames)))  
  
sedSte(Oz)

220121338e78003311e6410f71eb7ec5.png

对于相当大的马可夫链,函数似乎是相当有效的。以下代码创建一个5,000行乘以5000列常规马尔可夫矩阵。创建markovchain对象和计算稳态分布。

创建一个大的随机规则矩阵

radeg <- uion(N){  rowS <- rowSums(M)  
regM <- M/rowS  
return(regM)  
}  
  
.tim(reMC <- new("mrkvchai", sttes = ascharcer(1:N),  
trastinMatrix= M,  
name = "M"))

b6d7da1a7e6ae0c6c48092c04b3800f8.png

stm.time(ss <- staytts(eMC))

cc5824f29448ce453d176173cb53a235.png

我们通过使用rarkovhain函数来模拟这个大随机矩阵表示的过程的轨迹并绘制结果来结束这个小马尔可夫链偏移。看来这是一种用于模拟静态时间序列的合理方法。

样品来自regMC

rgMCts <- rmrkocin(n=1000,object=regMC)  
reMCtDf <- as.daa.rame(regCts,stingssFaors = FALSE)  
rgMCsDf$idex <- 1:1000  
reMCtsf$rMts <- as.umrc(rCtDf$reMCts)  
  
p <- got(egCtfs(indx,egMCts))  
p + g_lie(colur="dark red") +

cb127382052915165df2f5b173f8c165.png

相关文章
|
3月前
|
数据采集 机器学习/深度学习 数据可视化
R语言从数据到决策:R语言在商业分析中的实践
【9月更文挑战第1天】R语言在商业分析中的应用广泛而深入,从数据收集、预处理、分析到预测模型构建和决策支持,R语言都提供了强大的工具和功能。通过学习和掌握R语言在商业分析中的实践应用,我们可以更好地利用数据驱动企业决策,提升企业的竞争力和盈利能力。未来,随着大数据和人工智能技术的不断发展,R语言在商业分析领域的应用将更加广泛和深入,为企业带来更多的机遇和挑战。
|
4月前
|
数据可视化 数据挖掘 图形学
R语言基础可视化:使用ggplot2构建精美图形的探索
【8月更文挑战第29天】 `ggplot2`是R语言中一个非常强大的图形构建工具,它基于图形语法提供了一种灵活且直观的方式来创建各种统计图形。通过掌握`ggplot2`的基本用法和美化技巧,你可以轻松地将复杂的数据转化为直观易懂的图形,从而更好地理解和展示你的数据分析结果。希望本文能够为你探索`ggplot2`的世界提供一些帮助和启发。
|
4月前
|
数据可视化 数据挖掘 数据处理
R语言高级可视化技巧:使用Plotly与Shiny制作互动图表
【8月更文挑战第30天】通过使用`plotly`和`shiny`,我们可以轻松地创建高度互动的数据可视化图表。这不仅增强了图表的表现力,还提高了用户与数据的交互性,使得数据探索变得更加直观和高效。本文仅介绍了基本的使用方法,`plotly`和`shiny`还提供了更多高级功能和自定义选项,等待你去探索和发现。希望这篇文章能帮助你掌握使用`plotly`和`shiny`制作互动图表的技巧,并在你的数据分析和可视化工作中发挥更大的作用。
|
2月前
|
数据挖掘 C语言 C++
R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。
【10月更文挑战第21天】时间序列分析是一种重要的数据分析方法,广泛应用于经济学、金融学、气象学、生态学等领域。R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。本文将介绍使用R语言进行时间序列分析的基本概念、方法和实例,帮助读者掌握R语言在时间序列分析中的应用。
55 3
|
7月前
|
数据可视化 数据挖掘 API
【R语言实战】聚类分析及可视化
【R语言实战】聚类分析及可视化
|
3月前
|
数据采集 数据可视化 数据挖掘
R语言在金融数据分析中的深度应用:探索数据背后的市场智慧
【9月更文挑战第1天】R语言在金融数据分析中展现出了强大的功能和广泛的应用前景。通过丰富的数据处理函数、强大的统计分析功能和优秀的可视化效果,R语言能够帮助金融机构深入挖掘数据价值,洞察市场动态。未来,随着金融数据的不断积累和技术的不断进步,R语言在金融数据分析中的应用将更加广泛和深入。
|
4月前
|
数据可视化
R语言可视化设计原则:打造吸引力十足的数据可视化
【8月更文挑战第30天】R语言可视化设计是一个综合性的过程,需要综合运用多个设计原则来创作出吸引力十足的作品。通过明确目标、选择合适的图表类型、合理运用色彩与视觉层次、明确标注与引导视线以及引入互动性与动态效果等原则的应用,你可以显著提升你的数据可视化作品的吸引力和实用性。希望本文能为你提供一些有益的启示和帮助。
|
4月前
|
机器学习/深度学习 数据采集 数据可视化
R语言在数据科学中的应用实例:探索与预测分析
【8月更文挑战第31天】通过上述实例,我们展示了R语言在数据科学中的强大应用。从数据准备、探索、预处理到建模与预测,R语言提供了完整的解决方案和丰富的工具集。当然,数据科学远不止于此,随着技术的不断发展和业务需求的不断变化,我们需要不断学习和探索新的方法和工具,以更好地应对挑战,挖掘数据的潜在价值。 未来,随着大数据和人工智能技术的普及,R语言在数据科学领域的应用将更加广泛和深入。我们期待看到更多创新的应用实例,为各行各业的发展注入新的动力。
|
4月前
|
数据采集 存储 数据可视化
R语言时间序列分析:处理与建模时间序列数据的深度探索
【8月更文挑战第31天】R语言作为一款功能强大的数据分析工具,为处理时间序列数据提供了丰富的函数和包。从数据读取、预处理、建模到可视化,R语言都提供了灵活且强大的解决方案。然而,时间序列数据的处理和分析是一个复杂的过程,需要结合具体的应用场景和需求来选择合适的方法和模型。希望本文能为读者在R语言中进行时间序列分析提供一些有益的参考和启示。
|
4月前
|
资源调度 数据挖掘
R语言回归分析:线性回归模型的构建与评估
【8月更文挑战第31天】线性回归模型是统计分析中一种重要且实用的工具,能够帮助我们理解和预测自变量与因变量之间的线性关系。在R语言中,我们可以轻松地构建和评估线性回归模型,从而对数据背后的关系进行深入的探索和分析。
下一篇
DataWorks