用 R 分析风数据

机器算法验证 r 分布
2022-03-22 05:44:22

嗨,我正在分析风能数据以估计风力涡轮机的能量。
我采集了 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)    

数据和密度函数之间似乎存在一些滞后;你能帮我解决这个问题吗?另一个问题是你能帮我计算密度函数的年能量吗?

在此处输入图像描述
谢谢你

4个回答

我使用来自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)

风图

抱歉,我不确定您的问题可能是什么,但我认为您应该能够将 weibull 拟合到您的数据中。让我怀疑的是你的密度图的钟形曲线,我不知道它是从哪里来的。

以下是我产生的时刻:

风矩

       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 到年产量:我想我会为概率密度函数生成离散值,将这些值与输出函数相乘并求和。或者,您可以只使用原始数据,将值与输出函数相乘,将其相加并计算年平均值,您应该以合适的方式控制季节性(例如,确保使用整年,或相应地加权) .

这是不受控制的输出(使用来自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

lmom函数pelwei拟合参数 Weibull 分布,具有位置、比例和形状参数。rweibull参数 Weibull 分布生成随机数。您需要减去位置参数moments["zeta"]这应该适合,但它似乎不会很好地适合您的特定数据。

我注意到http://www.reuk.co.uk/Wind-Speed-Distribution-Weibull.htm说“世界大部分地区的风速可以使用 Weibull 分布来建模。”。也许你只是不走运,生活在他们不能生活的世界的一部分!

我不确定是否有人已经提出了这一点,但 pelwei 实际上可以通过添加固定界限来强制作为 2 参数 weibull 函数工作。

除了打电话moments<-pelwei(wind.moments),你应该简单地打电话moments<-pelwei(wind.moments,bound=0)

您可以随时检查 zeta 值是多少。如果它不是 0 并且您正在使用 dweibull,则需要对其进行处理。