1

良い一日、

30分ごとに測定された毎日の風速に基づいてワイブル分布を作成したいと思います(毎日48風速、時には数時間欠落しています)。
そして、ワイブル分布に基づいて、毎日のワイブル分布に基づいて、特定の目標風速 (このデータセットでは 29km/hr) の密度を計算したいと考えています。
これを行うには、毎日 13 年分のデータセットを調整して、ワイブル分布の 2 つのパラメーター (スケール = a と形状 = b) を計算し、ターゲット ポイントの密度を毎日推定する必要があります。これは大規模なデータセットであるため、特定の関数を使用して自動的に処理し、毎日の結果を別のテーブルに入れる必要があります (a、b、密度 29 km/hr) (おそらく 'return' 関数??)

私のデータは次のようになります。

    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  

これは、このリンク Web ページによる追加の質問です ( 1 つの関数で複数のコードを使用して 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」の主な関心事は、毎日の異なるデータに基づいて、ワイブル分布コードを異なる方法で作成する必要があることです。これはコードにありません。

たとえば"createSet(height=10, v.avg=ballarat_alldata[,2], dir.avg=ballarat_alldata[,3])"v.avgdir.avgには計算用のすべてのデータセットを含める必要はありませんが、その方法がわかりません。

私はまだRの初心者なので、事前に質問をお詫び申し上げます。質問が具体的すぎるかもしれません..私の問題を解決する方法を見つけるのを手伝ってください!

よろしく、

カンミン。

4

0 に答える 0