Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
马尔可夫链:可重用的R函数,以n个时间步显示状态值?_R_Function_Arguments_Parameter Passing_Markov Chains - Fatal编程技术网

马尔可夫链:可重用的R函数,以n个时间步显示状态值?

马尔可夫链:可重用的R函数,以n个时间步显示状态值?,r,function,arguments,parameter-passing,markov-chains,R,Function,Arguments,Parameter Passing,Markov Chains,我有一个简单的马尔可夫链: 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的数据帧输出 看起来是这样的: (

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

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的数据帧输出 看起来是这样的:
(注意:时间步长是从左侧开始的第二列,从零开始)

原因:此功能可用于测试不同的MC,

无需每次重复R代码…

此功能可以帮助您:

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)

fvals谢谢你简单有效的回答,乔治!它起作用了。Q1)如何将fvals()的输出转换为“常规”数据帧?。Q2)也许这个有用且常用的函数(fvals)可以被整合到“markovchain”包中?嗨,这可能会有帮助:
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
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)