r——棒内函数中的不合格参数



all,我试图在R中使用JAGS模型;R2jags";。我对beblow这样的错误感到困惑。

编译模型图正在解析未声明的变量正在分配节点正在删除模型jags.model(model.file,data=data,inits=init.values,n.chains=n.chains,:运行时错误:棒内功能中的不合格参数

数据处理部分,

library(R2jags)
data <- read.table("H:/mlp2020/data109.csv",sep = ",",check.names = F,stringsAsFactors = F,header = T)
rownames(data) <- data[,1]
data <- data[,-1]
z <- as.vector(data$group)
z <- z+1
Y_input <- data[,c(1:1356)]
X_input <- data[,c(1358:1368)]
N <- 1702    #nrow(Y_input)
P <- 1356    #ncol(Y_input)
R <- 11      #ncol(X_input)
Y <- Y_input
X <- X_input 
jags.data <- list("X","Y","z","N","P","R")
jags.params <- c("phi","delta") 
jags.inits <- function(){ 
list("phi"=rbinom(1,1,0.1),"delta"=rbinom(1,1,0.1)) 
}

我的型号代码是,

model <- function(){
for (j in 1:P){
for (i in 1:N){
k[i,j] <- 1+phi[j]*z[i]    #k=1 phi[j]=0,k=2 phi[j]=1 z[i]=1,k=3 phi[j]=1 z[i]=2
}
phi[j] ~ dbern(w)
}

for (j in 1:P){
for (i in 1:N){
Y[i,j] ~ dnorm(mu[i,j], tau[j])

mu[i,j] = e_1[j] + e_2[j]*equals(k[i,j],2) + inprod(X[i,],beta)
}
for (r in 1:R){
beta[r,j]<-delta[r,j]*beta_0[j]
#spike and slab pior for beta
delta[r,j] ~ dbern(t)
}
#spike and slab pior for beta
beta_0[j] ~ dnorm(0,tau_beta[j])
tau_beta[j] ~ dgamma(2, 15) # input

e_1[j]~dnorm(0,tau_1[j])   #tau_mu[j]=1
tau_1[j] ~ dgamma(2, 15) # input

e_2[j]~dnorm(0,tau_2[j])   #tau_mu[j]=1
tau_2[j] ~ dgamma(2, 15) # input

sigma[j] <- 1.0/sqrt(tau[j])
# input 
tau[j] ~ dgamma(10, 1)
} 
# t ~ dbeta(a_t,b_t) # input
# w ~ dbeta(a_w,b_w) # input
w ~ dbeta(1,0.1)
t ~ dbeta(0.4,1.6)

}
jagsfit <- jags(data=jags.data, inits=jags.inits, jags.params,
n.iter=10, 
model.file=model)

如有任何帮助,我们将不胜感激!

inprod是点积。它的两个参数必须是长度相同的向量,但代码中的第二个参数是矩阵。

我没有检查你的型号,但也许你想要inprod(X[i,],beta[,j])

最新更新