在Python中创建时间序列时出现非正半确定性错误
当我试图通过在Python中创建时间序列时出现非正半确定性错误,python,pandas,statistics,statsmodels,Python,Pandas,Statistics,Statsmodels,当我试图通过statsmodels将我拥有的一些数据拟合到Python中的VAR时间序列模型时,我收到了一个错误,其文档如下所示: 我拥有的数据可以在数据框df_IBM_training中找到,如下所示: date sym open high low close newscount 6 2014.08.05 IBM 189.30 189.3000 186.4100 187.0800 4 9
statsmodels
将我拥有的一些数据拟合到Python中的VAR时间序列模型时,我收到了一个错误,其文档如下所示:
我拥有的数据可以在数据框df_IBM_training
中找到,如下所示:
date sym open high low close newscount
6 2014.08.05 IBM 189.30 189.3000 186.4100 187.0800 4
9 2014.08.06 IBM 185.80 186.8800 184.4400 185.9000 0
12 2014.08.07 IBM 186.56 186.8800 1.0000 184.2800 2
15 2014.08.08 IBM 183.32 186.6800 183.3200 186.5499 18
我想要构建的模型VAR如下所示,我试图在下面的代码中创建回归器。我还尝试在下面的代码中搜索理想的模型顺序,这就是我得到错误的地方。下式中的每个系数,示例包括α1,1,γ1,11与代码中的回归器关联:
Δlog(C_t) = α1,1(log(C_t - 1) − log(O_t-1))
+ α1,2(log(C_t - 1) − log(H_t-1))
+ α1,3(log(C_t - 1) − log(L_t-1))
+ γ1,11Δlog(C_t − 1)
+ γ1,12Δlog(O_t − 1)
+ γ1,13Δlog(H_t − 1)
+ γ1,14Δlog(L_t − 1)
+ εt
我的代码如下。由于某些原因,我在模型行中遇到以下错误。请选择订单(8)
:
numpy.linalg.linalg.LINALGRORM第7前导小调非半正定
编辑:下面是回溯错误:
Traceback (most recent call last):
File "TimeSeries.py", line 70, in <module>
model.select_order(8)
File "C:\Python34\lib\site-packages\statsmodels\tsa\vector_ar\var_model.py", line 505, in select_order
for k, v in iteritems(result.info_criteria):
File "C:\Python34\lib\site-packages\statsmodels\base\wrapper.py", line 35, in __getattribute__
obj = getattr(results, attr)
File "C:\Python34\lib\site-packages\statsmodels\tools\decorators.py", line 94, in __get__
_cachedval = self.fget(obj)
File "C:\Python34\lib\site-packages\statsmodels\tsa\vector_ar\var_model.py", line 1468, in info_criteria
ld = logdet_symm(self.sigma_u_mle)
File "C:\Python34\lib\site-packages\statsmodels\tools\linalg.py", line 213, in logdet_symm
c, _ = linalg.cho_factor(m, lower=True)
File "C:\Python34\lib\site-packages\scipy\linalg\decomp_cholesky.py", line 132, in cho_factor
check_finite=check_finite)
File "C:\Python34\lib\site-packages\scipy\linalg\decomp_cholesky.py", line 30, in _cholesky
raise LinAlgError("%d-th leading minor not positive definite" % info)
numpy.linalg.linalg.LinAlgError: 5-th leading minor not positive definite
回溯(最近一次呼叫最后一次):
文件“TimeSeries.py”,第70行,在
型号。选择订单(8)
文件“C:\Python34\lib\site packages\statsmodels\tsa\vector\u ar\var\u model.py”,第505行,按选择顺序排列
对于iteritems中的k、v(结果信息标准):
文件“C:\Python34\lib\site packages\statsmodels\base\wrapper.py”,第35行,在\uu getattribute中__
obj=getattr(结果,attr)
文件“C:\Python34\lib\site packages\statsmodels\tools\decorators.py”,第94行,在__
_cachedval=self.fget(obj)
文件“C:\Python34\lib\site packages\statsmodels\tsa\vector\u ar\var\u model.py”,第1468行,信息标准
ld=logdet\u symm(self.sigma\u mle)
文件“C:\Python34\lib\site packages\statsmodels\tools\linalg.py”,第213行,在logdet_symm中
c、 _u=linalg.cho_系数(m,下限=真)
文件“C:\Python34\lib\site packages\scipy\linalg\decomp\u cholesky.py”,第132行,cho\u因子
check_finite=check_finite)
文件“C:\Python34\lib\site packages\scipy\linalg\decomp\u cholesky.py”,第30行,在\u cholesky中
raise LINALGEROR(“%d-th前导小调非正定”%info)
numpy.linalg.linalg.linalg错误:第5个前导小调非正定
您的样本量是多少?你估计每个方程有8*7+1个参数,总共是7倍。此外,Python还提供了很好的回溯。您需要至少显示最后几行,最好是全部,以查看引发异常的位置。我无法猜测具体的LinalError,因为我以前从未见过它。如果可以确定引发linalg错误的原因,那么提供更好的异常或异常消息将非常有用。用于打开一个问题。@user333700我的样本大小只有65个数据点。实际上,我只估计了7个参数,从α1,1到γ1,14(如我问题中的等式所示),每次t。我还编辑了问题以显示回溯错误。但是您正在使用maxlags=8
调用select\u order
,这意味着它试图找到最多8个滞后的最佳模型。具有8个滞后的VAR具有8*7个滞后参数+每个方程的常数,并且我们失去了初始条件下的最大滞后观测值。如果您只想估计具有1个滞后的模型,则不要使用select\u order
。实际的例外是信息标准的对数似然计算,这意味着它能够估计参数,我想。@user333700谢谢。但是,我去掉了这一行,当我添加行results=model.fit(1)results.summary()results.plot()
时,仍然存在与其中一个子项相关的非正半确定性问题。错误出现在results.summary()
行中,基本上与上次的回溯错误非常相似。
Traceback (most recent call last):
File "TimeSeries.py", line 70, in <module>
model.select_order(8)
File "C:\Python34\lib\site-packages\statsmodels\tsa\vector_ar\var_model.py", line 505, in select_order
for k, v in iteritems(result.info_criteria):
File "C:\Python34\lib\site-packages\statsmodels\base\wrapper.py", line 35, in __getattribute__
obj = getattr(results, attr)
File "C:\Python34\lib\site-packages\statsmodels\tools\decorators.py", line 94, in __get__
_cachedval = self.fget(obj)
File "C:\Python34\lib\site-packages\statsmodels\tsa\vector_ar\var_model.py", line 1468, in info_criteria
ld = logdet_symm(self.sigma_u_mle)
File "C:\Python34\lib\site-packages\statsmodels\tools\linalg.py", line 213, in logdet_symm
c, _ = linalg.cho_factor(m, lower=True)
File "C:\Python34\lib\site-packages\scipy\linalg\decomp_cholesky.py", line 132, in cho_factor
check_finite=check_finite)
File "C:\Python34\lib\site-packages\scipy\linalg\decomp_cholesky.py", line 30, in _cholesky
raise LinAlgError("%d-th leading minor not positive definite" % info)
numpy.linalg.linalg.LinAlgError: 5-th leading minor not positive definite