12 votos

Análisis de los datos del viento con R

Hola, estoy analizando los datos del viento para estimar la energía de un aerogenerador.
He tomado 10 años de datos sobre el viento y he trazado un histograma;
mi segunda etapa fue ajustar una distribución de Weibull a los datos.
He utilizado R con el paquete lmom para calcular la forma y la escala de Weibul este es el código que he utilizado:

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

Parece que hay un desfase entre los datos y la función de densidad; ¿puede ayudarme con esto? Otra pregunta es si pueden ayudarme a calcular la energía anual a partir de la función de densidad.

enter image description here
gracias

7voto

Berek Bryan Puntos 349

lmom función pelwei se ajusta a tres parámetro de la distribución de Weibull, con ubicación , parámetros de escala y forma. rweibull genera números aleatorios para un dos -parámetro de la distribución de Weibull. Hay que restar el parámetro de localización moments["zeta"] . Eso debería dar una mejor ajuste, pero no parece que vaya a dar una buena se ajuste a sus datos particulares.

Me doy cuenta http://www.reuk.co.uk/Wind-Speed-Distribution-Weibull.htm dice que "la velocidad del viento en la mayor parte del mundo puede modelarse utilizando la distribución de Weibull". Quizá tengas mala suerte y vivas en una parte del mundo donde no se puede.

4voto

Alp Puntos 446

Aquí hay un post reciente en SO sobre las turbinas eólicas. Mi respuesta en ese link tiene tres enlaces que pueden interesarle:

https://stackoverflow.com/questions/4843194/r-language-sorting-data-into-ranges-averaging-ignore-outliers/4844783#4844783

Acabo de comprobar uno de los enlaces de Weibull en la respuesta anterior de SO. Por alguna razón, el enlace no funciona. Aquí hay algunos enlaces que proporcionan la misma información básica:

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

Además, de la energía generada a partir del viento, la estacionalidad es evidente.

enter image description here

enter image description here

1voto

luqui Puntos 289

No estoy seguro de si alguien ya ha hecho este punto, pero pelwei en realidad puede ser forzado a trabajar como una función weibull de 2 parámetros mediante la adición de un límite fijo.

En lugar de llamar moments<-pelwei(wind.moments) simplemente debe llamar a moments<-pelwei(wind.moments,bound=0)

siempre puedes comprobar cuál es el valor zeta. Si no es 0 y estás usando dweibull, tienes que hacer algo al respecto.

0voto

seat59j Puntos 29

He recreado tu gráfico con los datos de http://hawaii.gov/dbedt/ert/winddata/krab0192.txt (He tomado las 1200 medidas). Conseguí un ajuste decente de los datos, en general usando tu código:

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 Plot

Lo siento, no estoy seguro de cuál puede ser tu problema, pero creo que deberías poder ajustar Weibull a tus datos. Lo que me hace sospechar es la curva de campana de su gráfico de densidad, no tengo idea de dónde vino.

Estos son los momentos que he generado:

viento.momentos

       l_1         l_2         t_3         t_4 
15.17287544  4.80372580  0.14963501  0.06954438

momentos

     zeta      beta     delta 
 0.516201 16.454233  1.745413 

WTR a la producción anual: Supongo que generaría valores discretos para la función de densidad de probabilidad, multiplicaría estos valores con la función de salida y lo sumaría. Como alternativa, podría utilizar simplemente sus datos brutos, multiplicar los valores con la función de salida, sumarlos y calcular la media anual, debería controlar la estacionalidad de forma adecuada (por ejemplo, asegurarse de utilizar años enteros, o ponderar en consecuencia).

Aquí está la salida no controlada (utilizando la fórmula de 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

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X