数据集包含〜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的新手,所以我仍然不确定什么是相关的。