马尔可夫链:可重用的 R 函数以 n 个时间步长显示状态值?
Markov Chain: reusable R function to display state values in n timesteps?
我有这个简单的马尔可夫链:
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”,
其中returns(对于任何马尔可夫链),
具有 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 代码,每次...
这个功能可以帮到你:
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)
我有这个简单的马尔可夫链:
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”,
其中returns(对于任何马尔可夫链),
具有 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 代码,每次...
这个功能可以帮到你:
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)