akelleh / causality

Tools for causal analysis
MIT License
1.06k stars 128 forks source link

Fail to import the package #85

Closed liran-funaro closed 2 years ago

liran-funaro commented 3 years ago

This is the first time I try this package. When trying to import RobustRegressionTest I got the following error.

ImportError                               Traceback (most recent call last)
<ipython-input-97-30a81870761e> in <module>
      1 from causality.inference.search import IC
----> 2 from causality.inference.independence_tests import RobustRegressionTest

~/bin/anaconda3/lib/python3.7/site-packages/causality/inference/independence_tests/__init__.py in <module>
      1 import pandas as pd
      2 import numpy as np
----> 3 import statsmodels.api as sm
      4 import scipy.stats
      5 import itertools

~/bin/anaconda3/lib/python3.7/site-packages/statsmodels/api.py in <module>
     14 from . import robust
     15 from .robust.robust_linear_model import RLM
---> 16 from .discrete.discrete_model import (Poisson, Logit, Probit,
     17                                       MNLogit, NegativeBinomial,
     18                                       GeneralizedPoisson,

~/bin/anaconda3/lib/python3.7/site-packages/statsmodels/discrete/discrete_model.py in <module>
     43 
     44 from statsmodels.base.l1_slsqp import fit_l1_slsqp
---> 45 from statsmodels.distributions import genpoisson_p
     46 
     47 try:

~/bin/anaconda3/lib/python3.7/site-packages/statsmodels/distributions/__init__.py in <module>
      1 from .empirical_distribution import ECDF, monotone_fn_inverter, StepFunction
----> 2 from .edgeworth import ExpandedNormal
      3 from .discrete import genpoisson_p, zipoisson, zigenpoisson, zinegbin

~/bin/anaconda3/lib/python3.7/site-packages/statsmodels/distributions/edgeworth.py in <module>
      5 import numpy as np
      6 from numpy.polynomial.hermite_e import HermiteE
----> 7 from scipy.misc import factorial
      8 from scipy.stats import rv_continuous
      9 import scipy.special as special

ImportError: cannot import name 'factorial' from 'scipy.misc' (~/bin/anaconda3/lib/python3.7/site-packages/scipy/misc/__init__.py)

This is the installation output stating the installed packages versions:

Collecting causality
  Downloading causality-0.0.9-py3-none-any.whl (24 kB)
Requirement already satisfied: patsy in ~/bin/anaconda3/lib/python3.7/site-packages (from causality) (0.5.1)
Requirement already satisfied: pandas in ~bin/anaconda3/lib/python3.7/site-packages (from causality) (1.1.2)
Requirement already satisfied: networkx in ~/bin/anaconda3/lib/python3.7/site-packages (from causality) (2.1)
Requirement already satisfied: python-dateutil in ~/bin/anaconda3/lib/python3.7/site-packages (from causality) (2.8.1)
Requirement already satisfied: scipy in ~/bin/anaconda3/lib/python3.7/site-packages (from causality) (1.5.2)
Requirement already satisfied: numpy in ~/bin/anaconda3/lib/python3.7/site-packages (from causality) (1.19.2)
Requirement already satisfied: pytz in ~bin/anaconda3/lib/python3.7/site-packages (from causality) (2020.1)
Requirement already satisfied: statsmodels in ~/bin/anaconda3/lib/python3.7/site-packages (from causality) (0.9.0)
Requirement already satisfied: decorator in ~/bin/anaconda3/lib/python3.7/site-packages (from causality) (4.3.0)
Requirement already satisfied: six in ~/bin/anaconda3/lib/python3.7/site-packages (from causality) (1.15.0)
Installing collected packages: causality
Successfully installed causality-0.0.9
liran-funaro commented 3 years ago

Workaround:

from scipy import special
from scipy import misc
for f in dir(special):
    if not hasattr(misc, f):
        setattr(misc, f, getattr(special, f))

from causality.inference.search import IC
from causality.inference.independence_tests import RobustRegressionTest
akelleh commented 2 years ago

which statsmodels and scipy version are you on? I've failed to re-create the bug.

liran-funaro commented 2 years ago

I honestly don't remember. It was over a year ago. But I checked my code again and I don't see the workaround there, so I guess I solved it somehow. Might be an incorrect scipy version.