基于R中的累积概率函数计算结果的可能性的问题

问题描述 投票:0回答:1

我是R的新手,正在寻求使用概率密度函数(在我的示例中,结果是爆发的规模)来估计产生结果的可能性> = 100。我相信我的编码正确,但是当我看图时,答案并不正确。

这是我的代码(它是基于爆发的随机模型的输出)。我非常感谢指针。我认为错误在于可能性计算中。...

谢谢!

total_cases.dist <- dlnorm(sample.range, mean = total_cases.mean, sd = total_cases.sd)
total_cases.df <- data.frame("total_cases" = sample.range, "Density" = total_cases.dist)
library(ggplot2)
ggplot(total_cases.df, aes(x = total_cases, y = Density)) + geom_point()

pp <- function(x) {
  print(paste0(round(x * 100, 3), "%"))
}

# likelihood of n_cases >= 100
pp(sum(total_cases.df$Density[total_cases.df$total_cases >= 100]))
r probability-density
1个回答
0
投票

您正在使用dlnorm,它是对数正态分布,这意味着均值和sd是对数(值)的均值和对数(值)的sd,例如:

# we call the standard rlnorm
X = rlnorm(1000,0,1)
# gives something close to sd = exp(1), and mean=something
c(mean(X),sd(X))
# gives what we simulated
c(mean(log(X)),sd(log(X)))

我们现在使用已知的泊松分布(均值=方差)模拟一些数据。我们可以使用对数法线对其进行建模:

set.seed(100)
X <- rpois(500,lambda=1310)
# we need to log values first
total_cases.mean <- mean(log(X))
total_cases.sd <- sd(log(X))

您可以看到它运作良好

sample.range <- 1200:1400
hist(X,br=50,freq=FALSE)
lines(sample.range,
dlnorm(sample.range,mean=total_cases.mean,sd=total_cases.sd),
col="navyblue")

enter image description here

对于您的示例,您可以获得> 1200的值的概率(请参见直方图):

plnorm(1200,total_cases.mean,total_cases.sd,lower.tail=FALSE)

现在为您的数据提供数据,如果平均值= 1310.198和total_cases.sd = 31615.26是正确的,则取平均值〜76000X作为方差!然后,我不确定对数正态分布是否适合对此类数据进行建模。

© www.soinside.com 2019 - 2024. All rights reserved.