Я пытаюсь сделать некоторые регрессии в Python, используя statsmodels.api, но все мои модели имеют проблемы с автокорреляцией и гетероскедастичностью. Поэтому я подумал о том, чтобы попробовать обобщенные наименьшие квадраты (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())
Моя проблема, как вы, вероятно, можете решить, взглянув на код, состоит в том, что сигма - это очень большая матрица, которая перегружает любой компьютер, на котором я запускаю матрицу 50014 x 50014. Но насколько я знаю, матрица GLS должна быть достаточно большой для каждой ошибки, и это то, сколько наблюдений у меня есть в моих данных, а значит, сколько ошибок у меня есть. Итак, есть ли что-то, чего мне не хватает в работе GLS, что делает проблему более вычислительной?
Спасибо