这是我第一次运行WinBUGS。我的模型相当简单,只有一个截距和两个随机效应。然而,当我运行模型时,我得到了一个完整的错误列表(见下文)。第一个错误说“未定义变量”。我很难弄清楚我的哪些变量在语法中未定义。非常感谢任何帮助。
这是我的R代码,我使用R2WinBUGS包来运行我的模型。
library(R2WinBUGS)
library(coda)
library(car)
library(denstrip)
library(spdep)
# Load data
load("~/final_data.Rdata")
load("~/cb_2018_42_bg.nb.Rdata")
sink("model_null.txt")
cat("
# WinBUGS code for fitting a space-time separable model with BYM (space) + RW1 (time)
model {
# an outer for-loop to go through all areas (n=9,731)
for (i in 1:N) {
# an inner for-loop to go through all time points (n=10)
for (t in 1:T) {
# defining poisson likelihood of the outcome for all areas x time
y[i,t] ~ dpois(mu[i,t]) # poisson likelihood for the outcome in area i at time t
mu[i,t] <- theta[i,t] # define the mean of the poisson distribution, which is
# the additive space+time structure for the outcome
theta[i,t] <- SP[i] + v[t]
} # close T for-loop
} # close N for-loop
# BYM for overall spatial component
# a spatial ICAR on S[1:N]
S[1:N] ~ car.normal(adj[],weights[],num[],prec.S)
for (i in 1:N) {
mu.SP[i] <- alpha + S[i]
SP[i] ~ dnorm(mu.SP[i], prec.U)
}
# RW1 for the overall temporal component
# a temporal ICAR on v[1:T]
v[1:T] ~ car.normal(tm.adj[],tm.weights[],tm.num[],prec.v)
# specification of vague priors
alpha ~ dflat()
sigma.S ~ dunif(0.0001,10)
sigma.U ~ dunif(0.0001,10)
sigma.v ~ dunif(0.0001,10)
prec.S <- pow(sigma.S, -2)
prec.U <- pow(sigma.U, -2)
prec.v <- pow(sigma.v, -2)
} # end model
", fill=TRUE)
sink()
# Making Spatial Weights for car.normal function
nb.bugs <- nb2WB(cb_2018_42_bg.nb)
# Making Temporal Specifications for car.normal function
tm.bugs <- list(tm.adj=c(2,1,3,2,4,3,5,4,6,5,7,6,8,7,9,8,10,9),
tm.weights=c(1,1,1,1,1,1,1,1,1,1),
tm.num=c(1,2,2,2,2,2,2,2,2,1)
)
# Making matrix for data list
outcome.matrix <- matrix(final_data$outcome.var, nrow = 9731, byrow = TRUE) # vector is n=97310 and 10 time points
# Defining time and space dimensions
T <- 10
N <- 9731
# Data list for null space-time model
data <- c(list(T=T, # 10 years
N=N, # 9,731 block groups
y=outcome.matrix), # N x T matrix for outcome
nb.bugs=nb.bugs, # spatial weights
tm.bugs=tm.bugs) # temporal weights
# setting initial values for chains
inits1 <- list(alpha=rnorm(1), S=c(0.01,-0.01,z), SP=rep(rnorm(1,0,0.1),N), v=c(0.1,-0.1,0,0,0,0,0,0,0,0), sigma.S=rnorm(1,0,0.1), sigma.U=rnorm(1,0,0.1), sigma.v=rnorm(1,0,0.1))
inits2 <- list(alpha=rnorm(1), S=c(0.01,-0.01,z), SP=rep(rnorm(1,0,0.1),N), v=c(0.1,-0.1,0,0,0,0,0,0,0,0), sigma.S=rnorm(1,0,0.1), sigma.U=rnorm(1,0,0.1), sigma.v=rnorm(1,0,0.1))
inits3 <- list(alpha=rnorm(1), S=c(0.01,-0.01,z), SP=rep(rnorm(1,0,0.1),N), v=c(0.1,-0.1,0,0,0,0,0,0,0,0), sigma.S=rnorm(1,0,0.1), sigma.U=rnorm(1,0,0.1), sigma.v=rnorm(1,0,0.1))
inits<- list(inits1, inits2, inits3)
parameters <- c("alpha", "S", "SP", "v", "sigma.S", "sigma.U", "sigma.v")
m.null <- bugs(model.file="C:/file-path-to-folder/WinBUGS/model_null.txt",
data = data,
parameters = parameters,
inits = inits,
n.chains = 3,
n.iter = 10, n.burnin = 1, n.thin = 1,
bugs.directory = "C:/file-path-to-application/WinBUGS14/",
debug=TRUE)
以下是错误的完整列表:
display(log)
check(C:/file-path-to-folder/WinBUGS/model_null.txt)
model is syntactically correct
data(C:/file-path-to-folder/data.txt)
undefined variable
compile(3)
inits(1,C:/file-path-to-folder/inits1.txt)
command #Bugs:inits cannot be executed (is greyed out)
inits(2,C:/file-path-to-folder/inits2.txt)
command #Bugs:inits cannot be executed (is greyed out)
inits(3,C:/file-path-to-folder/inits3.txt)
command #Bugs:inits cannot be executed (is greyed out)
gen.inits()
command #Bugs:gen.inits cannot be executed (is greyed out)
thin.updater(1)
update(1)
command #Bugs:update cannot be executed (is greyed out)
set(alpha)
command #Bugs:set cannot be executed (is greyed out)
set(S)
command #Bugs:set cannot be executed (is greyed out)
set(SP)
command #Bugs:set cannot be executed (is greyed out)
set(v)
command #Bugs:set cannot be executed (is greyed out)
set(sigma.S)
command #Bugs:set cannot be executed (is greyed out)
set(sigma.U)
command #Bugs:set cannot be executed (is greyed out)
set(sigma.v)
command #Bugs:set cannot be executed (is greyed out)
set(deviance)
command #Bugs:set cannot be executed (is greyed out)
dic.set()
command #Bugs:dic.set cannot be executed (is greyed out)
update(9)
command #Bugs:update cannot be executed (is greyed out)
coda(*,C:/file-path-to-folder/coda)
command #Bugs:coda cannot be executed (is greyed out)
stats(*)
command #Bugs:stats cannot be executed (is greyed out)
dic.stats()
DIC
history(*,C:/file-path-to-folder/history.odc)
command #Bugs:history cannot be executed (is greyed out)
save(C:/file-path-to-folder/log.odc)
save(C:/file-path-to-folder/log.txt)
我现在的目标只是运行这个模型,然后添加自变量并使用更多的迭代次数,这段代码大部分是从教科书中摘录的:“空间和时空数据建模:一个贝叶斯方法”。然而,我使用的数据集与原来的教程不同。
1条答案
按热度按时间von4xj4u1#
我的数据列表中的car.normal变量的名称与代码不匹配。例如,由于我指定列表的方式,“adj”是“nb.bugs.adj”。我更改了名称以匹配我的模型语法,这样就修复了错误。