JAGS错误消息-节点与父节点不一致

最后发布: 2018-06-16 12:37:50


问题

数据集包含〜11,000行,因此在检查代码是否运行的同时,我一直在缩小它。 所有行都包含从Sentinel-2a图像和数字高程图提取的信息,而117个单元格的子集还包含在实地考察中记录的栖息地协变量。 这样,某些列(包括响应变量(S1))的特征在于高比例的NA。

当我将K限制为450时,该模型似乎运行正常,但是将K增加到500时,我收到以下错误消息:

Error in node S1[500]
Node inconsistent with parents

当我创建一个仅包含117行的数据帧时,会收到类似的错误消息,该行包含遥感数据和该字段中记录的数据。 此数据集中有一些NA,因为某些图无法访问,但大多数单元格包含值。

阅读此线程后,我尝试删除了#inits#行: RJAGS输出Node与parent不一致 这导致模型运行。 我认为这表明问题在于初始化?

完整数据框的前五行:

S1 Logit_tussac soil_moisture DEM_slope DEM_aspect DEM_elevation sentinel1 sentinel2 sentinel3 sentinel4 sentinel5 sentinel6 sentinel7 sentinel8 sentinel9 sentinel10
NA           NA            NA  2.434239   168.5011   0.588606366    0.0413    0.0499    0.0531    0.1035    0.1862    0.1968    0.1808    0.1318    0.0400     0.0199
NA           NA            NA  3.705001   178.1289   1.007037127    0.0966    0.1108    0.1212    0.0855    0.0917    0.1063    0.0937    0.1842    0.0341     0.0161
NA           NA            NA  5.006181   180.0000   1.883010797    0.1309    0.1472    0.1361    0.0855    0.0917    0.1063    0.0937    0.1572    0.0341     0.0161
NA           NA            NA  5.006181   180.0000   2.758984468    0.0542    0.0512    0.0472    0.0145    0.0127    0.0092    0.0166    0.0510    0.0148     0.0080
NA           NA            NA  3.014719   161.5793   0.004048217    0.0224    0.0138    0.0223    0.1019    0.1209    0.1332    0.1504    0.0411    0.1099     0.0608
NA           NA            NA  2.907236   170.7134   0.504032418    0.0470    0.0634    0.0544    0.1019    0.1209    0.1332    0.1504    0.0997    0.1099     0.0608

数据框的前五行仅包含包含在字段中测量的协变量的单元格:

S1 Logit_tussac soil_moisture DEM_slope DEM_aspect DEM_elevation sentinel1 sentinel2 sentinel3 sentinel4 sentinel5 sentinel6 sentinel7 sentinel8 sentinel9 sentinel10
NA          NA            NA 14.917334   256.1612      12.24432    0.0513    0.0588    0.0541    0.1145    0.1676    0.1988    0.1977    0.1658    0.1566     0.0770
0    -9.210240             1 23.803741   225.1231      16.88028    0.1058    0.1370    0.2139    0.2387    0.2654    0.2933    0.3235    0.2928    0.3093     0.1601
NA          NA            NA 20.789165   306.0945      18.52480    0.0287    0.0279    0.0271    0.0276    0.0290    0.0321    0.0346    0.0452    0.0475     0.0219
NA   -9.210240             1  6.689442   287.9641      36.08975    0.0462    0.0679    0.1274    0.1535    0.1797    0.2201    0.2982    0.2545    0.4170     0.2252
0    -9.210240             1 25.476444   203.0659      23.59964    0.0758    0.1041    0.1326    0.1571    0.2143    0.2486    0.2939    0.2536    0.3336     0.1937
1    -1.385919             3  1.672511   270.0000      39.55215    0.0466    0.0716    0.1227    0.1482    0.2215    0.2715    0.3334    0.2903    0.3577     0.1957

土壤湿度是一个因素,而其他变量是数字。

该模型:

model <- "model{
for(i in 1:K) {
S1[i]~dpois(lambda1[i])
lambda1[i]<-exp(a0+ a1*DEM_aspect[i]+a2*DEM_slope[i]+a3*DEM_elevation[i]+
a4*tussac[i]+a5*sentinel1[i]+a6*sentinel2[i]+a7*sentinel3[i]+a8*sentinel4[i]
+a9*sentinel5[i]+a10*sentinel6[i]+a11*sentinel7[i]+a12*sentinel8[i]
+a13*sentinel9[i]+a14*sentinel10[i])

muLogit_tussac[i]<-b0+b1*sentinel7[i]+b2*sentinel9[i]+b3*DEM_elevation[i]

Logit_tussac[i]~dnorm(muLogit_tussac[i], tau) 
logit(tussac[i])<-Logit_tussac[i]
}

# Priors

a0~dnorm(0, 10)
a1~dnorm(0, 10)
a2~dnorm(0, 10)
a3~dnorm(0, 10)
a4~dnorm(0, 10)
a5~dnorm(0, 10)
a6~dnorm(0, 10)
a7~dnorm(0, 10)
a8~dnorm(0, 10)
a9~dnorm(0, 10)
a10~dnorm(0, 10)
a11~dnorm(0, 10)
a12~dnorm(0, 10)
a13~dnorm(0, 10)
a14~dnorm(0, 10)

b0~dnorm(0, 10)
b1~dnorm(0, 10)
b2~dnorm(0, 10)
b3~dnorm(0, 10)

tau~dgamma(0.001, 0.001)

#data# S1, K, sentinel1, sentinel2, sentinel3, sentinel4, sentinel5, sentinel6, sentinel7, sentinel8, sentinel9, sentinel10, DEM_slope, DEM_aspect, DEM_elevation
#inits# a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, b0, b1, b2, b3
#monitor# a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, b0, b1, b2, b3, ped, dic
}"

我为先验尝试了一系列不同的值,包括但不限于(0,5),(0,0.5)(0,0.001)

我使用以下信息来运行代码:

# Initial values
a0 <- list(chain1=1, chain2=2)
a1 <- list(chain1=1, chain2=2)
a2 <- list(chain1=1, chain2=2)
a3 <- list(chain1=1, chain2=2)
a4 <- list(chain1=1, chain2=2)
a5 <- list(chain1=1, chain2=2)
a6 <- list(chain1=1, chain2=2)
a7 <- list(chain1=1, chain2=2)
a8 <- list(chain1=1, chain2=2)
a9 <- list(chain1=1, chain2=2)
a10 <- list(chain1=1, chain2=2)
a11 <- list(chain1=1, chain2=2)
a12 <- list(chain1=1, chain2=2)
a13 <- list(chain1=1, chain2=2)
a14 <- list(chain1=1, chain2=2)

b0 <- list(chain1=1, chain2=2)
b1 <- list(chain1=1, chain2=2)
b2 <- list(chain1=1, chain2=2)
b3 <- list(chain1=1, chain2=2)

model <- run.jags(model=model, burnin=1000, sample=10000, n.chains=2, modules="glm")

知道如何解决该错误,为什么它仅在具有一定大小的K时出现,为什么删除#inits#会导致该错误运行?

很抱歉,文字和代码的墙。 我认为最好包含尽可能多的信息。 我是JAGS的新手,所以我仍然不确定什么是相关的。

r jags