gpt4 book ai didi

python - 在 Python 中运行广义最小二乘法

转载 作者:太空宇宙 更新时间:2023-11-03 20:51:13 24 4
gpt4 key购买 nike

我正在尝试使用 statsmodels.api 在 Python 中进行一些回归,但我的模型都存在自相关和异方差问题。所以我想尝试一下广义最小二乘法(GLS)。我不太熟悉运行这种形式的最小二乘法,因此非常接近下页的说明:

https://www.statsmodels.org/dev/generated/statsmodels.regression.linear_model.GLS.html

使用以下代码:

X = b2_final_Train[explan_vars]
Y = b2_final_Train[[ExognVar]]
model = sm.OLS(Y, X).fit()

##GLS Component
ols_resid = model.resid
res_fit = sm.OLS(list(ols_resid[1:]), list(ols_resid[:-1])).fit()
rho = res_fit.params

from scipy.linalg import toeplitz
order = toeplitz(np.arange(50014))
sigma = rho**order

gls_model = sm.GLS(Y, X, sigma=sigma)
gls_results = gls_model.fit()
print(gls_results.summary())

我的问题你可以通过查看代码来解决,sigma 是一个非常大的矩阵,它会使我运行它的任何计算机重载,成为 50014 x 50014 矩阵。但据我所知,GLS 矩阵对于每个错误来说都足够大,这就是我在数据中观察到的数量,因此这就是我有多少错误。那么运行 GLS 时我是否遗漏了一些东西,这使得问题在计算上更易于管理?

谢谢

最佳答案

GLS 是使用跨观测值的全稠密协方差矩阵来实现的,大小为 (nobs, nobs)。这仅适用于小样本。 (nobs 是观察值的数量)

作为替代方案,模型类有一个 whiten 方法,可用于转换数据,使其不相关且同方差。 WLS 使用它进行加权,并且 GLS 的子类可以使用它来实现更有效的白化方法,该方法不需要完整的 nobs 乘以 nobs 协方差矩阵或其 cholesky 分解。

例如 GLSAR https://www.statsmodels.org/dev/generated/statsmodels.regression.linear_model.GLSAR.html使用 AR 滤波器对序列相关数据进行白化。然而,它并没有消除异方差。

作为估计 GLS 模型的替代方法:
如果存在异方差性和序列相关性,OLS 仍然是一致的,尽管渐近效率较低。通过在 fit 中指定 cov_type 参数,可以获得这些情况的正确标准误差。

关于python - 在 Python 中运行广义最小二乘法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56304549/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com