1

我正在尝试通过使用总计数和 beta 分布来制定先验。

我写了以下内容:

quantile(df$row, probs=c(0.00001, 0.5, 0.99999))

quantile1 <- list(p=0.5, x=8)
quantile2 <- list(p=0.99999, x=10)
quantile3 <- list(p=0.00001, x=1)

library("LearnBayes")
findBeta <- function(quantile1,quantile2,quantile3)

quantile1_p <- quantile1[[1]]; quantile1_q <- quantile1[[2]]
quantile2_p <- quantile2[[1]]; quantile2_q <- quantile2[[2]]
quantile3_p <- quantile3[[1]]; quantile3_q <- quantile3[[2]]

priorA <- beta.select(list(p=0.5, x=8), list(p=0.99999, x=10))

一旦我尝试使用 beta.select 函数计算priorA,我会收到以下错误:

Error in if (p0 < p) m.hi = m0 else m.lo = m0 : 
  missing value where TRUE/FALSE needed
In addition: Warning message:
In pbeta(x, K * m0, K * (1 - m0)) : NaNs produced

我只是无法摆脱错误,也不知道如何处理它。急需帮助。

4

1 回答 1

1

我猜测(完全凭空而来)您正在处理百分比。在这种情况下你想使用x/100

beta.select(list(p=0.5, x=.08), list(p=0.9, x=.10))
#  [1]  28.02 318.74

无论哪种方式,虽然最好beta.select抛出更合适的错误消息(或者更确切地说,在那里进行错误检查),但问题的根源在于您x的 ' 超出范围。(正如@Didzis 所指出的,beta dist 的间隔是[0, 1]

于 2013-03-25T06:28:24.203 回答