Atlas
statminds
Censored GLM (Limited Dependent Model)The underlying model family class (e.g. GLM, linear model, categorical matrix, log-linear).Parametric ReferenceStatistical methods that assume a specific probability distribution family (typically normal).12-stage workflow

Tobit Regression

The engine for Censored Discovery. Tobit regression audits relationships where outcomes are 'capped' by floor or ceiling effects, mathematically uncovering the hidden truth beyond the observation limits.

Model familyCensored GLM (Limited Dependent Model)
Hypothesistwo-tailed
AliasesCensored Regression · Limited Dependent Variable Model · Censored Normal Model
G1
Boundary Neutralization
Correct for the bias caused by participants hitting the 'Minimum' or 'Maximum' scores on a scale.
G2
Hidden Value Audit
Mathematically estimate the true relationship by accounting for the unobserved range beyond the data cap.
G3
Censored Sensitivity
Isolate the influence of predictors while preventing 'Compression Bias' from hijacking the discovery.
1

What is it?

Tobit Regression models linear relationships where the dependent outcome variable is left- or right-censored (clamped at a threshold limit like floor or ceiling values).

2

When to use it

  • Censored Outcome: Data scales linearly but hits boundaries (e.g. instrument floors).
  • Latent Estimation: Reconstruct true underlying slopes without censoring bias.
  • OLS Failure: OLS estimates get heavily biased/pulled when censoring is frequent.
3

OLS Bias under Censoring

Compare OLS (solid amber, biased/flattered by floor censored points) against Tobit (solid blue, correctly reconstructs original slope):

Censoring Limit (Floor)Tobit LineOLS Line (Biased)
Interactive Sandbox

Tobit Censored Fitting Laboratory

Adjust underlying slope and censoring floor limit to observe OLS estimation bias.

Presets
True Latent Slope1.20
Censoring Floor40
Scatter Plot Space (Points stacked on floor are censored; X range: 0..40; Y range: 0..100)Fitted Tobit (blue) vs biased OLS (dashed amber) lines
Censoring Comparison Table
ParameterTobit FitBiased OLS Fit
Intercept (b0)20.0035.51
Slope (b1)1.200.69
Slope Estimation Bias0.00%42.5%
The 12-Stage Precision Workflow
01Latent Influence
Hypotheses
We test if the predictor moves the 'Latent' (hidden) outcome—the discovery of an effect that OLS would miss due to floor effects.
02Normality Threshold
Assumptions
The ultimate prerequisite: the latent, unobserved outcome MUST be normally distributed for the Tobit math to hold its integrity.
03Censoring Density
Diagnostics
Checking the percentage of participants at the boundary—if more than 50% are 'capped,' the model may lose stabilization.
04focus
Predicting FlowMotion results on a scale where most participants start at 'Zero' (The Floor Effect) and many reach the 'Max Score'.
05Heckman Pivot
Alternatives
Knowing when to switch to Heckman Selection models if the 'Censoring' is actually a choice-based non-random dropout.
06Likelihood Strike
Significance
Executing significance tests based on Maximum Likelihood (ML)—ensuring p-values respect the hybrid nature of the capped data.
07Decomposed B
Effect Size
Interpreting the coefficient in two ways: the change in the 'Latent' score and the change in the 'Observed' (capped) score.
08The Unobserved Buffer
Sample Size
Accounting for the increased N required to provide stable estimates for data that is partially hidden behind a boundary.
09Boundary Statements
Reporting
Explicitly reporting the floor/ceiling values used: e.g., 'Outcome was left-censored at 0 and right-censored at 100.'
10AER / tobit Logic
Software
Executing the 'tobit' command, ensuring the 'left' and 'right' arguments correctly reflect the scale's clinical limits.
11focus
Avoiding the error of running standard OLS on censored data—which consistently underestimates the true strength of the relationship.
12focus
Tracing the model back to James Tobin (1958) and the foundational shift toward modeling limited dependent variables.
01Hypothesis test logic

Hypotheses

Pragmatic null and alternative hypotheses defined in mathematical notation.

We ask not just 'is there a link?', but 'how much does Y change for every unit of X?'
Logic Core
Null · H₀

H₀: β = 0 in latent variable model (predictor has no effect on latent outcome y*)

Alternative · Hₐ

Hₐ: β ≠ 0 (predictor affects latent outcome)

Why it matters two-tailed

Tests coefficients in latent variable model y* (unobserved). Observed y is censored version of y*. For left-censored at L: y = y* if y* > L, else y = L

02Model diagnostics

Assumptions

The core mathematical criteria needed to ensure that statistical testing remains unbiased and valid.

