Ich habe versucht, den obigen Kommentar hinzuzufügen, aber mein Repräsentant ist zu niedrig.
Sollte
y[i] ~ dnorm(mu[i], tau / weight[i])
nicht sein
y[i] ~ dnorm(mu[i], tau * weight[i])
in JAGS? Ich führe einige Tests durch, in denen die Ergebnisse dieser Methode in JAGS mit den Ergebnissen einer gewichteten Regression über lm () verglichen werden, und kann nur mit letzterer Übereinstimmung finden. Hier ist ein einfaches Beispiel:
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)
und vergleiche mit
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