Jak mogę określić parametry Weibull na podstawie danych?

10

Mam histogram danych prędkości wiatru, który jest często przedstawiany za pomocą rozkładu Weibulla. Chciałbym obliczyć kształt Weibulla i współczynniki skali, które najlepiej pasują do histogramu.

Potrzebuję rozwiązania numerycznego (w przeciwieństwie do rozwiązań graficznych ), ponieważ celem jest programowe określenie formy Weibulla.

Edycja: Próbki są pobierane co 10 minut, prędkość wiatru jest uśredniana w ciągu 10 minut. Próbki zawierają również maksymalną i minimalną prędkość wiatru zarejestrowaną podczas każdego przedziału, które są obecnie ignorowane, ale chciałbym uwzględnić je później. Szerokość pojemnika wynosi 0,5 m / s

Histogram dla 1 miesiąca danych

klonq
źródło
1
kiedy mówisz, że masz histogram - masz na myśli również informacje o obserwacjach, czy TYLKO znasz szerokość i wysokość pojemnika?
suncoolsu
@suncoolsu Mam wszystkie punkty danych. Zestawy danych od 5000 do 50 000 rekordów.
klonq 30.03.11
Nie możesz pobrać losowej próbki danych i wykonać MLE parametrów?
schenectady
2
Jaki jest cel oszacowania? Aby retrospektywnie scharakteryzować przeszłe warunki? Aby przewidzieć przyszłe wytwarzanie energii w jednym miejscu? Jak przewidzieć wytwarzanie energii w sieci turbin? Aby skalibrować model meteorologiczny? Itd. W przypadku tego pytania ustalenie odpowiedniego rozwiązania zależy krytycznie od tego, jak zostanie zastosowane.
whuber
@ Whuber obecnie pomysł polega na podsumowaniu zestawów danych wiatrowych w formie umożliwiającej porównywanie okresów i / lub witryn. Później celem będzie porównanie trendów i, jak powiesz, formułowanie osądów na temat przyszłej produkcji itp. Jestem bardzo początkującym w statystykach, ale mam mnóstwo danych (których nie mogę udostępnić) i chciałbym je wyodrębnić jak najwięcej informacji. Byłbyś bardzo wdzięczny, gdybyś mógł wskazać mi jakieś czytanie na ten temat.
klonq

Odpowiedzi:

11

Szacowanie maksymalnego prawdopodobieństwa parametrów Weibulla może być dobrym pomysłem w twoim przypadku. Forma dystrybucji Weibulla wygląda następująco:

(γ/θ)(x)γ-1exp(-xγ/θ)

θ,γ>0X1,,Xn

L.(θ,γ)=ja=1nlogfa(Xja|θ,γ)

Jednym rozwiązaniem opartym na programowaniu byłaby optymalizacja tej funkcji przy użyciu ograniczonej optymalizacji. Rozwiązywanie optymalnego rozwiązania:

logL.γ=nγ+1nlogxja-1θ1nxjaγlogxja=0
logL.θ=-nθ+1θ2)1nxjaγ=0

θ

[1nxjaγlogxja1nxjaγ-1γ]=1n1nlogxja

γ^

θγ^

θ^=1nxjaγ^n
suncoolsu
źródło
Jedną rzeczą, na którą chciałbym być ostrożny, jest to, że wygląda na to, że mamy tutaj dane szeregów czasowych. Jeżeli próbki są pobierane w krótkim okresie czasu, zakładanie niezależności może być niebezpieczne. To powiedziawszy, (+1).
kardynał
@cardinal Proszę wyjaśnić. Zakresy danych w ciągu miesiąca lub nawet roku, ale próbki są pobierane regularnie (10 minut). Co to może znaczyć?
klonq 30.03.11
@cardinal Dziękujemy za wskazanie tego. Nie byłem też pewien, czy założenie o niezależności jest odpowiednie.
suncoolsu 30.03.11
1
@klonq, w jaki sposób pobierana jest próbka? Czy to średnia prędkość w ciągu dziesięciu minut między nagraniami? Ponad minutę przed nagraniem? Chwilowa prędkość w momencie nagrywania? Głównie szukałbym korelacji szeregowych, które mogłyby znacznie zmniejszyć efektywną wielkość próby. Korzystanie z oszacowania ML opartego na założeniu, że niezależne próbki mogą, ale nie muszą, dać ci dobre oszacowanie w tym kontekście, i należy zachować szczególną ostrożność w odniesieniu do wszelkich wnioskowania opartego na oszacowaniu. Jednak podejście Suncoolsu zdecydowanie stanowi pierwszą linię ataku.
kardynał
@klonq - Czy to możliwe, czy możesz opisać, w jaki sposób pobrano próbkę? Jak wyglądają dane?
suncoolsu 30.03.11
12

Użyj fitdistrplus:

Potrzebujesz pomocy w identyfikacji rozkładu według jego histogramu

Oto przykład dopasowania dystrybucji Weibulla:

library(fitdistrplus)

#Generate fake data
shape <- 1.9
x <- rweibull(n=1000, shape=shape, scale=1)

#Fit x data with fitdist
fit.w <- fitdist(x, "weibull")
summary(fit.w)
plot(fit.w)


Fitting of the distribution ' weibull ' by maximum likelihood 
Parameters : 
       estimate Std. Error
shape 1.8720133 0.04596699
scale 0.9976703 0.01776794
Loglikelihood:  -636.1181   AIC:  1276.236   BIC:  1286.052 
Correlation matrix:
          shape     scale
shape 1.0000000 0.3166085
scale 0.3166085 1.0000000

wprowadź opis zdjęcia tutaj

rachunek_80
źródło
Dzięki, ale próbuję znaleźć rozwiązanie w Javie.
klonq 30.03.11
jakieś wskaźniki w kodowaniu R, aby uzyskać czynniki kształtu i skali? Dzięki.