Skip to contents

Fits Papke and Wooldridge's (1996) fractional logistic (quasi-binomial) regression for proportion responses \(Y_i \in [0, 1]\) (not restricted to \(\{0, 1\}\)): \(E[Y_i \mid w_i, x_i] = \mathrm{logit}^{-1}(\beta_0 + \beta_T w_i + x_i^\top \gamma)\), fit by maximizing the Bernoulli quasi-log-likelihood \(\sum_i \{Y_i \log \mu_i + (1 - Y_i) \log(1 - \mu_i)\}\) treating \(Y_i\) as if it were binary (a valid estimating equation for the conditional mean even though \(Y_i\) is fractional — the Bernoulli log-likelihood's score is unbiased for the true mean regardless of the actual distribution of \(Y_i\) on \([0,1]\)). \(\hat\beta_T\) is a log-odds-ratio on the conditional-mean scale: \(\exp(\hat\beta_T)\) is the odds ratio for the expected proportion. Standard errors use the model-based (non-robust/non-sandwich) Fisher information from this quasi-likelihood, matching pre-migration behavior; only Wald inference is exposed (private$supports_likelihood_tests() is hard FALSE here even though likelihood_tier = "full" metadata is set for component-composition purposes — this class deliberately does not compose ParametricLikelihoodBootstrap, so no likelihood-ratio/score/gradient test surface is exposed). Validity requires that the conditional mean is correctly specified on the logit scale; unlike beta regression, no assumption is made about the conditional variance or shape of \(Y_i\)'s distribution.

References

Papke, L. E., and Wooldridge, J. M. (1996). "Econometric Methods for Fractional Response Variables with an Application to 401(K) Plan Participation Rates." Journal of Applied Econometrics, 11(6), 619-632, doi:10.1002/(SICI)1099-1255(199611)11:6<619::AID-JAE418>3.0.CO;2-1 .

See also

InferencePropBetaRegr for a proportion model that also specifies the conditional variance/shape. Comparable Python API: statsmodels GLM (family=Binomial() on fractional response data). See also: Logistic regression (Wikipedia).

Super class

Inference -> InferencePropFractionalLogit

Methods

+ inherited public methods from Inference


InferencePropFractionalLogit$new()

Initialize inference for the fractional logit model \(E[Y_i \mid w_i, x_i] = \mathrm{logit}^{-1}(\beta_0 + \beta_T w_i + x_i^\top \gamma)\); see InferencePropFractionalLogit for the model form. Does not fit the model; the fit is deferred to the first call to compute_estimate() or a method that requires it.

Usage

InferencePropFractionalLogit$new(
  des_obj,
  model_formula = NULL,
  verbose = FALSE,
  harden = TRUE,
  smart_cold_start_default = NULL
)

Arguments

des_obj

A completed Design object with a proportion response.

model_formula

Optional formula for covariate adjustment. If NULL (default), the formula from the design object is used and its pre-computed design matrix is reused. If a formula is provided, a new design matrix is constructed from the design's imputed covariates.

verbose

Whether to print progress messages.

harden

Whether to apply robustness measures.

smart_cold_start_default

Whether to use smart cold start values.


InferencePropFractionalLogit$compute_estimate()

Fits the fractional logit model by maximizing the Bernoulli quasi-log-likelihood on the fractional response and returns the log-odds-ratio estimate \(\hat\beta_T\). When estimate_only = TRUE and hardening is disabled (harden = FALSE), uses a fast path via base R's glm.fit(family = quasibinomial()) instead of the package's own fitting routine; otherwise dispatches through the shared hardened-fit path.

Usage

InferencePropFractionalLogit$compute_estimate(estimate_only = FALSE)

Arguments

estimate_only

If TRUE, skip variance component calculations; when combined with harden = FALSE, also switches to the quasibinomial() fast path.


InferencePropFractionalLogit$compute_estimate_with_bootstrap_weights()

Refits the fractional logit model with subject/block-level weights applied to the fitting quasi-log-likelihood (Bayesian-bootstrap or nonparametric-bootstrap draw weights, expanded to row level via private$expand_subject_or_block_weights_to_row_weights()), and returns the reweighted estimate \(\hat\beta_T^{(w)}\). Uses the same QR column-dropping hardening as compute_estimate()'s hardened path; a hardened-but-still-unreasonable fit is cached as nonestimable.

Usage

InferencePropFractionalLogit$compute_estimate_with_bootstrap_weights(
  subject_or_block_weights,
  estimate_only = FALSE
)

Arguments

subject_or_block_weights

Bootstrap weights at the subject or block level.

estimate_only

If TRUE, skip variance calculations.


InferencePropFractionalLogit$clone()

The objects of this class are cloneable with this method.

Usage

InferencePropFractionalLogit$clone(deep = FALSE)

Arguments

deep

Whether to make a deep clone.

Examples

# \donttest{
seq_des = DesignSeqOneByOneBernoulli$new(n = 10, response_type = 'proportion')
for (i in 1:10) {
  seq_des$add_one_subject_to_experiment_and_assign(data.frame(x1 = rnorm(1)))
}
seq_des$add_all_subject_responses(runif(10))
inf = InferencePropFractionalLogit$new(seq_des)
inf$compute_estimate()
#> [1] -1.681686
# }