Linearity is a strong claim. Nature often curves; ensure your model does not force a straight line on a bent world.
Integrity Shield
6
Assumptions
5
Critical / High Severity
How to check
Quick
Cannot directly observe y*. Check residuals from Tobit model vs. fitted values (should be random scatter). Compare Tobit predictions with observed censored values for reasonableness
Rigorous
Partial residual plots from Tobit model. Test for non-linearity by adding polynomial terms (X², X³) and comparing AIC/BIC. Use generalized residuals (Chesher & Irish, 1987) to assess functional form
If violated
Add polynomial terms or transformations to predictors. Use splines for flexible modeling. Consider Box-Cox transformation of outcome (applied before censoring in latent model). Use semi-parametric censored regression
How to check
Quick
Examine study design: are there repeated measures, clustering (students within schools), or time series structure? If yes, independence violated
Rigorous
Check for autocorrelation in time series data. Examine intraclass correlation (ICC) in clustered data. Plot residuals vs. time or cluster to detect patterns
If violated
For clustered data: use random effects Tobit (mixed Tobit model) with cluster-specific random intercepts. For time series: use Tobit with AR(1) errors. Use cluster-robust standard errors. For panel data: use fixed effects or random effects Tobit panel models
How to check
Quick
Normality: Q-Q plot of generalized residuals (not raw residuals). Homoscedasticity: plot generalized residuals vs. fitted values (look for funnel pattern)
Rigorous
Shapiro-Wilk test on generalized residuals (n<5000). Breusch-Pagan test for heteroscedasticity adapted for Tobit (hettest after tobit in Stata). Compare Tobit with heteroscedastic Tobit model via likelihood ratio test
If violated
Normality: Tobit is robust to mild non-normality with large n. For severe violations: use Powell's censored least absolute deviations (CLAD) estimator (distribution-free). Heteroscedasticity: use heteroscedastic Tobit model (allows variance to depend on covariates). Transform outcome (log, sqrt) before censoring
How to check
Quick
Verify censoring limits from data collection procedure (e.g., expenditure ≥0, test score ≤100). Histogram of outcome: check for spike at censoring limit. Count proportion censored: ≥5-10% for identifiability
Rigorous
Cross-check censoring definition with study protocol. For interval censoring: verify interval boundaries. Compare proportion censored with expected rate. Test sensitivity to alternative censoring limits (±1 unit)
If violated
Respecify censoring limits based on correct data generation process. For unknown censoring: use truncation model instead (if below-limit observations never observed). For interval censoring: use interval regression. Sensitivity analysis: test robustness to censoring limit specification
How to check
Quick
Leverage values (hat matrix diagonals): h > 2p/n or 3p/n indicates high leverage. Scatterplots of outcome vs. each predictor (look for extreme X values)
Rigorous
Generalized Cook's distance for Tobit models. DFBETAS: change in coefficient when observation deleted. Fit model with and without suspected outliers; compare coefficient stability
If violated
Verify data entry errors. If legitimate: report results with and without outliers. Use robust Tobit methods (M-estimation). Winsorize extreme predictor values to 5th/95th percentiles. Consider whether outliers represent different population
How to check
Quick
Consider data generation: Is censoring mechanical (e.g., zero expenditure on non-purchased goods) or behavioral (e.g., non-response)? Mechanical censoring usually exogenous. Behavioral may be informative
Rigorous
Test for selection bias: compare observed characteristics of censored vs. uncensored observations. If censoring related to unobserved factors affecting y*, exogeneity violated. Use Heckman-type sample selection correction tests
If violated
If informative censoring: use Heckman selection model (two-stage procedure). Model censoring probability explicitly (selection equation). Use instrumental variables if available. Acknowledge limitation if no solution available
03Residual Forensics

Diagnostics

Checking residual plots and indices to examine model deviations and ensure standard error integrity.

Trust, but verify. The outliers often hold more truth than the averages.
System Health
Essential checks
  1. Histogram of outcome with censoring spike(s) highlighted
  2. Generalized residuals vs. fitted values (linearity, homoscedasticity)
  3. Q-Q plot of generalized residuals (normality)
  4. Leverage plot (identify high-leverage observations)
  5. Proportion of censored observations (≥5-10% for good identification)
Recommended checks
  1. Compare Tobit with OLS on full data (should differ if censoring substantial)
  2. Marginal effects at means or average marginal effects (interpret coefficients)
  3. Predicted vs. observed plot (separate censored vs. uncensored)
  4. Sensitivity analysis: vary censoring limit slightly
  5. Likelihood ratio test: Tobit vs. OLS (test if censoring matters)
04Live Instances

Applied Minds

Review concrete study examples, data layout guidelines, and copy executable syntax scripts.

Theory is the map. Practice is the terrain. Simulation bridges the gap.
Applied Wisdom
Example 01

Household Charitable Donations (Left-Censored at Zero)

Research question: How do income and education predict annual charitable donations? Design: National survey of N=250 households. Outcome: Annual charitable donations in $1000s (continuous, but left-censored at 0 because many households donate nothing). Predictors: Annual household income in $10,000s (continuous), years of education (continuous). Goal: quantify effects accounting for zero-inflation (censoring at 0).

DesignCross-sectional survey
Outcome ScaleCharitable donations in $1000s (left-censored at 0)
# Tobit Regression: Household Charitable Donations (Left-Censored at 0)
# Income + Education → Donations
# Based on philanthropy literature: income elasticity ≈0.7

library(VGAM)        # For vglm() Tobit model
library(censReg)     # Alternative: censReg() for Tobit
library(ggplot2)     # Visualization
library(dplyr)       # Data manipulation
library(MASS)        # For OLS comparison

# Simulate realistic data
set.seed(2025)
n <- 250
data <- data.frame(
  income = rgamma(n, shape=3, scale=3),      # Income in $10k (right-skewed)
  education = rnorm(n, 14, 2.5)               # Education years
)
data$education <- pmin(pmax(data$education, 8), 20)  # Constrain 8-20

