我无法使用R来填充具有Weibull概率行的矩阵,每行的“比例因子”不同。在每一个柱子都被填充相同。
我尝试了很多方法,但下面我展示了我做过的事情。我认为我缺少一些基本的东西!
获取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)
在矩阵的每一行上应用Weibull函数(对于每个x值(风速))
for (i in 1:26){
w.dist[i,] <- apply(w.dist,2,function(x)dweibull(x,Shape,Scale[i]))
}
OR:
w.dist <- matrix(dweibull(x, shape=Shape, scale=Scale), nrow=26, ncol=26, byrow=TRUE)
我无法使用任何一种方法。任何帮助都会非常有帮助!
答案 0 :(得分:0)
在循环中
for (i in 1:26){ w.dist[i,] <- apply(w.dist,2,function(x)dweibull(x,Shape,Scale[i])) }
&#39; dweibull&#39; -function不适用于风速值&#39; x&#39;但不适用于&#39; w.dist&#39;包含未定义的值。我尝试了以下方法:
windSpeed <- x
for (i in 1:26){ w.dist[i,] <- dweibull(windSpeed,Shape,Scale[i]) }
然后排出&#39; w.dist&#39;包含合理的值,例如
> 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