PStrataModel: Define a Principal Stratification Model

View source: R/PStrataModel.R

PStrataModelR Documentation

Define a Principal Stratification Model

Description

Creates a model specification for principal stratification analysis. No data is required at this stage – the specification is purely symbolic. Use fit to estimate the model with data.

Usage

PStrataModel(
  S.formula,
  Y.formula,
  Y.family,
  strata,
  ER = NULL,
  prior_intercept = prior_flat(),
  prior_coefficient = prior_normal(),
  prior_sigma = prior_inv_gamma(),
  prior_alpha = prior_inv_gamma(),
  prior_lambda = prior_inv_gamma(),
  prior_theta = prior_normal(),
  survival.time.points = 50
)

Arguments

S.formula

formula for the stratum model (e.g., Z + D ~ X1 + X2).

Y.formula

formula for the outcome model (e.g., Y ~ X1 + X2).

Y.family

a family object (e.g., gaussian(), survival("Cox")).

strata

strata definition: character vector, list of vectors, or list of lists.

ER

exclusion restriction: character vector of strata names or logical vector.

prior_intercept, prior_coefficient, prior_sigma, prior_alpha, prior_lambda, prior_theta

prior distributions for model parameters.

survival.time.points

number of time points for survival outcomes.

Value

An object of class PStrataModel.

Examples

# Non-compliance with three strata (never-taker, complier, always-taker)
model <- PStrataModel(
  S.formula = Z + D ~ 1,
  Y.formula = Y ~ 1,
  Y.family  = gaussian(),
  strata    = c(n = "00", c = "01", a = "11"),
  ER        = c("n", "a")
)
print(model)
summary(model)


# Fit the model (requires rstan and C++ compiler)
data(sim_data_normal)
ps_fit <- fit(model, data = sim_data_normal, chains = 2, iter = 500)
summary(ps_fit)
plot(ps_fit)

# Extract potential outcomes and contrasts
est <- estimate(ps_fit)
summary(est)
plot(est)

ctr <- contrast(ps_fit)
summary(ctr)
plot(ctr)


PStrata documentation built on May 14, 2026, 5:06 p.m.