- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试在两个时间序列上运行 grangercausalitytests
:
import numpy as np
import pandas as pd
from statsmodels.tsa.stattools import grangercausalitytests
n = 1000
ls = np.linspace(0, 2*np.pi, n)
df1 = pd.DataFrame(np.sin(ls))
df2 = pd.DataFrame(2*np.sin(1+ls))
df = pd.concat([df1, df2], axis=1)
df.plot()
grangercausalitytests(df, maxlag=20)
但是,我得到了
Granger Causality
number of lags (no zero) 1
ssr based F test: F=272078066917221398041264652288.0000, p=0.0000 , df_denom=996, df_num=1
ssr based chi2 test: chi2=272897579166972095424217743360.0000, p=0.0000 , df=1
likelihood ratio test: chi2=60811.2671, p=0.0000 , df=1
parameter F test: F=272078066917220553616334520320.0000, p=0.0000 , df_denom=996, df_num=1
Granger Causality
number of lags (no zero) 2
ssr based F test: F=7296.6976, p=0.0000 , df_denom=995, df_num=2
ssr based chi2 test: chi2=14637.3954, p=0.0000 , df=2
likelihood ratio test: chi2=2746.0362, p=0.0000 , df=2
parameter F test: F=13296850090491009488285469769728.0000, p=0.0000 , df_denom=995, df_num=2
...
/usr/local/lib/python3.5/dist-packages/numpy/linalg/linalg.py in _raise_linalgerror_singular(err, flag)
88
89 def _raise_linalgerror_singular(err, flag):
---> 90 raise LinAlgError("Singular matrix")
91
92 def _raise_linalgerror_nonposdef(err, flag):
LinAlgError: Singular matrix
我不确定为什么会这样。
最佳答案
问题的出现是由于您数据中两个系列之间的完美相关性。从回溯中,您可以看到,内部使用 wald 检验来计算滞后时间序列参数的最大似然估计。为此,需要估计参数协方差矩阵(然后接近于零)及其逆矩阵(正如您在 invcov = np.linalg.inv(cov_p)
行中看到的那样)回溯)。对于某个最大滞后数 (>=5),这个接近零的矩阵现在是奇异的,因此测试崩溃了。如果您在数据中加入一点噪音,错误就会消失:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from statsmodels.tsa.stattools import grangercausalitytests
n = 1000
ls = np.linspace(0, 2*np.pi, n)
df1Clean = pd.DataFrame(np.sin(ls))
df2Clean = pd.DataFrame(2*np.sin(ls+1))
dfClean = pd.concat([df1Clean, df2Clean], axis=1)
dfDirty = dfClean+0.00001*np.random.rand(n, 2)
grangercausalitytests(dfClean, maxlag=20, verbose=False) # Raises LinAlgError
grangercausalitytests(dfDirty, maxlag=20, verbose=False) # Runs fine
关于python - 为什么我从 grangercausalitytests 得到 "LinAlgError: Singular matrix"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44305456/
代码: import numpy from matplotlib.mlab import PCA file_name = "store1_pca_matrix.txt" ori_data = nump
我在为 ARIMA 建模和检查 MSE 时遇到了一个奇怪的问题。 这是我正在尝试的代码。 from sklearn.metrics import mean_squared_error import s
下面的调用: rbf = Rbf(points[0], points[1], values,epsilon=2) 导致错误: LinAlgError: singular matrix 具有以下值: I
在我尝试对周期性边界条件二维数组的方差-协方差矩阵执行 cholesky 分解时,在某些参数组合下,我总是得到 LinAlgError: Matrix is not positive definite
背景:我正在开发一个使用statsmodels的程序,该程序适合27个arima模型(p,d,q = 0,1,2)到100多个变量,并为AR/选择具有最低aic和具有统计意义的t统计量的模型Dicke
这是我的 numpy 数组: z [[ 3.90311860e-322 1.83939721e-001] [ 0.00000000e+000 1.83939721e-001] [ 0
我有一个数组: Num Col2 Col3 Col4 1 6 1 1 2 60 0 2 3 60 0 1 4 6 0
我正在尝试在两个时间序列上运行 grangercausalitytests: import numpy as np import pandas as pd from statsmodels.tsa.s
我需要解一组形式为 的联立方程组一个 x = 乙 对于 x。我使用了 numpy.linalg.solve 函数,输入了 A 和 B,但我收到错误“LinAlgError:数组的最后 2 个维度必须是
我有一些分散的一维数据集,我想使用 scipy.interpolate.Rbf 函数对 rbf 函数进行插值。但是,对于一组特定的数据,插值似乎无法给出 LinAlgError:奇异矩阵错误。 x-y
我有一些分散的一维数据集,我想使用 scipy.interpolate.Rbf 函数对 rbf 函数进行插值。但是,对于一组特定的数据,插值似乎无法给出 LinAlgError:奇异矩阵错误。 x-y
我正在使用 Pycharm 运行机器学习界面代码。 SVM 算法不断使我的界面崩溃,并出现以下错误: line 1220, in pushButton_8_handlerax1 = sns.distp
我正在为具有 34 个因变量的 logit 模型建模数据,并且它不断抛出奇异矩阵错误,如下所示 -: Traceback (most recent call last): File "", lin
我在尝试使用 scipy.stats.multivariate_normal 时遇到问题,希望你们中的某个人能够提供帮助。 我有一个 2x2 矩阵,可以找到使用 numpy.linalg.inv()
导入tensorflow时出现以下错误: Intel MKL ERROR: Parameter 4 was incorrect on entry to DLASCL. Intel MKL ERROR:
我一直在努力解决一个已知并记录在案的 SVD 收敛问题。在阅读了其他人提出的类似问题后,我仔细检查了我的数据并将其缩减为一个很小的 DataFrame——只有 10 行/2 列——都是 float
标题说明了一切。我正在调用 np.linalg.eig 并收到此错误消息,但如果我调用 np.isnan(X).any() 或 np.isinf (X).any() 它们都返回 False 我用来进行
我是一名优秀的程序员,十分优秀!