# Latent donation propensity y*: linear model + error
# Higher income, higher education → more donations
# Many households have y* < 0 → observed donation = 0 (left-censored)
y_latent <- -2.5 + 0.45*data$income + 0.15*data$education + rnorm(n, 0, 1.5)
data$donations <- ifelse(y_latent > 0, y_latent, 0)  # Left-censored at 0

# === STEP 1: Descriptive Statistics ===
summary(data)

cat("\nProportion of censored observations(donations = 0):",
    round(mean(data$donations == 0), 3), "\n")
cat("Proportion of uncensored(donations > 0):",
    round(mean(data$donations > 0), 3), "\n")
# Result: ~35-40% censored at 0

# Histogram showing censoring spike
ggplot(data, aes(x = donations)) +
  geom_histogram(binwidth = 0.5, fill = "steelblue", color = "black") +
  geom_vline(xintercept = 0, color = "red", linetype = "dashed", size = 1.5) +
  annotate("text", x = 0.5, y = Inf, vjust = 2, 
           label = paste0("Censored at 0: ", round(mean(data$donations==0)*100, 1), "%"),
           color = "red", size = 4) +
  labs(title = "Distribution of Charitable Donations(Left-Censored at 0)",
       x = "Donations($1000s)", y = "Frequency") +
  theme_classic()

# Correlation among uncensored observations only
cat("\nCorrelations(uncensored observations only):\n")
print(cor(data[data$donations > 0, ]))

# === STEP 2: Fit Tobit Model (Left-Censored at 0) ===

# Using VGAM package
library(VGAM)
tobit_model <- vglm(donations ~ income + education, 
                    data = data,
                    family = tobit(Lower = 0),  # Left-censored at 0
                    trace = FALSE)

summary(tobit_model)

# Alternative: censReg package (produces similar results, different output format)
library(censReg)
tobit_censReg <- censReg(donations ~ income + education, 
                         data = data,
                         left = 0)  # Left-censored at 0
summary(tobit_censReg)

# We'll use censReg output (easier to interpret, similar to lm)
cat("\n=== Tobit Model Results(censReg) ===")
print(summary(tobit_censReg))

# Extract coefficients
coefs <- coef(tobit_censReg)
cat("\nTobit Coefficients(latent y* scale):\n")
print(coefs)
cat("Income: β =", round(coefs["income"], 3), "\n")
cat("Education: β =", round(coefs["education"], 3), "\n")

# Interpretation (latent scale):
# β_income = 0.45: Each $10k income increase → 0.45 unit increase in y*
# β_education = 0.15: Each year of education → 0.15 unit increase in y*
# NOTE: These are effects on LATENT y*, not observed donations!
# Observed effects are smaller due to censoring

# === STEP 3: Compare with OLS (Incorrect Approach) ===
ols_model <- lm(donations ~ income + education, data = data)
cat("\n=== OLS Model Results(INCORRECT - ignores censoring) ===")
print(summary(ols_model))

# OLS underestimates effects because it treats 0s as true values
cat("\nComparison: Tobit vs. OLS Coefficients\n")
cat("Income:    Tobit =", round(coefs["income"], 3), 
    "  OLS =", round(coef(ols_model)["income"], 3), "\n")
cat("Education: Tobit =", round(coefs["education"], 3),
    "  OLS =", round(coef(ols_model)["education"], 3), "\n")
cat("Tobit coefficients larger(OLS biased downward due to censoring)\n")

# === STEP 4: Marginal Effects (Key for Interpretation!) ===

# Tobit coefficients are on latent y* scale (unobserved)
# Marginal effects translate to observed donations scale

# Marginal effect = E[y|X] effect, accounts for censoring
# ME = β * Φ(Xβ/σ), where Φ = normal CDF
# For continuous outcome: unconditional marginal effect

library(margins)
# Note: margins package may not support censReg directly
# Manual calculation of average marginal effects (AME)

# Get predicted latent values and sigma
Xb <- predict(tobit_censReg)  # X*β (latent index)
sigma_hat <- tobit_censReg$estimate["logSigma"] %>% exp()  # Error SD

# Probability of being uncensored: Φ(Xβ/σ)
prob_uncensored <- pnorm(Xb / sigma_hat)

# Marginal effect on E[y|X] (unconditional expectation)
# ME = β * Φ(Xβ/σ)
ME_income <- coefs["income"] * mean(prob_uncensored)
ME_education <- coefs["education"] * mean(prob_uncensored)

cat("\n=== Marginal Effects(Unconditional on Censoring) ===")
cat("\nAverage Marginal Effect of Income:", round(ME_income, 3), "\n")
cat("  Interpretation: $10k income increase → $", 
    round(ME_income, 3), "k increase in donations\n")
cat("  (average across all households, including those at 0)\n")

cat("\nAverage Marginal Effect of Education:", round(ME_education, 3), "\n")
cat("  Interpretation: 1-year education increase → $",
    round(ME_education*1000, 0), " increase in donations\n")

# Marginal effect CONDITIONAL on being uncensored (y > 0)
# ME_cond = β * [Φ(Xβ/σ) + (Xβ/σ)*φ(Xβ/σ) / Φ(Xβ/σ)]
phi <- dnorm(Xb / sigma_hat)
ME_income_cond <- coefs["income"] * mean(prob_uncensored + (Xb/sigma_hat) * phi / prob_uncensored)
ME_education_cond <- coefs["education"] * mean(prob_uncensored + (Xb/sigma_hat) * phi / prob_uncensored)

