Can Dynamic Double Machine Learning use SHAP?
When there is only one panel, it works fine, but multiple panels will report “list index out of range”.for exmaple
Define DGP parameters
np.random.seed(123) n_panels = 5000 # number of panels n_periods = 3 # number of time periods in each panel n_treatments = 3 # number of treatments in each period n_x = 100 # number of features + controls s_x = 10 # number of controls (endogeneous variables) s_t = 10 # treatment support size
Generate data
Define additional DGP parameters
het_strength = .5 het_inds = np.arange(n_x - n_treatments, n_x)
Generate data
dgp = DynamicPanelDGP(n_periods, n_treatments, n_x).create_instance( s_x, hetero_strength=het_strength, hetero_inds=het_inds, random_seed=12) Y, T, X, W, groups = dgp.observational_data(n_panels, s_t=s_t, random_seed=1) ate_effect = dgp.true_effect het_effect = dgp.true_hetero_effect[:, het_inds + 1] #%%
est = DynamicDML( model_y=RandomForestRegressor(), model_t=RandomForestRegressor(),cv=3) est.fit(Y, T, X=X, W=W, groups=groups, inference="auto") #%% import shap
explain the model's predictions using SHAP values
shap_values = est.shap_values(X, feature_names=['A', 'B', 'C'], background_samples=100) shap.summary_plot(shap_values['Y0']['T0'])