Skip to content

Commit 542cc28

Browse files
Merge pull request #29 from recurve-methods/fix/add-diffndiff
Added diff of diff computation
2 parents 8e67034 + 91ff509 commit 542cc28

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
import numpy as np
2+
import pandas as pd
3+
4+
# TODO : add test cases
5+
def pct_correction_factor(df : pd.DataFrame, observed : str = 'obs', counterfactual : str = 'predicted'):
6+
"""
7+
Compute the difference in difference correction factor given a data frame and two columns.
8+
9+
Parameters
10+
----------
11+
df : Dataframe of comparison group
12+
13+
Returns
14+
-------
15+
Dataframe with correction factor added
16+
17+
"""
18+
19+
if {observed, counterfactual} - set(df.columns):
20+
raise ValueError("Observed and/or Counterfactual columns are missing in the input dataframe")
21+
22+
# Correction_factor name should be a constant?
23+
df['correction_factor'] = df[observed]/ df[counterfactual]
24+
25+
return df
26+
27+
28+
def correct_treatment(df : pd.DataFrame, treatment_observed : str = 't_obs', treatment_cf : str ='t_cf', cg_observed : str ='c_obs',cg_counterfactual : str ='c_cf'):
29+
"""
30+
Given a dataframe compute the corrected counterfactual
31+
32+
Parameters
33+
----------
34+
df : a dataframe with treatment and comparison group observed and counterfactuals
35+
36+
Returns
37+
-------
38+
Dataframe with counterfactual corrected
39+
"""
40+
41+
df_corrected = pct_correction_factor(df, cg_observed, cg_counterfactual)
42+
43+
if treatment_cf not in df.columns:
44+
raise ValueError("Treatment Counterfactual column missing in the input dataframe")
45+
46+
df_corrected['t_cf_corrected'] = df_corrected['correction_factor'] * df[treatment_cf]
47+
48+
return df_corrected

0 commit comments

Comments
 (0)