観測されたビン数のヒストグラムがあります。観測されたカウントに基づいてシミュレーションを実行し、同じ数の観測がどのように異なって発生したかを確認したいと思います。観測されたカウントをベクトルの要素として、ヒストグラムをベクトルに変換します。rbinom(n, size, prob)
ビンの頻度に基づく確率で(から) 二項分布から生成された乱数を使用して、各ビンをシミュレートします。
私の問題は、観測されたカウントがゼロのビンをシミュレートすることです。ビンのカウントがゼロの場合、prob
=0 であるため、そのビンのシミュレートされたカウントは常にゼロです。これは非物理的であり、私が望むものではありません。現在、ビン カウント 0 をビン カウント 1 でオーバーライドすることで、この問題に対処しています。これの影響がよくわからないため、許容範囲を超えてシミュレーションにバイアスをかけているかどうかはわかりません。私は、アドホックな方法よりも優れた、またはより洗練された問題の解決策を探しています。
何か案は?ありがとうございました。
関連するコードは次のとおりです。
sim.vector <- function(x, n = length(x)) {
sum.vector <- round(sum(x), 0) # the number of observations
x.dummy <- x
x.dummy[x.dummy == 0] <- 1 # override bins with zero counts
f <- x.dummy / sum(x) # the frequency of each bin
x.sim <- rep(0, n)
while(sum.vector != sum(x.sim)) { # make sure the simulation has the same
# number of total counts as the observation
for (i in 1:n) {
p.target <- f[i] # set the probability of each bin to the frequency
x.sim[i] <- rbinom(1, sum.vector, p.target) # create a random binomial
}
}
return(x.sim)
}