如何使用威布尔分布预测事件的概率

时间:2014-09-17 14:56:32

标签: r weibull

我有一个基于N(http://pastebin.com/Huwg4vxv

轴向力的连接力数据集

之前的一些分析(由另一方进行)并且已经对其进行了Weibull分布,然后预测记录60N或更高的力的概率约为1.2%。

我不得不说眼睛看数据,这对我来说似乎不太可能,但我对这个特定的分布一无所知。

到目前为止,我能够适应曲线:

force<-read.csv(file="forcestats.csv",header = T)
library(MASS)
fitdistr(force$F, 'weibull')
hist(force$F)

我想了解

  1. 是一个weibull发行版真的最适合这个数据吗?
  2. 我如何使用R进行相同的预测(如何计算超过60N的值的概率);
  3. 是否可以计算该值的95%置信区间(即1.2%+/- x%)
  4. 感谢阅读 皮特

1 个答案:

答案 0 :(得分:2)

要解决您的第一项,

  

是一个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")

enter image description here

当然,还有很多其他方法可以评估模型的合适性,这只是一个快速的健全性检查。

至于你的第二个问题,你可以使用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上查询此信息。