为了解决您的第一个项目,
weibull 发行版真的最适合这些数据吗?
从概念上讲,这更多是关于统计推断而不是编程的问题,因此您很可能希望在 CrossValidated 而不是 SO 上解决这个问题。但是,您当然可以询问以编程方式对此进行调查的方法,例如将观测数据的估计密度与理论密度函数或威布尔分布中随机样本的密度函数与您的参数估计值进行比较:
library(MASS)
##
Weibull <- read.csv(
"F:/Studio/MiscData/force_in_newtons.txt",
header=TRUE)
##
params <- fitdistr(Weibull$F, 'weibull')
##
Shape <- params[[1]][1]
Scale <- params[[1]][2]
##
set.seed(123)
plot(
density(
rweibull(
500,shape=Shape,scale=Scale)),
col="red",
lwd=2,lty=3,
main="")
##
lines(
density(
Weibull$F),
col="blue",
lty=3,lwd=2)
##
legend(
"topright",
legend=c(
"rweibull(n=500,...)",
"observed data"),
lty=c(3,3),
col=c("red","blue"),
lwd=c(3,3),
bty="n")
当然,还有许多其他方法可以评估模型的拟合度,这只是一个快速的健全性检查。
至于你的第二个问题,你可以使用pweibull函数和lower.tail=FALSE从理论生存函数(S(x) = 1 - F(x))中得到概率:
## Pr(X >= 60)
> pweibull(
60,shape=Shape,scale=Scale,
lower.tail=FALSE)
[1] 0.01268268
至于您的最后一项,我认为计算估计分布的概率(以及某些其他统计量)的置信区间需要使用the Delta method;不过我可能记错了,所以您可能需要仔细检查一下。如果是这种情况并且您不熟悉 Delta 方法,那么不幸的是,您可能需要对该主题进行大量阅读,因为所涉及的计算通常不简单——这里是 another link;维基百科的文章没有对这个主题进行非常深入的处理。或者,您也可以在 Cross Validated 上查询。