标签: statsmodels

numpy.linalg.linalg.LinAlgError:SVD没有收敛

这是我的numpy数组:

z 
[[  3.90311860e-322   1.83939721e-001]
 [  0.00000000e+000   1.83939721e-001]
 [  0.00000000e+000   9.96473555e-001]
 [  0.00000000e+000   1.83939721e-001]
 [  0.00000000e+000   1.03585447e+000]
 [  0.00000000e+000   1.83939721e-001]
 [  0.00000000e+000   1.83939721e-001]
 [  0.00000000e+000   9.41400244e-001]
 [  0.00000000e+000   1.01817846e+000]
 [  0.00000000e+000   1.83939721e-001]]
weights
[[ -1.76457791 -24.11966074]
 [ -2.69231436 -24.11966074]
 [-24.11966074  -2.0106293 ]
 [ -1.99135789 -24.11966074]
 [-24.11966074  -1.89735781]
 [ -2.01441034 -24.11966074]
 [ -2.37736986 -24.11966074]
 [-24.11966074  -2.19061707]
 [-24.11966074  -1.94675704]
 [ -1.5983523  -24.11966074]]
X
[[   0.     2.5  100. ]
 [   2.     5.    80. ]
 [  31.    50.   -11. ]
 [  -0.5    2.    90. …
Run Code Online (Sandbox Code Playgroud)

python arrays numpy statsmodels

2
推荐指数
1
解决办法
2万
查看次数

ConvergenceWarning:最大似然减慢内核运行时间?

我使用非常nicht 的代码对象arma_order_select_ic来找到最低的信息标准来选择 p- 和 q 值。

我不确定我是否做得对,或者代码是否只是偶然发现了一些错误......

在:

y = indexed_df
res = arma_order_select_ic(y, max_ar=7, max_ma=7, ic=['aic', 'bic', 'hqic'], trend='c', fit_kw=dict(method='css'))
print res
print ('AIC-order: {}' .format(res.aic_min_order))
print ('BIC-order: {}' .format(res.bic_min_order))
print ('HQIC-order: {}' .format(res.hqic_min_order)) 
Run Code Online (Sandbox Code Playgroud)

出去:

/Applications/anaconda/lib/python2.7/site-packages/statsmodels-0.6.1-py2.7-macosx-10.5-x86_64.egg/statsmodels/base/model.py:466: ConvergenceWarning: Maximum Likelihood optimization failed to converge. Check mle_retvals
  "Check mle_retvals", ConvergenceWarning)
Run Code Online (Sandbox Code Playgroud)

另外:它打印出三个矩阵样式列表(每个 IC 一个矩阵)和最终推荐:

AIC-order: (7, 5)
BIC-order: (7, 0)
HQIC-order: (7, 0)
Run Code Online (Sandbox Code Playgroud)

所以,整件事似乎都奏效了。

问题是,每次计算都会打印警告,大约需要 30-60 秒,即它非常慢!

我检查了相关的源代码(statsmodels/base/model.py)以及如何跳过打印 CovergenceWarning:

   #TODO: hardcode scale?
        if isinstance(retvals, dict):
            mlefit.mle_retvals = retvals
            if warn_convergence …
Run Code Online (Sandbox Code Playgroud)

python time-series forecasting statsmodels

2
推荐指数
1
解决办法
1万
查看次数

Statsmodels - 线性回归模型 (OLS) 中系数趋势显着性的 Wald 检验

我使用 Statsmodels 生成了一个 OLS 线性回归模型,以基于大约 10 个自变量来预测因变量。自变量都是分类的。

我有兴趣仔细研究其中一个自变量的系数的显着性。有 4 个类别,因此有 3 个系数——每个系数都非常显着。我还想看看趋势在所有 3 个类别中的重要性。根据我的(有限的)理解,这通常是使用 Wald 检验并将所有系数与 0 进行比较来完成的。

这是如何使用 Statsmodels 完成的?我看到 OLS 函数有一个 Wald 测试方法。使用此方法时,您似乎必须传入所有系数的值。

我的方法如下......

首先,这里是所有的系数:

np.array(lm.params) = array([ 0.21538725,  0.05675108,  0.05020252,  0.08112228,  0.00074715,
        0.03886747,  0.00981819,  0.19907263,  0.13962354,  0.0491201 ,
       -0.00531318,  0.00242845, -0.0097336 , -0.00143791, -0.01939182,
       -0.02676771,  0.01649944,  0.01240742, -0.00245309,  0.00757727,
        0.00655152, -0.02895381, -0.02027537,  0.02621716,  0.00783884,
        0.05065323,  0.04264466, -0.13068456, -0.15694931, -0.25518566,
       -0.0308599 , -0.00558183,  0.02990139,  0.02433505, -0.01582824,
       -0.00027538,  0.03170669,  0.01130944,  0.02631403])
Run Code Online (Sandbox Code Playgroud)

我只对参数 2-4 感兴趣(这是 3 个感兴趣的系数)。

coeffs = np.zeros_like(lm.params) …
Run Code Online (Sandbox Code Playgroud)

python statistics linear-regression statsmodels

2
推荐指数
1
解决办法
5028
查看次数

熊猫交叉表中的加权结果

我想使用第三列来加权熊猫交叉表中的结果。

例如,以下内容:

import pandas as pd
df = pd.DataFrame({'A': ['foo', 'bar', 'foo', 'bar', 'bar'],
                   'B': [1, 1, 0, 0, 0],
                   'weight': [2, 3, 4, 5, 6]})
print(pd.crosstab(df.A, df.B))
Run Code Online (Sandbox Code Playgroud)

结果是:

B    0  1
A        
bar  2  1
foo  1  1
Run Code Online (Sandbox Code Playgroud)

我想要的结果是:

B     0  1
A        
bar  11  3
foo   4  2
Run Code Online (Sandbox Code Playgroud)

python crosstab scipy pandas statsmodels

2
推荐指数
1
解决办法
2416
查看次数

检测高度相关的属性

scikit-learn 可以用于去除使用多元线性回归时高度相关的特征吗?

关于@behzad.nouri 发布的在 statsmodels 中捕获高度多重共线性的答案,我有一些问题可以避免我的困惑。

于是,他检验了自变量的5列或特征之间的高度多重共线性;每列有 100 行或数据。他得到 w[0] 接近于零。那么我可以说应该删除第一列或第一个自变量以避免非常高的多重共线性吗?

python scipy scikit-learn statsmodels

2
推荐指数
1
解决办法
5279
查看次数

带有 AR 错误的线性回归模型 python

是否有一个 python 包(statsmodels/scipy/pandas/etc...)具有用于在 python 中估计具有自回归误差的线性回归模型的系数的功能,例如下面的 SAS 实现?http://support.sas.com/documentation/cdl/en/etsug/63348/HTML/default/viewer.htm#etsug_autoreg_sect003.htm

python pandas statsmodels

2
推荐指数
1
解决办法
3424
查看次数

python sm.ols更改摘要格式以避免科学记数法

我正在运行一个ols模型,我需要知道所有系数,所以我可以在我的分析中使用它们.如何以与科学计数法不同的格式显示/保存系数?

model = sm.ols(formula="sales ~ product_category + quantity_bought + quantity_ordered + quantity_returned + season", data=final_email).fit()
print model.summary()

OLS Regression Results                            
==============================================================================
Dep. Variable:                sales   R-squared:                       0.974
Model:                            OLS   Adj. R-squared:                  0.938
Method:                 Least Squares   F-statistic:                     27.26
Date:                Tue, 18 Apr 2017   Prob (F-statistic):           5.39e-13
Time:                        11:43:36   Log-Likelihood:                -806.04
No. Observations:                  60   AIC:                             1682.
Df Residuals:                      25   BIC:                             1755.
Df Model:                          34                                         
Covariance Type:            nonrobust                                         
======================================================================================
                         coef    std err          t      P>|t|      [95.0% Conf. Int.]
--------------------------------------------------------------------------------------
Intercept            -2.79e+05   2.883e+05     -0.987      0.333     -8.92e+05 …
Run Code Online (Sandbox Code Playgroud)

python format regression statsmodels

2
推荐指数
2
解决办法
1007
查看次数

我们如何在 statsmodels OLS 中计算截距和斜率?

在这里我问了如何在线性模型中计算 AIC。如果我用LinearRegression()方法替换方法linear_model.OLS以获得 AIC,那么如何计算 OLS 线性模型的斜率和截距?

import statsmodels.formula.api as smf
regr = smf.OLS(y, X, hasconst=True).fit()
Run Code Online (Sandbox Code Playgroud)

python linear-regression scikit-learn statsmodels

2
推荐指数
1
解决办法
6320
查看次数

Statsmodels 抛出“exp 溢出”和“日志中除以零”警告,伪 R 平方是 -inf

我想使用 Statsmodels 在 Python 中进行逻辑回归。

X 和 y 各有 750 行,y 是二元结果,X 中是 10 个特征(包括截距)。

这是 X 的前 12 行(最后一列是截距):

      lngdp_      lnpop    sxp      sxp2    gy1    frac  etdo4590  geogia  \
0   7.367709  16.293980  0.190  0.036100 -1.682   132.0         1   0.916   
1   7.509883  16.436258  0.193  0.037249  2.843   132.0         1   0.916   
2   7.759187  16.589224  0.269  0.072361  4.986   132.0         1   0.916   
3   7.922261  16.742384  0.368  0.135424  3.261   132.0         1   0.916   
4   8.002359  16.901037  0.170  0.028900  1.602   132.0         1   0.916   
5   7.929126  17.034786  0.179  0.032041 -1.465 …
Run Code Online (Sandbox Code Playgroud)

python statistics statsmodels logistic-regression

2
推荐指数
1
解决办法
4272
查看次数

Statsmodels 混合线性模型预测

我正在使用 Python 中的 statsmodels MixedLM 包估计混合线性模型。拟合模型后,我现在想进行预测,但正在努力理解“预测”方法。

statsmodels 文档 ( http://www.statsmodels.org/dev/generated/statsmodels.regression.mixed_linear_model.MixedLM.predict.html ) 表明 predict 方法采用包含已估计模型参数的数组。我怎样才能检索这个数组?

y = raw_data['dependent_var']
X = raw_data[['var1', 'var2', 'var3']]
groups = raw_data['person_id']

model = sm.MixedLM(endog=y, exog=X, groups=groups)
result = model.fit()
Run Code Online (Sandbox Code Playgroud)

python python-3.x mixed-models statsmodels panel-data

2
推荐指数
1
解决办法
1470
查看次数