Линейные смешанные модели и временная автокорреляция для панельных данных в Python Statsmodels

Я наблюдаю за сменой продавцов на распродаже выпечки, пытаясь понять, есть ли существенная разница между продажами продавцов в разные часы их смены. В частности, я пытаюсь оценить: а) является ли тенденция значимой между отдельными часами смены, и б) как она соотносится с несколькими другими потенциальными объясняющими переменными.

Набор данных содержит несколько смен на одного продавца одинаковой продолжительности, разделенных по часам.

E.g.

model = sm.MixedLM.from_formula("Cookies ~ C(Hour) + CustomerArrivals + Oventemp", BakeSaleData, groups=BakeSaleData["Salesperson"])
result = model.fit()
print(result.summary())

Наш график Q-Q для остатков:

Кто-то, просматривавший мое исследование и обладавший значительно большим опытом в статистике, сказал мне, что в моей модели присутствует существенная автокорреляция, но мне непонятно, как ее компенсировать.

Я знаю, что в традиционном наборе данных временных рядов мы можем использовать AR (1) и Cochrane-Orcutt для учета условий автокорреляции, но эти расчеты временных рядов обычно выполняются для наборов данных, где есть один временной ряд.


person codercat    schedule 22.03.2017    source источник
comment
Мне не совсем понятно, какое нарушение независимых ошибок вы здесь пытаетесь объяснить. В рамках TS мы предполагаем, что будущие наблюдения коррелируют с прошлыми наблюдениями cor(e_t, e_{t+1}) != 0. В МЛМ мы предполагаем, что наблюдения внутри групп (в вашем случае Salesperson) коррелируют cor(e_{i,j}, e{i,k}) != 0), где j != k. Или вы также пытаетесь контролировать коррелированные ошибки внутри смены? Не могли бы вы перефразировать/уточнить свой вопрос?   -  person Alex W    schedule 22.03.2017
comment
Спасибо, что помогли мне прояснить вопрос - я думаю, проблема в том, что потенциально может быть корреляция между отдельными часами, которые переносятся (например, если высокие продажи в предыдущий час влияют на текущий час)...   -  person codercat    schedule 22.03.2017
comment
Навскидку, я не уверен, соответствует ли это структуре МЛМ или нет... почему бы вам не проверить, насколько серьезна проблема?   -  person Alex W    schedule 23.03.2017


Ответы (1)


statsmodels MixedLM не допускает прямой корреляции остатков за пределами случайных коэффициентов или случайных эффектов.

Вы можете использовать statsmodels.GEE, которая представляет собой одностороннюю панель данных, которая позволяет использовать более широкий диапазон корреляционных структур, включая AR (1). С семейством Gaussian это было бы похоже на MixedLM. Однако в нем используются оценочные уравнения, аналогичные точно определенным GMM в эконометрике, а в GEE по умолчанию используются надежные кластерные стандартные ошибки. Предположение с последовательно коррелированными ошибками состоит в том, что объясняющие переменные являются экзогенными.

Здесь https://github.com/statsmodels/statsmodels/wiki/Examples#generalized-estimating-equations-gee — некоторые записные книжки для GEE.

Стандартные панельные данные эконометрики с Cochrane-Orcutt или Prais-Winston, подобные данным Stata, еще не включены в статистические модели (хотя где-то может лежать черновая версия).

person Josef    schedule 23.03.2017
comment
Это определенно помогло. Похоже, что на графике QQ отклонение значительно меньше, хотя параметры модели не слишком сильно меняются по сравнению с оценками MixedLM. - person codercat; 24.03.2017
comment
Оценка параметров для линейной функции устойчива к неправильно заданной дисперсии и корреляции в OLS или GLM (линейное экспоненциальное семейство) в целом. Затрагиваются только стандартные ошибки и то, является ли это эффективной оценкой. (Стандартные ошибки устойчивости кластера, как и в GEE, устойчивы к любому типу внутрикластерной корреляции.) - person Josef; 25.03.2017