I am new to R-inla. I am running spatio-temporal model with interactions for disease mapping. The model gives and output with a (1) DIC value and also (2) "Deviance information criterian (DIC, saturate): NAN". I am confused, why I am getting "NaN' (2) , despite geting a DIC value in (1). For your kind information the following are the codes I used for fitting a model covariates with spatio-temporal interactions (all 4 types). I would be grateful, if any suggesions from the group.
rm(list=ls())
library(lme4)
library(INLA)
library(reshape2)
library(tidyverse)
require(splancs)
require(sp)
require(fields)
require(maptools)
require(lattice)
require(abind)
library(rgdal)
library(spdep)
library(dplyr)
library(RColorBrewer)
library(ggplot2)
library(ggregplot)
# Priors
prec_period <- list(c(1, 0.00040145), c(1, 0.00160580), c(1,0.04014488), c(1, 0.00005))
prec_space <- list(c(1, 0.00048684), c(1, 0.00194738), c(1, 0.04868439), c(1, 0.00005))
prec_interact <- list(c(1, 0.00078138), c(1, 0.00312552), c(1, 0.07813805), c(1, 0.00005))
prec_interact2 <- list(c(1,0.00040145), c(1, 0.00160580), c(1, 0.04014488), c(1, 0.00005))
##############import shapefile#########################
#shp <- readOGR(dsn = "H:/blockmapVl", layer = "blockmapVL") #491 BLOCKS
shp <- readOGR(dsn = "D:/VL model/502 blocks/shp", layer = "merged_bihar") #502 BLOCKS
# define adjacency matrix for spatial model
nb <- poly2nb(shp)
# translate to INLA format and save
nb2INLA("D:/VL model/502 blocks/map/map.adj", nb)
# read in the INLA graph we just created
g <- inla.read.graph(filename = "D:/VL model/502 blocks/map/map.adj")
data<-read.csv("D:/VL model/502 blocks/data/EM_DATA 2013 to 2016_training_3E.csv")
###### Spatio-temporal Models WITH interactions ########
#----- Model 7 Type I interaction ----#
formula.intI1<- count ~ 1+Maximum_temp+EVI+Minimum_temp+BIO.1+BIO.3+BIO.12+popdens+Soil_moisture +
f(block_id,model="bym", graph=g,hyper = prec_space) +f(period_id,model="rw1") +
#f(period_id2,model="iid",hyper = prec_period,initial = 1)
+f(block.period,model="iid",hyper = prec_interact)
mod.intI1 <- inla(formula.intI1,family="nbinomial",data=data,offset=log(E2),# changed from 'pop' to 'E'
control.inla = list(tolerance = 1e-9, diagonal=10, strategy="laplace"),
control.predictor=list(compute=TRUE), verbose=T,
control.compute=list(waic=TRUE,dic=TRUE,cpo=TRUE))
summary(mod.intI1)
modelintI1<-capture.output(summary(mod.intI1))
write.table(modelintI1,file="D:/VL model/502 blocks/sum_2/modelintI1.txt",sep=",",row.names = F,quote = F)
fit=mod.intI1$summary.fitted.values
write.csv(fit,"D:/VL model/502 blocks/out 2/modelintI1.csv")
formula.intI2<- count ~ 1+Maximum_temp+EVI+Minimum_temp+BIO.1+BIO.3+BIO.12+popdens+Soil_moisture +
f(block_id,model="bym", graph=g,hyper = prec_space) +f(period_id,model="rw2",hyper = prec_period) +
#f(period_id2,model="iid",hyper = prec_period,initial = 1)
+f(block.period,model="iid",hyper = prec_interact)
mod.intI2 <- inla(formula.intI2,family="nbinomial",data=data,offset=log(E2),# changed from 'pop' to 'E'
control.inla = list(tolerance = 1e-9, diagonal=10, strategy="laplace"),
control.predictor=list(compute=TRUE), verbose=T,
control.compute=list(waic=TRUE,dic=TRUE,cpo=TRUE))
summary(mod.intI2)
modelintI2<-capture.output(summary(mod.intI2))
write.table(modelintI2,file="D:/VL model/502 blocks/sum_2/modelintI2.txt",sep=",",row.names = F,quote = F)
fit=mod.intI2$summary.fitted.values
write.csv(fit,"D:/VL model/502 blocks/out 2/modelintI2.csv")
#--- Model 8 Type II interaction ---#
formula.intII1<- count ~ 1+Maximum_temp+EVI+Minimum_temp+BIO.1+BIO.3+BIO.12+popdens+Soil_moisture +
f(block_id,model="bym",graph=g,hyper = prec_space) +f(period_id,model="rw1",hyper = prec_period) +
f(period_id2,model="iid",hyper = prec_period) +f(block_id2,model="iid", group=period_id3,control.group=list(model="rw1"),hyper = prec_interact)
mod.intII1 <- inla(formula.intII1,family="nbinomial",data=data,offset=log(E2),# changed from 'pop' to 'E'
control.inla = list(tolerance = 1e-9, diagonal=10, strategy="laplace"),
control.predictor=list(compute=TRUE), verbose=T,
control.compute=list(waic=TRUE,dic=TRUE,cpo=TRUE))
summary(mod.intII1)
modelintII1<-capture.output(summary(mod.intII1))
write.table(modelintII1,file="D:/VL model/502 blocks/sum_2/modelintII1.txt",sep=",",row.names = F,quote = F)
fit=mod.intII1$summary.fitted.values
write.csv(fit,"D:/VL model/502 blocks/out 2/modelintII1.csv")
formula.intII2<- count ~ 1+Maximum_temp+EVI+Minimum_temp+BIO.1+BIO.3+BIO.12+popdens+Soil_moisture +
f(block_id,model="bym",graph=g,hyper = prec_space) +f(period_id,model="rw2",hyper = prec_period) +
f(period_id2,model="iid",hyper = prec_period) +f(block_id2,model="iid", group=period_id3,control.group=list(model="rw2"),hyper = prec_interact)
mod.intII2 <- inla(formula.intII2,family="nbinomial",data=data,offset=log(E2),# changed from 'pop' to 'E'
control.inla = list(tolerance = 1e-9, diagonal=10, strategy="laplace"),
control.predictor=list(compute=TRUE), verbose=T,
control.compute=list(waic=TRUE,dic=TRUE,cpo=TRUE))
summary(mod.intII2)
modelintII2<-capture.output(summary(mod.intII2))
write.table(modelintII2,file="D:/VL model/502 blocks/sum_2/modelintII2.txt",sep=",",row.names = F,quote = F)
fit=mod.intII2$summary.fitted.values
write.csv(fit,"D:/VL model/502 blocks/out 2/modelintII2.csv")
#--- Model 9 Type III interaction ---#
formula.intIII1<- count ~ 1+Maximum_temp+EVI+Minimum_temp+BIO.1+BIO.3+BIO.12+popdens+Soil_moisture +
f(block_id,model="bym",graph=g,hyper = prec_space) +f(period_id,model="rw1",hyper = prec_period) +
f(period_id2,model="iid",hyper = prec_period) +f(block_id2,model="iid", group=period_id3,control.group=list(model="besag", graph=g),hyper = prec_uspace)
mod.intIII1 <- inla(formula.intIII1,family="nbinomial",data=data,offset=log(E2),# changed from 'pop' to 'E'
control.inla = list(tolerance = 1e-9, diagonal=10, strategy="laplace"),
control.predictor=list(compute=TRUE), verbose=T,
control.compute=list(waic=TRUE,dic=TRUE,cpo=TRUE))
summary(mod.intIII1)
modelintIII1<-capture.output(summary(mod.intIII1))
write.table(modelintIII1,file="D:/VL model/502 blocks/sum_2/modelintIII1.txt",sep=",",row.names = F,quote = F)
fit=mod.intIII1$summary.fitted.values
write.csv(fit,"D:/VL model/502 blocks/out 2/modelintIII1.csv")
formula.intIII2<- count ~ 1+Maximum_temp+EVI+Minimum_temp+BIO.1+BIO.3+BIO.12+popdens+Soil_moisture +
f(block_id,model="bym",graph=g,hyper = prec_space) +f(period_id,model="rw2",hyper = prec_period) +
f(period_id2,model="iid",hyper = prec_period) +f(block_id2,model="iid", group=period_id3,control.group=list(model="besag", graph=g),hyper = prec_uspace)
mod.intIII2 <- inla(formula.intIII2,family="nbinomial",data=data,offset=log(E2),# changed from 'pop' to 'E'
control.inla = list(tolerance = 1e-9, diagonal=10, strategy="laplace"),
control.predictor=list(compute=TRUE), verbose=T,
control.compute=list(waic=TRUE,dic=TRUE,cpo=TRUE))
modelintIII2<-capture.output(summary(mod.intIII2))
write.table(modelintIII2,file="D:/VL model/502 blocks/sum_2/modelintIII2.txt",sep=",",row.names = F,quote = F)
fit=mod.intIII2$summary.fitted.values
write.csv(fit,"D:/VL model/502 blocks/out 2/modelintIII2.csv")
#--- Model 10 Type IV interaction ---#
formula.intIV1<- count ~ 1+Maximum_temp+EVI+Minimum_temp+BIO.1+BIO.3+BIO.12+popdens+Soil_moisture +
f(block_id,model="bym",graph=g,hyper = prec_space) +f(period_id,model="rw1",hyper = prec_period) +
f(period_id2,model="iid",hyper = prec_interact2) + f(block_id2,model="besag", graph=shp.adj,group=period_id3,control.group=list(model="rw2"),hyper = prec_uspace)
mod.intIV1 <- inla(formula.intIV1,family="nbinomial",data=data,offset=log(E2),# changed from 'pop' to 'E'
control.inla = list(tolerance = 1e-9, diagonal=10, strategy="laplace"),
control.predictor=list(compute=TRUE), verbose=T,
control.compute=list(waic=TRUE,dic=TRUE,cpo=TRUE))
summary(mod.intIV1)
modelintIV1<-capture.output(summary(mod.intIV1))
write.table(modelintIV1,file="D:/VL model/502 blocks/sum_2/modelintIV1.txt",sep=",",row.names = F,quote = F)
fit=mod.intIV1$summary.fitted.values
write.csv(fit,"D:/VL model/502 blocks/out 2/modelintIV1.csv")
formula.intIV2<- count ~ 1+Maximum_temp+EVI+Minimum_temp+BIO.1+BIO.3+BIO.12+popdens+Soil_moisture +
f(block_id,model="bym",graph=g,hyper = prec_space) +f(period_id,model="rw2",hyper = prec_period) +
f(period_id2,model="iid",hyper = prec_interact2) + f(block_id2,model="besag", graph=shp.adj,group=period_id3,control.group=list(model="rw2"),hyper = prec_uspace)
mod.intIV2 <- inla(formula.intIV2,family="nbinomial",data=data,offset=log(E2),# changed from 'pop' to 'E'
control.inla = list(tolerance = 1e-9, diagonal=10, strategy="laplace"),
control.predictor=list(compute=TRUE), verbose=T,
control.compute=list(waic=TRUE,dic=TRUE,cpo=TRUE))
summary(mod.intIV2)
modelintIV2<-capture.output(summary(mod.intIV1))
write.table(modelintIV2,file="D:/VL model/502 blocks/sum_2/modelintIV2.txt",sep=",",row.names = F,quote = F)
fit=mod.intIV2$summary.fitted.values
write.csv(fit,"D:/VL model/502 blocks/out 2/modelintIV2.csv")