Skip to content

Commit 61d5592

Browse files
committed
[IV 212] experimenting with nicer plot
Signed-off-by: Nathaniel <[email protected]>
1 parent d30da22 commit 61d5592

File tree

4 files changed

+2720
-628
lines changed

4 files changed

+2720
-628
lines changed

causalpy/pymc_experiments.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -917,13 +917,15 @@ def __init__(
917917
self.get_naive_OLS_fit()
918918
self.get_2SLS_fit()
919919

920-
# fit the model to the observed (pre-intervention) data
920+
# fit the model to the data
921921
COORDS = {"instruments": self.labels_instruments, "covariates": self.labels}
922922
self.coords = COORDS
923923
if priors is None:
924924
priors = {
925925
"mus": [self.ols_beta_first_params, self.ols_beta_second_params],
926926
"sigmas": [1, 1],
927+
"eta": 2,
928+
"lkj_sd": 2,
927929
}
928930
self.priors = priors
929931
self.model.fit(
@@ -950,5 +952,5 @@ def get_naive_OLS_fit(self):
950952
ols_reg = sk_lin_reg().fit(self.X, self.y)
951953
beta_params = list(ols_reg.coef_[0][1:])
952954
beta_params.insert(0, ols_reg.intercept_[0])
953-
self.ols_beta_params = beta_params
955+
self.ols_beta_params = dict(zip(self._x_design_info.column_names, beta_params))
954956
self.ols_reg = ols_reg

causalpy/pymc_models.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,8 @@ def build_model(self, X, Z, y, t, coords, priors):
136136
:param priors: An optional dictionary of priors for the mus and
137137
sigmas of both regressions
138138
139-
e.g priors = {'mus': [[10, 0], [2, 0]], 'sigmas': [[1, 1], [1, 1]]}
139+
e.g priors = {'mus': [[10, 0], [2, 0]], 'sigmas': [[1, 1], [1, 1]]
140+
'eta': 2, 'lkj_sd': 2}
140141
141142
"""
142143

@@ -155,16 +156,18 @@ def build_model(self, X, Z, y, t, coords, priors):
155156
sigma=priors["sigmas"][1],
156157
dims="covariates",
157158
)
158-
sd_dist = pm.HalfCauchy.dist(beta=2, shape=2)
159+
sd_dist = pm.HalfCauchy.dist(beta=priors["lkj_sd"], shape=2)
159160
chol, corr, sigmas = pm.LKJCholeskyCov(
160-
name="chol_cov", eta=2, n=2, sd_dist=sd_dist
161+
name="chol_cov", eta=priors["eta"], n=2, sd_dist=sd_dist
161162
)
162163
# compute and store the covariance matrix
163164
pm.Deterministic(name="cov", var=pt.dot(l=chol, r=chol.T))
164165

165166
# --- Parameterization ---
166167
mu_y = pm.Deterministic(name="mu_y", var=pm.math.dot(X, beta_z))
168+
# focal regression
167169
mu_t = pm.Deterministic(name="mu_t", var=pm.math.dot(Z, beta_t))
170+
# instrumental regression
168171
mu = pm.Deterministic(name="mu", var=pt.stack(tensors=(mu_y, mu_t), axis=1))
169172

170173
# --- Likelihood ---

docs/source/_static/interrogate_badge.svg

Lines changed: 3 additions & 3 deletions
Loading

0 commit comments

Comments
 (0)