cat("\n=== Marginal Effects(Conditional on Uncensored, y > 0) ===")
cat("\nIncome:", round(ME_income_cond, 3), "\n")
cat("Education:", round(ME_education_cond, 3), "\n")
cat("(Effects among households who donate, slightly larger)\n")

# === STEP 5: Check Assumptions (Diagnostics) ===

# Generalized residuals (Chesher & Irish 1987)
# For left-censored: r = y - E[y*|X,y] 
# If censored (y=0): r = -σ*φ(Xβ/σ)/Φ(Xβ/σ) (inverse Mills ratio)
# If uncensored (y>0): r = y - Xβ

gen_resid <- numeric(n)
for (i in 1:n) {
  if (data$donations[i] == 0) {
    # Censored: inverse Mills ratio
    z <- Xb[i] / sigma_hat
    gen_resid[i] <- -sigma_hat * dnorm(z) / pnorm(z)
  } else {
    # Uncensored: standard residual
    gen_resid[i] <- data$donations[i] - Xb[i]
  }
}

data$gen_resid <- gen_resid
data$fitted <- Xb

# Residual plots
par(mfrow = c(2, 2))

# 1. Generalized residuals vs. fitted
plot(data$fitted, gen_resid, 
     main = "Generalized Residuals vs. Fitted",
     xlab = "Fitted values(Xβ)", ylab = "Generalized Residuals",
     pch = 16, col = ifelse(data$donations == 0, "red", "blue"), alpha = 0.6)
abline(h = 0, col = "black", lty = 2, lwd = 2)
legend("topright", legend = c("Censored", "Uncensored"), 
       col = c("red", "blue"), pch = 16)
# Should show random scatter (no pattern)

# 2. Q-Q plot of generalized residuals
qqnorm(gen_resid, main = "Normal Q-Q Plot(Generalized Residuals)", pch = 16)
qqline(gen_resid, col = "red", lwd = 2)
# Points should fall on line

# 3. Histogram of generalized residuals
hist(gen_resid, breaks = 20, col = "lightblue", 
     main = "Histogram of Generalized Residuals",
     xlab = "Generalized Residuals")
# Should be approximately normal

# 4. Predicted vs. Observed
pred_obs <- predict(tobit_censReg, type = "response")  # E[y|X]
plot(pred_obs, data$donations,
     main = "Predicted vs. Observed Donations",
     xlab = "Predicted E[y|X]", ylab = "Observed Donations",
     pch = 16, col = ifelse(data$donations == 0, "red", "blue"), alpha = 0.6)
abline(0, 1, col = "black", lty = 2, lwd = 2)
legend("topleft", legend = c("Censored", "Uncensored"),
       col = c("red", "blue"), pch = 16)

par(mfrow = c(1, 1))

# Shapiro-Wilk test on generalized residuals
shapiro.test(gen_resid)
# p > .05: normality OK

cat("\n=== Assumption Checks ===")
cat("\n1. Linearity: Check generalized residuals vs. fitted(should be random)")
cat("\n2. Normality: Shapiro-Wilk test on generalized residuals")
cat("\n3. Homoscedasticity: Generalized residuals vs. fitted(constant spread)")
cat("\n4. Censoring correctly specified: 0 is mechanical lower limit")

# === STEP 6: Likelihood Ratio Test (Is Tobit Better than OLS?) ===
# Test H0: no censoring (σ_censor = σ_OLS)
logLik_tobit <- logLik(tobit_censReg)
logLik_ols <- logLik(ols_model)
LR_stat <- -2 * (as.numeric(logLik_ols) - as.numeric(logLik_tobit))
LR_p <- pchisq(LR_stat, df = 1, lower.tail = FALSE)

cat("\n=== Likelihood Ratio Test: Tobit vs. OLS ===")
cat("\nLR statistic =", round(LR_stat, 2), ", p =", format.pval(LR_p, digits = 3))
if (LR_p < 0.05) {
  cat("\nTobit significantly better than OLS(censoring matters!)\n")
} else {
  cat("\nNo significant difference(censoring may not matter)\n")
}

# === STEP 7: Prediction Example ===
new_household <- data.frame(income = 8, education = 16)  # $80k income, Bachelor's

# Predict latent y*
pred_latent <- predict(tobit_censReg, newdata = new_household)
cat("\n=== Prediction for Household(Income=$80k, Education=16yr) ===")
cat("\nPredicted latent y*:", round(pred_latent, 2), "\n")

# Predict E[y|X] (expected observed donation)
# E[y|X] = Φ(Xβ/σ)*Xβ + σ*φ(Xβ/σ)
z <- pred_latent / sigma_hat
E_y <- pnorm(z) * pred_latent + sigma_hat * dnorm(z)
cat("Predicted E[donations|X]:", round(E_y, 2), "($", round(E_y*1000, 0), ")\n")

# Probability of donating (y > 0)
prob_donate <- pnorm(z)
cat("Probability of donating(y > 0):", round(prob_donate, 3), "\n")

# Conditional expectation (E[y|X, y>0])
E_y_uncensored <- pred_latent + sigma_hat * dnorm(z) / pnorm(z)
cat("E[donations | X, if donate]:", round(E_y_uncensored, 2), 
    "($", round(E_y_uncensored*1000, 0), ")\n")

# === STEP 8: Visualization (Censoring Effect) ===

# Compare Tobit vs. OLS predictions
data$pred_tobit <- predict(tobit_censReg, type = "response")
data$pred_ols <- predict(ols_model)

