马尔可夫链:可重用的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)