Package {BDPTobitQR}


Title: Bayesian Double-Penalty Tobit Quantile Regression for Longitudinal Interval-Censored Data
Version: 0.1.0
Author: Shikhar Tyagi ORCID iD [aut, cre], Arvind Pandey [aut], Bhupendra Singh [aut], Vrijesh Tripathi [aut]
Maintainer: Shikhar Tyagi <shikhar1093tyagi@gmail.com>
Description: Implements Bayesian Double-Penalty Tobit Quantile Regression methods for longitudinal interval-censored data as proposed by Zhao et al. (2024) <doi:10.3390/math12121782>. Supports Bayesian Tobit quantile regression with double adaptive Lasso penalty ('PDAL-BTQR'), double Lasso penalty ('PDL-BTQR'), and unpenalized mixed-effects ('P-BTQR'). Handles left, right, interval, and bilateral censoring schemes in longitudinal and clustered structures. Includes Gibbs sampling algorithms, parameter estimation, standard error computation, posterior credible intervals, forecast predictions, DIC, LPML, and diagnostic plotting. References: Tobin (1958) <doi:10.2307/1907382>; Koenker and Bassett (1978) <doi:10.2307/1913643>; Zou (2006) <doi:10.1198/016214506000000735>; Alhamzawi and Yu (2012) <doi:10.1016/j.csda.2011.11.018>; Zhao et al. (2024) <doi:10.3390/math12121782>.
License: GPL (≥ 3)
Encoding: UTF-8
LazyData: true
Depends: R (≥ 4.0.0)
Imports: stats, graphics, grDevices
Suggests: testthat (≥ 3.0.0), knitr, rmarkdown
VignetteBuilder: knitr
RoxygenNote: 7.3.1
NeedsCompilation: no
Packaged: 2026-07-28 02:54:12 UTC; shikhar tyagi
Repository: CRAN
Date/Publication: 2026-08-06 07:00:08 UTC

Bayesian Double-Penalty Tobit Quantile Regression for Longitudinal Interval-Censored Data

Description

Implements Bayesian Double-Penalty Tobit Quantile Regression methods for longitudinal interval-censored data as proposed by Zhao et al. (2024). Supports double adaptive Lasso ('PDAL-BTQR'), double Lasso ('PDL-BTQR'), and unpenalized mixed-effects ('P-BTQR').

Details

Package: BDPTobitQR
Type: Package
Version: 0.1.0
Date: 2026-07-28
License: GPL (>= 3)
LazyData: true

The main entry point is bdp_tobit_qr.

Author(s)

Shikhar Tyagi, Arvind Pandey, Bhupendra Singh, Vrijesh Tripathi

Maintainer: Shikhar Tyagi <shikhar1093tyagi@gmail.com>

References

Zhao, K., Shu, T., Hu, C., and Luo, Y. (2024). Research on Quantile Regression Method for Longitudinal Interval-Censored Data Based on Bayesian Double Penalty. Mathematics, 12(12), 1782. doi:10.3390/math12121782


Bayesian Double-Penalty Tobit Quantile Regression for Longitudinal Interval-Censored Data

Description

Fits Bayesian Tobit quantile regression models for longitudinal or clustered interval-censored data using double adaptive Lasso penalty ('PDAL-BTQR'), double Lasso penalty ('PDL-BTQR'), or unpenalized mixed-effects ('P-BTQR') as proposed by Zhao et al. (2024).

Usage

bdp_tobit_qr(
  formula,
  random = ~1,
  data,
  id,
  lower = -Inf,
  upper = Inf,
  tau = 0.5,
  method = c("PDAL-BTQR", "PDL-BTQR", "P-BTQR"),
  n_iter = 5000,
  burn_in = 1000,
  thin = 1,
  hyperparams = list(
    e0 = 0.1, f0 = 0.1,
    g0 = 0.1, h0 = 0.1,
    c0 = 0.001, d0 = 0.001
  ),
  verbose = FALSE
)

Arguments

formula

Object of class formula describing the fixed-effects part of the model.

random

Formula or design matrix describing the random-effects part of the model. Default is ~ 1.

data

Data frame containing the variables in the model.

id

Vector or column name in data identifying clusters or subjects.

lower

Lower censoring limit or vector of lower limits. Default is -Inf.

upper

Upper censoring limit or vector of upper limits. Default is Inf.

tau

Quantile level between 0 and 1. Default is 0.5.

method

Fitting method: "PDAL-BTQR" (double adaptive Lasso), "PDL-BTQR" (double Lasso), or "P-BTQR" (unpenalized). Default is "PDAL-BTQR".

n_iter

Total number of MCMC iterations. Default is 5000.

burn_in

Number of burn-in iterations to discard. Default is 1000.

thin

