Python statsmodels 稳健的 cov_type='hac-panel' 问题

2023-12-22

我希望这是我提出问题的正确地点。

我想了解运行 sm.OLS 时如何使用“hac-panel”cov_type。我已经为此奋斗了一整天,但仍然无法弄清楚。这是我的代码示例(带有数据):

import pandas as pd
import statsmodels.api as sm
import statsmodels.formula.api as smf
from pandas.tseries.offsets import *

# Just grabbing some random data here
dat = sm.datasets.macrodata.load_pandas().data
dat['time'] = dat['year'].apply(lambda x: pd.to_datetime(x, format='%Y'))
dat['time'] = dat.apply(lambda x:(x['time'] + BQuarterBegin(x['quarter'])), axis=1)
dat = dat.set_index('time')
dat = dat.sort_index()
dat['dGDP'] = (dat['realgdp'] - dat['realgdp'].shift(1))/dat['realgdp'].shift(1) * 100.0
dat['dM1'] = (dat['m1'] - dat['m1'].shift(1))/dat['m1'].shift(1) * 100.0
dat['dUEMP'] = dat['unemp'] - dat['unemp'].shift(1)
dat['dCPI'] = dat['infl'] - dat['infl'].shift(1)
dat = dat[['dGDP', 'dM1', 'dUEMP', 'dCPI']]

# Fitting the model
y_var = dat.unstack()
x_var = pd.DataFrame(dat.shift(1).unstack(), columns=['01m']).combine_first(pd.DataFrame(dat.shift(3).unstack(), columns=['03m'])).combine_first(pd.DataFrame(dat.shift(12).unstack(), columns=['12m']))

model = sm.OLS(y_var, sm.add_constant(x_var), missing='drop')

这是有效的 - 据我了解它执行 HAC cov 的文档。但是,我不确定我是否正确调用它

res = model.fit(cov_type='hac-panel', cov_kwds={'time': dat.index, 'maxlags': 11})
res.summary()

这是我遇到问题的地方。假设我还想按时间进行聚类,我认为应该是这样的:

model.fit(cov_type='hac-panel', cov_kwds={'time': dat.index, 'groups': dat.index, 'maxlags': 11})

非常感谢所有帮助。预先非常感谢您。即使给我指出一个例子也很棒 - 找不到任何东西。

我收到此错误:

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-2-74b3e662267b> in <module>
----> 1 model.fit(cov_type='hac-panel', cov_kwds={'time': dat.index, 'groups': dat.index, 'maxlags': 11})

~\anaconda3\lib\site-packages\statsmodels\regression\linear_model.py in fit(self, method, cov_type, cov_kwds, use_t, **kwargs)
    343                 self, beta,
    344                 normalized_cov_params=self.normalized_cov_params,
