Что делает мой блок кода, это заполнить матрицу 4X100000 либо T F. F. позволяет назвать матрицу X. то Xij ~ Bernoulli (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' испытаний Bernoulli с вероятностью' prob' ... что я и думал, что вы хотите –