标签: statsmodels

使用 statsmodels 拟合负二项分布

我有一个数据集示例数据,其中包含特定时间内几周的到达率。

我发现这些数据呈负二项式分布。

Statsmodels 为此提供了一个拟合函数(http://statsmodels.sourceforge.net/devel/ generated/statsmodels.discrete.discrete_model.NegativeBinomial.html),但这需要 exog 和 endog 输入。

我认为我的数据集是 endog 输入,但是 exog 输入是什么?

第二个问题,如果拟合完成,我怎样才能得到p值?输出中是否提供了此内容?

提前致谢!

python statistics statsmodels

5
推荐指数
1
解决办法
2374
查看次数

seasonal_decompose 引发错误:TypeError:给定的 periodIndex。检查 `freq` 属性而不是使用 infer_freq

我正在尝试对常用的航空公司乘客数据集运行基本的seasonal_decompose,该数据集以这些行开头:

Month
1949-02    4.770685
1949-03    4.882802
1949-04    4.859812
1949-05    4.795791
1949-06    4.905275
1949-07    4.997212
1949-08    4.997212
1949-09    4.912655
1949-10    4.779123
1949-11    4.644391
1949-12    4.770685
1950-01    4.744932
1950-02    4.836282
1950-03    4.948760
1950-04    4.905275
1950-05    4.828314
1950-06    5.003946
1950-07    5.135798
1950-08    5.135798
Freq: M, Name: Passengers, dtype: float64
Run Code Online (Sandbox Code Playgroud)

我的索引类型是:

pandas.tseries.period.PeriodIndex
Run Code Online (Sandbox Code Playgroud)

我尝试运行一些非常简单的代码:

from statsmodels.tsa.seasonal import seasonal_decompose
log_passengers.interpolate(inplace = True)
decomposition = seasonal_decompose(log_passengers)
Run Code Online (Sandbox Code Playgroud)

这是错误的完整输出:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-113-bf122d457673> in <module>()
      1 from statsmodels.tsa.seasonal import seasonal_decompose
      2 log_passengers.interpolate(inplace = True)
----> …
Run Code Online (Sandbox Code Playgroud)

python pandas statsmodels

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

使用 statsmodels Python 包设置图例很困难

我目前正在使用 statsmodels Python 包来为我拥有的两个资产绘制自相关图(这是我硕士课程的一部分的财务作业),但我在设置图例以使标记对应时遇到问题为实际资产。例如,蓝色标记对应于“资产 A”,而绿色标记对应于“资产 B”。然而,图例中不断出现另外两行,我不知何故无法摆脱它们!我想做的就是有一个图例,其中有两个标记对应于每个资产,但是到目前为止,处理这个包的绘图绝对是一场噩梦,并且比处理 matplotlib 或我偶然发现的任何东西都要困难得多前!我当前的代码如下:

acf_assetA=sm.tsa.stattools.acf(returns_assetA,nlags=40)
acf_assetB=sm.tsa.stattools.acf(returns_assetB,nlags=40)
legendA='Asset A'
legendB='Asset B'
legendC='Asset C'
legendD='Asset B'
autocorr_plot1,ax1=plt.subplots(figsize=(6,5))
ax1.set_xlabel('Lag')
autocorr_plot1=sm.tsa.graphics.plot_acf(returns_assetA,ax=ax1,lags=np.arange(40),label='Asset A')
autocorr_plot2=sm.tsa.graphics.plot_acf(returns_assetB,ax=ax1,lags=np.arange(40),label='Asset B')
ax1.legend([legendA,legendB,legendC,legendD],loc='best',shadow=True)

return autocorr_plot1, autocorr_plot2, acf_assetA, acf_assetB
Run Code Online (Sandbox Code Playgroud)

知道这一点非常有用

returns_assetA, returns_assetB
Run Code Online (Sandbox Code Playgroud)

只是 Pandas 数据框中包含的资产的回报。

这就是我不断获得的图的样子(忽略图例的“资产 C”部分 - 我只是简单地这么说,因为我一直被迫为我的图例添加四个输入,以便显示绿色标记):

任何有关解决此传奇问题的帮助都将受到高度赞赏。预先非常感谢您!

python plot matplotlib legend statsmodels

5
推荐指数
1
解决办法
1481
查看次数

从 Python 中的 OLS 摘要获取 Durbin-Watson 和 Jarque-Bera 统计数据

我正在运行一列值的 OLS 摘要。OLS 的一部分是 Durbin-Watson 和 Jarque-Bera (JB) 统计数据,我想直接提取这些值,因为它们已经被计算出来,而不是像我现在使用 durbinwatson 那样将这些步骤作为额外步骤运行。

这是我的代码:

import pandas as pd
import statsmodels.api as sm

csv = mydata.csv
df = pd.read_csv(csv)
var = df[variable]
year = df['Year']
model = sm.OLS(var,year)
results = model.fit()
summary = results.summary()
print summary
#print dir(results)
residuals = results.resid
durbinwatson = statsmodels.stats.stattools.durbin_watson(residuals, axis=0)
print durbinwatson
Run Code Online (Sandbox Code Playgroud)

结果:

                           OLS Regression Results                            
==============================================================================
Dep. Variable:                    LST   R-squared:                       1.000
Model:                            OLS   Adj. R-squared:                  1.000
Method:                 Least Squares   F-statistic:                 3.026e+05
Date:                Fri, 10 Nov 2017   Prob …
Run Code Online (Sandbox Code Playgroud)

python statistics least-squares statsmodels

5
推荐指数
1
解决办法
3311
查看次数

Statsmodels Python 缺失值

我目前正在开发一个项目,我必须填写一些缺失的值。我使用Python,我看到有一种算法可以进行缺失数据插补。该算法称为 Nipals。因此,我决定寻找一种使用它的方法,我发现 statsmodels.multivariate.pca.PCA 可以帮助我。

我有一个名为 A 的 numpy 数组,其中包含 n 行和 p 列。A 有一些缺失值,即 NaN 值。我想用PCA来填充A。但是,没有例子可以帮助我做到这一点。

有人可以帮我用 Nipals 算法填充 A 吗?

谢谢。注意:抱歉,我是法语初学者,使用英文文档对我来说并不容易。

python missing-data pca statsmodels

5
推荐指数
1
解决办法
1430
查看次数

QuantileRegression ValueError:操作数无法与形状一起广播

我正在尝试使用 Python 中的分位数回归来预测我的目标变量。

我考虑用于训练和验证的数据来自2015年10月至2017年12月31日期间。

现在模型已经开发出来,我正在尝试预测 2018 年 1 月的值,这会引发以下错误:

ValueError:操作数无法与形状 (34,) (33,) 一起广播

mod = smf.quantreg('ASBCU_SUM~Month+Year+WeekofMonth+DayNum+isHoliday+PCOP_CS+PCOP_LS+PCOP_IFS+PCOP_LSS+PCOP_FSS+PCOP_FS+DayOfWeek_6+DayOfWeek_5+DayOfWeek_2+DayOfWeek_7+DayOfWeek_3+DayOfWeek_4',dfTrainingData)

res = mod.fit(q=0.8)
Run Code Online (Sandbox Code Playgroud)

如果我检查,错误来自 statmodels 内的分位数回归.py 文件。

diff = np.max(np.abs(beta - beta0))
Run Code Online (Sandbox Code Playgroud)

我已经浏览过有关堆栈溢出的类似帖子,建议检查目标变量的数据类型是否为数字。这是变量的数据类型:

ASBCU_SUM:int64

月份:类别

年份:类别

每月一周:类别

是假期:int64

DayNum:int32

PCOP_SUM:int64

PCOP_CS:int64

PCOP_LS:int64

PCOP_IFS:int64

PCOP_LSS:int64

PCOP_FS:int64

PCOP_FSS:int64

DayOfWeek_3:float64

DayOfWeek_2:float64

DayOfWeek_5:float64

DayOfWeek_7:float64

DayOfWeek_4:float64

DayOfWeek_6:float64

使用 2015-2017 年数据开发模型时数据类型相同。

我真的很感谢任何帮助..

python pandas statsmodels quantile-regression

5
推荐指数
1
解决办法
2360
查看次数

statsmodels 二维核回归

我有一个包含 3 列的数据框['X', 'Y', 'Z'],我想研究X和如何Y影响 的分布Z。为此,我想使用 nadaraya watson 的非参数回归器。在 statsmodels 中有一个名为 KernelReg 的类来实现它。

虽然我能够成功运行一维回归的代码(Zon Xand Zon Y),但我很难运行它来进行二维回归。

我的代码如下:XYZ是我的数据框

xv = XYZ['X'].values; yv = XYZ['Y'].values; zv = XYZ['Z'].values

from statsmodels.nonparametric.kernel_regression import KernelReg
ksrmv = KernelReg(endog=zv, exog= [xv, yv], var_type='c')
Run Code Online (Sandbox Code Playgroud)

我得到的错误是cannot reshape array of size 3171442 into shape (2,1)

xv.shape = yv.shape = zv.shape =(1585721,)
Run Code Online (Sandbox Code Playgroud)

我已经尝试了指定 exog 的不同替代方法,例如

XYZ.loc[:, ['X', 'Y']] or XYZ.loc[:, ['X', 'Y']].values or …
Run Code Online (Sandbox Code Playgroud)

python statsmodels

5
推荐指数
1
解决办法
3264
查看次数

无法使用 statsmodels 库实现 Holt-Winters 方法

我有一个月的每日数据。它每天捕获cpu utilization数据。我想产生一些预测结果。我将数据分为两部分train- 前15天的数据和test最后16天的数据我想做一个预测,并将预测结果与给定的过去16天的结果进行比较。到目前为止,我已经尝试了各种实现,例如moving average, 。simple exponential smoothing现在我想尝试更复杂和准确的东西,例如Holt-Winters MethodARIMA model。下面是我的结果get forHolt's Linear Trend方法考虑了趋势和季节性。

在此输入图像描述

现在我想实现Holts Winter method这是首选的预测技术之一。下面是代码

# get the first 15 days
df_train = psql.read_sql("SELECT date,cpu FROM {} where date between '{}' and '{} 23:59:59';".format(conf_list[1], '2018-03-02', '2018-03-16'), conn).fillna(0)
df_train["date"] = pd.to_datetime(df_train["date"], format="%m-%d-%Y")
df_train.set_index("date", inplace=True)
df_train = df_train.resample('D').mean().fillna(0)

# get the last 15 days
df_test = psql.read_sql("SELECT date,cpu …
Run Code Online (Sandbox Code Playgroud)

forecasting python-3.x pandas statsmodels holtwinters

5
推荐指数
1
解决办法
7287
查看次数

如何解释Python OLS Statsmodel的汇总表?

我有一个连续因变量 y 和一个名为 control_grid 的独立分类变量 x。x 包含两个变量:c 和 g

使用 python 包 statsmodel 我试图查看自变量是否对 y 变量有显着影响,如下所示:

model = smf.ols('y ~ c(x)', data=df)
results = model.fit()
table = sm.stats.anova_lm(results, typ=2)
Run Code Online (Sandbox Code Playgroud)

打印该表将其作为输出:

     OLS Regression Results                            
==============================================================================
Dep. Variable:          sedimentation   R-squared:                       0.167
Model:                            OLS   Adj. R-squared:                  0.165
Method:                 Least Squares   F-statistic:                     86.84
Date:                Fri, 13 Jul 2018   Prob (F-statistic):           5.99e-19
Time:                        16:15:51   Log-Likelihood:                -2019.2
No. Observations:                 436   AIC:                             4042.
Df Residuals:                     434   BIC:                             4050.
Df Model:                           1                                         
Covariance Type:            nonrobust                                         
=====================================================================================
                        coef    std …
Run Code Online (Sandbox Code Playgroud)

python statistics anova statsmodels

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

Statsmodels:使用 ARIMA 实施直接和递归多步骤预测策略

我目前正在尝试使用 statsmodels ARIMA 库实现直接和递归多步骤预测策略,它提出了一些问题。

递归多步预测策略将训练单步模型,预测下一个值,将预测值附加到输入预测方法的外生值的末尾并重复。这是我的递归实现:

def arima_forecast_recursive(history, horizon=1, config=None):
    # make list so can add / remove elements
    history = history.tolist()
    model = ARIMA(history, order=config)
    model_fit = model.fit(trend='nc', disp=0)

    for i, x in enumerate(history):
        yhat = model_fit.forecast(steps=1, exog=history[i:])
        yhat.append(history)
    return np.array(yhat)

def walk_forward_validation(dataframe, config=None):
    n_train = 52  # Give a minimum of 2 forecasting periods to capture any seasonality
    n_test = 26  # Test set should be the size of one forecasting horizon
    n_records = len(dataframe)
    tuple_list = []

    for …
Run Code Online (Sandbox Code Playgroud)

python time-series forecasting statsmodels forecast

5
推荐指数
1
解决办法
4807
查看次数