gpt4 book ai didi

r - r 中具有 iid 随机效应的泊松 GLM 的奇怪输出

转载 作者:行者123 更新时间:2023-12-01 22:40:58 25 4
gpt4 key购买 nike

我正在尝试在 R 中运行 rjags(通过 Rstudio)来估计以下模型的参数 alpha&beta 和超参数 tau.nu:

y_i|x_i~pois(eta_i),
eta_i=exp(alpha + beta*x_i + nu_i),
nu_i~N(0,tau.nu)

这是我的代码:

#generating data
N = 1000
x = rnorm(N, mean=3,sd=1)
nu = rnorm(N,0,0.01)
eta = exp(1 + 2*x + nu)
y = rpois(N,eta)
data=data.frame(y=y,x=x)
###MCMC
library(rjags)
library(coda)
mod_string= "model {
for(i in 1:1000) {
y[i]~dpois(eta[i])
eta[i]=exp(alpha+beta*x[i]+nu[i])
nu[i]~dnorm(0,tau.nu)
}
alpha ~ dnorm(0,0.001)
beta ~ dnorm(0,0.001)
tau.nu ~ dgamma(0.01,0.01)
}"

params = c("alpha","beta","tau.nu")

inits = function() {
inits = list("alpha"=rnorm(1,0,100),"beta"=rnorm(1,0,80),"tau.nu"=rgamma(1,1,1))
}
mod = jags.model(textConnection(mod_string), data=data, inits=inits, n.chains =3)
update(mod,5000)
mod_sim = coda.samples(model=mod,
variable.names=params,
n.iter=2e4)
mod_csim = as.mcmc(do.call(rbind, mod_sim))
plot(mod_csim)

我得到了奇怪的输出,我不知道我错在哪里。MCMC 在这个模型中不起作用吗?或者我只是在编码中做错了什么?

enter image description here

最佳答案

此模型不会使用标准采样器收敛。如果您使用 glm 模块中的采样器,就会出现这种情况。 (但情况可能并不总是如此 [1] )

未加载glm模块

library(rjags)

mod_sim1 <- jagsFUN(dat)
plot(mod_sim1)

enter image description here加载后

load.module("glm")
mod_sim2 <- jagsFUN(dat)
plot(mod_sim2)

enter image description here

<小时/>
# function and data
# generate data
set.seed(1)
N = 50 # reduced so could run example quickly
x = rnorm(N, mean=3,sd=1)
nu = rnorm(N,0,0.01)
eta = exp(1 + 2*x + nu)
y = rpois(N,eta)
dat = data.frame(y=y,x=x)

# jags model
jagsFUN <- function(data) {
mod_string= "model {
for(i in 1:N) {
y[i] ~ dpois(eta[i])
log(eta[i]) = alpha + beta* x[i] + nu[i]
}

# moved prior outside the likelihood
for(i in 1:N){
nu[i] ~ dnorm(0,tau.nu)
}
alpha ~ dnorm(0,0.001)
beta ~ dnorm(0,0.001)
tau.nu ~ dgamma(0.001,0.001)
# return on variance scale
sig2 = 1 / tau.nu
}"

mod = jags.model(textConnection(mod_string),
data=c(as.list(data),list(N=nrow(data))),
n.chains = 3)
update(mod,1000)
mod_sim = coda.samples(model=mod,
variable.names=c("alpha","beta","sig2"),
n.iter=1e4)
return(mod_sim)
}

关于r - r 中具有 iid 随机效应的泊松 GLM 的奇怪输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52901838/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com