用威布尔概率填充矩阵

时间:2015-07-08 10:07:13

标签: r function matrix distribution weibull

我无法使用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)

我无法使用任何一种方法。任何帮助都会非常有帮助!

1 个答案:

答案 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