-2
我的代碼塊的功能是填充一個4X100000矩陣,其中T爲F. 命名爲矩陣X.然後Xij_Beroulli(P)和P_normal(0.5, 0.15)其中max(P)= 1且min(P)= 0。R:統計/計算效率
統計效率非常低。如果有上述過程遵循的分佈,請也幫助我。
計算速度很慢,因爲我必須填寫整個矩陣1條目1條目,每條條目都是隨機的。有沒有辦法減少大量花費的時間?這是非常低效的。
統計效率問題就在這裏
x = rnorm(100000,mean = 0.5,sd = 0.15)
x[x > 1] = 1
x[x < 0] = 0
probability = function(x){
x.sam = sample(x,1)
p = c(x.sam,1-x.sam)
return(p)
}
aggro2 = function(x){
aggro2 = sample(c(T,F),1, prob = probability(x))
return(aggro2)
}
計算效率這裏
ptm = proc.time()
aggro =c()
n=100000
for (i in 1:(4*n)){
cat(round(i/(4*n)*100,2),"\n")
aggro = c(aggro, aggro2(x))
}
aggro.mat = matrix(aggro,4,n)
elapsed = proc.time()[3] - ptm[3]
cat(elapsed)
+1好(快)的答案。花了我一點時間來理解它。巧妙地使用pmin和pmax,並且不會不必要地對概率爲1和0的隨機變量進行抽樣! –
二項分佈不合適,但否則只是光華!謝謝! –
「二項分佈不合適」是什麼意思? 'rbinom(n,prob,size = 1)'是'n'伯努利試驗的樣本,概率爲'prob' ...這就是我以爲你想要的東西 –