如何解决事件发生的加权可能性
我想确定某个事件在一定范围内发生的可能性。
最小值= 600最大值= 50,000最常见的结果= 600
我生成了一系列事件:numbers <- seq(600,50000,by=1)
这就是我被困住的地方。不确定使用错误的分发或尝试执行是否走错了路径。
qpois(numbers,lambda = 600)
产生NaNs
因此,期望的结果是能够获得加权概率的输出(加权平均值为600)。然后能够通过将这些数字的概率求和来评估大约30000个离群事件的可能性为5%或类似的削减。
有点生疏,已经有好几年没有使用了,所以任何在线刷新的资源也将受到赞赏!
解决方法
首先,我认为您正在寻找的是ppois
而不是qpois
。函数qpois(p,600)
采用概率为 的向量p
。如果您进行qpois(0.75,600)
,则将得到616,这意味着75%的观测值将等于或低于616。
ppois
与qpois
相反。如果您进行ppois(616,600)
,则将获得(大约)0.75。
对于您的特定分布,它不能是泊松分布。让我们看看平均值为600的泊松分布是什么样的:
x <- 500:700
plot(x,dpois(x,600),type = "h")
获得大于900的值(基本上)的可能性为零:
1 - ppois(900,600)
#> [1] 0
因此,如果您的数据包含30,000或50,000以及600的值,则肯定不是泊松分布。
在不了解您的实际数据的情况下,实际上不可能说出您所拥有的分布。也许如果您在问题中包含样本,我们可能会提供更多帮助。
编辑
通过注释中提供的数字样本,我们可以查看实际的经验分布:
hist(numbers,200)
如果我们想知道任意点的概率,可以创建如下的经验累积分布函数:
get_probability_of <- ecdf(numbers)
这使我们能够做到:
number <- 1:50000
plot(number,get_probability_of(number),ylab = "probability",type = "l")
和
get_probability_of(30000)
#> [1] 0.83588
这意味着获得大于30,000的数字的可能性为
1 - get_probability_of(30000)
#> [1] 0.16412
但是,在这种情况下,我们知道分布是如何生成的,因此我们可以仅使用一些简单的几何来计算 exact 理论cdf(我不会在这里展示我的工作,因为尽管它是简单,它相当冗长,枯燥,不适用于其他发行版):
cdf <- function(x) ifelse(x < 600,1 - ((49400 - (x - 600)) / 49400)^2)
和
cdf(30000)
#> [1] 0.8360898
非常接近,但理论上比经验值更准确。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。