0

R を使用して、行ごとに異なる「スケール係数」を持つワイブル確率の行で行列を埋めるのに問題があります。この時点で、各列は同じように埋められます。

私はいくつかの方法を試しましたが、以下に私がやったことを示します。私が見逃している基本的なものがあると思います!

26 の倍率のリストを取得するには:

Shape <- 2
x <- seq(0,25,1)

Scale <- NULL
for (i in 1:26){
Scale[i] <- x[i]/(gamma(1+1/Shape))
}

行列を準備します:

size <- length(x)                   ## size of matrix
w.dist <- matrix(
    rep(x,size),
    nrow= size,
    ncol= size,
    byrow= T)

行列の各行にワイブル関数を適用します (各 x 値 (風速) に対して)

for (i in 1:26){ 
w.dist[i,] <- apply(w.dist,2,function(x)dweibull(x,Shape,Scale[i]))
}

また:

w.dist <- matrix(dweibull(x, shape=Shape, scale=Scale), nrow=26, ncol=26, byrow=TRUE)

どちらの方法も機能しません。どんな助けでも非常に役に立ちます!

4

1 に答える 1

0

ループの中

for (i in 1:26){ w.dist[i,] <- apply(w.dist,2,function(x)dweibull(x,Shape,Scale[i])) }

「dweibull」関数は、風速値「x」には適用されませんが、未定義の値を含む「w.dist」には適用されます。私は次のことを試しました:

windSpeed <- x
for (i in 1:26){ w.dist[i,] <- dweibull(windSpeed,Shape,Scale[i]) }

次に、「w.dist」の行には妥当な値が含まれます。

> w.dist[12,]
 [1] 0.000000000 0.012897797 0.025298144 0.036735430 0.046804881 0.055186204
 [7] 0.061659957 0.066115538 0.068550573 0.069062342 0.067832616 0.065107812
[13] 0.061176637 0.056347379 0.050926813 0.045202234 0.039427649 0.033814593
[19] 0.028527530 0.023683384 0.019354446 0.015573732 0.012341866 0.009634581
[25] 0.007410118 0.005615971
> sum(w.dist[12,])
[1] 0.9842882
于 2015-07-08T13:57:11.250 に答える