【问题标题】:Markov Chain: reusable R function to display state values in n timesteps?马尔可夫链:可重用的 R 函数以 n 时间步显示状态值?
【发布时间】:2016-03-06 15:24:08
【问题描述】:

我有这个简单的马尔可夫链:

library(markovchain)
mcSIR <- new("markovchain", states=c("S","I","R"),
    transitionMatrix=matrix(data=c(0.9,0.1,0,0,0.8,0.2,0,0,1),
    byrow=TRUE, nrow=3), name="SIR")
is <- c(99,1,0) # initial States  

如何定义一个可重用函数“fvals”,
返回(对于任何马尔可夫链),
具有 n 个时间步的状态值的数据框?

调用会是这样的:

   fvals(mcSIR,is,5) # show state values for 5 timesteps

“fvals”的数据框输出 看起来像这样:
注意:时间步长是从左数第二列,从零开始)。

1    timestep            S            I            R
2           0           99            1            0
3           1         89.1         10.7          0.2
4           2        80.19        17.47         2.34
5           3        72.17           22         5.83
6           4        64.95        24.81        10.23
7           5        58.46        26.35         15.2

原因:此功能对于测试不同的 MC 很有用,
无需为每一个重复R代码,每次......

【问题讨论】:

    标签: r function arguments parameter-passing markov-chains


    【解决方案1】:

    这个功能可以帮助你:

    fvals<-function(mchain,initialstate,n) {
      names(initialstate)<-names(mchain)
      for (i in 0:n)
      {
        out<-initialstate*mchain^(i)
        cat(i," ",out,"\n")
      }
    }
    fvals(mcSIR,is,5)
    

    【讨论】:

    • 感谢 Giorgio 简单有效的回答!有用。 Q1) 如何将 fvals() 的输出转换为“常规”数据帧? Q2)也许这个有用且经常使用的函数(fvals)可以合并到“markovchain”包中?
    • 嗨,这可能会有所帮助:qualityandinnovation.com/2015/12/08/…
    猜你喜欢
    • 1970-01-01
    • 2015-11-15
    • 1970-01-01
    • 2017-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-18
    相关资源
    最近更新 更多