from _api_doc_utils import *AverageDerivative
Average derivative estimator for continuous treatments
1 Where it fits
Group: Causal inference
AverageDerivative targets an average marginal effect of a scalar continuous treatment. The class exposes three related estimating equations through method='ob', 'ipw', or 'dr'.
The doubly robust option combines outcome-bridge and weighting components, while the other options expose the individual pieces.
2 Python API
Constructor: cm.AverageDerivative
Call fit(y, d, w). The summary reports method, coef, se, and vcov. There is no predict() method because the object is a semiparametric target rather than a full conditional mean model.
print(inspect.signature(cm.AverageDerivative))(method='dr', fd_eps=1e-06)
cls = cm.AverageDerivative
display(HTML(html_table(["Public method"], public_methods(cls))))| Public method |
|---|
fit(self, /, y, d, w) |
summary(self, /, vcov=None, lags=None, clusters=None) |
3 Minimal example
rng=np.random.default_rng(12)
w=rng.normal(size=(320,2)); d=.2+w@np.array([.5,-.3])+rng.normal(scale=.7,size=320); y=.8*d+w@np.array([.2,-.1])+rng.normal(scale=.5,size=320)
model=cm.AverageDerivative(method="dr"); model.fit(y,d,w)
print(model.summary()){'method': 'dr', 'coef': 0.775623613574262, 'se': 0.04377879620928101, 'vcov': array([[0.00191658]])}
4 summary() contract
The table below is generated by fitting the live class in this repository and then inspecting summary(). Shapes are shown because most values are plain NumPy arrays or scalars.
rng=np.random.default_rng(112); w=rng.normal(size=(120,2)); d=.2+w@np.array([.5,-.3])+rng.normal(size=120)*.7; y=.8*d+w@np.array([.2,-.1])+rng.normal(size=120)*.5
model=cm.AverageDerivative(method='dr'); model.fit(y,d,w)
summary = model.summary()
display(HTML(html_table(["summary() key", "shape"], summary_shape_rows(summary))))| summary() key | shape |
|---|---|
method |
() |
coef |
() |
se |
() |
vcov |
(1, 1) |