1
任何人都可以向我解释为什么这个代码的分布:的if-else逻辑流
InfectionHistory <- rep(1,100)
for(x in 1:99)
{
r <- runif(1)
print(r)
if(InfectionHistory[x]==1)
{
if(r < 0.04)
{
InfectionHistory[x+1] <- 2
}
else
{
InfectionHistory[x+1] <- InfectionHistory[x]
}
}
if(InfectionHistory[x]==2)
{
if(r < 0.11)
{
InfectionHistory[x+1] <- 1
}
else
{
InfectionHistory[x+1] <- InfectionHistory[x]
}
}
}
plot(InfectionHistory, xlab = "Day", ylab = "State", main = "Patient Status per Day", type = "o")
从这个代码不同:
InfectionHistory <- rep(1,100)
for(x in 1:99)
{
r <- runif(1)
print(r)
if((InfectionHistory[x]==1)&&(r < 0.04))
{
InfectionHistory[x+1] <- 2
}
if((InfectionHistory[x]==2)&&(r < 0.11))
{
InfectionHistory[x+1] <- 1
}
}
plot(InfectionHistory, xlab = "Day", ylab = "State", main = "Patient Status per Day", type = "o")
我觉得它与逻辑做if-else语句。代码的目标是模拟沿着马尔可夫链的感染模型
没错,但我期待什么导致频率的巨大差异。实施例1在感染史上给出了比实施例2更多的2。是什么导致了这种情况发生?根据我的理解,如果两个代码块是逻辑对等块,那么它们应该返回非常类似于1和2的分布。 – user2938366
@ user2938366我对感染模型或马尔可夫链一无所知。您是否尝试将示例2更改为我答案中的最后一个代码块? – nhgrif