我一直在尝试使用 rjags 拟合非线性模型。特别是 3 和 4 参数 sigmoid 曲线,例如,
upAsym + (y0 - upAsym)/ (1 + (x[r]/midPoint)^slope))
我注意到良好的参数估计(+- 95% HDIs)高度依赖于具有严格约束的先验。是否有任何好的指南(或易于阅读的论文/书籍)可以帮助选择合理的无信息先验来帮助参数估计?
我的想法是:在特定范围内使用统一的先验与使用中等精度的正常先验是否更好,或者,首先拟合最小二乘估计以帮助设置边界和起始值,或者,调整老化和变薄。
我一直在玩的一个玩具例子(这个例子中的斜率参数有时很难得到一个像样的估计):
x <- 0:20
y <- 20 + (2 - 20)/(1 + (x/10)^5) + rnorm(21, sd=2)
dataList = list(y = y, x = x, N = 21)
models = "
model {
for( i in 1 : N ) {
y[i] ~ dnorm( mu[i] , tau )
mu[i] <- upAsym + (y0 - upAsym)/ (1 + pow(x[i]/midPoint, slope))
}
tau ~ dgamma( sG , rG )
sG <- pow(m,2)/pow(d,2)
rG <- m/pow(d,2)
m ~ dgamma(1, 0.01)
d ~ dgamma(1, 0.01)
midPoint ~ dnorm(10,0.0001) T(0,21)
slope ~ dnorm(5, 0.0001) T(0,)
upAsym ~ dnorm(30,0.0001) T(0,40)
y0 ~ dnorm(0, 0.0001) T(-20,20)
}"
writeLines(models,con="model.txt")