The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.
ZINB.GP fits the Bayesian zero-inflated
negative-binomial Gaussian-process model described in He and Huang
(2024). The ZINB_GP() entry point selects the
appropriate spatial, temporal, or spatial-temporal model from the
supplied design matrices and the two use_*_gp switches.
After its CRAN release, install the package with:
install.packages("ZINB.GP")Install the development version from GitHub with:
# install.packages("remotes")
remotes::install_github("KingJMS1/GP_ZINB_R")This example fits the full model, with spatial and temporal
Gaussian-process (GP) effects in both the zero-inflation and count
components. Rows of counts are spatial locations and
columns are time points. make_y_Vs_Vt() turns this grid
into the response and random-effect design matrices expected by
ZINB_GP().
library(ZINB.GP)
set.seed(1)
# Counts at four locations over three time points.
counts <- matrix(
c(0, 1, 0,
2, 0, 1,
0, 3, 1,
1, 0, 2),
nrow = 4,
byrow = TRUE
)
setup <- make_y_Vs_Vt(counts)
y <- setup$y
Vs <- setup$Vs
Vt <- setup$Vt
# One row per element of y: an intercept and an observation-level covariate.
X <- cbind(
intercept = 1,
covariate = scale(seq_along(y))[, 1]
)
# One coordinate pair per row of counts and one time coordinate per column.
coords <- rbind(
c(0, 0), c(1, 0), c(0, 1), c(1, 1)
)
Ds <- as.matrix(dist(coords))
Dt <- as.matrix(dist(seq_len(ncol(counts))))
fit <- ZINB_GP(
X = X,
y = y,
coords = coords,
nsim = 1000,
burn = 200,
use_count_gp = TRUE,
use_inflation_gp = TRUE,
thin = 1,
save_ypred = TRUE,
print_progress = TRUE,
print_iter = 100,
Vs = Vs,
Vt = Vt,
Ds = Ds,
Dt = Dt
)
# Posterior summaries for the fixed effects.
apply(fit$Alpha, 2, quantile, probs = c(0.025, 0.5, 0.975))
apply(fit$Beta, 2, quantile, probs = c(0.025, 0.5, 0.975))
# With save_ypred = TRUE, rows are saved MCMC iterations and columns are
# observations. These are posterior predictive count draws for this full model.
posterior_mean_count <- colMeans(fit$Y_pred)
posterior_at_risk_probability <- colMeans(fit$at_risk)Use substantially longer chains than this small demonstration for analysis; assess convergence and effective sample sizes before interpreting estimates.
ZINB_GP()| Argument | Description |
|---|---|
X |
Numeric fixed-effect design matrix with one row per observation. Include an intercept column if required. |
y |
Non-negative integer response vector, with one entry per row of
X. |
coords |
Spatial coordinates for the legacy spatial-temporal implementation. Supply one row per spatial location when using both spatial and temporal GPs. |
nsim |
Total MCMC iterations. It must be greater than burn;
defaults to 5000. |
burn |
Number of initial MCMC iterations to discard; defaults to 1000. |
use_count_gp |
Logical: include GP random effects in the negative-binomial count
component. Defaults to TRUE. |
use_inflation_gp |
Logical: include GP random effects in the zero-inflation component.
Defaults to FALSE. At least one of the two GP switches must
be TRUE. |
thin |
Save every thin-th post-burn-in iteration; defaults to
1. |
kern |
Optional kernel function with arguments
(distance_matrix, length_scale). The default is the package
squared-exponential kernel. |
save_ypred |
Logical: retain posterior predictive draws and at-risk indicators.
Defaults to FALSE. |
print_iter |
Report progress after this many iterations when
print_progress = TRUE; defaults to 100. |
print_progress |
Logical: report MCMC progress with message() (suppress
with suppressMessages()); defaults to
FALSE. |
Vs |
Spatial random-effect design matrix with one row per observation.
make_y_Vs_Vt() creates it from a location-by-time count
matrix. Set to NULL when no spatial GP is wanted. |
Vt |
Temporal random-effect design matrix with one row per observation.
make_y_Vs_Vt() creates it from a location-by-time count
matrix. Set to NULL when no temporal GP is wanted. |
Ds |
Square spatial distance matrix, including the baseline location. Its
diagonal must be zero and it must correspond to Vs. |
Dt |
Square temporal distance matrix, including the baseline time point.
Its diagonal must be zero and it must correspond to
Vt. |
ltPrior |
Optional list of temporal-length-scale controls:
list(max, mh_sd, a, b), where a and
b parameterize the gamma prior and mh_sd is
the proposal standard deviation. |
lsPrior |
Optional list of spatial-length-scale controls:
list(max, mh_sd, a, b). |
sigmaPrior |
Optional list of inverse-gamma GP-scale prior parameters:
list(a, b). |
noisePrior |
Optional list of GP noise-ratio controls:
list(a, b, mh_sd), where a and b
parameterize the beta prior. |
mh_sd_r |
Optional Metropolis-Hastings proposal standard deviation for the negative-binomial dispersion parameter. |
make_y_Vs_Vt() uses the first spatial location and first
time point as baselines. Consequently, its Vs and
Vt matrices have one fewer column than the respective
dimensions of Ds and Dt; do not remove the
first row and column from either distance matrix.
Provide Vs/Ds for spatial effects,
Vt/Dt for temporal effects, or both for a
spatial-temporal model. The GP switches choose the components to which
those effects apply:
use_inflation_gp |
use_count_gp |
Fitted GP effects |
|---|---|---|
TRUE |
TRUE |
Both zero-inflation and count components. |
TRUE |
FALSE |
Zero-inflation component only. |
FALSE |
TRUE |
Count component only. |
FALSE |
FALSE |
Not supported; use a non-GP ZINB model instead. |
ZINB_GP() returns a named list of saved posterior draws.
The exact elements depend on the supplied spatial/temporal matrices and
on the selected GP components. With both spatial and temporal GPs
enabled in both components, the list contains the following
elements.
| Element | Description |
|---|---|
Alpha |
Matrix of fixed-effect draws for the zero-inflation component. |
Beta |
Matrix of fixed-effect draws for the negative-binomial count component. |
A, B |
Matrices of spatial (A) and temporal (B)
random-effect draws for the zero-inflation component. |
C, D |
Matrices of spatial (C) and temporal (D)
random-effect draws for the count component. |
L1s, L2s |
Spatial GP length-scale draws for the zero-inflation and count components, respectively. |
Sigma1s, Sigma2s |
Spatial GP scale draws for the zero-inflation and count components. |
Noise1s, Noise2s |
Spatial GP kernel-to-noise mixing-ratio draws for the zero-inflation and count components. |
L1t, L2t |
Temporal GP length-scale draws for the zero-inflation and count components. |
Sigma1t, Sigma2t |
Temporal GP scale draws for the zero-inflation and count components. |
Noise1t, Noise2t |
Temporal GP kernel-to-noise mixing-ratio draws for the zero-inflation and count components. |
R |
Vector of negative-binomial dispersion-parameter draws. |
Y_pred |
Matrix of posterior predictive count draws, included only when
save_ypred = TRUE. |
at_risk |
Matrix of sampled at-risk indicators, included only when
save_ypred = TRUE. |
When a GP component or spatial/temporal dimension is omitted, the
corresponding random-effect and GP-parameter elements are omitted from
the result. Check names(fit) to see the elements returned
for a particular configuration.
The package reference is available at https://kingjms1.github.io/GP_ZINB_R/reference/index.html.
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.