dowhy
dowhy copied to clipboard
Get error in refutation process ValueError: No group keys passed!
Describe the bug Get error in refutation
Steps to reproduce the behavior
Very common steps
Read data
earnings_data = pd.read_csv(r'./data/ml_earnings.csv')
Define graph and model
`# Construct the graph (the graph is constant for all iterations) nodes = ['took_a_course', 'earnings', 'age'] edges = [ ('took_a_course', 'earnings'), ('age', 'took_a_course'), ('age', 'earnings') ]
Generate the GML graph
gml_string = 'graph [directed 1\n'
for node in nodes: gml_string += f'\tnode [id "{node}" label "{node}"]\n'
for edge in edges: gml_string += f'\tedge [source "{edge[0]}" target "{edge[1]}"]\n'
gml_string += ']'`
# Instantiate the CausalModel model = CausalModel( data=earnings_data, treatment='took_a_course', outcome='earnings', graph=gml_string )
estimate
# Get estimate (Matching) estimate = model.estimate_effect( identified_estimand=estimand, method_name='backdoor.distance_matching', target_units='ate', method_params={'distance_metric': 'minkowski', 'p': 2})
Refute
refutation = model.refute_estimate( estimand=estimand, estimate=estimate, method_name= "random_common_cause", # method_name = 'add_unobserved_common_cause' )
Error I got
`--------------------------------------------------------------------------- ValueError Traceback (most recent call last) Cell In[23], line 1 ----> 1 refutation = model.refute_estimate( 2 estimand=estimand, 3 estimate=estimate, 4 method_name= "random_common_cause", 5 # method_name = 'add_unobserved_common_cause' 6 )
File ~/opt/anaconda3/envs/causal/lib/python3.9/site-packages/dowhy/causal_model.py:434, in CausalModel.refute_estimate(self, estimand, estimate, method_name, show_progress_bar, **kwargs) 431 refuter_class = causal_refuters.get_class_object(method_name) 433 refuter = refuter_class(self._data, identified_estimand=estimand, estimate=estimate, **kwargs) --> 434 res = refuter.refute_estimate(show_progress_bar) 435 return res
File ~/opt/anaconda3/envs/causal/lib/python3.9/site-packages/dowhy/causal_refuters/random_common_cause.py:45, in RandomCommonCause.refute_estimate(self, show_progress_bar) 44 def refute_estimate(self, show_progress_bar=False): ---> 45 refute = refute_random_common_cause( 46 self._data, 47 self._target_estimand, 48 self._estimate, 49 self._num_simulations, 50 self._random_state, 51 show_progress_bar, ... --> 917 raise ValueError("No group keys passed!") 918 elif len(groupings) == 0: 919 groupings.append(Grouping(Index([], dtype="int"), np.array([], dtype=np.intp)))
ValueError: No group keys passed!`
This can also include a verbatim copy of outputs, or screenshots.
Expected behavior A clear and concise description of what you expected to happen.
Version information:
- mac os
- python '3.9.16 (main, May 15 2023, 18:51:40) \n[Clang 14.0.6 ]'
- DoWhy version 0.9.0 & 0.10.0 shows same result
Additional context
Example from book Causal Inference and Discovery
Hi @stvgz ,
I had the same issue.
I was able to solve the problem by uninstalling the DoWhy (installation with pip), and reinstalling using
conda (version 0.8).
conda install -c conda-forge dowhy
Hope it helps!
@stvgz I'm experiencing the same issue. Tried on: Windows 10 Enterprise LTSC, Python 3.11.3, dowhy 0.11.1 Linux (Ubuntu 22.04.4 LTS), Python 3.10.12, dowhy 0.11.1
Exact same error as the traceback above after calling the refute_estimate method using identical parameters.
@stvgz I have the same error and it is from the same example from the book Causal Inference and Discovery in Python. Pip uninstall dowhy and conda install did not work for me @galkampel. I am on MacOS Sonoma 14.3, Python 3.10.14, dowhy 0.11.1
Updates: This error is only seen using the random_common_cause refuter. The placebo_treatment_refuter and data_subset_refuter work fine.
@amit-sharma
thanks for tagging @bloebp Let me take a look at this.