再会,
我想根据每天半小时测量的风速(每天 48 风速,有时缺少几个小时)创建威布尔分布。
然后基于weibull分布,我想根据每天的weibull分布计算某个目标风速(在这个数据集中,29km/hr)的密度。
为此,我需要每天安排 13 年的数据集来计算威布尔分布的两个参数(尺度 = a 和形状 = b),以估计每天目标点的密度。由于这是一个大型数据集,我需要使用某个函数来自动处理它并将日常结果放在不同的表中(a,b,密度为 29 公里/小时)(可能是“返回”函数??)
我的数据如下所示:
Time windspeed direction Date day_index
1 24/07/2000 13:00 31 310 2000-07-24 13:00:00 2000_206
2 24/07/2000 13:30 41 320 2000-07-24 13:30:00 2000_206
3 24/07/2000 14:30 37 290 2000-07-24 14:30:00 2000_206
4 24/07/2000 15:00 30 300 2000-07-24 15:00:00 2000_206
5 24/07/2000 15:30 24 320 2000-07-24 15:30:00 2000_206
6 24/07/2000 16:00 22 330 2000-07-24 16:00:00 2000_206
7 24/07/2000 16:30 37 270 2000-07-24 16:30:00 2000_206
这是此链接网页的进一步问题(如何在一个函数中使用多个代码在 R 中应用“sapply”?)
以前的评论表明我可能需要使用“聚合”或“ddply”函数。为了我的分析意图,如何在函数中放置多个参数?
我的多个参数的功能是:
library(bReeze)
library(xts)
time_ballarat <- strptime(ballarat_alldata[,1], "%d/%m/%Y %H:%M")
multiple.function <- set1 <- createSet(height=10, v.avg=ballarat_alldata[,2], dir.avg=ballarat_alldata[,3]) + ballarat <- createMast(time.stamp=time_ballarat, set1) + ballarat <- clean(mast=ballarat) + ballarat.wb <- weibull(mast=ballarat, v.set=1, print=FALSE) + my.x <- density(ballarat_alldata$windspeed, from = 0, to = max(ballarat_alldata$windspeed))$x + my.y <- density(ballarat_alldata$windspeed, from = 0, to = max(ballarat_alldata$windspeed))$y + df <- data.frame(x = my.x, y = my.y) + my.nls <- nls(y ~ (a/b) * (x/b)^(a-1) * exp(- (x/b)^a), + data = df[df$x > 0, ], + start = c(a = ballarat.wb[13,2], b = ballarat.wb[13,1])) + xValues <- seq(from = 0, to = 40, length.out = 100) + my.predicted <- predict(my.nls, data.frame(x = xValues)) + my.coef <- coef(my.nls) + my.weibull.predict <- function(x, a, b) { + y <- (a/b) * (x/b)^(a-1) * exp(- (x/b)^a) + return(y)} + return(c(ballarat.parameter = my.coef[1], ballarat.scale= my.coef[2], + my29 = my.weibull.predict(29, my.coef[1], my.coef[2])))}
我不确定这是否可以计算出每天目标速度的密度。您能否检查它是否符合我的意图?“multiple.function”的主要关注点是应该根据每天不同的数据创建不同的weibull分布代码。这在代码中是缺失的。
例如, in"createSet(height=10, v.avg=ballarat_alldata[,2], dir.avg=ballarat_alldata[,3])"
和v.avg
不应dir.avg
包含用于计算的所有数据集,但我不知道如何。
我仍然是 R 的初学者,所以我提前对我的问题表示歉意。问题可能太具体了。请帮助我找到解决问题的方法!
问候,
康敏。