--> 345                 cov_type=cov_type, cov_kwds=cov_kwds, use_t=use_t)
    346         else:
    347             lfit = RegressionResults(

~\anaconda3\lib\site-packages\statsmodels\regression\linear_model.py in __init__(self, model, params, normalized_cov_params, scale, cov_type, cov_kwds, use_t, **kwargs)
   1555                 # TODO: warn or not?
   1556             self.get_robustcov_results(cov_type=cov_type, use_self=True,
-> 1557                                        use_t=use_t, **cov_kwds)
   1558         for key in kwargs:
   1559             setattr(self, key, kwargs[key])

~\anaconda3\lib\site-packages\statsmodels\regression\linear_model.py in get_robustcov_results(self, cov_type, use_t, **kwargs)
   2490             res.cov_params_default = sw.cov_nw_panel(self, maxlags, groupidx,
   2491                                                      weights_func=weights_func,
-> 2492                                                      use_correction=use_correction)
   2493             res.cov_kwds['description'] = descriptions['HAC-Panel']
   2494 

~\anaconda3\lib\site-packages\statsmodels\stats\sandwich_covariance.py in cov_nw_panel(results, nlags, groupidx, weights_func, use_correction)
    785     xu, hessian_inv = _get_sandwich_arrays(results)
    786 
--> 787     S_hac = S_nw_panel(xu, weights, groupidx)
    788     cov_hac = _HCCM2(hessian_inv, S_hac)
    789     if use_correction:

~\anaconda3\lib\site-packages\statsmodels\stats\sandwich_covariance.py in S_nw_panel(xw, weights, groupidx)
    723     S = weights[0] * np.dot(xw.T, xw)  #weights just for completeness
    724     for lag in range(1, nlags+1):
--> 725         xw0, xwlag = lagged_groups(xw, lag, groupidx)
    726         s = np.dot(xw0.T, xwlag)
    727         S += weights[lag] * (s + s.T)

~\anaconda3\lib\site-packages\statsmodels\stats\sandwich_covariance.py in lagged_groups(x, lag, groupidx)
    706 
    707     if out0 == []:
--> 708         raise ValueError('all groups are empty taking lags')
    709     #return out0, out_lagged
    710     return np.vstack(out0), np.vstack(out_lagged)

ValueError: all groups are empty taking lags

正在寻找一个例子,你的帮助非常大。

您的代码的唯一问题似乎是在中使用相同的时间索引

cov_kwds={'time': dat.index, 'groups': dat.index, 'maxlags': 11} 

基本上,它将 dat.index 中的每个唯一单位都视为一个单独的组,在您的情况下每个季度。同时,它使用该年作为时间指示器,因此您的小组存在同一季度的所有观察结果,时间长度为一个季度。由于您的时间变量只是每组的一个周期,因此不存在滞后,因此会出现错误。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python statsmodels 稳健的 cov_type='hac-panel' 问题 的相关文章

  • 将 pandas 数据框中的列减去其第一个值

    我需要将 pandas 数据帧的一列中的所有元素减去其第一个值 在这段代码中 pandas 抱怨 self inferred type 我猜这是循环引用 df Time df Time df Time 0 在这段代码中 pandas 抱怨为
  • 在 Python 中使用 XPath 和 LXML

    我有一个 python 脚本 用于解析 XML 并将某些感兴趣的元素导出到 csv 文件中 我现在尝试更改脚本以允许根据条件过滤 XML 文件 等效的 XPath 查询将是 DC Events Confirmation contains T
  • 替换字符串列表中的 \x00 的最佳方法?

    我有一个来自已解析 PE 文件的值列表 其中包括 x00每个部分末尾的空字节 我希望能够删除 x00字符串中的字节而不删除所有字节 x 文件中的 s 我试过做 replace and re sub 但并没有取得太大成功 使用Python 2
  • Python 中的六边形自组织映射

    我在寻找六边形 自组织映射 http en wikipedia org wiki Self organizing map在Python上 准备好模块 如果存在的话 绘制六边形单元格的方法 将六边形单元作为数组或其他方式使用的算法 About
  • 使用 Django 的 post_save() 信号

    我有两张桌子 class Advertisement models Model created at models DateTimeField auto now add True author email models EmailField
  • 无法包含外部 pandas 文档 Pycharm v--2018.1.2

    我无法包含外部 pandas 文档Pycharm v 2018 1 2 例如 numpy gt http docs scipy org doc numpy reference generated module name element na
  • 将一个时间序列插入到 pandas 中的另一个时间序列中

    我有一组定期测量的值 说 import pandas as pd import numpy as np rng pd date range 2013 01 01 periods 12 freq H data pd Series np ran
  • python中函数变量的作用域

    假设我们有两个函数 def ftpConnect ftp FTP server ftp login ftp cwd path def getFileList ftpConnect files ftp nlst print files 如果我
  • 唯一的图像哈希值即使 EXIF 信息更新也不会改变

    我正在寻找一种方法来为 python 和 php 中的图像创建唯一的哈希值 我考虑过对原始文件使用 md5 和 因为它们可以快速生成 但是当我更新 EXIF 信息 有时时区关闭 时 它会更改总和 并且哈希也会更改 有没有其他方法可以为这些文
  • 使用 genfromtxt 导入 numpy 中缺失值的 csv 数据

    我有一个 csv 文件 看起来像这样 实际文件有更多的列和行 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 假设文件的名称是info csv如果我尝试使用导入它 data numpy genfromtxt i
  • Pandas:根据列名进行列的成对乘法

    我有以下数据框 gt gt gt df pd DataFrame ap1 X 1 2 3 4 as1 X 1 2 3 4 ap2 X 2 2 2 2 as2 X 3 3 3 3 gt gt gt df ap1 X as1 X ap2 X a
  • Python 中的这种赋值方式叫什么? a = b = 真

    我知道关于元组拆包 http docs python org tutorial datastructures html tuples and sequences但是当一行中有多个等号时 这个赋值被称为什么 阿拉a b True 它总是让我有
  • 字典的嵌套列表

    我正在尝试创建dict通过嵌套list groups Group1 A B Group2 C D L y x 0 for y in x if y x 0 for x in groups d k v for d in L for k v in
  • 在 Mac 上安装 Pygame 到 Enthought 构建中

    关于在 Mac 上安装 Pygame 有许多未解答的问题 但我将在这里提出我的具体问题并希望得到答案 我在 Mac 上安装 Pygame 时遇到了难以置信的困难 我使用 Enthought 版本 EPD 7 3 2 32 位 它是我的默认框
  • 在 pip.conf 中指定多个可信主机

    这是我尝试在我的中设置的 etc pip conf global trusted host pypi org files pythonhosted org 但是 它无法正常工作 参考 https pip pypa io en stable
  • 如何在单独的文件中使用 FastAPI Depends 作为端点/路由?

    我在单独的文件中定义了一个 Websocket 端点 例如 from starlette endpoints import WebSocketEndpoint from connection service import Connectio
  • 从 dask 数据框中的日期时间序列获取年份和星期?

    如果我有一个 Pandas 数据框和一个日期时间类型的列 我可以按如下方式获取年份 df year df date dt year 对于 dask 数据框 这是行不通的 如果我先计算 像这样 df year df date compute
  • PyQt 中的线程和信号问题

    我在 PyQt 中的线程之间进行通信时遇到一些问题 我使用信号在两个线程 发送者和监听者 之间进行通信 发送者发送消息 期望被监听者接收 但是 没有收到任何消息 谁能建议可能出了什么问题 我确信这一定很简单 但我已经环顾了几个小时但没有发现
  • 使用 Keras 和 fit_generator 绘制 TensorBoard 分布和直方图

    我正在使用 Keras 使用 fit generator 函数训练 CNN 这似乎是一个已知问题 https github com fchollet keras issues 3358TensorBoard 在此设置中不显示直方图和分布 有
  • 如何使用 Django (Python) 登录表单?

    我在 Django 中构建了一个登录表单 现在我遇到了路由问题 当我选择登录按钮时 表单不会发送正确的遮阳篷 我认为前端的表单无法从 查看 py 文件 所以它不会发送任何 awnser 并且登录过程无法工作 该表单是一个简单的静态 html

随机推荐