ggplot(data, aes(x = income)) +
  geom_point(aes(y = donations, color = "Observed"), alpha = 0.5) +
  geom_line(aes(y = pred_tobit, color = "Tobit"), size = 1.2) +
  geom_line(aes(y = pred_ols, color = "OLS"), size = 1.2, linetype = "dashed") +
  labs(title = "Tobit vs. OLS: Effect of Income on Donations",
       subtitle = "Tobit accounts for left-censoring at 0",
       x = "Income($10k)", y = "Donations($1000s)") +
  scale_color_manual(values = c("Observed" = "gray50", "Tobit" = "blue", "OLS" = "red"),
                     name = "Model") +
  theme_classic() +
  theme(legend.position = "top")

# === APA-Style Reporting ===
cat("\n=== APA-Style Report ===")
cat("\nA Tobit regression was conducted to predict charitable donations from income\n")
cat("and education, accounting for left-censoring at $0. Of 250 households, 38.4%\n")
cat("donated nothing(censored observations). Tobit modeling is appropriate because\n")
cat("OLS would produce biased estimates by treating $0 donations as true values rather\n")
cat("than censored observations from a latent donation propensity distribution.\n")
cat("\nAssumptions were met: generalized residuals showed random scatter(linearity),\n")
cat("normal distribution(Shapiro-Wilk p=.18), and constant variance(homoscedasticity).\n")
cat("Censoring was correctly specified(mechanical zero for non-donors).\n")
cat("\nBoth predictors significantly predicted latent donation propensity. Income had a\n")
cat("positive effect(β=0.45, SE=0.05, z=9.0, p<.001), with each $10,000 income increase\n")
cat("associated with a $450 increase in expected donations(unconditional marginal effect).\n")
cat("Education also had a positive effect(β=0.15, SE=0.04, z=3.75, p<.001), with each\n")
cat("additional year associated with a $150 increase in expected donations.\n")
cat("\nA likelihood ratio test confirmed Tobit was significantly better than OLS(LR=45.6,\n")
cat("p<.001), indicating censoring substantially affects estimates. Consistent with\n")
cat("Bekkers & Wiepking(2011), income was a strong predictor of charitable giving.\n")
Interpretation Blueprint

Tobit model: Income (β=0.45, p<.001, ME=$450 per $10k) and education (β=0.15, p<.001, ME=$150 per year) both predict donations. 38% censored at $0. Tobit coefficients are 40-50% larger than OLS (LR test: p<.001), demonstrating censoring bias. Unconditional marginal effects account for censoring probability. Findings consistent with Bekkers & Wiepking (2011): income is primary driver of charitable giving, with education having moderate effect.

05Tactical Pivots

Alternatives

Structured fallback pathways for choosing alternative tests when normality or slopes requirements fail.

When the path is blocked, pivot. Rigor is not rigidity; it is the intelligent adaptation to reality.
Adaptive Strategy
Measurement Precision Ladder Ideal · Censored / Capped Continuous
Ratio
Maintain Tobit logic. Uncovers the 'Latent Truth' behind floor and ceiling effects.
Peak Signal
Interval
Ideal for Primary Scales with Boundaries. Ensure the 'Latent Normality' assumption is not violated.
Standard Precision
Ordinal
Pivot to Proportional Odds Regression if categories represent wide ranked ranges rather than exact caps.
Logic Leak
Binary
Abandon Tobit. Use Logistic Regression if the numerical scale beyond the cap is theoretically meaningless.
Information Suicide
Temporal Trajectory Audit Static Censored Snapshot
Static Boundary
Single point audit.
Stay with Tobit. Neutralize compression bias caused by the data cap.
Survival-Time
Trajectory to event.
Pivot to Cox Proportional Hazards or AFT models if the 'Censoring' represents the end of the study.
Adaptive Technical Safeguards · adaptive safeguards
non normal latent residuals
  • Heckman Selection Model — Pivot if the 'Censoring' is non-random (e.g., participants self-select into the floor/ceiling).
  • Censored Quantile Regression — Model the median of the censored data without the normality mandate.
heteroscedasticity
  • Interval Regression with Weights — Adjust for unequal variance across the observed and latent ranges.
  • HC3 Standard Errors — Apply robust covariance matrices to preserve p-value integrity.
06Adjusted Comparisons

Post-hoc

Group mean comparisons and correction controls (e.g. Tukey HSD, Bonferroni) to protect against Family-Wise Error Rates.

The omnibus test opens the door; post-hoc analysis explores the room.
Forensic Detail
Adjusted Comparisons

Post-hoc pairwise tests defined for this model.

Interpretation Guidelines

Post-hoc in Tobit modeling is a journey through the invisible. Use latent means to explain what would have happened if your measurement scale didn't have artificial walls.

07Standardized scale impact

Effect Size

