-1
我目前正在通過Jim Albert的R進行貝葉斯思考。我有一個關於他的代碼的查詢,他的例子有一個beta可能性和離散事件。他計算後的代碼是:使用離散事先標準化β分佈的常量:R代碼查詢
pdisc <- function (p, prior, data)
s = data[1] # successes
f = data[2] # failures
#############
p1 = p + 0.5 * (p == 0) - 0.5 * (p == 1)
like = s * log(p1) + f * log(1 - p1)
like = like * (p > 0) * (p < 1) - 999 * ((p == 0) * (s >
0) + (p == 1) * (f > 0))
like = exp(like - max(like))
#############
product = like * prior
post = product/sum(product)
return(post)
}
我的查詢是關於計算的可能性和代碼高亮位什麼背後的邏輯(未在書中解釋)。我知道beta分佈的pdf,對數的可能性將與s * log(p1) + f * log(1 - p1)
成正比,但是不清楚接下來的兩行是怎麼做的 - 我想這與標準化常量有關,但是再次沒有這本書中沒有解釋。
以'like ='開頭的第二行只是將'p'設置爲0或1時設置爲零(實際爲'exp(-999)')的可能性的一種方式。在下面的行中,由於exp(-max(like))因子的可能性可能是爲了避免由於數字太接近零而導致的精度損失。 – nicola 2015-04-01 15:30:23
但是,我不明白他爲什麼不使用'dbeta'。 – nicola 2015-04-01 15:32:46