2014-09-17 2 views
1

У меня есть набор данных сил связи на основе осевой силы в N (http://pastebin.com/Huwg4vxv)как я могу предсказать вероятность события с использованием распределения Вейбулла

некоторых предыдущих анализов были предприняты (другой стороной) и оснастил распределение Вейбулла к нему, а затем предсказал, что вероятность записи силы 60N или выше составляет около 1,2%.

Должен сказать, что просмотр данных, который мне кажется маловероятным, но я ничего не знаю об этом конкретном распределении.

До сих пор я в состоянии соответствовать кривой:

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

Я пытаюсь понять

  1. является Вейбулла Дистрибутив действительно лучше всего подходят для этих данных?
  2. как я могу сделать такое же предсказание с использованием R (как рассчитать вероятность значений выше 60N);
  3. возможно рассчитать 95% доверительный интервал для значения (т.е. 1,2% +/- х%)

Спасибо за чтение Пит

ответ

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 (х) = 1 - F (х)):

## Pr(X >= 60) 
> pweibull(
    60,shape=Shape,scale=Scale, 
    lower.tail=FALSE) 
[1] 0.01268268 

Что касается вашего конечный элемент, я считаю, что для расчета доверительных интервалов по вероятностям (а также для некоторых других статистических величин) для предполагаемого распределения требуется использовать the Delta method; Я мог бы вспомнить неправильно, поэтому, возможно, вы захотите дважды проверить это. Если это так, и вы не знакомы с методом Delta, то, к сожалению, вам, вероятно, придется сделать достаточное количество чтения по этому предмету, потому что расчет, как правило, нетривиальный - вот another link; статья в Википедии не дает глубокого изучения предмета. Или вы можете узнать об этом на Cross Validated.

+0

+1, Незначительный nitpicking ... если вы можете написать все эти слова, почему бы просто не написать * распространение * вместо * distro *?:-) –

+0

Ха-ха на самом деле это была копия и вставка собственных слов OP; Я был на заборе об изменении его на «распространение». – nrussell

+1

Отличный материал - спасибо. Это очень помогло мне. Это также помогло мне понять, насколько мало я понимаю об этом распределении. В попытке увидеть, сделал ли кто-нибудь жесткие ярды, которые у меня есть, вызванные вашим сообщением, нашли библиотеку «abrem», которая имеет ряд функций Вейбулла. Кстати, извините за «дистрибутив» - я выйду за спину и жужжаю себя влажной капустой. – PJP

Смежные вопросы