计算 R 中威布尔分布的 CDF

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

我想计算威布尔随机变量 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 包错误吗?

r statistics probability weibull
1个回答
0
投票

来自维基百科页面。 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
© www.soinside.com 2019 - 2024. All rights reserved.