Я пытаюсь учесть разницу в размерах вселенной (частоты), в которой была выбрана выборка, присваивая различные веса различным наблюдениям, основанным на размере частоты.
Я сделал это в glm, и я хотел воспроизвести его в рамках байесовской структуры, но полученный мной результат сильно отличается.
Мои вопросы: как указать модель в rjars для получения того же самого/ аналогичный результат, полученный в glm?
library(dplyr)
dat1 <-
data.frame(x=1:10) %>%
mutate( y = round(2 * x + 2 + rnorm(length(x)) ),
pers_t=as.numeric(table(sample(1:10,80,replace = T))),
freq = as.numeric(table(sample(1:10, 10000,
replace=TRUE, prob=c(.3, .4, .5, .4, .3,.4,.5,.4,.3,.4)))),
w=freq/sum(freq))
## glm модель
glm(y ~ x + offset(pers_t), weight=freq,family=poisson(link = "log"),data=dat1)
байесовская модель
cat("model
{
for( i in 1 : N) {
y[i] ~ dpois(lamda[i]*w[i])
log(lamda[i]) <- mu[i] + log(pers_t[i])
mu[i] ~ dnorm(theta,tau)
rt[i] <- exp(mu[i])
}
theta ~ dnorm(0.0,1.0E-6)
etheta <- exp(theta)
tau1 ~ dgamma(1,1)
tau <- 1/(tau1*tau1)
}", file="model1.txt")
datlist <-list(y=dat1$y,pers_t= dat1$pers_t,w=dat1$w,
N=nrow(dat1))
datinits <-function(){list(theta = 0,tau1=0.01,
mu = rep(0,nrow(dat1)))}
номинальная оценка
datparams <- c("theta","tau","etheta","rt")
library(R2jags)
moddat1 <-jags(data=datlist,
inits=datinits,
parameters.to.save=datparams,n.chains=1, n.iter=1000000,
n.burnin=5000, n.thin=5,
model.file="model1.txt")
moddat1$BUGSoutput$summary
#
Я получил совсем другие результаты.