Запуск обобщенных наименьших квадратов в Python - PullRequest
1 голос
/ 25 мая 2019

Я пытаюсь сделать некоторые регрессии в 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, что делает проблему более вычислительной?

Спасибо

1 Ответ

0 голосов
/ 25 мая 2019

GLS реализуется с использованием полной плотной ковариационной матрицы по наблюдениям, размер (ноты, ноты).Это работает только в небольших образцах.(nobs - количество наблюдений)

В качестве альтернативы в классе модели есть метод whiten, который можно использовать для преобразования данных, чтобы они были некоррелированными и гомоскедастичными.Это используется WLS для взвешивания и может использоваться подклассами GLS для реализации более эффективного метода отбеливания, который не требует полной ковариационной матрицы nobs times nobs или ее холеского разложения.

Как пример GLSAR https://www.statsmodels.org/dev/generated/statsmodels.regression.linear_model.GLSAR.html использует фильтр AR для отбеливания данных для последовательной корреляции.Однако это не устраняет гетероскедастичность.

Как альтернатива оценке модели GLS:
OLS все еще непротиворечив, если есть гетероскедастичность и последовательная корреляция, хотя асимптотически менее эффективна.Правильные стандартные ошибки можно получить для этих случаев, указав аргумент cov_type в fit.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...