我试图通过使用总计数和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
我无法摆脱错误,不知道如何处理错误。迫切需要帮助。
答案 0 :(得分: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]
)