alkaline-ml / pmdarima

A statistical library designed to fill the void in Python's time series analysis capabilities, including the equivalent of R's auto.arima function.
https://www.alkaline-ml.com/pmdarima
MIT License
1.55k stars 228 forks source link

LU decomposition error raised when run wine sample #554

Open Bitros opened 1 year ago

Bitros commented 1 year ago

Describe the bug

Hi. I ran the sample https://github.com/alkaline-ml/pmdarima#quickstart-examples under Python 3.9.17 and got warnings below

C:\Users\{user}\program\miniconda3\envs\pywork\lib\site-packages\pmdarima\arima\_auto_solvers.py:524: ModelFitWarning: Error fitting  ARIMA(4,1,0)(2,0,2)[12]           (if you do not want to see these warnings, run with error_action="ignore").
Traceback:
Traceback (most recent call last):
  File "C:\Users\{user}\program\miniconda3\envs\pywork\lib\site-packages\pmdarima\arima\_auto_solvers.py", line 508, in _fit_candidate_model
    fit.fit(y, X=X, **fit_params)
  File "C:\Users\{user}\program\miniconda3\envs\pywork\lib\site-packages\pmdarima\arima\arima.py", line 603, in fit
    self._fit(y, X, **fit_args)
  File "C:\Users\{user}\program\miniconda3\envs\pywork\lib\site-packages\pmdarima\arima\arima.py", line 524, in _fit
    fit, self.arima_res_ = _fit_wrapper()
  File "C:\Users\{user}\program\miniconda3\envs\pywork\lib\site-packages\pmdarima\arima\arima.py", line 510, in _fit_wrapper
    fitted = arima.fit(
  File "C:\Users\{user}\program\miniconda3\envs\pywork\lib\site-packages\statsmodels\tsa\statespace\mlemodel.py", line 704, in fit
    mlefit = super(MLEModel, self).fit(start_params, method=method,
  File "C:\Users\{user}\program\miniconda3\envs\pywork\lib\site-packages\statsmodels\base\model.py", line 563, in fit
    xopt, retvals, optim_settings = optimizer._fit(f, score, start_params,
  File "C:\Users\{user}\program\miniconda3\envs\pywork\lib\site-packages\statsmodels\base\optimizer.py", line 241, in _fit
    xopt, retvals = func(objective, gradient, start_params, fargs, kwargs,
  File "C:\Users\{user}\program\miniconda3\envs\pywork\lib\site-packages\statsmodels\base\optimizer.py", line 651, in _fit_lbfgs
    retvals = optimize.fmin_l_bfgs_b(func, start_params, maxiter=maxiter,
  File "C:\Users\{user}\program\miniconda3\envs\pywork\lib\site-packages\scipy\optimize\_lbfgsb_py.py", line 197, in fmin_l_bfgs_b
    res = _minimize_lbfgsb(fun, x0, args=args, jac=jac, bounds=bounds,
  File "C:\Users\{user}\program\miniconda3\envs\pywork\lib\site-packages\scipy\optimize\_lbfgsb_py.py", line 359, in _minimize_lbfgsb
    f, g = func_and_grad(x)
  File "C:\Users\{user}\program\miniconda3\envs\pywork\lib\site-packages\scipy\optimize\_differentiable_functions.py", line 285, in fun_and_grad
    self._update_fun()
  File "C:\Users\{user}\program\miniconda3\envs\pywork\lib\site-packages\scipy\optimize\_differentiable_functions.py", line 251, in _update_fun
    self._update_fun_impl()
  File "C:\Users\{user}\program\miniconda3\envs\pywork\lib\site-packages\scipy\optimize\_differentiable_functions.py", line 155, in update_fun
    self.f = fun_wrapped(self.x)
  File "C:\Users\{user}\program\miniconda3\envs\pywork\lib\site-packages\scipy\optimize\_differentiable_functions.py", line 137, in fun_wrapped
    fx = fun(np.copy(x), *args)
  File "C:\Users\{user}\program\miniconda3\envs\pywork\lib\site-packages\statsmodels\base\model.py", line 531, in f
    return -self.loglike(params, *args) / nobs
  File "C:\Users\{user}\program\miniconda3\envs\pywork\lib\site-packages\statsmodels\tsa\statespace\mlemodel.py", line 939, in loglike
    loglike = self.ssm.loglike(complex_step=complex_step, **kwargs)
  File "C:\Users\{user}\program\miniconda3\envs\pywork\lib\site-packages\statsmodels\tsa\statespace\kalman_filter.py", line 983, in loglike
    kfilter = self._filter(**kwargs)
  File "C:\Users\{user}\program\miniconda3\envs\pywork\lib\site-packages\statsmodels\tsa\statespace\kalman_filter.py", line 903, in _filter
    self._initialize_state(prefix=prefix, complex_step=complex_step)
  File "C:\Users\{user}\program\miniconda3\envs\pywork\lib\site-packages\statsmodels\tsa\statespace\representation.py", line 983, in _initialize_state
    self._statespaces[prefix].initialize(self.initialization,
  File "statsmodels\tsa\statespace\_representation.pyx", line 1373, in statsmodels.tsa.statespace._representation.dStatespace.initialize
  File "statsmodels\tsa\statespace\_representation.pyx", line 1362, in statsmodels.tsa.statespace._representation.dStatespace.initialize
  File "statsmodels\tsa\statespace\_initialization.pyx", line 288, in statsmodels.tsa.statespace._initialization.dInitialization.initialize
  File "statsmodels\tsa\statespace\_initialization.pyx", line 406, in statsmodels.tsa.statespace._initialization.dInitialization.initialize_stationary_stationary_cov
  File "statsmodels\tsa\statespace\_tools.pyx", line 1206, in statsmodels.tsa.statespace._tools._dsolve_discrete_lyapunov
numpy.linalg.LinAlgError: LU decomposition error.

  warnings.warn(warning_str, ModelFitWarning)

To Reproduce

Just run the wine sample.

Versions

System:
    python: 3.9.17 (main, Jul  5 2023, 21:22:06) [MSC v.1916 64 bit (AMD64)]
executable: C:\Users\{user}\program\miniconda3\envs\pywork\python.exe
   machine: Windows-10-10.0.22621-SP0

Python dependencies:
        pip: 23.1.2
 setuptools: 67.8.0
    sklearn: 1.2.2
statsmodels: 0.13.5
      numpy: 1.25.0
      scipy: 1.10.1
     Cython: 0.29.35
     pandas: 1.5.3
     joblib: 1.2.0
   pmdarima: 2.0.3
Windows-10-10.0.22621-SP0
Python 3.9.17 (main, Jul  5 2023, 21:22:06) [MSC v.1916 64 bit (AMD64)]
pmdarima 2.0.3
NumPy 1.25.0
SciPy 1.10.1
Scikit-Learn 1.2.2
Statsmodels 0.13.5

Expected Behavior

Run as usual without any warnings and errors.

Actual Behavior

Warnings raised.

Additional Context

No response