SimpleCausal

Simple graphs illustrating regression for causal inference. See Chapter 1 in Regression and Other Stories.

The simulated data depends on the random seed, and thus the plots and numbers here and in the book may differ. You can experiment with the simulation variation by changing the seed.

Source: SimpleCausal/causal.Rmd.

The Python version keeps data handling explicit and uses lapylace for Stan-backed generalized linear models, so the statistical model can be read from a formula rather than from handwritten Stan.

from pathlib import Path
import sys
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import lapylace as lp

sys.path.append(str(Path.cwd().parent / 'python'))
from data import ros_path

Models

The formulas below are the Python counterparts of the model formulas in the source example. Use lapylace for the Stan-backed Bayesian fit with the same formula interface.

# fit = lp.stan_glm('y ~ x_binary', data=df, family=lp.gaussian(), chains=4, iter_sampling=1000)

# fit = lp.stan_glm('y ~ x', data=df, family=lp.gaussian(), chains=4, iter_sampling=1000)

# fit = lp.stan_glm('y ~ x', data=df, family=lp.gaussian(), chains=4, iter_sampling=1000)

# fit = lp.stan_glm('yy ~ xx + z', data=df, family=lp.gaussian(), chains=4, iter_sampling=1000)

Notes

  • Source computation blocks represented: 22.
  • Data paths are expressed through the shared ros_path() helper.
  • Formula-based Bayesian regressions are routed through lapylace.stan_glm().
  • Plotting and simulation work uses NumPy, pandas, matplotlib idioms.