Как включить вес и смещение в модель Пуассона? - PullRequest
0 голосов
/ 03 октября 2019

Я пытаюсь учесть разницу в размерах вселенной (частоты), в которой была выбрана выборка, присваивая различные веса различным наблюдениям, основанным на размере частоты.

Я сделал это в 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

#

Я получил совсем другие результаты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...