R でこの事後分布を計算しようとしています。問題は、dbern(p_i, y_i) < 1 の束の積である分子が小さすぎることです。(私のnは約1500です)。したがって、R は 0 を吐き出し、すべての \theta の事後値も 0 です。
明確にするために、各 y_i には独自の p_i があり、これらの p_i を合わせて、n 個の y に対して n 個の要素のベクトルを作成します。各 theta には、p_i の独自の n 要素ベクトルがあります。
再現可能な例 (分子の)
p <- sample(seq(0.001,0.999,by=0.01), 1500, replace=T)
y <- sample(c(0,1), 1500, replace=T)
dbern(y, p) # 1500-element vector, each element < 1
prod(dbern(y, p)) # produces 0
exp(sum(log(dbern(y, p)))) # produces 0
編集 (コンテキスト): ベイジアン変化点分析を行っています (jstor.org/stable/25791783 - Western and Kleykamp 2004)。論文の連続 y とは異なり、私の y は 2 進数なので、Albert と Chib (1993) のデータ拡張法を使用しています。この方法では、y の尤度はベルヌーイ (p = cdf-normal(x'B)) です。
では、p はどのようにシータに依存するのでしょうか? シータが変化点だからです。x の 1 つはタイム ダミーです。たとえば、theta=10 の場合、10 日目以降のすべての観測ではタイム ダミー = 1、10 日より前のすべての観測では 0 になります。
したがって、p は x に依存し、x は theta に依存します。したがって、p は theta に依存します。
Gibbs サンプリングのシータの完全な条件であるため、上記の数量が必要です。