Đã thử thêm vào nhận xét ở trên, nhưng đại diện của tôi quá thấp.
Nên
y[i] ~ dnorm(mu[i], tau / weight[i])
không được
y[i] ~ dnorm(mu[i], tau * weight[i])
trong JAGS? Tôi đang chạy một số thử nghiệm so sánh kết quả từ phương pháp này trong JAGS với kết quả từ hồi quy có trọng số thông qua lm () và chỉ có thể tìm thấy sự phù hợp bằng cách sử dụng phương pháp sau. Đây là một ví dụ đơn giản:
aggregated <-
data.frame(x=1:5) %>%
mutate( y = round(2 * x + 2 + rnorm(length(x)) ),
freq = as.numeric(table(sample(1:5, 100,
replace=TRUE, prob=c(.3, .4, .5, .4, .3)))))
x <- aggregated$x
y <- aggregated$y
weight <- aggregated$freq
N <- length(y)
# via lm()
lm(y ~ x, data = aggregated, weight = freq)
và so sánh với
lin_wt_mod <- function() {
for (i in 1:N) {
y[i] ~ dnorm(mu[i], tau*weight[i])
mu[i] <- beta[1] + beta[2] * x[i]
}
for(j in 1:2){
beta[j] ~ dnorm(0,0.0001)
}
tau ~ dgamma(0.001, 0.001)
sigma <- 1/sqrt(tau)
}
dat <- list("N","x","y","weight")
params <- c("beta","tau","sigma")
library(R2jags)
fit_wt_lm1 <- jags.parallel(data = dat, parameters.to.save = params,
model.file = lin_wt_mod, n.iter = 3000, n.burnin = 1000)
fit_wt_lm1$BUGSoutput$summary