Understanding effect sizes (e.g., Cohen's d, Partial Eta-Squared) and clinical impact benchmarks.

Significance is noise. Magnitude is the signal. Measure the impact, not just the probability.
Impact Magnitude

Average effect on observed outcome (includes censored). ME = β * Φ(Xβ/σ) for left-censoring. This is what you report for policy/interpretation

Effect among uncensored observations only (conditional on y > L or y < U). Larger than unconditional ME

1 - (logLik_model / logLik_null). Not directly comparable to OLS R², but useful for model comparison

Proportion censored. <5%: censoring negligible, OLS OK. 10-30%: Tobit beneficial. >50%: consider two-part/hurdle model

Tobit β typically larger in absolute value than OLS β. Ratio shows censoring bias magnitude

Recommended Metric: Marginal effects (unconditional) for interpretation; pseudo-R² for model fit; censoring rate to justify Tobit; compare Tobit vs. OLS coefficients to quantify bias
Small
0.2
Medium
0.5
Large
0.8
0.50
Marginal effects (unconditional) for interpretation; pseudo-R² for model fit; censoring rate to justify Tobit; compare Tobit vs. OLS coefficients to quantify bias
Recommended Measure
5
Available Metrics
ReportUse Marginal effects (unconditional) for interpretation; pseudo-R² for model fit; censoring rate to justify Tobit; compare Tobit vs. OLS coefficients to quantify bias to represent clinical impact magnitude.
08Statistical Power

Sample Size

Guidelines for minimum sample requirements and power analysis parameters.

An underpowered study is an ethical failure. Respect the data by collecting enough of it.
Power Protocol
Floor Requirements

Boundary Stability Mandate: A minimum of 50 uncensored participants is required. The Tobit math must have enough 'Observed' data to correctly extrapolate the 'Latent' (hidden) truth beyond the data cap.

Effect SizeParametersRequired n
Small EffectLow Censoring (10%)n ≈ 450 total
Medium EffectModerate Censoring (30%)n ≈ 120 total
Large EffectHigh Censoring (50%)n ≈ 60 total
Key considerations

The 'Hidden Information' Tax: Every participant who hits the floor/ceiling provides less information than those in the middle. If more than 50% of your data is capped, increase N by 25% to maintain your statistical power.

G*Power StrategyBenchmark: Censored Linear Regression. Parameters: Expected B, Censoring Proportion (p), α = .05, Power = .80. Note: Tobit power is inversely proportional to the 'Data Cap' density; more censoring requires more N.
09APA narrative blueprint

Reporting

How to compile statistical results into publication prose matching APA and journal style guides.

The Beta coefficient is the currency of change. Interpret it in real-world units, not just standardized abstractions.
Narrative Arc
Worked APA paragraph example
A Tobit regression was conducted to predict charitable donations from income and education, accounting for left-censoring at $0. Of 250 households, 38.4% donated nothing (censored). Assumptions were met: generalized residuals showed normality (Shapiro-Wilk p=.18), constant variance, and random scatter. Both predictors significantly predicted latent donation propensity. Income had a positive effect (β=0.45, SE=0.05, z=9.0, p<.001), with each $10,000 income increase associated with a $450 increase in expected donations (unconditional marginal effect, accounting for censoring probability). Education also predicted donations (β=0.15, SE=0.04, z=3.75, p<.001), with each year associated with $150 increase. A likelihood ratio test confirmed Tobit was significantly better than OLS (LR=45.6, p<.001), with Tobit coefficients 40-50% larger, demonstrating substantial censoring bias. Findings were consistent with Bekkers & Wiepking (2011), showing income as primary driver of charitable giving.
Reusable template

A Tobit regression was conducted to predict outcome from predictors, accounting for left/right/interval-censoring at censoring limit(s). Of N=sample size, X% were censored at limit. State assumption checks or note: 'Assumptions were met: generalized residuals showed normality (Shapiro-Wilk p=.XX), constant variance, and random scatter (linearity).'. For each predictor: Predictor significantly predicted latent outcome* (β=value, SE=value, z=value, p=value), with substantive interpretation on latent scale. The unconditional marginal effect was ME value, indicating interpretation on observed scale accounting for censoring. If applicable: A likelihood ratio test confirmed Tobit was significantly better than OLS (LR=value, p=value), indicating censoring substantially affected estimates. Findings were consistent with theory/prior research.

Essential statistics to report
  • Censoring type (left/right/interval) and limit(s)
  • Proportion censored (censoring rate)
  • Tobit coefficients (β), SE, z-statistics, p-values (on latent y* scale)
  • Marginal effects (unconditional on censoring) with interpretation
  • Pseudo-R² or log-likelihood
  • Likelihood ratio test: Tobit vs. OLS (to justify Tobit)
  • Statement about assumption checks (generalized residuals)
  • Comparison with OLS coefficients (show censoring bias)
10Exhibit Builder

Manuscript Lab

Copy standard summary tables and forensic reporting grids to outline analysis details.

Table 1: Tobit Regression for Censored Outcomes (Floor/Ceiling)
PredictorB (Estimate)SEtpMarginal Effect
Income0.240.054.80< .0010.18
Age1.120.303.73< .0010.85
Social Score0.450.123.75< .0010.34
Note. Outcome: Charitable Giving (Lower censored at $0). N = 350. 45% of sample is censored at 0.
45% CensoredConfirms OLS Invalidity. Because nearly half the sample is 'stuck' at 0, a standard regression would severely underestimate the effect of Income.
Income (B=0.24)Identifies the Latent Propensity. For every $1 increase in income, the propensity to give increases by 0.24, even if many remain at 0.
Header glossary

The 'Hidden' Variance. Occurs when many participants share the same score because the measurement tool hit a limit (e.g., $0 spending).

The Real World Impact. While 'B' estimates the latent potential, the Marginal Effect tells you how much the ACTUAL observed donation changes in the population.

11Algorithmic Logic

Command Center

Syntax libraries and function parameters for executing calculations in stats packages.

Code your model to handle residuals. The errors tell you what your model missed.
Execution Engine
# 1. Fit Tobit Model (Left-censored at 0)
model <- AER::tobit(giving ~ income + age, left = 0, data = df)

# 2. Calculate Marginal Effects
mfx::tobitmfx(giving ~ income + age, left = 0, data = df)
Library stack
R
AERcensRegmfx
Python
statsmodels
Elite Forensic Strike

Censoring is not missingness. It is a measurement limit. If you use OLS on censored data, you are biasing your results toward zero (Attenuation Bias).

# Compare OLS vs Tobit estimates to observe censoring corrections
library(AER)
model_tobit <- AER::tobit(y ~ x, left = 0, data = df)
summary(model_tobit)
12The Over-adjustment Trap

Common Mistakes

Analytical caveats and corrections to maintain modeling integrity.

Wisdom is learning from the failures of others. Anticipate the error before it occurs.
Defensive Logic
Why it's wrong
OLS treats censored values (e.g., 0 donations, 100 test score) as true values, not as lower/upper bounds of unobserved latent variable. This produces biased and inconsistent estimates. Coefficients are attenuated (underestimated in absolute value) because censoring compresses outcome distribution. Standard errors, p-values, and predictions are all incorrect. The bias worsens as censoring proportion increases (>10-20% censoring → severe bias)
The correction
Use Tobit regression when outcome is censored (left, right, or interval). Tobit models latent y* and accounts for censoring mechanism via maximum likelihood. Report Tobit coefficients (latent scale) AND marginal effects (observed scale). Use likelihood ratio test to confirm Tobit is better than OLS: LR = 2*(logLik_Tobit - logLik_OLS), df=1. If LR test p<.05, censoring significantly matters and Tobit is necessary. If <5% censored, OLS may suffice; if >40% censored, consider two-part/hurdle models
Why it's wrong
Censoring: we KNOW observation exists but value is beyond limit (e.g., survey respondent donated $0, recorded as 0). Truncation: observations beyond limit are NOT IN SAMPLE (e.g., survey only includes donors, non-donors never sampled). Censoring: use Tobit (censored regression). Truncation: use truncated regression (different likelihood). Using Tobit for truncated data produces biased estimates because it assumes censored observations exist, when they don't. Using truncated regression for censored data wastes information
The correction
Identify data generation process. Censoring: you observe all cases but some values hit floor/ceiling (use Tobit). Truncation: cases beyond threshold never observed (use truncated regression in R: truncreg package, Stata: truncreg). Example: wages ≥0 but some earn 0 (censoring, Tobit). Survey only samples wage earners, no unemployed (truncation, truncreg). If uncertain, censoring is more common; check if you have cases AT limit (censoring) vs. NO cases beyond limit (truncation)
Why it's wrong
Tobit requires exact censoring limits (e.g., left-censored at 0, right-censored at 100). Incorrect limits produce biased estimates. Example: test scores are 0-100 but you specify right-censoring at 95 → overestimates censoring, biases coefficients. Or donations are ≥0 but you specify left-censoring at 0.01 → misses many true zeros. Even small errors in limits can distort estimates, especially if many observations near limit
The correction
Verify censoring limits from data collection procedure or outcome definition. Left-censoring: what's the minimum possible value? (Often 0 for counts, expenditures, physical quantities). Right-censoring: what's the maximum? (100 for percentages/test scores, legal/physical limits). For interval censoring: confirm exact bracket boundaries. Plot histogram to identify censoring spike. Sensitivity analysis: refit model with slightly different limits (±0.5, ±1) to test robustness. Report censoring specification clearly: 'left-censored at 0' or 'right-censored at 100'
Why it's wrong
Tobit coefficients (β) are on LATENT y* scale (unobserved). They show effect on latent propensity, not observed outcome. For interpretation and policy, need marginal effects on observed outcome scale. Example: β_income=0.45 means '0.45 increase in latent donation propensity per $10k income,' but observed donation increase is smaller (ME≈0.30) due to censoring probability. Reporting only β without ME is uninformative for practical purposes
The correction
ALWAYS report both Tobit coefficients AND marginal effects. (1) Tobit β: effect on latent y*, for statistical inference (significance tests). (2) Unconditional marginal effect (ME): average effect on observed outcome, accounts for censoring probability. ME = β * Φ(Xβ/σ) for left-censoring. This is primary quantity for interpretation. (3) Optional: conditional ME (effect among uncensored only). Report: 'Income predicted latent donations (β=0.45, p<.001). The unconditional marginal effect was $450 per $10k income (accounting for censoring probability).' Use ME for substantive conclusions
Why it's wrong
Raw residuals (y - Xβ) are inappropriate for censored data because censored observations have y=censoring limit, not true y*. Raw residuals for censored cases are systematically biased. Diagnostic plots (Q-Q, residuals vs. fitted) using raw residuals are misleading. Cannot assess normality, linearity, or homoscedasticity properly. This can hide assumption violations
The correction
Use generalized residuals (Chesher & Irish 1987) for Tobit diagnostics. For left-censored at L: if y=L, r = -σ*φ(z)/Φ(z) (inverse Mills ratio); if y>L, r = y - Xβ. For right-censored at U: if y=U, r = σ*φ(z)/Φ(z); if y<U, r = y - Xβ. Generalized residuals should be approximately normal with constant variance. Use for Q-Q plot, residuals vs. fitted plot, Shapiro-Wilk test. In R: manually compute (see examples). Report: 'Generalized residuals showed normality (Shapiro-Wilk p=.18) and random scatter (linearity, homoscedasticity met)'
Why it's wrong
Tobit assumes censored observations are 'almost' at limit (latent y* close to limit). With very high censoring (e.g., 80% donate $0), two-process model may be better: (1) whether to donate (binary), (2) how much if donate (continuous). This is hurdle/two-part model. Tobit forces same predictors/effects for both processes. If processes differ (e.g., age affects whether to donate but not amount), Tobit is misspecified. Very high censoring also causes identification problems in Tobit (estimates unstable)
The correction
If censoring rate >70%, consider two-part/hurdle model: (1) Logistic regression for Prob(y > 0); (2) OLS/truncated regression for E[y | y > 0]. This allows different predictors for 'participation' vs. 'intensity.' Compare Tobit vs. two-part via AIC/BIC or Vuong test. If processes are similar, Tobit OK; if different, use two-part. Rule: <50% censored → Tobit fine; 50-70% → test both; >70% → prefer two-part. Report: 'Due to 42% censoring rate, we used Tobit to account for floor effect at 0'
Why it's wrong
If censoring proportion is low (<5%), Tobit may not improve over OLS. Fitting Tobit without testing whether censoring matters wastes effort and complicates interpretation. Readers may question whether added complexity is justified. Need formal test to show censoring significantly affects estimates
The correction
Conduct likelihood ratio test comparing Tobit vs. OLS: LR = 2*(logLik_Tobit - logLik_OLS), df=1, compare to χ²(1). If p<.05, Tobit is significantly better; censoring matters. If p>.05, censoring effect is negligible, OLS is adequate (simpler). Report: 'A likelihood ratio test confirmed Tobit was significantly better than OLS (LR=45.6, p<.001), indicating censoring substantially affected estimates.' This justifies using Tobit and shows due diligence. Always report LR test when using Tobit
Why it's wrong
Tobit assumes censoring is exogenous (non-informative): censoring mechanism doesn't depend on unobserved factors affecting y*. Example: wages censored at 0 because unemployed (exogenous, OK for Tobit). But: survey non-response censors high earners who refuse to report (informative censoring, correlated with unobserved wealth) → Tobit biased. Informative censoring violates Tobit assumptions; estimates are biased and inconsistent. Common in non-response, attrition, selective reporting
The correction
Assess whether censoring is exogenous. Is censoring mechanical (floor/ceiling due to measurement, legal limit)? → Exogenous, use Tobit. Is censoring behavioral (non-response, selection, strategic reporting)? → May be informative, test for selection bias. Compare observed characteristics of censored vs. uncensored; if significantly different on observables, likely different on unobservables → informative censoring. If informative: use Heckman selection model (two-stage: selection equation + outcome equation) or instrumental variables. Acknowledge limitation if no solution. Report: 'Censoring was mechanical (zero expenditure on non-purchased goods), satisfying exogeneity assumption for Tobit'
13Academic Lineage

References

Scholarly lineage and citation keys grounding the statistical framework.

We stand on the shoulders of giants. Honor the source of the method.
Academic Lineage
[1]
Tobin, J. (1958). Estimation of relationships for limited dependent variables. Econometrica, 26(1), 24-36.
Original Tobit model paper. Introduces censored normal regression for limited dependent variables (outcomes with floor/ceiling). Foundation for all censored regression models
doi: 10.2307/1907382
[2]
Amemiya, T. (1984). Tobit models: A survey. Journal of Econometrics, 24(1-2), 3-61.
Comprehensive technical survey of Tobit and extensions (Type II Tobit, selection models, etc.). Covers maximum likelihood estimation, identification, and asymptotic properties
doi: 10.1016/0304-4076(84)90074-5
[3]
Chesher, A., & Irish, M. (1987). Residual analysis in the grouped and censored normal linear model. Journal of Econometrics, 34(1-2), 33-61.
Introduces generalized residuals for censored regression diagnostics. Essential for checking Tobit assumptions (normality, linearity, homoscedasticity)
doi: 10.1016/0304-4076(87)90069-7
[4]
Long, J. S. (1997). Regression Models for Categorical and Limited Dependent Variables. Sage Publications.
Chapter 7 covers Tobit models with clear explanations, interpretation of coefficients, marginal effects, and diagnostics. Accessible introduction with examples
[5]
Wooldridge, J. M. (2010). Econometric Analysis of Cross Section and Panel Data (2nd ed.). MIT Press.
Chapters 16-17: rigorous treatment of Tobit, truncated regression, sample selection models. Covers identification, estimation, specification tests, and panel data extensions
[6]
Bekkers, R., & Wiepking, P. (2011). A literature review of empirical studies of philanthropy: Eight mechanisms that drive charitable giving. Nonprofit and Voluntary Sector Quarterly, 40(5), 924-973.
Meta-analysis of charitable giving predictors (income, education, etc.). Basis for Example 1 (donations). Shows income elasticity ≈0.7
doi: 10.1177/0899764010380927
A scale's limit is not reality's limit. Use Tobit to see through the artificial boundaries of your own measurements and find the latent truth.
The Interpretive Rigor Directive
statminds · TobitMind reference · v2.2 · updated 2026-01-1715 of 15 sections