楼主: moonstone
2514 2

[问答] Markov模型的逆运算咨询 [推广有奖]

已卖:1872份资源

讲师

74%

还不是VIP/贵宾

-

威望
0
论坛币
10498 个
通用积分
369.2883
学术水平
160 点
热心指数
169 点
信用等级
124 点
经验
274346 点
帖子
237
精华
1
在线时间
520 小时
注册时间
2007-4-27
最后登录
2024-12-6

楼主
moonstone 发表于 2015-12-1 22:22:05 来自手机 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
我们通常构建的Markov模型都是基于已知转化概率情况下,计算模型运行多个周期后的,不同状态的最终分布情况,目前遇到一个问题:

假设一个Markov模型只有三个状态:A,B,C。而且转变方向只能是A到B,及B到C。现在已知初始状态只有A,而且处于改状态的人数为10000,经过5个周期后,最终A,B,C三种状态的分布人数分别为9900,500,600。现在想计算A转变为B,及B转化为C的转化概率为多少。

尝试采用手动求解方程的方法来解决改问题,结果到最后发现方程太复杂,不会计算。
不知道群里那位老师会利用R或其它方式进行Markov模型的逆运算,非常感谢。^_^
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Markov Mark 逆运算 Mar 非常感谢 模型 而且

沙发
gusu800829 发表于 2015-12-3 14:41:18
路过,帮你顶一下
期待牛人帮你解答

藤椅
moonstone 发表于 2015-12-12 19:31:38
已经找到解决办法,采用多阶段模型(MSM)可以完成该任务。MSM不仅能计算不同状态之间的转换概率

详细的编码如下:
  1. library(msm)

  2. ## Simulated data
  3. N1 <- 9900  # number of subjects from stage A to A
  4. N2 <- 500   # number of subjects from stage A to B
  5. N3 <- 600   # number of subjects from stage B to C

  6. data <- data.frame(
  7. rbind(
  8. cbind((rep(1:N1,
  9.            each=2)),rep(1),rep(c(0,5))),       # subjects from stage A to A   
  10. cbind((rep((N1+1):(N1+N2),
  11.            each=2)),rep(c(1,2)),rep(c(0,5))),  # subjects from stage A to B
  12. cbind((rep((N1+N2+1):(N1+N2+N3),
  13.            each=2)),rep(c(2,3)),rep(c(0,5)))   # subjects from stage B to C
  14. )
  15. )

  16. ## change variable names
  17. names(data)[1:3] <- c("ID", "status", "time" )

  18. ## check the frequency table between different stages
  19. statetable.msm(status, ID, data=data)

  20. ## set arbitrary initial values for transition intensities
  21. ini.q <- rbind(c(1, 1, 0), c(0, 1, 1), c(0, 0, 0))

  22. ## calculate crude initial values for transition intensities
  23. ini.q <- crudeinits.msm(status ~ time, ID, data=data, qmatrix=ini.q)
  24. ini.q

  25. ## develop multi-state model with initial values for transition intensities
  26. scr.msm <- msm(status ~ time, ID, data=data, qmatrix=ini.q, deathexact = 3)
  27. scr.msm

  28. ## show transition intensities matrix
  29. qmatrix.msm(scr.msm)

  30. ## show transition probability matrix for 1 year
  31. pmatrix.msm(scr.msm, t=1)

  32. ## show sojourn times
  33. sojourn.msm(scr.msm)
复制代码


其中pmatrix.msm(scr.msm, t=1)的输出结果即为问题的答案:
  1.           State 1     State 2      State 3
  2. State 1 0.9902232 0.009095594 0.0006812451
  3. State 2 0.0000000 0.864167214 0.1358327863
  4. State 3 0.0000000 0.000000000 1.0000000000
复制代码
也即,A向B的转化概率为0.009095594,B向C的转换概率为0.1358327863。
注意根据该问题构建的多阶段模型中有一个非常重要的隐形Markov过程:A不能跳过B直接到C,C只能从B转换过来。具体详细原理参考msm 程序包的帮助,^_^

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-8 02:27