R을 사용하여 바람 데이터 분석


12

안녕하세요, 풍력 터빈에서 에너지를 추정하기 위해 풍력 데이터를 분석하고 있습니다.
10 년 동안의 바람 데이터를 가져 와서 히스토그램을 그래프로 표시했습니다.
두 번째 단계는 Weibull 분포를 데이터에 맞추는 것이 었습니다.
패키지와 함께 R lmom을 사용하여 Weibul 모양을 계산하고 크기를 조정했습니다. 이것은 내가 사용한 코드입니다.

>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)    

데이터와 밀도 함수간에 약간의 지연이있는 것 같습니다. 이것 좀 도와 줄래? 또 다른 질문은 밀도 함수에서 연간 에너지를 계산하는 데 도움이 될 수 있습니까?

여기에 이미지 설명을 입력하십시오
감사합니다


사진에 대해 이미지 호스팅에 게시하고 링크를 넣으십시오-붙여 넣은 사진으로 변환하겠습니다.

+1, 흥미로운 질문, 당신은 곧 당신이 충분히 명성 :)있을 것이라는 점을 찾을 수 있습니다
mpiktas

2
그래프에서 볼 때 문제는 지연이 아닙니다. 당신이 그린 것은 대략 적합도입니다. 따라서 Weibull 분포는 데이터에 적합하지 않은 것 같습니다. 제로 근처에 무리가 있다는 것을 알았습니다. 데이터에 0 값이 있습니까? 이 경우 0 값을 별도로 모델링해야합니다. 따라서 첫 번째 제안은 Weibull을 0이 아닌 값으로 시도하는 것입니다. 또한 왜 Weibull이 특별한 이유가 있습니까? 유사한 작업에서 일부 언급이 있습니까?
mpiktas

1
'lag'는 주로 시간에 따른 데이터 분석에 사용되는 용어로, 한 번에 하나씩 발생하는 것을 말합니다. 이것은 시차가 아니며, 아마도 더 정확하게 쉬프트 (shift) 또는 어쩌면 오프셋 (offset)이라고 불릴 수 있지만, 쉬프트는 분포에서 더 일반적 일 수 있습니다. 쉬프트 및 스케일입니다.
Spacedman

1
인수와 함께 as.numeric (x) 사용에주의하십시오. 실제로 as.numeric (as.character (x))을 사용하여 요인에 적합한 숫자 값을 얻습니다.
Andy Clifton

답변:


5

lmom이 함수 는 location , scale 및 shape 매개 변수와 함께 3 개의 매개 변수 Weibull 분포에 pelwei적합합니다 . 2- 모수 Weibull 분포에 대해 난수를 생성합니다 . location 매개 변수를 빼야합니다 . 그건 제공해야 더 나은 적합을하지만, 그것이 줄 것이다 표시되지 않습니다 좋은 특정 데이터에 적합합니다.rweibullmoments["zeta"]

나는 알 http://www.reuk.co.uk/Wind-Speed-Distribution-Weibull.htm가 말한다 "세계의 대부분 바람의 속도가와 이블 분포를 사용하여 모델링 할 수 있습니다.". 아마도 당신은 단지 운이 좋지 않고 그들이 할 수없는 세계의 일부에 살고 있습니다!


밀도 함수를 기반으로 풍력 에너지를 계산하는 두 번째 질문으로 나를 도울 수 있습니까?
elavs

2
나는 물리학자가 아니며 필요한 방정식을 모르지만 밀도에 대한 수치 적분이 포함될 것이라고 생각합니다. R의 integrate()기능이 유용 할 수 있습니다.
onestop

나는 나의 문제가 내가 바람이 각 속도에있는 시간의 백분율을 계산하고 싶다는 방정식을 안다
eliavs

통합에 도움을 줄 수 있습니까-> 감사합니다
eliavs

6

http://hawaii.gov/dbedt/ert/winddata/krab0192.txt의 데이터를 사용하여 플롯을 다시 작성했습니다 (1200 개의 측정을 수행함). 일반적으로 코드를 사용하여 데이터에 알 맞습니다.

library(lmom)

daten <- read.delim("wind.txt")
wind.avg <- na.omit(as.numeric(daten[,"X12"]))
wind.moments<-samlmu(wind.avg)
moments<-pelwei(wind.moments)
x.wei<-rweibull(n=length(wind.avg), shape=moments["delta"], scale=moments["beta"])
hist(as.numeric(wind.avg), freq=FALSE)
lines(density(x.wei), col="red", lwd=4)

바람 플롯

죄송합니다, 귀하의 문제가 될 수 있다고 확신하지는 않지만 귀하는 귀하의 데이터에와 이블을 맞출 수 있어야한다고 생각합니다. 나를 의심스럽게 만드는 것은 밀도 플롯의 종 곡선입니다. 어디에서 왔는지 전혀 모르겠습니다.

다음은 내가 생성 한 순간입니다.

wind.moments

       l_1         l_2         t_3         t_4 
15.17287544  4.80372580  0.14963501  0.06954438

순간

     zeta      beta     delta 
 0.516201 16.454233  1.745413 

연간 생산량에 대한 WTR : 확률 밀도 함수에 대한 이산 값을 생성하고이 값에 출력 함수를 곱하고 합산한다고 가정합니다. 또는 원시 데이터를 사용하고 값에 출력 함수를 곱한 후이를 합산하여 연간 평균을 계산할 수 있습니다. 계절별을 적절한 방식으로 제어해야합니다 (예 : 1 년 내내 사용하거나 그에 따라 가중치를 적용해야 함) .

제어되지 않은 출력은 다음과 같습니다 ( http://www.articlesbase.com/diy-articles/determining-wind-turbine-annual-power-output-a-simple-formula-based-upon-blade-diameter- and-average-wind-speed-at-your-location-513080.html )

years  <- length(wind.avg)/365
diameter <- 150
Power = (0.01328*diameter^2)*((wind.avg)^3)
(annual.power <- sum(Power)/years)
[1] 791828306

4

SO의 풍력 터빈 관련 최근 게시물입니다. 해당 링크에 대한 답변에는 관심있는 링크가 3 개 있습니다.

/programming/4843194/r-language-sorting-data-into-ranges-averaging-ignore-outliers/4844783#4844783

위의 SO 답변에서 Weibull 링크 중 하나를 확인했습니다. 어떤 이유로 링크가 다운되었습니다. 동일한 기본 정보를 제공하는 링크는 다음과 같습니다.

http://www.gso.uri.edu/ozone/

http://www.weru.ksu.edu/new_weru/publications/pdf/Comparison%20of%20the%20Weibull%20model%20with%20measured%20wind%20speed%20distributions%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

또한 바람에서 발생하는 전력으로 인해 계절성이 분명합니다.

여기에 이미지 설명을 입력하십시오

여기에 이미지 설명을 입력하십시오


1

누군가가 이미이 시점을했는지 확실하지 않지만 pelwei는 실제로 고정 경계를 추가하여 2 매개 변수 weibull 함수로 작동하도록 강제 할 수 있습니다.

전화의 insead moments<-pelwei(wind.moments)는 단순히 전화해야합니다moments<-pelwei(wind.moments,bound=0)

제타 값이 무엇인지 항상 확인할 수 있습니다. 0이 아니고 dweibull을 사용하는 경우 그것에 대해 무언가를 수행해야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.