Cześć, analizuję dane dotyczące wiatru w celu oszacowania energii z turbiny wiatrowej.
Wziąłem 10 lat danych wiatrowych i wykreśliłem histogram;
moim drugim etapem było dopasowanie rozkładu Weibulla do danych.
Użyłem R z pakietem lmom
do obliczenia kształtu i skali Weibula. Użyłem tego kodu:
>library(lmom)
wind.moments<-samlmu(as.numeric(pp$WS))
moments<-pelwei(wind.moments)
x.wei<-rweibull(n=length(pp$WS), shape=moments["delta"], scale=moments["beta"])
hist(as.numeric(pp$WS), freq=FALSE)
lines(density(x.wei), col="red", lwd=4)
Wydaje się, że istnieje pewne opóźnienie między danymi a funkcją gęstości; czy możesz mi z tym pomóc? Innym pytaniem jest, czy możesz mi pomóc w obliczeniu rocznej energii z funkcji gęstości?
Dziękuję Ci
r
distributions
eliavs
źródło
źródło
Odpowiedzi:
lmom
Funkcjapelwei
pasuje do trzech parametrów rozkładu Weibulla z lokalizacji parametrów rozmiarach i kształcie.rweibull
generuje liczb losowych dla dwóch -parameter rozkładu Weibulla. Musisz odjąć parametr lokalizacjimoments["zeta"]
. To powinno dać lepsze dopasowanie, ale nie wydaje się, aby dobrze pasowało do twoich danych.Zauważyłem http://www.reuk.co.uk/Wind-Speed-Distribution-Weibull.htm mówi „prędkości wiatru w większości krajów świata można modelować za pomocą Weibulla.”. Być może masz po prostu pecha i mieszkasz w części świata, w której nie mogą!
źródło
integrate()
Funkcja R może być do tego przydatna.Odtworzyłem twoją fabułę na podstawie danych z http://hawaii.gov/dbedt/ert/winddata/krab0192.txt (wykonałem 1200 pomiarów). Dostałem porządne dopasowanie danych, ogólnie używając twojego kodu:
Przepraszam, nie jestem pewien, czy twój problem może być, ale myślę, że powinieneś być w stanie dopasować weibull do swoich danych. To, co mnie podejrzewa, to krzywa dzwonowa twojego wykresu gęstości, nie mam pojęcia, skąd to się wzięło.
Oto momenty, które wygenerowałem:
wiatr. chwile
chwile
WTR do rocznej produkcji: Przypuszczam, że wygenerowałbym wartości dyskretne dla funkcji gęstości prawdopodobieństwa, pomnożyłem te wartości przez funkcję produkcji i zsumowałem. Alternatywnie, możesz po prostu użyć swoich surowych danych, pomnożyć wartości przez funkcję wyjściową, zsumować je i obliczyć średnią roczną, powinieneś kontrolować sezonowość w odpowiedni sposób (np. Upewnij się, że używasz całych lat lub odpowiednio ważą) .
Oto niekontrolowane dane wyjściowe (przy użyciu wzoru z http://www.articlesbase.com/diy-articles/determining-wind-turbine-annual-power-output-a-simple-formula-based-upon-blade-diameter- i -średnia prędkość wiatru-w-twojej-lokalizacji-513080.html )
źródło
Oto ostatni post w SO na temat turbin wiatrowych. Moja odpowiedź na ten link zawiera trzy linki, którymi możesz być zainteresowany:
/programming/4843194/r-language-sorting-data-into-ranges-averaging-ignore-outliers/4844783#4844783
Właśnie sprawdziłem jeden z linków Weibull w powyższej odpowiedzi SO. Z jakiegoś powodu link nie działa. Oto kilka linków, które zapewniają te same podstawowe informacje:
http://www.gso.uri.edu/ozone/
http://www.weru.ksu.edu/new_weru/publications/pdf/Comparison%20of%20the%20Weibull%20model%20with%20measured%20wind%20speed%20distribution%20for%20stochastic%20wind%20genera.pdf
http://www.kfupm.edu.sa/ri/publication/cer/41_JP_Weibull_parameters_for_wind_speed_distribution_in_Saudi_Arabia.pdf
http://journal.dogus.edu.tr/13026739/2008/cilt9/sayi1/M00195.pdf
http://www.eurojournals.com/ejsr_26_1_01.pdf
Ponadto, z energii wytwarzanej przez wiatr, sezonowość jest oczywista.
źródło
Nie jestem pewien, czy ktoś już to zauważył, ale pelwei może faktycznie zostać zmuszony do pracy jako funkcja 2-parametrowa weibull poprzez dodanie stałej granicy.
Zamiast dzwonić
moments<-pelwei(wind.moments)
, powinieneś po prostu zadzwonićmoments<-pelwei(wind.moments,bound=0)
zawsze możesz sprawdzić, jaka jest wartość zeta. Jeśli nie jest to 0, a używasz dweibull, musisz coś z tym zrobić.
źródło