Thinning interval for MCMC chain. Default is 1.

hyperparams

List of hyperparameter prior settings: e0, f0, g0, h0, c0, d0.

verbose

Logical indicating whether to print MCMC progress. Default is FALSE.

Details

The function constructs a double-penalty Bayesian Tobit quantile regression model to perform parameter estimation and variable selection for longitudinal or clustered data restricted by bilateral interval limits. Latent variables are sampled from truncated normal distributions, mixture parameters from Inverse Gaussian distributions, and penalty parameters from Gamma distributions.

Value

An object of class BDPTobitQR containing:

coefficients

Posterior mean estimates of fixed effects.

sd

Posterior standard errors of fixed effects.

cred_int

95% equal-tailed posterior credible intervals for fixed effects.

hdi

95% highest density intervals for fixed effects.

random_effects

Posterior mean estimates of subject-specific random effects.

sigma

Posterior estimate of scale parameter sigma.

fitted.values

Fitted values for response variable.

residuals

Residuals (observed response minus fitted values).

dic

Deviance Information Criterion (DIC).

lpml

Log Pseudo-Marginal Likelihood (LPML).

mse

Mean Squared Error of fitted model.

mae

Mean Absolute Error of fitted model.

mcmc

List of MCMC chains for fixed effects, random effects, sigma, and penalties.

call

Matched call.

tau

Quantile level.

method

Method name.

References

Zhao, K., Shu, T., Hu, C., and Luo, Y. (2024). Research on Quantile Regression Method for Longitudinal Interval-Censored Data Based on Bayesian Double Penalty. Mathematics, 12(12), 1782. doi:10.3390/math12121782

Examples


# Simulate longitudinal data
dat <- sim_longitudinal_data(n = 10, m = 4, p = 3, tau = 0.5, seed = 123)

# Fit PDAL-BTQR model
fit <- bdp_tobit_qr(
  formula = y ~ x1 + x2 + x3,
  random = ~ 1,
  data = dat,
  id = dat$id,
  lower = dat$lower,
  upper = dat$upper,
  tau = 0.5,
  method = "PDAL-BTQR",
  n_iter = 500,
  burn_in = 100
)

summary(fit)
print(fit)
plot(fit)


Interprovincial Longitudinal Crime Rate Dataset

Description

A longitudinal dataset containing interprovincial crime rates and economic indicators across 31 provinces over 7 years (2010–2016), as analyzed in Section 4 of Zhao et al. (2024).

Usage

data(crime_data)

Format

A data frame with 217 rows and 10 variables:

id

Province identifier (1–31).

year

Observation year (2010–2016).

y

Crime rate (number of criminal suspects per 10,000 population).

x1

Per capita GDP.

x2

Urbanization rate.

x3

Regional income gap.

x4

Educational level.

x5

Unemployment rate.

lower

Lower limit for interval/tobit censoring.

upper

Upper limit for interval/tobit censoring.

References

Zhao, K., Shu, T., Hu, C., and Luo, Y. (2024). Research on Quantile Regression Method for Longitudinal Interval-Censored Data Based on Bayesian Double Penalty. Mathematics, 12(12), 1782. doi:10.3390/math12121782

Examples

data(crime_data)
head(crime_data)

Simulate Longitudinal Interval-Censored Data

Description

Generates synthetic longitudinal/panel datasets with interval, left, or right censoring under normal, Student-t, or Asymmetric Laplace random errors, as described in Zhao et al. (2024).

Usage

sim_longitudinal_data(
  n = 20,
  m = 5,
  p = 4,
  beta = NULL,
  lower_limit = -2,
  upper_limit = 4,
  err_dist = c("normal", "t", "ald"),
  tau = 0.5,
  seed = NULL
)

Arguments

n

Number of subjects/clusters. Default is 20.

m

Number of time points per subject. Default is 5.

p

Number of fixed-effects covariates. Default is 4.

beta

Vector of true fixed-effects coefficients. If NULL, generated automatically.

lower_limit

Lower censoring bound e_N. Default is -2.

upper_limit

Upper censoring bound e_M. Default is 4.

err_dist

Error distribution: "normal", "t", or "ald". Default is "normal".

tau

Quantile level for ALD errors. Default is 0.5.

seed

Optional random seed.

Value

A data frame containing simulated longitudinal data with columns id, time, y, y_star, lower, upper, and covariates x1, x2, etc.

References

Zhao, K., Shu, T., Hu, C., and Luo, Y. (2024). Research on Quantile Regression Method for Longitudinal Interval-Censored Data Based on Bayesian Double Penalty. Mathematics, 12(12), 1782. doi:10.3390/math12121782

Examples

dat <- sim_longitudinal_data(n = 10, m = 4, p = 3, seed = 42)
head(dat)