in causalml/metrics/sensitivity.py [0:0]
def partial_rsqs_confounding(sens_df, feature_name, partial_rsqs_value, range=0.01):
"""Check partial rsqs values of feature corresponding confounding amonunt of ATE
Args:
sens_df (pandas.DataFrame): a data frame output from causalsens
feature_name (str): feature name to check
partial_rsqs_value (float) : partial rsquare value of feature
range (float) : range to search from sens_df
Return: min and max value of confounding amount
"""
rsqs_dict = []
for i in sens_df.rsqs:
if (
partial_rsqs_value - partial_rsqs_value * range
< i
< partial_rsqs_value + partial_rsqs_value * range
):
rsqs_dict.append(i)
if rsqs_dict:
confounding_min = sens_df[sens_df.rsqs.isin(rsqs_dict)].alpha.min()
confounding_max = sens_df[sens_df.rsqs.isin(rsqs_dict)].alpha.max()
logger.info(
"Only works for linear outcome models right now. Check back soon."
)
logger.info(
"For feature {} with partial rsquare {} confounding amount with possible values: {}, {}".format(
feature_name, partial_rsqs_value, confounding_min, confounding_max
)
)
return [confounding_min, confounding_max]
else:
logger.info(
"Cannot find correponding rsquare value within the range for input, please edit confounding",
"values vector or use a larger range and try again",
)