我想计算威布尔随机变量 X 大于 1000 的概率,其中 X ~ Weibull(lambda, g)。
使用 CDF,我将其计算为:
g = log(log(.7)/log(.5))/log(40/81)
lambda = -log(.7)/400^g
> exp(-lambda*1000^g)
[1] 0.4294352
但是使用如下的R包,结果是不同的
> pweibull(1000, shape = g, scale= lambda, lower.tail = FALSE)
[1] 0
为什么结果不同?我使用 R 包错误吗?
来自维基百科页面。 https://en.wikipedia.org/wiki/Weibull_distribution#Density_function。 看起来您正在使用替代参数化的第一个替代方案。
因此,按照这篇文章,您的 lambda 值实际上是“B”,要转换为标准 lambda,您需要使用
进行转换lambdaNew <- exp(-log(lambda)/g)
因此 R 函数变为:
pweibull(1000, g, lambdaNew, lower.tail = FALSE)
# [1] 0.4294352