我試圖找到風數據的概率密度函數。以下是我如何從平均風速計算比例參數。使用for循環保存數據矩陣?
k<-2
for(i in 1:length(Windmean)){
Scale[i]=as.numeric(Windmean[i]/(exp(gammaln(1+(1/k)))))
}
> Scale
[1] 3.913934 3.996000 4.012884 3.925220 3.856707 3.849608 3.820578 3.943110 3.945975 3.842338 3.891791
[12] 3.933083 3.993944 3.907775 3.847120 3.853263 3.917156 4.028956 3.878879 3.753880 3.969074 3.818923
[23] 3.855913 3.993075 3.985828 3.914240 3.854336 3.620460 3.848180 3.843788 3.830617 3.841890 3.879547
[34] 3.904059
如果這是我對尺度參數的結果我想用下面的公式來獲取風概率Wind_prob.
我做的。
Scale<- cbind(3.913934,3.996000,4.012884,3.925220,3.856707,3.849608,
3.820578,3.943110,3.945975,3.842338,3.891791,3.933083,3.993944,3.907775,
3.847120,3.853263,3.917156,4.028956,3.878879,3.753880,3.969074,3.818923,
3.855913,3.993075,3.985828,3.914240,3.854336,3.620460,3.848180,3.843788,
3.830617,3.841890,3.879547,3.904059) ##Length 34
bins<-cbind(seq(0.5,25,by=0.5)) ##Length 51
bins<-cbind(bins)
shape<-k
for(i in 1:length(bins)){
for(o in 1:length(Scale)){
Wind_prob[i]<-(0.5*(exp(-1*(bins[i,1]/shape)^shape))*(shape/as.numeric(Scale[o]))*((bins[i,1]/as.numeric(Scale[o]))^(shape-1)))
}
}
我得到的51個概率函數(i=34)
清單,但我應該得到[51 * 34]的矩陣。基本上,我想爲每個34個比例函數獲得51個概率函數。看來我的迭代沒有被保存在矩陣中。我嘗試了as.matrix
,as.array
以及wind_prob
,但無法正常工作。 有人會指出我需要在代碼中做出的更改嗎?謝謝。
'k'丟失。 o:長度(o)無效。長表達式返回1個數字。你需要更多地考慮這一點。預先分配一個矩陣來填充,然後使用兩個索引。現在你不使用'o'維度。 –
@RomanLuštrik'k'給出爲2,參見代碼的前半部分。是的,它應該是'1:length(Scale)'編輯。 – SamAct