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

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

时间:2023-12-18 23:44:29浏览次数:28  
标签:状态 0.5 chain 0.0 矩阵 马尔可夫 Oz Markov

全文链接:https://tecdat.cn/?p=34576

原文出处:拓端数据部落公众号

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

在本文中,我们将探索离散时间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)  

image.png

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

QQ截图20231128144503.png

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

image.png

   
rud(u %*% Oz3,3)

image.png

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

   

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

image.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)

image.png

   
#确定吸收状态

absrngtates(DWmc)

image.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

image.png

   
Q <- geRQ(P)

查找基本矩阵

   

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

image.png

计算吸收时间

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

image.png

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

image.png

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

Ergodic Markov链

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

方法1:计算Matrix上的权重

   
rud(Oz %^% 6,2

image.png

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

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

image.png

方法3:计算(P-I)

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

image.png

方法4:使用函数

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

image.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"))

image.png

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

image.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") +  

image.png

the-seven-habits-of-programmatic-acquirers-1279622867-hires-thumb-1536x1536.webp

标签:状态,0.5,chain,0.0,矩阵,马尔可夫,Oz,Markov
From: https://www.cnblogs.com/tecdat/p/17912678.html

相关文章

  • HanLP — HMM隐马尔可夫模型 -- 训练和预测
    BMES=>B-begin:词语开始、M-middle:词语中间、E-end:词语结束、S-single:单独成词训练的过程,就是求三个矩阵的过程初始概率矩阵转移概率矩阵发射矩阵每个字有4种可能性,上图中有7个字,就是4^7种可能性维特比算法,从众多路径中,挑出最优的那条,他和隐马尔可夫没有强关联初......
  • HanLP — HMM隐马尔可夫模型 -- 语料库
    BMES=>B:词语开始、M:词语中间、E:词语结束、S:单独成词并非所有中文任务都需要分词语料库每行是一篇“文章”每篇文章用空格分开语料库的准确性,严重影响分词结果理论上,语料库越大越好每个字都有一个标识(隐藏状态),可以根据语料库得到所有标识中文分词就是为了得到状态......
  • 向量数据库 及 LangChain 用法
    当今科技领域的发展日新月异,向量数据库成为了热门的话题之一。这些数据库以其高效的向量检索和相似度搜索功能,为各种应用场景提供了强大的支持。本文旨在汇总向量数据库Milvus、Zilliz、Faiss、Qdrant、LlamaIndex、Chroma、LanceDB、Pinecone、Weaviate、 基本介绍1.Milv......
  • Continuous-Time Markov Chain
    1.Definitions​ Definition1. Wesaytheprocess\(\{X(t),t\ge0\}\)isacontinuous-timeMarkovchainifforall\(s,t\ge0\)andnonnegativeintegers\(i,j,x(u),0\leu<s\)\[\begin{align}P\{X(t+s)&=j\|\X(s)=i,X(u)=x(u),0\leu&l......
  • Langchain-Chatchat+Qwen实现本地知识库
    1.基础介绍Langchain-Chatchat一种利用 langchain 思想实现的基于本地知识库的问答应用,目标期望建立一套对中文场景与开源模型支持友好、可离线运行的知识库问答解决方案。大致过程包括加载文件->读取文本->文本分割->文本向量化->问句向量化->在文本向量中匹配出......
  • LangChain调用本地模型
    学习LangChain参考https://python.langchain.com.cn/docs/get_started/quickstart调用本地下载的模型参考https://blog.csdn.net/qq_43692950/article/details/131743987在JupyterNotebook中试验的代码(注意Jupyter不会释放GPU显存)fromlangchainimportPromptTemplate,LL......
  • (万字长文)手把手教你认识学会LangChain
    什么LangChainLangChain:一个让你的LLM变得更强大的开源框架LangChain六大主要领域管理和优化prompt。不同的任务使用不同prompt,如何去管理和优化这些prompt是langchain的主要功能之一。链,初步理解为一个具体任务中不同子任务之间的一个调用。数据增强的生成,数据增强生成涉及特定类......
  • 【法语阅读】Hayao Miyazaki commencera à travailler sur son prochain film lorsqu
    HayaoMiyazakicommenceraàtravaillersursonprochainfilmlorsqueLegarçonetlehéronneseraplusàl’affichedanslessallesdecinémaHayaoMiyazakiwillstartworkingonhisnextfilmwhen'TheBoyandtheHeron'isnolongershowingin......
  • 使用Langchain与ChatGLM实现本地知识库(二)
      大语言模型也只是将用户提供的大规模数据集训练而来,也并非万能的什么都知道,特别是一些小众知识、内部数据或私密的个人数据等,此时ChatGLM3肯定会胡乱回答就是ChatGPT4也不一定能给出满意回答;不少公司、个人都有自己的知识库或日志等此时如有可将这些数据以某种方式挂在大模型......
  • 【ToolChains】| CMake 技巧
    判断CMake编译环境编译类型CMAKE_BUILD_TYPE可取值为:Debug,Release,RelWithDebInfo,MinSizeRel等预设值if(CMAKE_BUILD_TYPEMATCHESDebug)#dosomethingendif()系统环境CMAKE_SYSTEM_NAME代表当前系统的类型,值有ANDROID,APPLE,IOS,UNIX,WIN32,WINC......