Validation of Spatial "Current Status" Survival Model

13 views
Skip to first unread message

Arthur Gairin-Calvo

unread,
Feb 18, 2026, 12:12:21 PM (7 days ago) Feb 18
to R-inla discussion group

Dear R-INLA community,

I am fitting a spatial survival model to "Current Status" data, where the status of individuals is recorded at a single observation time (Dead = status 2 [left-censored], Alive = status 0 [right-censored] in inla.surv).

Data:  ~4,000 observations across 10 time samples (~74% "Dead") with different individuals sampled at each time point. A lot of observation already have a "Dead" status in my first sampled point, and my last samples yields few "Alive" observations. Modelled of my biological system showed a decay density closer to a skewed gaussian than a strict exponential. Observations are made at random positions inside a shared (rather small) spatial domain.

The Model: I am using a weibullsurv family with an SPDE spatial effect (exchangeable across 2 groups) and an IID random effect for individuals. 

DF_model$Ysurv <- ifelse(DF_model$Y==1, 2, 0) #censoring format
stack <- inla.stack(
  data = list(time = DF_model$t_new,
              event = DF_model$Ysurv),
  A = list(A_matrix, 1),
  effects = list(s_index, list(Intercept = 1,
                               group = DF_model$group,
                               L = DF_model$L_cent,
                               id = as.numeric(as.factor(DF_model$name)))),          
  tag="obs"
)
formula <- inla.surv(time, event) ~ #from inla.surv
  -1 + Intercept + L + #scaled continuous covariate
  f(spatial, model = spde,
    group = spatial.group, #my groups of interest
    control.group = list(model = "exchangeable")) + 
  f(id, model = "iid") #individuals

res <- inla(formula,
            family = "weibullsurv",
            data = inla.stack.data(stack),
            control.compute = list(waic = T, dic = T, config = T, cpo = T),
            control.predictor = list(A = inla.stack.A(stack), compute = T),
)

Extracted half-life maps look biologically coherent, every model parameter significantly differs from 0 and WAIC is optimal compared to similar models (e.g. replacing exchangeable group effect with a fixed "+group", removing the spatial effect, or removing the intercept).
However, I tried PIT diagnostic and got problematic results: res$cpo$pit is 0 for all 4221 observations despite no res$cpo$failure. Note that All previously mentionned models yields similar results.

My question : Is  there more appropriate diagnostics for this type of model ?

Kind regards,
Arthur Gairin-Calvo
Reply all
Reply to author
Forward
0 new messages