标签: statsmodels

网格搜索在 python statsmodels 中自动选择 SARIMAX 订单模型

我目前正在编写一个函数来对 SARIMAX 模型的阶数进行网格搜索:(p,q,d)X(P,Q,D,s)。但是,在拟合时,使用 statsmodels.tsa.SARIMAX() 的默认设置,我经常会遇到以下类型的错误:

ValueError: Non-stationary starting autoregressive parameters found with `enforce_stationarity` set to True.
Run Code Online (Sandbox Code Playgroud)

或者

ValueError: non-invertible starting MA parameters found with `enforce_invertibility` set to True.
Run Code Online (Sandbox Code Playgroud)

我可以停止强制执行平稳性和可逆性来停止出现这些错误,但是,据我所知,我不希望模型参数创建不可逆的模型。

是否可以放松enforce_stationarity和enforce_invertibility参数,或者这会导致糟糕的模型吗?

python time-series statsmodels

6
推荐指数
1
解决办法
5421
查看次数

statsmodels安装:numpy.distutils中没有名为“ numpy.distutils._msvccompiler”的模块;从distutils尝试

这似乎是一个普遍的问题,但是所有答案似乎都没有帮助。statsmodels在Windows 10中安装时(安装了python 3.6.2),该错误会弹出:

python setup.py install
Run Code Online (Sandbox Code Playgroud)

在此之前,numpy已安装:

python numpy install
Run Code Online (Sandbox Code Playgroud)

没有错误,我认为这是成功的。但是的安装statsmodels仍然存在statsmodels安装错误。

我确实安装了MS c ++编译器(2015)。我也安装了最新的Anaconda(python 3.6.1),但没有帮助。以下是已安装的VC ++编译器的列表。

在此处输入图片说明

python numpy statsmodels

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

Statsmodels-如何对线性滞后回归阶数高于 1 的多元 SARIMAX 进行建模

我正在使用 SARIMAX 耦合模型 (statsmodels.tsa.statespace.sarimax.SARIMAX) 对两个季节性时间序列之间的相关性进行建模。内生变量为 y(t),外生变量为 x(t)。我的目标是使用 x(t) 作为预测变量来预测 y(t)。

\n\n

我对 SARIMAX(p,d,q, r )\xe2\x88\x99(P,D,Q)s 过程的理解是将 y(t) 建模为 x(t) 的线性函数,误差项如下一个 SARIMA 过程:\​​ny(t)=c+\xce\xb21\xe2\x88\x99x(1,t)+\xce\xb22\xe2\x88\x99x(2,t)+\xe2\x8b\xaf+\ xce\xb2r\xe2\x88\x99x(r,t)+\xce\xb5(t) (参见链接中的完整方程\n SARIMAX 模型

\n\n

对于上述问题,我有两个问题:(1) 是否可以对高于 1 的滞后回归阶数“ r ”进行建模?\n(2) 一旦估计了 SARIMAX 模型方程,这是预测未来值的最佳方法考虑到 x(t) 是未来的已知变量,y(t) 作为 x(t) 的函数?我见过很多单变量 SARIMA 预测的示例,但没有看到多变量 SARIMAX 预测的示例。\n非常感谢。

\n

time-series python-3.x statsmodels

6
推荐指数
0
解决办法
1403
查看次数

statsmodels seasonal_decompose - 什么是天真的呢?

一直在使用Python中的时间序列,并使用sm.tsa.seasonal_decompose.在文档中,他们介绍了这样的函数:

我们添加了一个天真的季节性分解工具,与R的相同decompose.

以下是文档及其输出的代码副本:

import statsmodels.api as sm

dta = sm.datasets.co2.load_pandas().data
# deal with missing values. see issue
dta.co2.interpolate(inplace=True)

res = sm.tsa.seasonal_decompose(dta.co2)
res.plot()
Run Code Online (Sandbox Code Playgroud)

季节性分解图

他们说这是天真的,但没有关于它有什么问题的免责声明.有人知道吗?

python r time-series statsmodels

6
推荐指数
1
解决办法
3702
查看次数

使用 python statsmodels api 绘制分位数-分位数图

我想看看具有特定参数的正态分布是否适合数据集。然而 qqplot 似乎并没有像预期的那样工作。下面的小例子展示了这一点:

import numpy as np
import statsmodels.api as sm
import pylab

test = np.random.normal(20,5, 1000)

sm.qqplot(test, loc = 20, scale = 5 ,  line='45')
pylab.show()
Run Code Online (Sandbox Code Playgroud)

正如人们所看到的,我期望这些点位于斜率 = 1 的线周围,但它给出了下图:

QQ剧情

谁能解释一下为什么会发生这种情况?

python statsmodels

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

如何训练具有多个系列的 statsmodels.tsa.ARIMA 模型

使用 statsmodels python 包拟合 ARIMA 模型的常用方法是:

model  = statsmodels.tsa.ARMA(series, order=(2,2))
result = model.fit(trend='nc', disp=1)
Run Code Online (Sandbox Code Playgroud)

但是,我有多个时间序列数据可供训练,例如,来自同一底层过程,我该怎么做?

python machine-learning time-series statsmodels

6
推荐指数
1
解决办法
1739
查看次数

我怎样才能在Python中测试wald?

我想测试一个假设“截距 = 0,beta = 1”,所以我应该进行 Wald 测试并使用模块“statsmodel.formula.api”。

但我不确定在进行 Wald 测试时哪个代码是正确的。

from statsmodels.datasets import longley
import statsmodels.formula.api as smf
data = longley.load_pandas().data

hypothesis_0 = '(Intercept = 0, GNP = 0)'
hypothesis_1 = '(GNP = 0)'
hypothesis_2 = '(GNP = 1)'
hypothesis_3 = '(Intercept = 0, GNP = 1)'
results = smf.ols('TOTEMP ~ GNP', data).fit()
wald_0 = results.wald_test(hypothesis_0)
wald_1 = results.wald_test(hypothesis_1)
wald_2 = results.wald_test(hypothesis_2)
wald_3 = results.wald_test(hypothesis_3)

print(wald_0)
print(wald_1)
print(wald_2)
print(wald_3)

results.summary()
Run Code Online (Sandbox Code Playgroud)

我一开始认为假设_3 是正确的。

但假设_1 的结果与回归的 F 检验相同,表示假设“截距 = 0 且 beta …

python-3.x statsmodels

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

访问 statsmodels 中的各个参数

我使用 statsmodels.api 检查不同变量组合的统计参数。您可以使用print(results.summary())来获取

                            OLS Regression Results                            
==============================================================================
Dep. Variable:                      y   R-squared:                       0.454
Model:                            OLS   Adj. R-squared:                  0.454
Method:                 Least Squares   F-statistic:                     9694.
Date:                Mon, 30 Jul 2018   Prob (F-statistic):               0.00
Time:                        10:14:47   Log-Likelihood:                -9844.7
No. Observations:               11663   AIC:                         1.969e+04
Df Residuals:                   11662   BIC:                         1.970e+04
Df Model:                           1                                         
Covariance Type:            nonrobust                                         
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
x1            -1.4477      0.015    -98.460      0.000      -1.477      -1.419
==============================================================================
Omnibus:                     1469.705   Durbin-Watson:                   1.053
Prob(Omnibus):                  0.000   Jarque-Bera (JB):             2504.774
Skew:                           0.855 …
Run Code Online (Sandbox Code Playgroud)

python python-3.x statsmodels

6
推荐指数
1
解决办法
4998
查看次数

在 Python 中计算 t 检验的功效

我有以下 R 代码,想知道 Python 中的等效代码是什么

power.t.test(n=20,delta=40,sd=50,sig.level=0.05,type= "one.sample",alternative="one.sided") 
Run Code Online (Sandbox Code Playgroud)

预期输出是:

     One-sample t test power calculation 

              n = 20
          delta = 40
             sd = 50
      sig.level = 0.05
          power = 0.9641728
    alternative = one.sided
Run Code Online (Sandbox Code Playgroud)

python statistics scipy statsmodels

6
推荐指数
1
解决办法
4706
查看次数

如何在Python回归中添加“大于0且总和为1”的约束?

我正在使用statsmodels(向其他python选项开放)运行一些线性回归。我的问题是我需要回归分析不具有截距并将其约束在(0,1)范围内,并且总和为1。

我尝试过这样的事情(至少为1):

from statsmodels.formula.api import glm
import pandas as pd

df = pd.DataFrame({'revised_guess':[0.6], "self":[0.55], "alter_1":[0.45], "alter_2":[0.2],"alter_3":[0.8]})
mod = glm("revised_guess ~ self + alter_1 + alter_2 + alter_3 - 1", data=df)
res = mod.fit_constrained(["self + alter_1 + alter_2 + alter_3  = 1"],
                          start_params=[0.25,0.25,0.25,0.25])
res.summary()
Run Code Online (Sandbox Code Playgroud)

但仍在努力实施“非负”系数约束。

python linear-regression statsmodels

6
推荐指数
1
解决办法
563
查看次数