9.1.Суть и причины автокорреляции
Важной предпосылкой построения качественной регрессионной модели по МНК является независимость значений случайных отклонений εi от значений отклонений во всех других наблюдениях (см. параграф 5.1). Отсутствие зависимости гарантирует отсутствие коррелированности между любыми отклонениями (σ(εi, εj) = cov(εi, εj) = 0 при i ≠ j) и, в частности, между соседними отклонениями (σ(εi−1, εi) = 0), i = 2, 3, …, n.
Автокорреляция (последовательная корреляция) определяется как корреляция между наблюдаемыми показателями, упорядоченными во времени (временные ряды) или в пространстве (перекрестные данные). Автокорреляция остатков (отклонений) обычно встречается в регрессионном анализе при использовании данных временных рядов. При использовании перекрестных данных наличие автокорреляции (пространственной корреляции) крайне редко. В силу этого в дальнейших выкладках вместо символа i порядкового номера наблюдения будем использовать символ t, отражающий момент наблюдения. Объем выборки при этом будем обозначать символом T вместо n. В экономических задачах значительно чаще встречается так называемая
положительная автокорреляция (σ(εt−1, εt) > 0), нежели отрицательная автокорреляция (σ(εt−1, εt) < 0).
Чаще всего положительная автокорреляция вызывается направленным постоянным воздействием некоторых не учтенных в модели факторов. Суть автокорреляции поясним следующим примером. Пусть исследуется спрос Y на прохладительные напитки от дохода Х по ежемесячным данным. Трендовая зависимость, отражающая увеличение спроса с ростом дохода, может быть представлена линейной функцией Y= β0 + β1X, изображенной на рис. 9.1.
Лето
Зима
Зима
X
Рис. 9.1
227
Однако фактические точки наблюдений обычно будут превышать трендовую линию в летние периоды и будут ниже ее в зимние.
Аналогичная картина может иметь место в макроэкономическом анализе с учетом циклов деловой активности.
Отрицательная автокорреляция фактически означает, что за положительным отклонением имеет место отрицательное и наоборот. Возможная схема рассеивания точек в этом случае представлена на
рис. 9.2.
Y
X Рис. 9.2
Такая ситуация может иметь место, например, если ту же зависимость между спросом на прохладительные напитки и доходами рассматривать по сезонным данным (зима − лето).
Среди основных причин, вызывающих появление автокорреляции, можно выделить ошибки спецификации, инерцию в изменении экономических показателей, эффект паутины, сглаживание данных.
Ошибки спецификации. Неучет в модели какой-либо важной объясняющей переменной либо неправильный выбор формы зависимости обычно приводит к системным отклонениям точек наблюдений от линии регрессии, что может привести к автокорреляции.
Проиллюстрируем это следующим примером. Анализируется зависимость предельных издержек МС от объема выпуска Q. Если для ее описания вместо реальной квадратичной модели MC = β0 + β1Q + + β2Q2 + ε выбрать линейную модель MC = β0 + β1Q + ε, то совершается ошибка спецификации. Ее можно рассматривать как неправильный выбор формы модели или как отбрасывание значимой переменной при линеаризации указанных моделей. Последствия данной ошибки выразятся в системном отклонении точек наблюдений от прямой регрессии (рис. 9.3) и существенном преобладании последовательных отклонений одинакового знака над соседними отклонениями противоположных знаков. Налицо типичная картина, характерная для положительной автокорреляции.
228
MC = β0 + β1Q
Q
Рис. 9.3
Инерция. Многие экономические показатели (например, инфляция, безработица, ВНП и т. п.) обладают определенной цикличностью, связанной с волнообразностью деловой активности. Действительно, экономический подъем приводит к росту занятости, сокращению инфляции, увеличению ВНП и т. д. Этот рост продолжается до тех пор, пока изменение конъюнктуры рынка и ряда экономических характеристик не приведет к замедлению роста, затем остановке и движению вспять рассматриваемых показателей. В любом случае эта трансформация происходит не мгновенно, а обладает определенной инертностью.
Эффект паутины. Во многих сферах экономики экономические показатели реагируют на изменение экономических условий с запаздыванием (временным лагом). Например, предложение сельскохозяйственной продукции реагирует на изменение цены с запаздыванием (равным периоду созревания урожая). Большая цена сельскохозяйственной продукции в прошлом году вызовет (скорее всего) ее перепроизводство в текущем году, а следовательно, цена на нее снизится и т. д. В этой ситуации нельзя предполагать случайность отклонений друг от друга.
Сглаживание данных. Зачастую данные по некоторому продолжительному временному периоду получают усреднением данных по составляющим его подынтервалам. Это может привести к определенному сглаживанию колебаний, которые имелись внутри рассматриваемого периода, что, в свою очередь, может послужить причиной автокорреляции.
229
9.2. Последствия автокорреляции
Последствия автокорреляции в определенной степени сходны с последствиями гетероскедастичности. Среди них при применении МНК обычно выделяются следующие.
1.Оценки параметров, оставаясь линейными и несмещенными, перестают быть эффективными. Следовательно, они перестают обладать свойствами наилучших линейных несмещенных оценок
(BLUE-оценок).
2.Дисперсии оценок являются смещенными. Зачастую дисперсии, вычисляемые по стандартным формулам, являются заниженными, что приводит к увеличению t-статистик. Это может привести к признанию статистически значимыми объясняющие переменные, которые в действительности таковыми могут и не являться.
3. Оценка дисперсии регрессии S |
2 |
= ∑ |
e2t |
является смещенной |
n − m −1 |
оценкой истинного значения σ2 , во многих случаях занижая его.
4. В силу вышесказанного выводы по t- и F-статистикам, определяющим значимость коэффициентов регрессии и коэффициента детерминации, возможно, будут неверными. Вследствие этого ухудшаются прогнозные качества модели.
9.3.Обнаружение автокорреляции
Всилу неизвестности значений параметров уравнения регрессии
неизвестными будут также и истинные значения отклонений εt. Поэтому выводы об их независимости осуществляются на основе оце-
нок еt, полученных из эмпирического уравнения регрессии. Рассмотрим возможные методы определения автокорреляции.
9.3.1. Графический метод
Существует несколько вариантов графического определения автокорреляции. Один из них, увязывающий отклонения еt с моментами t их получения (их порядковыми номерами i), приведен на рис. 9.4. Это так называемые последовательно-временные графики. В этом случае по оси абсцисс обычно откладываются либо момент получения статистических данных, либо порядковый номер наблюдения, а по оси ординат отклонения εt (либо оценки отклонений еt).
Естественно предположить, что на рис. 9.4, а − г имеются определенные связи между отклонениями, т. е. автокорреляция имеет ме-
230
сто. Отсутствие зависимости на рис. 9.4, д, скорее всего, свидетельствует об отсутствии автокорреляции.
t(i) |
t(i) |
||||||
t(i) |
|||||||
а |
б |
в |
|||||
εt, et |
εt, et |
Рис. 9.4
Например, на рис. 9.4, б отклонения вначале в основном отрицательные, затем положительные, потом снова отрицательные. Это свидетельствует о наличии между отклонениями определенной зависимости. Более того, можно утверждать, что в этом случае имеет место положительная автокорреляция остатков. Она становится весьма наглядной, если график 9.4, б дополнить графиком зависимости еt от еt−1 , который в этом случае ориентировочно будет выглядеть так.
еt
еt−1
Рис. 9.5
231
Подавляющее большинство точек на этом графике расположено в I и III четвертях декартовой системы координат, подтверждая положительную зависимость между соседними отклонениями.
Следует сказать, что в современных эконометрических пакетах аналитическое выражение регрессии дополняется графическим представлением результатов. На график реальных колебаний зависимой переменной накладывается график колебаний переменной по уравнению регрессии. Сопоставив эти два графика, можно выдвинуть гипотезу о наличии автокорреляции остатков. Если эти графики пересекаются редко, то можно предположить наличие положительной автокорреляции остатков.
9.3.2. Метод рядов
Этот метод достаточно прост: последовательно определяются знаки отклонений et. Например,
(− − − − −)(+ + + + + + +)(− − −)(+ + + +)(−), т. е. 5 “−“, 7 “+”, 3 “−”, 4 “+”, 1 “−” при 20 наблюдениях.
Ряд определяется как непрерывная последовательность одинаковых знаков. Количество знаков в ряду называется длиной ряда.
Визуальное распределение знаков свидетельствует о неслучайном характере связей между отклонениями. Если рядов слишком мало по сравнению с количеством наблюдений n, то вполне вероятна положительная автокорреляция. Если же рядов слишком много, то вероятна отрицательная автокорреляция. Для более детального анализа предлагается следующая процедура. Пусть
n − объем выборки;
n1 − общее количество знаков “+” при n наблюдениях (количество положительных отклонений et);
n2 − общее количество знаков “−” при n наблюдениях (количество отрицательных отклонений et);
k − количество рядов.
При достаточно большом количестве наблюдений (n1 > 10, n2 > 10) и отсутствии автокорреляции СВ k имеет асимптотически нормальное распределение с
M(k) = |
2n1n2 |
+ 1; |
D(k) = |
2n1n2 (2n1n2 − n1 − n2 ) |
. |
n1 + n2 |
(n1 + n2 )2 (n1 + n2 − 1) |
Тогда, если M(k) − uα/2 D(k) < k < M(k) + uα/2 D(k), то гипотеза об от-
сутствии автокорреляции не отклоняется.
232
При небольшом числе наблюдений (n1 < 20, n2 < 20) Свед и Эйзенхарт разработали таблицы критических значений количества рядов при n наблюдениях (приложение 7). Суть таблиц в следующем.
На пересечении строки n1 и столбца n2 определяются нижнее k1 и верхнее k2 значения при уровне значимости α = 0.05.
Если k1 < k < k2 , то говорят об отсутствии автокорреляции.
Если k ≤ k1, то говорят о положительной автокорреляции остат-
ков.
Если k ≥ k2 , то говорят об отрицательной автокорреляция остат-
ков.
В нашем примере n = 20, n1 = 11, n2 = 9, k = 5. По таблицам (приложение 7) определяем k1 = 6, k2 = 16. Поскольку k = 5 < 6 = k1 , то принимается предположение о наличии положительной автокорреляции при уровне значимости α = 0.05.
9.3.3. Критерий Дарбина–Уотсона
Наиболее известным критерием обнаружения автокорреляции первого порядка является критерий Дарбина–Уотсона. Статистика DW Дарбина–Уотсона приводится во всех эконометрических пакетах как важнейшая характеристика качества регрессионной модели. Метод определения автокорреляции на основе статистики DW подробно рассмотрен в параграфе 6.7. Суть его состоит в вычислении статистики DW Дарбина–Уотсона и на основе ее величины − осуществлении выводов об автокорреляции.
T |
− et −1)2 |
|||
∑( et |
||||
DW = |
t=2 |
. |
(9.1) |
|
T |
||||
∑e2t |
||||
t=1 |
Согласно формуле (6.46) статистика Дарбина–Уотсона тесно связана с выборочным коэффициентом корреляции retet−1 :
DW ≈ 2(1 − ret et−1 ). |
(9.2) |
Таким образом, 0 ≤ DW ≤ 4 и его значения могут указать на наличие либо отсутствие автокорреляции. Действительно, если ret et−1 ≈ 0
(автокорреляция отсутствует), то DW ≈ 2. Если |
ret et−1 ≈ 1 (положи- |
тельная автокорреляция), то DW ≈ 0. Если ret et−1 |
≈ −1 (отрицательная |
автокорреляция), то DW ≈ 4. |
|
233 |
Для более точного определения, какое значение DW свидетельствует об отсутствии автокорреляции, а какое об ее наличии, была построена таблица критических точек распределения Дарбина–Уотсона. По ней для заданного уровня значимости α, числа наблюдений n и количества объясняющих переменных m определяются два значения: dl − нижняя граница и du − верхняя граница.
Общая схема критерия Дарбина–Уотсона будет следующей:
1. По построенному эмпирическому уравнению регрессии
yt = b0 + b1xt1 + … + bm xtm определяются значения отклонений еt = уt − yt для каждого наблюдения t, t = 1, 2, …, T.
2.По формуле (9.1) рассчитывается статистика DW.
3.По таблице критических точек Дарбина–Уотсона определяются
два числа dl и du и осуществляют выводы по следующей схеме: 0 ≤ DW < dl − существует положительная автокорреляция,
dl ≤ DW < du − вывод о наличии автокорреляции не определен, du ≤ DW < 4 − du − автокорреляция отсутствует,
4 − du ≤ DW < 4 − dl − вывод о наличии автокорреляции не определен, 4 − dl ≤ DW ≤ 4 − существует отрицательная автокорреляция.
Отметим, что при использовании критерия Дарбина–Уотсона необходимо учитывать следующие ограничения.
1.Критерий DW применяется лишь для тех моделей, которые содержат свободный член.
2.Предполагается, что случайные отклонения εt определяются по следующей итерационной схеме εt = ρεt−1 + vt, называемой авторегрессионной схемой первого порядка AR(1). Здесь vt − случайный член.
3.Статистические данные должны иметь одинаковую периодичность (т. е. не должно быть пропусков в наблюдениях).
4.Критерий Дарбина–Уотсона не применим для регрессионных моделей, содержащих в составе объясняющих переменных зависимую переменную с временным лагом в один период, т. е. для так назы-
ваемых авторегрессионных моделей вида:
yt = β0 + β1xt1 + … + βmxtm + γYt−1 + εt. |
(9.3) |
Причину четвертого ограничения поясним следующим примером. Пусть уравнение регрессии имеет вид:
yt = β0 + β1xt + γyt−1 + εt . |
(9.4) |
234
Пусть случайное отклонение εt подвержено воздействию авторегрессии первого порядка:
Тогда уравнение регрессии (9.4) можно представить в следующем виде:
yt = β0 + β1xt + γyt−1 +ρεt−1 + vt. |
(9.6) |
Но yt−1 зависит от εt−1, т. к. если (9.4) верно для t, то оно верно и для t − 1. Следовательно, имеется систематическая связь между одной из объясняющих переменных и одним из компонентов случайного члена. То есть не выполняется одна из основных предпосылок МНК (предпосылка 40) − объясняющие переменные не должны быть случайными (т. е. не иметь случайной составляющей). Значение любой объясняющей переменной должно быть экзогенным, полностью определенным. В противном случае оценки будут смещенными даже при больших объемах выборок.
Для авторегрессионных моделей разработаны специальные тесты обнаружения автокорреляции, в частности h-статистика Дарбина, которая определяется по формуле
) |
n |
||
h = с |
1− nD(g) |
, |
(9.7) |
где с − оценка ρ автокорреляции первого порядка (9.5), D(g) − выбо-
рочная дисперсия коэффициента при лаговой переменной yt−1 , n − число наблюдений.
При большом объеме выборки n и справедливости нулевой гипотезы H0: ρ = 0 статистика h имеет стандартизированное нормальное распределение (h N(0, 1)). Поэтому по заданному уровню значимости α определяется критическая точка uα/2 из условия Ф(uα/2) = (1 − α) / 2 и сравнивается h с uα/2. Если h > uα/2 , то нулевая гипотеза об отсутствии автокорреляции должна быть отклонена. В противном случае она не отклоняется.
Отметим, что обычно значение с рассчитывается по формуле
с = 1 − 0.5 DW, а D(g) равна квадрату стандартной ошибки Sg оценки g
коэффициента γ. Поэтому h легко вычисляется на основе данных оцененной регрессии.
Основная проблема с использованием этого теста заключается в невозможности вычисления h при n D(g) > 1.
235
9.4. Методы устранения автокорреляции
Основной причиной наличия случайного члена в модели являются несовершенные знания о причинах и взаимосвязях, определяющих то или иное значение зависимой переменной. Поэтому свойства случайных отклонений, в том числе и автокорреляция, в первую очередь зависят от выбора формулы зависимости и состава объясняющих переменных. Так как автокорреляция чаще всего вызывается неправильной спецификацией модели, то для ее устранения необходимо, прежде всего, попытаться скорректировать саму модель. Возможно, автокорреляция вызвана отсутствием в модели некоторой важной объясняющей переменной. Необходимо попытаться определить данный фактор и учесть его в уравнении регрессии (см. пример из параграфа 6.7). Также можно попробовать изменить формулу зависимости (например, линейную на лог-линейную, линейную на гиперболическую и т. д.). Однако если все разумные процедуры изменения спецификации модели, на ваш взгляд, исчерпаны, а автокорреляция имеет место, то можно предположить, что она обусловлена какими-то внутренними свойствами ряда {et}. В этом случае можно воспользоваться авторегрессионным преобразованием. В линейной регрессионной модели либо в моделях, сводящихся к линейной, наиболее целесообразным и про-
стым преобразованием является авторегрессионная схема первого по-
рядка AR(1).
Для простоты изложения AR(1) рассмотрим модель парной линейной регрессии
Y = β0 + β1X + ε. |
(9.8) |
Тогда наблюдениям t и (t−1) соответствуют формулы |
|
yt = β0 + β1xt + εt , |
(9.9) |
yt−1 = β0 + β1xt−1 + εt−1. |
(9.10) |
Пусть случайные отклонения подвержены воздействию авторегрессии первого порядка (9.5):
εt = ρεt−1 + υt,
где υt , t = 2, 3, … , T − случайные отклонения, удовлетворяющие всем предпосылкам МНК, а коэффициент ρ известен.
Вычтем из (9.9) соотношение (9.10), умноженное на ρ:
yt − ρyt−1 = β0(1 − ρ) + β1(xt − ρxt−1) + (εt − ρεt−1). |
(9.11) |
236
Положив yt* = yt − ρyt−1, xt* = xt − ρxt−1, β0* = β0(1 − ρ) и с учетом
(9.5), получим:
yt* = β0* + β1xt* + υt. |
(9.12) |
Так как по предположению коэффициент ρ известен, то очевидно, yt*, xt*, υt вычисляются достаточно просто. В силу того, что случайные отклонения υt удовлетворяют предпосылкам МНК, то оценки β0* и β1 будут обладать свойствами наилучших линейных несмещенных оценок.
Однако способ вычисления yt*, xt* приводит к потере первого наблюдения (если мы не обладаем предшествующим ему наблюдением). Число степеней свободы уменьшится на единицу, что при больших выборках не так существенно, но при малых выборках может привести к потере эффективности. Эта проблема обычно преодолевается с помощью поправки Прайса–Винстена:
x1 = 1− с2 x1,
(9.13)
y1 = 1− с2 y1.
Отметим, что авторегрессионное преобразование может быть обобщено на произвольное число объясняющих переменных, т. е. использовано для уравнения множественной регрессии.
Авторегрессионное преобразование первого порядка AR(1) может быть обобщено на преобразования более высоких порядков
AR(2), AR(3) и т. д.:
εt = ρ1εt−1 + ρ2 εt−2 + υt ,
(9.14)
εt = ρ1εt−1 + ρ2 εt−2 + ρ3 εt−3 + υt.
Однако на практике значение коэффициента ρ обычно неизвестно и его необходимо оценивать. Существует несколько методов оценивания. Приведем наиболее употребляемые.
9.4.1. Определение ρ на основе статистики Дарбина–Уотсона
Напомним, что статистика Дарбина–Уотсона тесно связана с коэффициентом корреляции между соседними отклонениями через соотношение (9.2):
DW ≈ 2(1 − ret et−1 ).
Тогда в качестве оценки коэффициента ρ может быть взят коэффициент r = ret et−1 . Из (9.2) имеем:
237
r ≈ 1 −
Этот метод оценивания весьма блюдений. В этом случае оценка r точной.
DW2 . (9.15)
неплох при большом числе напараметра ρ будет достаточно
9.4.2. Метод Кохрана–Оркатта
Другим возможным методом оценивания ρ является итеративный процесс, называемый методом Кохрана–Оркатта. Опишем данный метод на примере парной регрессии (9.8):
Y = β0 + β1X + ε
и авторегрессионной схемы (9.5) первого порядка AR(1)
εt = ρ εt−1 + υt .
1.Оценивается по МНК регрессия (9.8) и для нее определяются оцен-
ки et отклонений εt, t = 1, 2, …, n.
2.Используя схему AR(1), оценивается регрессионная зависимость
et = с et−1 + υt, |
(9.16) |
где с − оценка коэффициента ρ. |
|
3. На основе данной оценки строится уравнение: |
|
(yt − сyt −1) = б(1− с) + в(x t − сxt −1) + (еt − сеt −1) , |
(9.17) |
с помощью которого оцениваются коэффициенты α и β (в этом случае значение с известно).
4.Значения β0 = б(1 − с) и β1 = β подставляются в (9.8). Вновь вычисляются оценки et отклонений и процесс возвращается к этапу 2.
Чередование этапов осуществляется до тех пор, пока не будет достигнута требуемая точность. То есть пока разность между предыдущей и последующей оценками ρ не станет меньше любого наперед заданного числа.
9.4.3. Метод Хилдрета–Лу
По данному методу регрессия (9.11) оценивается для каждого возможного значения ρ из интервала [−1, 1] с любым шагом (например, 0.001; 0.01 и т. д.). Величина с , дающая наименьшую стандарт-
ную ошибку регрессии, принимается в качестве оценки коэффициента
238
ρ. И значения β0* и β1 оцениваются из уравнения регрессии (9.11) именно с данным значением с .
Этот итерационный метод широко используется в эконометрических пакетах.
9.4.4.Метод первых разностей
Вслучае, когда есть основания считать, что автокорреляция отклонений очень велика, можно использовать метод первых разностей.
Для временных рядов характерна положительная автокорреляция
остатков. Поэтому при высокой автокорреляции полагают ρ = 1, и, следовательно, уравнение (9.11) принимает вид:
yt − yt−1 = β1( xt − xt−1) + ( εt − εt−1 )
или |
(9.18) |
|
yt − yt−1 = β1( xt − xt−1) + υt. |
||
Обозначив ∆yt = yt − yt−1 , |
∆xt = xt − xt−1 , |
из (9.18) получим |
∆yt |
= β1∆xt + υt. |
(9.19) |
Из уравнения (9.19) по МНК оценивается коэффициент β1. Заметим, что коэффициент β0 в данном случае не определяется непосредственно. Однако из МНК известно, что β0 = y − в1x .
В случае ρ = −1, сложив (9.9) и (9.10) с учетом (9.5), можно получить следующее уравнение регрессии:
yt + yt−1 = 2β0 + β1( xt + xt−1) + υt
или |
(9.20) |
|||||
yt + yt−1 |
= в0 |
+ в1 |
xt + xt−1 |
+ хt . |
||
2 |
2 |
|||||
Однако метод первых разностей предполагает уж слишком сильное упрощение (ρ = ± 1). Поэтому более предпочтительными являются приведенные выше итерационные методы.
Итак, подведем итог. В силу ряда причин (ошибок спецификации, инерционности рассматриваемых зависимостей и др.) в регрессионных моделях может иметь место корреляционная зависимость между соседними случайными отклонениями. Это нарушает одну из фундаментальных предпосылок МНК. Вследствие этого оценки, полученные на основе МНК, перестают быть эффективными. Это делает ненадежными выводы по значимости коэффициентов регрессии и по качеству самого уравнения. Поэтому достаточно важным является умение определить наличие автокорреляции и устранить это нежелатель-
239
ное явление. Существует несколько методов определения автокорреляции, среди которых были выделены графический, метод рядов, критерий Дарбина–Уотсона.
При установлении автокорреляции необходимо в первую очередь проанализировать правильность спецификации модели. Если после ряда возможных усовершенствований регрессии (уточнения состава объясняющих переменных либо изменения формы зависимости) автокорреляция по-прежнему имеет место, то, возможно, это связано с внутренними свойствами ряда отклонений {εt}. В этом случае возможны определенные преобразования, устраняющие автокорреляцию. Среди них выделяется авторегрессионная схема первого порядка AR(1), которая, в принципе, может быть обобщена в AR(k), k = 2, 3, …
Для применения указанных схем необходимо оценить коэффициент корреляции между отклонениями. Это может быть сделано различными методами: на основе статистики Дарбина–Уотсона, Кохрана–Ор- катта, Хилдрета–Лу и др. В случае наличия среди объясняющих переменных лаговой зависимой переменной наличие автокорреляции устанавливается с помощью h-статистики Дарбина. А для ее устранения в этом случае предпочтителен метод Хилдрета–Лу.
Вопросы для самопроверки
1.Что такое автокорреляция?
2.Назовите основные причины автокорреляции.
3.Что может вызвать отрицательную автокорреляцию?
4.Какая предпосылка МНК нарушается при автокорреляции?
5.Каковы последствия автокорреляции?
6.Перечислите основные методы обнаружения автокорреляции.
7.Опишите схему использования статистики DW Дарбина–Уотсона.
8.Перечислите ограничения использования статистики DW Дарбина–Уотсона.
9.Какая статистика используется для обнаружения автокорреляции в авторегрессионных моделях?
10.Опишите авторегрессионную схему первого порядка AR(1).
11.В чем смысл поправки Прайса–Винстена?
12.Опишите способы определения коэффициента автокорреляции ρ в авторегрессионной схеме первого порядка AR(1).
13.Будут ли верными или ложными следующие утверждения. Ответы поясните.
а) Автокорреляция характерна в основном для временных рядов.
б) При наличии автокорреляции оценки, полученные по МНК, являются смещенными.
240
в) Статистика DW Дарбина–Уотсона не используется в авторегрессионных моделях.
г) Статистика DW Дарбина–Уотсона лежит в пределах от 0 до 4.
д) Для использования статистики DW статистические данные должны иметь одинаковую периодичность.
е) Авторегрессионная схема первого порядка AR(1) устраняет автокорреляцию только в случае, когда коэффициент автокорреляции ρ = 1.
ж) При наличии автокорреляции значение коэффициента детерминации R2 будет всегда существенно ниже единицы.
з) Автокорреляция всегда является следствием неправильной спецификации модели.
Упражнения и задачи
1.Пусть при 50 наблюдениях и трех объясняющих переменных статистика DW принимает следующие значения:
а) 0.91; б) 1.37; в) 2.34; г) 3.01; д) 3.72.
Не заглядывая в таблицу критических точек Дарбина–Уотсона, выскажите мнение о наличии автокорреляции. Проверьте свои выводы по таблице.
2.По таблице критических точек Дарбина–Уотсона для α = 0.05 и α = 0.01 определите значения статистики DW, дающие основание отклонить гипотезу о наличии автокорреляции при объеме выборки n и числе объясняющих пере-
менных m: а) n = 20, m = 1; |
б) n = 25, m = 2; в) n = 50, m = 1; |
г) n = 50, m = 4; |
д) n = 100, m = 2. |
Сравните полученные результаты, сделайте выводы.
3.Используя таблицу Сведа и Эйзенхарта (приложение 7), определите наличие автокорреляции по методу рядов (n − объем выборки, n1 − общее количество
знаков “+”, n2 − общее количество знаков “−”, k − количество рядов).
а) |
n |
n1 |
n2 |
k |
20 |
12 |
8 |
3 |
|
б) |
30 |
16 |
16 |
21 |
в) |
25 |
16 |
9 |
4 |
г) |
15 |
8 |
7 |
5 |
4.По статистическим данным за 20 лет построено уравнение регрессии между ценой бензина и объемом продаж бензина, для которого DW = 0.71.
а) Будет ли в данном случае иметь место автокорреляция остатков? Если да, то она положительная или отрицательная?
б) Что могло послужить причиной автокорреляции?
в) Какой критерий вы использовали для определения наличия автокорреляции?
г) Какими будут ваши рекомендации по совершенствованию модели?
5.По квартальным данным за 9 лет анализируют зависимость между экспортом (EX) и импортом (IM). Имеются следующие статистические данные:
241
EX |
12.47 |
12.65 |
12.89 |
12.97 |
13.00 |
13.31 |
13.25 |
12.65 14.49 |
14.47 |
14.74 |
14.62 |
||||
IM |
11.07 |
11.50 |
12.01 |
12.28 |
13.16 |
13.43 |
13.28 |
13.50 |
15.32 |
15.62 |
17.44 |
16.14 |
|||
EX |
17.60 |
17.70 |
16.60 |
15.26 |
19.49 |
19.08 |
18.69 |
18.65 |
19.33 |
19.11 |
18.62 |
18.40 |
|||
IM |
16.13 |
16.08 |
16.55 |
15.00 |
18.72 |
17.80 |
16.64 |
17.39 |
18.70 |
18.02 |
17.46 |
16.96 |
|||
EX |
16.15 |
16.58 |
17.60 |
18.48 |
15.36 |
15.25 |
15.61 |
15.93 |
14.38 |
14.30 |
14.75 |
15.58 |
|||
IM |
15.06 |
16.01 |
16.63 |
17.86 |
14.56 |
15.64 |
16.45 |
17.42 |
14.30 |
14.59 |
14.66 |
14.95 |
|||
а) Постройте уравнение регрессии текущего импорта на текущий экспорт. б) Проверьте качество построенной модели на основе t-статистик и коэффи-
циента детерминации R2.
в) Вычислите значение статистики DW Дарбина–Уотсона и на ее основе проанализируйте наличие автокорреляции.
г) На основе полученных результатов будет ли отклоняться гипотеза о положительной зависимости между объемами экспорта и импорта.
д) По этим же статистическим данным постройте регрессию приращения
импорта (∆IM = IMt − IMt−1) на приращение экспорта (∆EX = EXt − EXt−1). е) Каково значение статистики DW для построенного уравнения и какой вывод из этого следует.
ж) Прокомментируйте полученные результаты.
6.По квартальным данным за 35 лет построено уравнение регрессии:
ln(DI)t = |
6.32 + 0.0084 t; |
(S) = |
(3.54) (0.017) R2 = 0.9931 DW = 0.173, |
где DI − располагаемый доход, t − время. В скобках указаны стандартные ошибки.
а) Сделайте выводы о качестве построенной модели.
б) Можно ли на основе построенной модели сделать заключение о возрастании располагаемого дохода на рассматриваемом временном интервале.
в) Какими могут быть предложения по совершенствованию модели?
г) Будет ли в данном случае рациональным, с точки зрения смягчения проблемы автокорреляции, переход от абсолютных значений рассматриваемых параметров к их приростам по аналогии с предыдущей задачей?
7.По тридцати годовым данным по МНК построено уравнение регрессии:
− 0.81 lnxt3 |
|||||
lnyt = |
5.12 + 0.31 lnxt1 + 0.52 lnxt2 |
2 = 0.62 DW = 0.49, |
|||
(S) |
(2.1) (0.18) |
(0.21) |
(0.29) |
||
R |
где yt − число банкротств; xt1 − уровень безработицы; xt2 − краткосрочная процентная ставка; xt3 − объем новых заказов в момент времени t.
а) Оцените качество построенной модели.
б) Проинтерпретируйте оцененный коэффициент для lnx3t.
в) Какая нулевая гипотеза проверяется на базе статистики DW? Проверьте данную гипотезу при уровне значимости α = 0.01.
242
г) Оказывает ли существенное влияние на число банкротств краткосрочная процентная ставка?
д) Можно ли оценить коэффициент корреляции между случайными отклонениями?
8.Осуществляется анализ средних годовых расходов (Y) студентов на развлечения. По статистическим данным за 32 года по МНК построено следующее
уравнение регрессии:
)
yt = 41.2 + 0.254 xt + 0.539yt−1
(S) |
(0.107) (0.133) |
R2 = 0.783 DW = 1.86, |
Х − располагаемый доход студента после уплаты за обучение и общежитие.
а) Оцените качество построенной модели.
б) Постройте 95%-ный доверительный интервал для коэффициента при Х. в) Насколько вырастут расходы на развлечения при росте располагаемого дохода на единицу.
г) Проверьте гипотезу об отсутствии автокорреляции остатков при альтернативной гипотезе о положительной автокорреляции с уровнем значимости
α = 0.01.
9.Приведены статистические данные за 25 лет по темпам прироста заработной платы Y%, производительности труда Х1%, а также уровню инфляции Х2%.
Оцените по МНК уравнение регрессии Y = β0 + β1X1 + β2X2 + ε.
Оцените качество построенного уравнения, проведя при этом проверку наличия гетероскедастичности и автокорреляции.
Год |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
||
X1 |
3.5 |
2.8 |
6.3 |
4.5 |
3.1 |
1.5 |
7.6 |
6.7 |
4.2 |
2.7 |
4.5 |
3.5 |
5.0 |
||
X2 |
4.5 |
3.0 |
3.1 |
3.8 |
3.8 |
1.1 |
2.3 |
3.6 |
7.5 |
8.0 |
3.9 |
4.7 |
6.1 |
||
Y |
9.0 |
6.0 |
8.9 |
9.0 |
7.1 |
3.2 |
6.5 |
9.1 |
14.6 |
11.9 |
9.2 |
8.8 |
12.0 |
||
Год |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
|||
X1 |
2.3 |
2.8 |
1.5 |
6.0 |
2.9 |
2.8 |
2.6 |
1.5 |
0.9 |
0.6 |
0.7 |
3.1 |
|||
X2 |
6.9 |
3.5 |
7.1 |
3.1 |
3.7 |
3.9 |
4.0 |
4.8 |
4.8 |
4.2 |
4.9 |
3.2 |
|||
Y |
12.5 |
6.7 |
8.5 |
5.9 |
6.8 |
5.6 |
4.8 |
4.5 |
6.7 |
5.5 |
4.0 |
3.3 |
10.Анализируется зависимость между инфляцией (INF) и безработицей (U). Используются статистические данные за 25 лет:
INF |
3.07 |
0.70 |
4.08 |
2.20 |
2.38 |
0.90 |
1.10 |
5.12 |
0.93 |
2.54 |
1.55 |
3.45 |
1.09 |
||||||
U |
3.69 |
9.10 |
3.92 |
6.50 |
4.63 |
8.50 |
9.55 |
3.71 |
5.80 |
3.60 |
6.53 |
4.32 |
9.20 |
||||||
INF |
2.15 |
5.14 |
1.72 |
0.74 |
4.16 |
0.93 |
1.79 |
1.24 |
1.12 |
1.28 |
7.36 |
5.30 |
|||||||
U |
5.75 |
3.65 |
7.30 |
9.65 |
3.65 |
9.80 |
6.28 |
7.80 |
8.75 |
7.22 |
3.60 |
3.65 |
В качестве модели рекомендуется воспользоваться следующим уравнением:
243
ln INFt = β0 + β1lnUt + εt.
а) По МНК оцените коэффициенты β0 и β1.
б) Постройте 95 %-ный доверительный интервал для коэффициента β1. в) Оцените качество построенного уравнения.
г) Вычислите статистику DW Дарбина–Уотсона и на ее основе определите наличие автокорреляции.
д) Проверьте наличие автокорреляции с помощью метода рядов.
е) Сделайте вывод о качестве интервальной оценки для коэффициента β1. ж) Переоцените модель, используя для этого авторегрессионную схему первого порядка AR(1).
з) Постройте новый 95 %-ный доверительный интервал для коэффициента β1. Сравните его с предыдущим интервалом.
и) Прокомментируйте результаты.
11. По 30-годовым наблюдениям строится функция инвестиций: it = β0 + β1yt + β2rt + εt,
где it − объем инвестиций в году t; yt − ВНП в году t; rt − процентная ставка в году t.
Y |
8.58 |
10.45 |
8.35 |
10.65 |
9.7 |
12.0 |
13.45 |
14.2 |
14.45 |
13.85 |
|||
R |
18.12 |
11.05 |
9.0 |
17.0 |
16.25 |
13.8 |
19.95 |
18.74 |
13.8 |
9.55 |
|||
I |
11.55 |
13.25 |
10.9 |
10.45 |
15.1 |
17.5 |
17.77 |
16.1 |
10.59 |
10.65 |
|||
Y |
16.55 |
18.0 |
18.4 |
20.4 |
21.0 |
23.75 |
25.75 |
24.2 |
25.2 |
26.2 |
|||
R |
19.3 |
15.2 |
12.4 |
16.5 |
5.95 |
17.5 |
16.43 |
7.4 |
15.45 |
19.15 |
|||
I |
9.32 |
11.0 |
15.05 |
15.1 |
22.7 |
21.95 |
23.1 |
25.65 |
26.15 |
25.55 |
|||
Y |
28.6 |
30.6 |
31.32 |
26.0 |
26.85 |
32.1 |
32.95 |
33.3 |
33.85 |
35.6 |
|||
R |
5.45 |
9.52 |
7.95 |
7.45 |
19.9 |
8.65 |
21.35 |
11.11 |
15.82 |
21.67 |
|||
I |
28.1 |
24.2 |
32.3 |
21.5 |
22.95 |
30.45 |
24.6 |
32.5 |
31.2 |
29.5 |
а) Оцените по МНК коэффициенты искомого уравнения регрессии.
б) Оцените статистическую значимость коэффициентов и общее качество уравнения регрессии.
в) Используя статистику DW Дарбина–Уотсона, оцените наличие автокорреляции остатков для построенного уравнения.
г) При наличии автокорреляции переоцените уравнение регрессии, используя для этого авторегрессионную схему первого порядка AR(1).
д) Спрогнозируйте объем инвестиций на следующий год, если прогнозируемые значения ВНП и процентной ставки составят соответственно yt+1 = 37 и
rt+1 = 15.
е) Постройте 95 %-ный доверительный интервал для среднего значения прогноза.
244
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
[c.178]
Очевидно, что несостоятельность оценки (8.20) тем больше, чем сильнее автокорреляция ошибок е. На практике, однако, часто выполняется условие р у. В этом случае предел оценки наименьших квадратов будет близок к истинному значению параметра, хотя и не равен ему.
[c.202]
Автокорреляция ошибок в моделях со стохастическими регрессорами
[c.212]
При справедливости гипотезы р = 0 распределение статистики h при увеличении объема выборки стремится к нормальному с математическим ожиданием, равным нулю, и дисперсией, равной единице. Таким образом, гипотеза об отсутствии автокорреляции ошибок отвергается, если наблюдаемое значение статистики h окажется больше, чем критическое значение стандартного нормального распределения.
[c.214]
Подставляя эти значения в (8.56), получаем Л = 2,64. Так как это значение больше критического /70,о5 = 1,96, определяемого для нормального закона, гипотеза об отсутствии автокорреляции ошибок отвергается, имеет место авторегрессия ошибок первого порядка (еще раз заметим, что для рассматриваемой модели этот вывод был априорно очевиден).
[c.214]
В моделях временных рядов неверная спецификация может служить причиной автокорреляции ошибок регрессии.
[c.252]
Учебник содержит систематическое изложение основ эконометрики и написан на основе лекций, которые авторы в течение ряда лет читали в Российской экономической школе и Высшей школе экономики. Подробно изучаются линейные регрессионные модели (метод наименьших квадратов, проверка гипотез, гетероскедастичность, автокорреляция ошибок, спецификация модели). Отдельные главы посвящены системам одновременных уравнении, методу максимального правдоподобия в моделях регрессии, моделям с дискретными и ограниченными зависимыми переменными.
[c.2]
Итак, предыдущие аргументы показывают, что уравнение с авторегрессионными членами может быть оценено при помощи МНК. Существенными тут являются два условия. 1) Устойчивость. Для уравнения (11.11) это означает /3 < 1, лучше, если значения параметров будут отстоять на некоторое расстояние от границы критической области. 2) Отсутствует автокорреляция ошибок et.
[c.269]
Авторегрессионная модель при наличии автокорреляции ошибок
[c.270]
Усложним модель (11.11), добавив в нее автокорреляцию ошибок [c.270]
Таким образом, МНК-оценка коэффициентов регрессии оказывается несостоятельной в моделях с авторегрессионными членами и автокорреляцией ошибок. Можно показать, что оценка р, полученная из остатков МНК, также не является состоятельной [c.270]
Из предыдущего следует, что, перед тем как оценивать модель с авторегрессионными членами, необходимо проверить наличие автокорреляции ошибок.
[c.271]
Тест па автокорреляцию ошибок
[c.271]
Заметим, что полученное уравнение совпадает с моделью геометрических лагов (11.8) и может быть преобразовано к виду (11.9), который является частным случаем модели (11.23), если в последнем положить / з = 0 и ввести автокорреляцию ошибок.
[c.274]
Гетероскедастичность и автокорреляция ошибок
[c.85]
Оно лежит в интервале от 0 до 4, в случае отсутствия автокорреляции ошибок приблизительно равно 2, при положительной автокорреляции смещается в меньшую сторону, при отрицательной — в большую сторону.
[c.29]
Доказать, что в случае автокорреляции ошибок 1-го порядка матрица ковариации ошибок по наблюдениям и матрица авторегрессионного преобразования имеют указанную форму.
[c.31]
Отсутствие автокорреляции ошибок, т. е. значения ошибок различных наблюдений независимы друг от друга.
[c.13]
Недостатки метода наименьших квадратов (МНК). Использование процедуры оценки, основанной на методе наименьших квадратов, предполагает обязательное удовлетворение целого ряда предпосылок, невыполнение которых может привести к значительным ошибкам 1. Случайные ошибки имеют нулевую среднюю, конечные дисперсии и ковариации 2. Каждое измерение случайной ошибки характеризуется нулевым средним, не зависящим от значений наблюдаемых переменных 3. Дисперсии каждой случайной ошибки одинаковы, их величины независимы от значений наблюдаемых переменных (гомоскедастичность) 4. Отсутствие автокорреляции ошибок, т. е. значения ошибок различных наблюдений независимы друг от друга 5. Нормальность. Случайные ошибки имеют нормальное распределение 6. Значения эндогенной переменной х свободны от ошибок измерения и имеют конечные средние значения и дисперсии.
[c.68]
Таким образом, коррелированность регрессоров и ошибок регрессии оказывается значительно более неприятным обстоятельством, чем, например, гетероскедастичность или автокорреляция. Неадекватными оказываются не только результаты тестирования гипотез, но и сами оценочные значения параметров.
[c.194]
Обратим внимание на то, что хотя с помощью обратного преобразования Койка устранена коррелированность регрессо-ров с ошибками, но автокорреляция ошибок приобретает сложную структуру, и устранение ее может оказаться практически невозможным. Так что хотя получаемые таким образом оценки оказываются состоятельными, они обладают всеми теми недостатками, о которых подробно говорилось в гл.7.
[c.204]
Можно показать, что в этом случае значение статистики Дарбина—Уотсона будет часто попадать в область принятия гипотезы об отсутствии автокорреляции и в том случае, если на самом деле эта гипотеза неверна. Это обстоятельство и делает тест Дарбина—Уотсона неприменимым и обусловливает необходимость других инструментов для обнаружения автокорреляции ошибок регрессии в моделях со стохастическими регрессорами.
[c.213]
В модели с распределенными лагами ADL (0,1) (заметим, что все рассматриваемые нами модели относились именно к этому типу) для выявления автокорреляции ошибок можно применять Н-тест Дарбина. Рассмотрим модель
[c.213]
Существенно отличающееся от двух значение статистики d Дарбина—Уотсона указывает на то, что имеется положительная автокорреляция ошибок регрессии. Одна из возможностей — попробовать идентифицировать ряд остатков как ряд модели ARMA(p, q). При этом самая простая модель AR(l) оказывается вполне адекватной [c.253]
Как видно, значение статистики d Дарбина— Уотсона очень близко к двум, так что в новой модели проблема автокорреляции ошибок регрессии отсутствует. Отсюда следует, что ее причина была в неверной спецификации модели. Стоит также обратить внимание, что коэффициент регрессии при xt уменьшился вдвое — на товары роскоши, подобные дорогому отдыху, расходы рассредоточиваются по нескольким ближайшим годам.
[c.254]
Условие E( t s) = 0, t s указывает на некоррелированность ошибок для разных наблюдений. Это условие часто нарушается в случае, когда наши данные являются временными рядами. В случае, когда это условие не выполняется, говорят об автокорреляции ошибок (serial orrelation).
[c.40]
Для простейшего случая автокорреляции ошибок, когда E(etet+i) = р 0, типичный вид данных представлен на рис. 2.За (р>0) и рис. 2.36 (р<0).
[c.40]
Переменная ж является экзогенной, yt-i коррелирована с xt i, поэтому xt i можно взять в качестве инструмента для yt-i- Оценка, полученная по методу инструментальных переменных, будет состоятельной. Однако вследствие автокорреляции ошибок оценки дисперсий оценок коэффициентов не будут состоятельными.
[c.271]
Если порядок процесса AR(p) заранее неизвестен, то рекомендуется включать возможно большее количество лагов, чтобы устранить возможную автокорреляцию ошибок. Дело в том, что в ADF тесте предполагается, что ошибки являются белым шумом и критические значения, указанные в таблице 11.1, справедливы только при этом условии. Однако включение чрезмерного количества лагов снижает мощность теста. Чтобы определить количество лагов, которое надо включить в уравнение, можно использовать критерии выбора порядка ARMA модели, описанные ниже, или статистическую значимость дополнительной лаговой переменной. Заметим, что тест Дики-Фуллера включен во все современные эконометрйческие пакеты.
[c.281]
В изучении корреляции признаков, не связанных согласованным изменением во времени, каждый признак изменяется под влиянием многих причин, принимаемых за случайные. В рядах динамики к ним прибавляется изменение во времпш каждого ряда. Это изменение приводит к так называемой автокорреляции — влиянию изменений уровней предыдущих рядов на последующие. Поэтому корреляция между уровнями динамических рядов правильно показывает тесноту связи между явлениями, отражаемыми в рядах динамики, лишь в том случае, если в каждом из них отсутствует автокорреляция. Кроме того, автокорреляция приводит к искажению величины среднеквадратических ошибок коэффициентов регрессии, что затрудняет построение доверительных интервалов для коэффициентов регрессии, а также проверки их значимости.
[c.70]
Cochrane-Orcutt assumes that the autocorrelation in your error term is due to the error term following an AR process. If this is your assumption, then just complete the estimation with the additional second-stage regression (with intercept) of $y_{t} — y_{t-1}rho$ against $x_{t} — x_{t-1}rho$ , where $rho$ is the estimated coefficient in the AR of residuals (i.e. first-order autocorr in residuals of the first regression). For more info look here . This source is exhaustive enough.
However notice that the assumption of AR structure on residuals of the first regression may be very restrictive and maybe not the case of your data. So for a more general idea of how to solve the problem, you should likely use a ARIMAX model, where the regression allows for a more general ARIMA Error term (if error terms are linearly autocorrelated) or a regression with Garch Error term (if their squares are autocorrelated). For the first look here and here for the second look here. If you find it useful for clarifications also see this.
Clearly this will give you more flexibility in the choice of the assumed structure of dependencies between residuals. You should choose between the 3 (or more) alternatives by following the typical model specification rules: in this case, you have to choose the residual structure that most closely resembles the actual distribution of your first-stage regression residuals (i.e., to be more precise and statistically correct, the one that best removes the dependencies in the standardized innovations in your final MLE model if you use ARIMAX or GARCH regression).
Cochrane-Orcutt assumes that the autocorrelation in your error term is due to the error term following an AR process. If this is your assumption, then just complete the estimation with the additional second-stage regression (with intercept) of $y_{t} — y_{t-1}rho$ against $x_{t} — x_{t-1}rho$ , where $rho$ is the estimated coefficient in the AR of residuals (i.e. first-order autocorr in residuals of the first regression). For more info look here . This source is exhaustive enough.
However notice that the assumption of AR structure on residuals of the first regression may be very restrictive and maybe not the case of your data. So for a more general idea of how to solve the problem, you should likely use a ARIMAX model, where the regression allows for a more general ARIMA Error term (if error terms are linearly autocorrelated) or a regression with Garch Error term (if their squares are autocorrelated). For the first look here and here for the second look here. If you find it useful for clarifications also see this.
Clearly this will give you more flexibility in the choice of the assumed structure of dependencies between residuals. You should choose between the 3 (or more) alternatives by following the typical model specification rules: in this case, you have to choose the residual structure that most closely resembles the actual distribution of your first-stage regression residuals (i.e., to be more precise and statistically correct, the one that best removes the dependencies in the standardized innovations in your final MLE model if you use ARIMAX or GARCH regression).
Очевидно, что несостоятельность оценки (8.20) тем больше, чем сильнее автокорреляция ошибок е. На практике, однако, часто выполняется условие р у. В этом случае предел оценки наименьших квадратов будет близок к истинному значению параметра, хотя и не равен ему. [c.202]
Автокорреляция ошибок в моделях со стохастическими регрессорами [c.212]
При справедливости гипотезы р = 0 распределение статистики h при увеличении объема выборки стремится к нормальному с математическим ожиданием, равным нулю, и дисперсией, равной единице. Таким образом, гипотеза об отсутствии автокорреляции ошибок отвергается, если наблюдаемое значение статистики h окажется больше, чем критическое значение стандартного нормального распределения. [c.214]
Подставляя эти значения в (8.56), получаем Л = 2,64. Так как это значение больше критического /70,о5 = 1,96, определяемого для нормального закона, гипотеза об отсутствии автокорреляции ошибок отвергается, имеет место авторегрессия ошибок первого порядка (еще раз заметим, что для рассматриваемой модели этот вывод был априорно очевиден). [c.214]
В моделях временных рядов неверная спецификация может служить причиной автокорреляции ошибок регрессии. [c.252]
Учебник содержит систематическое изложение основ эконометрики и написан на основе лекций, которые авторы в течение ряда лет читали в Российской экономической школе и Высшей школе экономики. Подробно изучаются линейные регрессионные модели (метод наименьших квадратов, проверка гипотез, гетероскедастичность, автокорреляция ошибок, спецификация модели). Отдельные главы посвящены системам одновременных уравнении, методу максимального правдоподобия в моделях регрессии, моделям с дискретными и ограниченными зависимыми переменными. [c.2]
Итак, предыдущие аргументы показывают, что уравнение с авторегрессионными членами может быть оценено при помощи МНК. Существенными тут являются два условия. 1) Устойчивость. Для уравнения (11.11) это означает /3 < 1, лучше, если значения параметров будут отстоять на некоторое расстояние от границы критической области. 2) Отсутствует автокорреляция ошибок et. [c.269]
Авторегрессионная модель при наличии автокорреляции ошибок [c.270]
Усложним модель (11.11), добавив в нее автокорреляцию ошибок [c.270]
Таким образом, МНК-оценка коэффициентов регрессии оказывается несостоятельной в моделях с авторегрессионными членами и автокорреляцией ошибок. Можно показать, что оценка р, полученная из остатков МНК, также не является состоятельной [c.270]
Из предыдущего следует, что, перед тем как оценивать модель с авторегрессионными членами, необходимо проверить наличие автокорреляции ошибок. [c.271]
Тест па автокорреляцию ошибок [c.271]
Заметим, что полученное уравнение совпадает с моделью геометрических лагов (11.8) и может быть преобразовано к виду (11.9), который является частным случаем модели (11.23), если в последнем положить / з = 0 и ввести автокорреляцию ошибок. [c.274]
Гетероскедастичность и автокорреляция ошибок [c.85]
Оно лежит в интервале от 0 до 4, в случае отсутствия автокорреляции ошибок приблизительно равно 2, при положительной автокорреляции смещается в меньшую сторону, при отрицательной — в большую сторону. [c.29]
Доказать, что в случае автокорреляции ошибок 1-го порядка матрица ковариации ошибок по наблюдениям и матрица авторегрессионного преобразования имеют указанную форму. [c.31]
Отсутствие автокорреляции ошибок, т. е. значения ошибок различных наблюдений независимы друг от друга. [c.13]
Недостатки метода наименьших квадратов (МНК). Использование процедуры оценки, основанной на методе наименьших квадратов, предполагает обязательное удовлетворение целого ряда предпосылок, невыполнение которых может привести к значительным ошибкам 1. Случайные ошибки имеют нулевую среднюю, конечные дисперсии и ковариации 2. Каждое измерение случайной ошибки характеризуется нулевым средним, не зависящим от значений наблюдаемых переменных 3. Дисперсии каждой случайной ошибки одинаковы, их величины независимы от значений наблюдаемых переменных (гомоскедастичность) 4. Отсутствие автокорреляции ошибок, т. е. значения ошибок различных наблюдений независимы друг от друга 5. Нормальность. Случайные ошибки имеют нормальное распределение 6. Значения эндогенной переменной х свободны от ошибок измерения и имеют конечные средние значения и дисперсии. [c.68]
Таким образом, коррелированность регрессоров и ошибок регрессии оказывается значительно более неприятным обстоятельством, чем, например, гетероскедастичность или автокорреляция. Неадекватными оказываются не только результаты тестирования гипотез, но и сами оценочные значения параметров. [c.194]
Обратим внимание на то, что хотя с помощью обратного преобразования Койка устранена коррелированность регрессо-ров с ошибками, но автокорреляция ошибок приобретает сложную структуру, и устранение ее может оказаться практически невозможным. Так что хотя получаемые таким образом оценки оказываются состоятельными, они обладают всеми теми недостатками, о которых подробно говорилось в гл.7. [c.204]
Можно показать, что в этом случае значение статистики Дарбина—Уотсона будет часто попадать в область принятия гипотезы об отсутствии автокорреляции и в том случае, если на самом деле эта гипотеза неверна. Это обстоятельство и делает тест Дарбина—Уотсона неприменимым и обусловливает необходимость других инструментов для обнаружения автокорреляции ошибок регрессии в моделях со стохастическими регрессорами. [c.213]
В модели с распределенными лагами ADL (0,1) (заметим, что все рассматриваемые нами модели относились именно к этому типу) для выявления автокорреляции ошибок можно применять Н-тест Дарбина. Рассмотрим модель [c.213]
Существенно отличающееся от двух значение статистики d Дарбина—Уотсона указывает на то, что имеется положительная автокорреляция ошибок регрессии. Одна из возможностей — попробовать идентифицировать ряд остатков как ряд модели ARMA(p, q). При этом самая простая модель AR(l) оказывается вполне адекватной [c.253]
Как видно, значение статистики d Дарбина— Уотсона очень близко к двум, так что в новой модели проблема автокорреляции ошибок регрессии отсутствует. Отсюда следует, что ее причина была в неверной спецификации модели. Стоит также обратить внимание, что коэффициент регрессии при xt уменьшился вдвое — на товары роскоши, подобные дорогому отдыху, расходы рассредоточиваются по нескольким ближайшим годам. [c.254]
Условие E( t s) = 0, t s указывает на некоррелированность ошибок для разных наблюдений. Это условие часто нарушается в случае, когда наши данные являются временными рядами. В случае, когда это условие не выполняется, говорят об автокорреляции ошибок (serial orrelation). [c.40]
Для простейшего случая автокорреляции ошибок, когда E(etet+i) = р 0, типичный вид данных представлен на рис. 2.За (р>0) и рис. 2.36 (р<0). [c.40]
Переменная ж является экзогенной, yt-i коррелирована с xt i, поэтому xt i можно взять в качестве инструмента для yt-i- Оценка, полученная по методу инструментальных переменных, будет состоятельной. Однако вследствие автокорреляции ошибок оценки дисперсий оценок коэффициентов не будут состоятельными. [c.271]
Если порядок процесса AR(p) заранее неизвестен, то рекомендуется включать возможно большее количество лагов, чтобы устранить возможную автокорреляцию ошибок. Дело в том, что в ADF тесте предполагается, что ошибки являются белым шумом и критические значения, указанные в таблице 11.1, справедливы только при этом условии. Однако включение чрезмерного количества лагов снижает мощность теста. Чтобы определить количество лагов, которое надо включить в уравнение, можно использовать критерии выбора порядка ARMA модели, описанные ниже, или статистическую значимость дополнительной лаговой переменной. Заметим, что тест Дики-Фуллера включен во все современные эконометрйческие пакеты. [c.281]
В изучении корреляции признаков, не связанных согласованным изменением во времени, каждый признак изменяется под влиянием многих причин, принимаемых за случайные. В рядах динамики к ним прибавляется изменение во времпш каждого ряда. Это изменение приводит к так называемой автокорреляции — влиянию изменений уровней предыдущих рядов на последующие. Поэтому корреляция между уровнями динамических рядов правильно показывает тесноту связи между явлениями, отражаемыми в рядах динамики, лишь в том случае, если в каждом из них отсутствует автокорреляция. Кроме того, автокорреляция приводит к искажению величины среднеквадратических ошибок коэффициентов регрессии, что затрудняет построение доверительных интервалов для коэффициентов регрессии, а также проверки их значимости. [c.70]
Все курсы > Оптимизация > Занятие 4 (часть 1)
Прежде чем обратиться к теме множественной линейной регрессии, давайте вспомним, что было сделано до сих пор. Возможно, будет полезно посмотреть эти уроки, чтобы освежить знания.
- В рамках вводного курса мы узнали про моделирование взаимосвязи переменных и минимизацию ошибки при обучении алгоритма, а также научились строить несложные модели линейной регрессии с помощью библиотеки sklearn.
- При изучении объектно-ориентированного программирования мы создали класс простой линейной регрессии. Сегодня эти знания пригодятся при создании классов более сложных моделей.
- Также рекомендую вспомнить умножение векторов и матриц.
- Кроме того, в рамках текущего курса по оптимизации мы познакомились с понятием производной и методом градиентного спуска, а также построили модель простой линейной регрессии (использовав метод наименьших квадратов и градиент).
- Наконец, на прошлом занятии мы вновь поговорили про взаимосвязь переменных.
В рамках сегодняшнего занятия мы с нуля построим несколько алгоритмов множественной линейной регрессии.
Регрессионный анализ
Прежде чем обратиться к практике, обсудим некоторые теоретические вопросы регрессионного анализа.
Генеральная совокупность и выборка
Как мы уже знаем, множество всех имеющихся наблюдений принято считать генеральной совокупностью (population). И эти наблюдения, если в них есть взаимосвязи, можно теоретически аппроксимировать, например, линией регрессии. При этом важно понимать, что это некоторая идеальная модель, которую мы никогда не сможем построить.
Единственное, что мы можем сделать, взять выборку (sample) и на ней построить нашу модель, предполагая, что если выборка достаточно велика, она сможет достоверно описать генсовокупность.
Отклонение прогнозного значения от фактического для «идеальной» линии принято называть ошибкой (error или true error).
$$ varepsilon = y-hat{y} $$
Отклонение прогноза от факта для выборочной модели (которую мы и строим) называют остатками (residuals или residual error).
$$ varepsilon = y-f(x) $$
В этом смысле среднеквадратическую ошибку (mean squared error, MSE) корректнее называть средними квадратичными остатками (mean squared residuals).
На практике ошибку и остатки нередко используют как взаимозаменяемые термины.
Уравнение множественной линейной регрессии
Посмотрим на уравнение множественной линейной регрессии.
$$ y = theta_0 + theta_1x_1 + theta_2x_2 + … + theta_jx_j + varepsilon $$
В отличие от простой линейной регрессии в данном случае у нас несколько признаков x (независимых переменных) и несколько коэффициентов $ theta $ («тета»).
Интерпретация результатов модели
Коэффициент $ theta_0 $ задает некоторый базовый уровень (baseline) при условии, что остальные коэффициенты равны нулю и зачастую не имеет смысла с точки зрения интерпретации модели (нужен лишь для того, что поднять линию на нужный уровень).
Параметры $ theta_1, theta_2, …, theta_n $ показывают изменение зависимой переменной при условии «неподвижности» остальных коэффициентов. Например, каждая дополнительная комната может увеличивать цену дома в 1.3 раза.
Переменная $ varepsilon $ (ошибка) представляет собой отклонение фактических данных от прогнозных. В этой переменной могут быть заложены две составляющие. Во-первых, она может включать вариативность целевой переменной, описанную другими (не включенными в нашу модель) признаками. Во-вторых, «улавливать» случайный шум, случайные колебания.
Категориальные признаки
Модель линейной регрессии может включать категориальные признаки. Продолжая пример с квартирой, предположим, что мы строим модель, в которой цена зависит от того, находится ли квартира в центре города или в спальном районе.
Перед этим переменную необходимо закодировать, создав, например, через Label Encoder признак «центр», который примет значение 1, если квартира в центре, и 0, если она находится в спальном районе.
В модели, представленной выше, если квартира находится в центре (переменная «центр» равна единице), ее стоимость составит 10,1 миллиона рублей, если на окраине (переменная «центр» равна нулю) — лишь восемь.
Для категориального признака с множеством классов можно использовать one-hot encoding, если между классами признака отсутствует иерархия,
или, например, ordinal encoding в случае наличия иерархии классов в признаке
Выбросы в линейной регрессии
Как и коэффициент корреляции Пирсона, модель линейной регрессии чувствительна к выбросам (outliers), то есть наблюдениям, серьезно выпадающим из общей совокупности. Сравните рисунки ниже.
При наличии выброса (слева), линия регрессии имеет наклон и может использоваться для построения прогноза. Удалив это наблюдение (справа), линия регрессии становится горизонтальной и построение прогноза теряет смысл.
При этом различают два типа выбросов:
- горизонтальные выбросы или влиятельные точки (leverage points) — они сильно отклоняются от среднего по оси x; и
- вертикальные выбросы или просто выбросы (influential points) — отклоняются от среднего по оси y
Ключевое отличие заключается в том, что вертикальные выбросы влияют на наклон модели (изменяют ее коэффициенты), а горизонтальные — нет.
Сравним два графика.
На левом графике черная точка (leverage point) сильно отличается от остальных наблюдений, но наклон прямой линии регрессии с ее появлением не изменился. На правом графике, напротив, появление выброса (influential point) существенно изменяет наклон прямой.
На практике нас конечно больше интересуют influential points, потому что именно они существенно влияют на качество модели.
Если в простой линейной регрессии мы можем оценить leverage и influence наблюдения графически⧉, в многомерной модели это сделать сложнее. Можно использовать график остатков (об этом ниже) или применить один из уже известных нам методов выявления выбросов.
Про выявление leverage и infuential points можно почитать здесь⧉.
Допущения модели регрессии
Применение алгоритма линейной регрессии предполагает несколько допущений (assumptions) или условий, при выполнении которых мы можем говорить о качественно построенной модели.
1. Правильный выбор модели
Вначале важно убедиться, что данные можно аппроксимировать с помощью линейной модели (correct model specification).
Оценить распределение данных можно через график остатков (residuals plot), где по оси x отложен прогноз модели, а на оси y — сами остатки.
В отличие от простой линейной регрессии мы не используем точечную диаграмму X vs. y, потому что хотим оценить зависимость целевой переменной от всех признаков сразу.
Остатки модели относительно ее прогнозных значений должны быть распределены случайным образом без систематической составляющей (residuals do not follow a pattern).
- Если вы попробовали применить линейную модель с коэффициентами первой степени ($x_n^1$) и выявили некоторый паттерн в данных, можно попробовать полиномиальную или какую-либо еще функцию (об этом ниже).
- Кроме того, количественные признаки можно попробовать преобразовать таким образом, чтобы их можно было аппроксимировать прямой линией.
- Если ни то, ни другое не помогло, вероятно данные не стоит моделировать линейной регрессией.
Также замечу, что график остатков показывает выбросы в данных.
2. Нормальность распределения остатков
Среднее значение остатков должно быть равно нулю. Если это не так, и среднее значение меньше нуля (скажем –5), то это значит, что модель регулярно недооценивает (underestimates) фактические значения. В противном случае, если среднее больше нуля, переоценивает (overestimated).
Кроме того, предполагается, что остатки следуют нормальному распределению.
$$ varepsilon sim N(0, sigma) $$
Проверить нормальность остатков можно визуально с помощью гистограммы или рассмотренных ранее критериев нормальности распределения.
Если остатки не распределены нормально, мы не сможем провести статистические тесты на значимость коэффициентов или построить доверительные интервалы. Иначе говоря, мы не сможем сделать статистически значимый вывод о надежности нашей модели.
Причинами могут быть (1) выбросы в данных или (2) неверный выбор модели. Решением может быть, соответственно, исследование выбросов, выбор новой модели и преобразование как признаков, так и целевой переменной.
3. Гомоскедастичность остатков
Гомоскедастичность (homoscedasticity) или одинаковая изменчивость остатков предполагают, что дисперсия остатков не изменяется для различных наблюдений. Противоположное и нежелательное явление называется гетероскедастичностью (heteroscedasticity) или разной изменчивостью.
Гетероскедастичность остатков показывает, что модель ошибается сильнее при более высоких или более низких значениях признаков. Как следствие, если для разных прогнозов у нас разная погрешность, модель нельзя назвать надежной (robust).
Как правило, гетероскедастичность бывает изначально заложена в данные. Ее можно попробовать исправить через преобразование целевой переменной (например, логарифмирование)
4. Отсутствие мультиколлинеарности
Еще одним важным допущением является отсутствие мультиколлинеарности. Мультиколлинеарность (multicollinearity) — это корреляция между зависимыми переменными. Например, если мы предсказываем стоимость жилья по квадратным метрам и количеству комнат, то метры и комнаты логичным образом также будут коррелировать между собой.
Почему плохо, если такая корреляция существует? Базовое предположение линейной регрессии — каждый коэффициент $theta$ оказывает влияние на конечный результат при условии, что остальные коэффициенты постоянны. При мультиколлинеарности на целевую переменную оказывают эффект сразу несколько признаков, и мы не можем с точностью интерпретировать каждый из них.
Также говорят о том, что нужно стремиться к экономной (parsimonious) модели то есть такой модели, которая при наименьшем количестве признаков в наибольшей степени объясняет поведение целевой переменной.
Variance inflation factor
Расчет коэффициента
Variance inflation factor (VIF) или коэффициент увеличения дисперсии позволяет выявить корреляцию между признаками модели.
Принцип расчета VIF заключается в том, чтобы поочередно делать каждый из признаков целевой переменной и строить модель линейной регрессии на основе оставшихся независимых переменных. Например, если у нас есть три признака $x_1, x_2, x_3$, мы поочередно построим три модели линейной регрессии: $x_1 sim x_2 + x_3, x_2 sim x_1 + x_3$ и $x_3 sim x_1 + x_3$.
Обратите внимание на новый для нас формат записи целевой и зависимых переменных модели через символ $sim$.
Затем для каждой модели (то есть для каждого признака $x_1, x_2, x_3$) мы рассчитаем коэффициент детерминации $R^2$. Если он велик, значит данный признак можно объяснить с помощью других независимых переменных и имеется мультиколлинеарность. Если $R^2$ мал, то нельзя и мультиколлинеарность отсутствует.
Теперь рассчитаем VIF на основе $R^2$:
$$ VIF = frac{1}{1-R^2} $$
При таком способе расчета большой (близкий к единице) $R^2$ уменьшит знаменатель и существенно увеличит VIF, при небольшом коэффициенте детерминации коэффициент увеличения дисперсии наоборот уменьшится.
Замечу, что $1-R^2$ принято называть tolerance.
Другие способы выявления мультиколлинеарности
Для выявления корреляции между независимыми переменными можно использовать точечные диаграммы или корреляционные матрицы. При этом важно понимать, что в данном случае мы выявляем зависимость лишь между двумя признаками. Корреляцию множества признаков выявляет только коэффициент увеличения дисперсии.
Интерпретация VIF
VIF находится в диапазон от единицы до плюс бесконечности. Как правило, при интерпретации показателей variance inflation factor придерживаются следующих принципов:
- VIF = 1, между признаками отсутствует корреляция
- 1 < VIF $leq$ 5 — умеренная корреляция
- 5 < VIF $leq$ 10 — высокая корреляция
- Более 10 — очень высокая
После расчета VIF можно по одному удалять признаки с наибольшей корреляцией и смотреть как изменится этот показатель для оставшихся независимых переменных.
5. Отсутствие автокорреляции остатков
На занятии по временным рядам (time series), мы сказали, что автокорреляция (autocorrelation) — это корреляция между значениями одной и той же переменной в разные моменты времени.
Применительно к модели линейной регрессии автокорреляция целевой переменной (для простой линейной регрессии) и автокорреляция остатков, residuals autocorrelation (для модели множественной регрессии) означает, что результат или прогноз зависят не от признаков, а от самой этой целевой переменной. В такой ситуации признаки теряют свою значимость и применение модели регрессии становится нецелесообразным.
Причины автокорреляции остатков
Существует несколько возможных причин:
- Прогнозирование целевой переменной с высокой автокорреляцией (например, если мы моделируем цену акций с помощью других переменных, то можем ожидать высокую автокорреляцию остатков, поскольку цена акций как правило сильно зависит от времени)
- Удаление значимых признаков
- Другие причины
Автокорреляция первого порядка
Дадим формальное определение автокорреляции первого порядка (first order correlation), то есть автокорреляции с лагом 1.
$$ varepsilon_t = pvarepsilon_{t-1} + u_t $$
где $u_t$ — некоррелированная при различных t одинаково распределенная случайная величина (independent and identically distributed (i.i.d.) random variable), а $p$ — коэффициент автокорреляции, который находится в диапазоне $-1 < p < 1$. Чем он ближе к нулю, тем меньше зависимость остатка $varepsilon_t$ от остатка предыдущего периода $varepsilon_{t-1}$.
Такое уравнение также называется схемой Маркова первого порядка (Markov first-order scheme).
Обратите внимание, что для модели автокорреляции первого порядка коэффициент автокорреляции $p$ совпадает с коэффициентом авторегрессии AR(1) $varphi$.
$$ y_t = c + varphi cdot y_{t-1} $$
Разумеется, мы можем построить модель автокорреляции, например, третьего порядка.
$$ varepsilon_t = p_1varepsilon_{t-1} + p_2varepsilon_{t-2} + p_3varepsilon_{t-3} + u_t $$
Выявление автокорреляции остатков
Для выявления автокорреляции остатков можно использовать график последовательности и график остатков с лагом 1, график автокорреляционной функции или критерий Дарбина-Уотсона.
График последовательности и график остатков с лагом 1
На графике последовательности (sequence plot) по оси x откладывается время (или порядковый номер наблюдения), а по оси y — остатки модели. Кроме того, на графике остатков с лагом 1 (lag-1 plot) остатки (ось y) можно сравнить с этими же значениями, взятыми с лагом 1 (ось x).
Рассмотрим вариант положительной автокорреляции (positive autocorrelation) на графиках остатков типа (а) и (б).
Как вы видите, при положительной автокорреляции в большинстве случаев, если одно наблюдение демонстрирует рост по отношению к предыдущему значению, то и последующее будет демонстрировать рост, и наоборот.
Теперь обратимся к отрицательной автокорреляции (negative autocorrelation).
Здесь наоборот, если одно наблюдение демонстрирует рост показателя по отношению к предыдущему значению, то последующее наблюдение будет наоборот снижением. Опять же справедливо и обратное утверждение.
В случае отсутствия автокорреляции мы не должны увидеть на графиках какого-либо паттерна.
График автокорреляционной функции
Еще один способ выявить автокорреляцию — построить график автокорреляционной функции (autocorrelation function, ACF).
Напомню, такой график показывает автокорреляцию данных с этими же данными, взятыми с первым, вторым и последующими лагами.
Критерий Дарбина-Уотсона
Количественным выражением автокорреляции является критерий Дарбина-Уотсона (Durbin-Watson test). Этот критерий выявляет только автокорреляцию первого порядка.
- Нулевая гипотеза утверждает, что такая автокорреляция отсутствует ($p=0$),
- Альтернативная гипотеза соответственно утверждает, что присутствует
- Положительная ($p approx -1$) или
- Отрицательная ($p approx 1$) автокорреляция
Значение теста находится в диапазоне от 0 до 4.
- При показателе близком к двум можно говорить об отсутствии автокорреляции
- Приближение к четырем говорит о положительной автокорреляции
- К нулю, об отрицательной
Как избавиться от автокорреляции
Автокорреляцию можно преодолеть, добавив значимый признак в модель, выбрав иной тип модели (например, полиномиальную регрессию) или в целом перейдя к моделированию и прогнозированию временного ряда.
Рассмотрение этих методов находится за рамками сегодняшнего занятия. Перейдем к практике.
Если
матрица
ковариаций
ошибок
не
является
диагональной,
то
говорят
об
ав-
токорреляции
ошибок.
Обычно
при
этом
предполагают,
что
наблюдения
однород-
ны
по
дисперсии,
и
их
последовательность
имеет
определенный
смысл
и
жестко
фиксирована.
Как
правило,
такая
ситуация
имеет
место,
если
наблюдения
про-
водятся
в
последовательные
моменты
времени.
В
этом
случае
можно
говорить
о
зависимостях
ошибок
по
наблюдениям,
отстоящим
друг
от
друга
на
1,
2,
3
и
т.д.
момента
времени.
Обычно
рассматривается
частный
случай
автокорреляции,
когда
коэффициенты
ковариации
ошибок
зависят
только
от
расстояния
во
времени
меж-
ду
наблюдениями;
тогда
возникает
матрица
ковариаций,
в
которой
все
элементы
каждой
диагонали
(не
только
главной)
одинаковы1.
Поскольку
действие
причин,
обуславливающих
возникновение
ошибок,
доста-
точно
устойчиво
во
времени,
автокорреляции
ошибок,
как
правило,
положительны.
Это
ведет
к
тому,
что
значения
остаточной
дисперсии,
полученные
по
стандартным
(«штатным»)
формулам,
оказываются
ниже
их
действительных
значений.
Что,
как
отмечалось
и
в
предыдущем
пункте,
чревато
ошибочными
выводами
о
качестве
получаемых
моделей.
Это
утверждение
иллюстрируется
рисунком
8.4
(n
=
1).
На
этом
рисунке:
a
—
линия
истинной
регрессии.
Если
в
первый
момент
времени
истинная
ошибка
отрицательна,
то
в
силу
положительной
автокорреляции
ошибок
все
облако
наблю-
дений
сместится
вниз,
и
линия
оцененной
регрессии
займет
положение
b.
Если
в
первый
момент
времени
истинная
ошибка
положительна,
то
по
тем
же
причи-
нам
линия
оцененной
регрессии
сместится
вверх
и
займет
положение
c.
Поскольку
1
В
теории
временных
рядов
это
называется
слабой
стационарностью.
x c
a
b
время
Рис.
8.4
266 Глава
8.
Нарушение
гипотез
основной
линейной
модели
ошибки
случайны
и
в
первый
момент
времени
они
примерно
с
равной
вероятно-
стью
могут
оказаться
положительными
или
отрицательными,
то
становится
ясно,
насколько
увеличивается
разброс
оценок
регрессии
вокруг
истинных
по
сравнению
с
ситуацией
без
(положительной)
автокорреляции
ошибок.
Типичный
случай
автокорреляции
ошибок,
рассматриваемый
в
классической
эконометрии,
—
это
линейная
авторегрессия
ошибок
первого
порядка
AR(1):
εi
=
ρεi−1
+
ηi,
где
η
—
остатки,
удовлетворяющие
обычным
гипотезам;
ρ
—
коэффициент
авторегрессии
первого
порядка.
Коэффициент
ρ
вляется
также
коэффициентом
автокорреляции
(первого
по-
рядка).
Действительно,
по
определению,
коэффициент
авторегрессии
равен
(как
МНК-
оценка):
cov(εi
,
εi−1)
ρ
= var(ε
,
i−1)
но,
в
силу
гомоскедастичности,
var(εi−1)
=
,var(εi)var(εi−1)
и,
следовательно,
ρ,
также
по
определению,
является
коэффициентом
автокорреляции.
Если
ρ
=
0,
то
εi
=
ηi
и
получаем
«штатную»
ситуацию.
Таким
образом,
проверку
того,
что
автокорреляция
отсутствует,
можно
проводить
как
проверку
нулевой
гипотезы
H0:
ρ
=
0
для
процесса
авторегрессии
1-го
порядка
в
ошибках.
Для
проверки
этой
гипотезы
можно
использовать
критерий
Дарбина—
Уотсона
или
DW—критерий.
Проверяется
нулевая
гипотеза
о
том,
что
автокорре-
ляция
ошибок
первого
порядка
отсутствует.
(При
автокорреляции
второго
и
более
высоких
порядков
его
мощность
может
быть
мала,
и
применение
данного
критерия
становится
ненадежным.)
Пусть
была
оценена
модель
регрессии
и
найдены
остатки
ei,
i
=
1,
.
.
.
,
N
.
Значение
статистики
Дарбина—Уотсона
(отношения
фон
Неймана),
или
DW-ста-
тистики,
рассчитывается
следующим
образом:
N
2
(ei
−
ei−1)
dc
=
i=2
N
e
2
i
. (8.3)
i=1
Оно
лежит
в
интервале
от
0
до
4,
в
случае
отсутствия
автокорреляции
ошибок
приблизительно
равно
2,
при
положительной
автокорреляции
смещается
в
мень-
8.3.
Автокорреляция
ошибок 267
0 2
dL dU
4-dU
4
4-dL
Рис.
8.5
шую
сторону,
при
отрицательной
—
в
большую
сторону.
Эти
факты
подтвержда-
ются
тем,
что
при
больших
N
справедливо
следующее
соотношение:
dc
≈
2(1
−
r), (8.4)
где
r
—
оценка
коэффициента
авторегрессии.
Минимального
значения
величина
dc
достигает,
если
коэффициент
авторегрессии
равен
+1.
В
этом
случае
ei
=
e,
i
=
1,
.
.
.
,
N
,
и
dc
=
0.
Если
коэффициент
авторегрессии
равен
−1
и
ei
=
(−1)ie,
i
=
1,
.
.
.
,
N
,
то
величина
dc
достигает
значения
4
N
−
1
N
(можно
достичь
и
более
высокого
значения
подбором
остатков),
которое
с
ростом
N
стремится
к
4.
Формула
(8.4)
следует
непосредственно
из
(8.3)
после
элементарных
преобразований:
N N
e
2
i
ei−1ei
N
e
2
i−1
dc
=
i=2
−
2
i=2 +
i=2 ,
N
e
2
i
i=1
N
e
2
i
i=1
N
e
2
i
i=1
поскольку
первое
и
третье
слагаемые
при
больших
N
близки
к
единице,
а
второе
слагаемое
является
оценкой
коэффициента
автокорреляции
(умноженной
на
−2).
Известно
распределение
величины
d,
если
ρ
=
0
(это
распределение
близко
к
нормальному),
но
параметры
этого
распределения
зависят
не
только
от
N
и
n,
как
для
t—
и
F
-статистик
при
нулевых
гипотезах.
Положение
«колокола»
функции
плотности
распределения
этой
величины
зависит
от
характера
Z
.
Тем
не
менее,
Дарбин
и
Уотсон
показали,
что
это
положение
имеет
две
крайние
позиции
(рис.
8.5).
Поэтому
существует
по
два
значения
для
каждого
(двустороннего)
квантиля,
соответствующего
определенным
N
и
n:
его
нижняя
dL
и
верхняя
dU
границы.
Нулевая
гипотеза
H0:
ρ
=
0
принимается,
если
dU
™
dc
™
4
−
dU
;
она
отвергается
в
пользу
гипотезы
о
положительной
автокорреляции,
если
dc
<
dL
,
и
в
пользу
268
Глава
8.
Нарушение
гипотез
основной
линейной
модели
гипотезы
об
отрицательной
автокорреляции,
если
dc
>
4
−
dL
.
Если
dL
™
dc
<
dU
или
4−dU
<
dc
™
4−dL
,
вопрос
остается
открытым
(это
—
зона
неопределенности
DW-критерия).
Пусть
нулевая
гипотеза
отвергнута.
Тогда
необходимо
дать
оценку
матрицы
Ω.
Оценка
r
параметра
авторегрессии
ρ
может
определяться
из
приближенного
равенства,
следующего
из
(8.4):
dc
r
≈
1
−
2
,
или
рассчитываться
непосредственно
из
регрессии
e
на
него
самого
со
сдвигом
на
одно
наблюдение
с
принятием
«круговой»
гипотезы,
которая
заключается
в
том,
что
eN
+1
=
e1.
Оценкой
матрицы
Ω
является
2
1 r r
··· r
N
−1
r 1 r ··· rN
−2
1
r
2
1
−
r2
r 1 ··· r
−
N
3
,
.
..
...
...
.
.
.
..
.
rN
−1 rN
−2 rN
−3 ··· 1
а
матрица
D
преобразований
в
пространстве
наблюдений
равна
√
1
−
r2 0 0 ··· 0
−r 1 0 ··· 0
0 −r 1 ··· 0
.
.
...
.
.
. ..
...
.
.
.
0 0 0 ··· 1
Для
преобразования
в
пространстве
наблюдений,
называемом
в
данном
слу-
чае
авторегрессионным,
используют
обычно
указанную
матрицу
без
1-й
строки,
что
ведет
к
сокращению
количества
наблюдений
на
одно.
В
результате
такого
пре-
образования
из
каждого
наблюдения,
начиная
со
2-го,
вычитается
предыдущее,
умноженное
на
r,
теоретическими
остатками
становятся
η
,
которые,
по
предпо-
ложению,
удовлетворяют
гипотезе
g4.
8.3.
Автокорреляция
ошибок 269
После
этого
преобразования
снова
оцениваются
параметры
регрессии.
Если
новое
значение
DW-статистики
неудовлетворительно,
то
можно
провести
следую-
щее
авторегрессионное
преобразование.
Обобщает
процедуру
последовательных
авторегрессионных
преобразований
метод
Кочрена—Оркатта,
который
заключается
в
следующем.
Для
одновременной
оценки
r,
a
и
b
используется
критерий
ОМНК
(в
обозна-
чениях
исходной
формы
уравнения
регрессии):
1
N
i
− i−1
− i
− i−1 − −
((x rx ) (z rz )a (1 r)b)2
→
min,
N
i=2
где
zi
—
n-вектор-строка
значений
независимых
факторов
в
i-м
наблюдении
(i-строка
матрицы
Z
).
Поскольку
производные
функционала
по
искомым
величинам
нелинейны
от-
носительно
них,
применяется
итеративная
процедура,
на
каждом
шаге
которой
сначала
оцениваются
a
и
b
при
фиксированном
значении
r
предыдущего
шага
(на
первом
шаге
обычно
r
=
0),
а
затем
—
r
при
полученных
значениях
a
и
b.
Процесс,
как
правило,
сходится.
Как
и
в
случае
гетероскедастичности,
можно
не
использовать
модифицированные
методы
оценивания
(тем
более,
что
точный
вид
автокорреляции
может
быть
неиз-
вестен),
а
использовать
обычный
МНК
и
скорректировать
оценку
ковариационной
матрицы
параметров.
Наиболее
часто
используемая
оценка
Ньюи—Уэста
(устой-
чивая
к
гетероскедастичности
и
автокорреляции)
имеет
следующий
вид:
(ZrZ)−1
Q
(ZrZ)−1
,
где
N L N
Q
=
e2
+
λk
eiei
k
(z
zr
+
zi
k
zr),
i
i=1
k=1
i=k+1
− i
i−k −
i
а
λk
—
понижающие
коэффициенты,
которые
Ньюи
и
Уэст
предложили
рассчи-
k .
При
k
>
L
понижающие
коэффициенты
тывать
по
формуле
λk
=
1
−
L
+1
становятся
равными
нулю,
т.е.
более
дальние
корреляции
не
учитываются
Обоснование
этой
оценки
достаточно
сложно2.
Заметим
только,
что
если
заменить
попарные
произведения
остатков
соответствующими
ковариациями
и
убрать
пони-
жающие
коэффициенты,
то
получится
формула
ковариационной
матрицы
оценок
МНК.
Приведенная
оценка
зависит
от
выбора
параметра
отсечения
L.
В
настоящее
вре-
мя
не
существует
простых
теоретически
обоснованных
методов
для
такого
выбора.
На
практике
можно
ориентироваться
на
грубое
правило
L
=
.
4
T
100
2/9
.
.
2
Оно
связано
с
оценкой
спектральной
плотности
для
многомерного
временного
ряда.
270 Глава
8.
Нарушение
гипотез
основной
линейной
модели
Соседние файлы в папке Диплом
- #
24.03.201581 б11.~lock.NonParametrics1.pdf#
- #
24.03.201581 б14.~lock.suslov_ibragimov_ekonometrika.pdf#
- #
- #
- #
- #
- #
- #
Постановка задачи
Критерий Дарбина-Уотсона (Durbin–Watson statistic) — один из самых распространенных критериев для проверки автокорреляции.
Данный критерий входит в стандартный инструментарий python:
-
присутствует в таблице выдачи результатов регрессионного анализа модуля линейной регрессии Linear Regression;
-
может быть рассчитан с помощью функции statsmodels.stats.stattools.durbin_watson.
К сожалению, стандартные инструменты python не позволяют получить табличные значения статистики критерия Дарбина-Уотсона, нам предлагается воспользоваться методом грубой оценки: считается, что при расчетном значении статистики критерия в интервале [1; 2] автокорреляция отсутствует (см. Durbin–Watson statistic). Однако, для качественного статистического анализа такой подход неприемлем.
Представляет интерес реализовать в полной мере критерий Дарбина-Уотсона средствами python, добавив этот важный критерий в инструментарий специалиста DataScience.
В данном обзоре мы коснемся только собственно критерия Дарбина-Уотсона и его применения для выявления автокорреляции. Особенности построения регрессионных моделей и прогнозирования в условиях автокорреляции (двухшаговый метод наименьших квадратов и пр.) мы рассматривать не будем.
Применение пользовательских функций
Как и в предыдущем обзоре, здесь будут использованы несколько пользовательских функций для решения разнообразных задач. Все эти функции созданы для облегчения работы и уменьшения размера программного кода. Данные функции загружается из пользовательского модуля my_module__stat.py, который доступен в моем репозитории на GitHub.
Вот перечень данных функций:
-
graph_plot_sns_np — функция строит линейный график средствами seaborn;
-
graph_regression_plot_sns — функция строит график регрессионной модели и график остатков средствами seaborn;
-
regression_error_metrics — функция возвращает ошибки аппроксимации регрессионной модели;
-
graph_hist_boxplot_probplot_sns — функция позволяет визуализировать исходные данные для одной переменной путем одновременного построения гистограммы, коробчатой диаграммы и вероятностного графика средствами seaborn; имеется возможность выбирать, какие графики строить (h — hist, b — boxplot, p — probplot);
-
norm_distr_check — проверка нормальности распределения исходных данных с использованием набора из нескольких статистических тестов.
-
Goldfeld_Quandt_test, Breush_Pagan_test, White_test — проверка гетероскедастичности с использование тестов Голдфелда-Квандта, Бриша-Пэгана и Уайта соответственно;
-
graph_regression_pair_predict_plot_sns — прогнозирование: построение графика регрессионной модели (с доверительными интервалами) и вывод расчетной таблицы с данными для заданной области значений X.
В процессе данного обзора мы создаем пользовательскую функцию Durbin_Watson_test, которая проверяет гипотезу о наличии автокорреляции (она тоже включена в пользовательский модуль my_module__stat.py).
Основы теории
Информацию о критерии Дарбина-Уотсона можно почерпнуть в [1, с.659], [2, с.117], [3, с.239], [4, с.188], а также:
-
Durbin–Watson statistic
-
Критерий Дарбина — Уотсона
Итак, предположим, мы рассматриваем регрессионную модель:
или в матричном виде:
Критерий Дарбина-Уотсона применяется в ситуации, когда регрессионные остатки связаны автокорреляционной зависимостью 1-го порядка [2, с.111]:
где — некоторое число (), а случайные величины удовлетворяют требованиям, предъявляемым к регрессионным остаткам классической модели (т.е. равенство нулю среднего значения, постоянство дисперсии и некоррелированность между собой):
Проверяется нулевая гипотеза об отсутствии автокорреляции:
Альтернативной гипотезой может быть:
-
существование отрицательной автокорреляции (левосторонняя критическая область):
-
существование положительной автокорреляции (правосторонняя критическая область):
-
существование автокорреляции вообще (двусторонняя критическая область):
Расчетное значение статистики критерия Дарбина-Уотсона имеет вид:
где — остатки (невязки) регрессионной модели.
По таблицам (см. [1, с.659], [2, с.402], [3, с.291]) в зависимости от уровня значимости (5%, 2.5%, 1%), числа параметров регрессионной модели (кроме свободного члена ) (от 1 до 5) и объема выборки (от 15 до 100) определяются критические значения статистики Дарбина-Уотсона: нижний и верхний предел.
Правила принятия гипотез по критерию Дарбина-Уотсона выглядят довольно своеобразно — критические значения образуют пять областей различных статистических решений (причем критические границы принятия и непринятия не совпадают):
Значение |
Принимается гипотеза |
Вывод |
---|---|---|
отвергается , принимается |
есть положительная автокорреляция |
|
неопределенность |
||
принимается |
автокорреляция отсутствует |
|
неопределенность |
||
отвергается , принимается |
есть отрицательная автокорреляция |
Есть очень удачная мнемоническая схема, приведенная в [3, с.240]:
Особенности критерия Дарбина-Уотсона:
-
Критические значения критерия табулированы для объема выборки от 15 до 100, аппроксимаций мне обнаружить не удалось. При меньших значениях критерий применять нельзя, при больших — очевидно, приходиться пользоваться грубым оценочным правилом: при расчетном значении статистики критерия в интервале [1; 2] автокорреляция отсутствует (см. https://en.wikipedia.org/wiki/Durbin–Watson_statistic).
-
Критерий позволяет выявить только автокорреляцию 1-го порядка. Отклонение нулевой гипотезы не означает, что автокорреляции нет вообще — возможно наличие автокорреляции более высоких порядков.
-
Критерий построен в предположении, что регрессоры и ошибки не коррелированы, поэтому его нельзя применять, в частности, для моделей авторегрессии [4, с.191].
-
Критерий не подходит для моделей без свободного члена .
-
Критерий имеет зону неопределенности, когда нет оснований ни принимать, ни отвергать нулевую гипотезу.
-
Между статистикой критерия и коэффициентом автокорреляции существует приближенное соотношение:
Существуют и другие критерии для проверки автокорреляции (тест Бройша-Годфри, Льюнга-Бокса и пр.).
Как было указано выше, большой проблемой является отсутствие табличных значений статистики критерия Дарбина-Уостона в стандартном инструментарии python. Для реализации возможностей данного критерия в полном объеме нам потребуется оцифровка весьма объемных таблиц критических значений.
Оцифровка табличных значений статистики критерия Дарбина — Уотсона
Я решил добавить в обзор этот раздел, хотя, строго говоря, можно было обойтись и без него, а сразу воспользоваться оцифрованными таблицами статистики критерия Дарбина-Уотсона.
Однако, если мы хотим выполнять качественный статистический анализ, неизбежно придется работать с большим количеством статистических критериев и далеко не все из них реализованы в python. Критерий Дарбина-Уотсона — это только один из многих. Количество критериев, рассматриваемых в литературе по прикладной статистике в последние годы постоянно увеличивается. Специалисту придется реализовывать многие критерии самостоятельно и одна из проблем, с которой придется столкнуться — это таблицы критических значений. Далеко не все табличные значения имеют аппроксимации, а значит придется каким-то образом оцифровывать эти таблицы. Небольшие таблицы можно сохранить в файлах вручную, а вот такой подход с объемными таблицами (как в нашем случае) — это слишком непроизводительно и нерационально.
В общем, на мой взгляд, представляет интерес разобрать пример оцифровки статистических таблиц на примере нашего критерия Дарбина-Уотсона — это позволит специалистам сэкономить человеко-часы работы и облегчить совершенствование инструментов статистического анализа.
Замечу сразу, что я не являюсь глубоким специалистом в области анализа и обработки изображений и текстов на python — это не совсем мой профиль. Профессионалы в этой области, возможно, раскритикуют то, как решается поставленная задача и предложат более удачное решение. Если будет так — то заранее спасибо. Я же эту задачу старался решить наиболее простым и рациональным способом, доступным для широкого круга специалистов. На всякий случай могу процитировать Давоса Сиворта из «Игры престолов»: «Простите за то, что увидите».
Алгоритм действий:
Для оцифровки я использовал таблицы, приведенные в [3, с.290-292].
-
Сканируем таблицы, сохраняем в виде jpg-файлов (Durbin_Watson_test_1.jpg, Durbin_Watson_test_2.jpg, Durbin_Watson_test_3.jpg) в папке text_processing, расположенной внутри папки с рабочим .ipynb-файлом:
-
Распознаем текст (я воспользовался онлайн-сервисом https://convertio.co/), полученные текстовые файлы Durbin-Watson-test-1.ocr.txt, Durbin-Watson-test-2.ocr.txt, Durbin-Watson-test-3.ocr.txt также помещаем в папке text_processing.
-
Откроем файлы, запишем содержимое файлов в переменные, каждая из которых соответствует одной странице:
with open('text_processingDurbin-Watson-test-1.ocr.txt') as f1:
Durbin_Watson_test_1 = f1.readlines()
display(Durbin_Watson_test_1, type(Durbin_Watson_test_1), len(Durbin_Watson_test_1))
С остальными файлами — действуем аналогично:
with open('text_processingDurbin-Watson-test-2.ocr.txt') as f2:
Durbin_Watson_test_2 = f2.readlines()
display(Durbin_Watson_test_2, type(Durbin_Watson_test_2), len(Durbin_Watson_test_2))
with open('text_processingDurbin-Watson-test-3.ocr.txt') as f3:
Durbin_Watson_test_3 = f3.readlines()
display(Durbin_Watson_test_3, type(Durbin_Watson_test_3), len(Durbin_Watson_test_3))
Видим, что переменные представляют собой списки, элементами которых является строки.
Для облегчения дальнейшей обработки данных создадим список, элементами которого являются переменные-страницы:
Durbin_Watson_test = [Durbin_Watson_test_1, Durbin_Watson_test_2, Durbin_Watson_test_3]
Далее я не стал публиковать здесь скриншоты с обработкой страниц — из-за экономии места. В ipyng-файле, который доступен в моем репозитории, весь процесс обработки представлен достаточно подробно.
-
Исключаем все строки, которые начинаются не с цифр; при этом воспользуемся алгоритмом перезаписи списка:
# создаем новый список
Durbin_Watson_test_new = list()
# удаляем строки
for page in Durbin_Watson_test:
page_temp = list() # временная страница
for line in page:
if line[0].isdigit():
page_temp.append(line) # перезаписываем список
Durbin_Watson_test_new.append(page_temp)
-
Исключаем из текста управляющие символы (t, n) — с помощью регулярных выражений (regex) (модуль re):
# задаем шаблон для удаления символов
pattern = r'[t+n+]'
# выполняем обработку
Durbin_Watson_test_new = [
[re.sub(pattern, ' ', elem) for elem in page]
for page in Durbin_Watson_test_new]
-
Удаляем все символы, кроме цифр, точек, запятых и пробелов:
# задаем шаблон для удаления символов
pattern = r'[^0-9,. ]'
# выполняем обработку
Durbin_Watson_test_new = [
[re.sub(pattern, '', elem) for elem in page]
for page in Durbin_Watson_test_new]
-
Заменяем запятые на точки:
# задаем шаблон для удаления символов
pattern = r'[,]'
# выполняем обработку
Durbin_Watson_test_new = [
[re.sub(pattern, '.', elem) for elem in page]
for page in Durbin_Watson_test_new]
-
Разделяем строки:
# задаем шаблон
pattern = r'[ ]+'
# выполняем обработку
Durbin_Watson_test_new = [[re.split(pattern, elem) for elem in page]
for page in Durbin_Watson_test_new]
-
Сохраняем данные в DataFrame — для этого создадим список Durbin_Watson_list_df, элементами которого являются отдельные DataFrame, каждый из которых соответствует отдельной странице:
# создаем новый список
Durbin_Watson_list_df = list()
for page in Durbin_Watson_test_new:
Durbin_Watson_list_df.append(pd.DataFrame(page))
-
Исправляем вручную отдельные аномалии, возникшие при распознавании отсканированных данных — к сожалению, работы вручную совсем избежать не удается.
-
Корректируем DataFrame, соответствующий 1-й странице:
# создаем временный DataFrame
temp_df = Durbin_Watson_list_df[0]
# удаляем последние столбцы
temp_df = temp_df.drop(columns=[11, 12])
# корректируем вручную отдельные ошибки
temp_df.loc[[4],] = [19, 1.18, 1.40, 1.08, 1.53, 0.97, 1.68, 0.86, 1.85, 0.75, 2.02]
temp_df.loc[[8],[3]] = 1.17
temp_df.loc[[10],[3]] = 1.21
temp_df.loc[[17],[9]] = 1.11
temp_df.loc[[21],[4]] = 1.59
temp_df.loc[[25],[5]] = 1.34
temp_df.loc[[31],[10]] = 1.77
# записываем изменения
Durbin_Watson_list_df[0] = temp_df
-
Корректируем DataFrame, соответствующий 2-й странице:
# создаем временный DataFrame
temp_df = Durbin_Watson_list_df[1]
# удаляем последние столбцы
temp_df = temp_df.drop(columns=[11, 12])
# корректируем вручную отдельные ошибки
temp_df.loc[[2],[8]] = 1.77
temp_df.loc[[10],[9]] = 0.86
temp_df.loc[[10],[10]] = 1.77
temp_df.loc[[14],[9]] = 0.96
temp_df.loc[[17],[10]] = 1.71
temp_df.loc[[34],[10]] = 1.71
# записываем изменения
Durbin_Watson_list_df[1] = temp_df
-
Корректируем DataFrame, соответствующий 3-й странице:
# создаем временный DataFrame
temp_df = Durbin_Watson_list_df[2]
# удаляем последние столбцы
temp_df = temp_df.drop(columns=[11, 12])
# корректируем вручную отдельные ошибки
temp_df.loc[[2],[9]] = 0.48
temp_df.loc[[13],] = [28, 1.10, 1.24, 1.04, 1.32, 0.97, 1.41, 0.90, 1.51, 0.83, 1.62]
temp_df.loc[[20],[3]] = 1.14
temp_df.iloc[21:26, 7] = [1.04, 1.06, 1.07, 1.09, 1.10]
temp_df.loc[[26],[9]] = 1.11
temp_df.loc[[35],] = [90, 1.50, 1.54, 1.47, 1.56, 1.45, 1.59, 1.43, 1.61, 1.41, 1.64]
# записываем изменения
Durbin_Watson_list_df[2] = temp_df
Обращаем внимание, что откорректированные вручную значения являются числовыми, а все остальные значения — еще имеют строковый тип.
11. Преобразуем значения из строкового в числовой тип:
for elem_df in Durbin_Watson_list_df:
for col in elem_df.columns:
elem_df[col] = pd.to_numeric(elem_df[col], errors='ignore')
-
Корректируем структуру DataFrame:
-
меняем индекс — индексом теперь будет объем выборки n
-
каждый DataFrame снабжаем мультииндексом по столбцам (подробнее см. [7, с.169])
# меняем индекс
Durbin_Watson_list_df = [
elem_df.set_index([0])
for elem_df in Durbin_Watson_list_df]
# добавляем мультииндекс по столбцам
multi_index_list = ['p=0.95', 'p=0.975', 'p=0.99'] # список, содержащий значения для верхней строки мульииндекса
for i, elem_df in enumerate(Durbin_Watson_list_df):
elem_df.index.name = 'n'
elem_df.columns = pd.MultiIndex.from_product(
[[multi_index_list[i]],
['m=1', 'm=2', 'm=3', 'm=4', 'm=5'],
['dL','dU']])
-
Объединяем отдельные DataFrame в один:
Durbin_Watson_test_df = Durbin_Watson_list_df[0].copy()
for i, elem_df in enumerate(Durbin_Watson_list_df):
if i > 0:
Durbin_Watson_test_df = Durbin_Watson_test_df.join(elem_df)
display(Durbin_Watson_test_df)
Durbin_Watson_test_df.info()
Итак, мы сформировали DataFrame с оцифрованными данными таблиц критических значений статистики Дарбина-Уотсона. Получить доступ к данным теперь очень просто — например, нам требуется вывести табличные значения статистики критерия при объеме выборки , доверительной вероятности и числе параметров регрессионной модели :
n = 40
p = 0.95
m=2
Durbin_Watson_test_df.loc[[n], (f'p={p}', f'm={m}')]
-
Построим график табличных значений.
График получился весьма объемным — 3х5 элементов — однако он необходим: на графике можно увидеть те ошибки (пики и впадины), которые мы могли пропустить при ручной обработке ранее (некорректно отсканированные и распознанные цифры), тогда придется вернуться к этапу 10.
# меняем настройки Mathplotlib
plt.rcParams['axes.titlesize'] = 10 # шрифт заголовка
plt.rcParams['legend.fontsize'] = 9 # шрифт легенды
plt.rcParams['xtick.labelsize'] = 8 # шрифт подписей меток
plt.rcParams['ytick.labelsize'] = 8
fig = plt.figure(figsize=(297/INCH, 420/INCH))
ax_1_1 = plt.subplot(5,3,1)
ax_2_1 = plt.subplot(5,3,2)
ax_3_1 = plt.subplot(5,3,3)
ax_1_2 = plt.subplot(5,3,4)
ax_2_2 = plt.subplot(5,3,5)
ax_3_2 = plt.subplot(5,3,6)
ax_1_3 = plt.subplot(5,3,7)
ax_2_3 = plt.subplot(5,3,8)
ax_3_3 = plt.subplot(5,3,9)
ax_1_4 = plt.subplot(5,3,10)
ax_2_4 = plt.subplot(5,3,11)
ax_3_4 = plt.subplot(5,3,12)
ax_1_5 = plt.subplot(5,3,13)
ax_2_5 = plt.subplot(5,3,14)
ax_3_5 = plt.subplot(5,3,15)
fig.suptitle('Табличные значения статистики критерия Дарбина-Уотсона', fontsize = 16)
(Ymin, Ymax) = (0.3, 2.2)
x = Durbin_Watson_test_df.index
title_fontsize = 10
name_1_1 = ['p=0.95', 'm=1']
ax_1_1.set_title(name_1_1[0] + ' ' + name_1_1[1])
ax_1_1.plot(x, Durbin_Watson_test_df[tuple(name_1_1 + ['dL'])],
x, Durbin_Watson_test_df[tuple(name_1_1 + ['dU'])])
name_1_2 = ['p=0.95', 'm=2']
ax_1_2.set_title(name_1_2[0] + ' ' + name_1_2[1])
ax_1_2.plot(x, Durbin_Watson_test_df[tuple(name_1_2 + ['dL'])],
x, Durbin_Watson_test_df[tuple(name_1_2 + ['dU'])])
name_1_3 = ['p=0.95', 'm=3']
ax_1_3.set_title(name_1_3[0] + ' ' + name_1_3[1])
ax_1_3.plot(x, Durbin_Watson_test_df[tuple(name_1_3 + ['dL'])],
x, Durbin_Watson_test_df[tuple(name_1_3 + ['dU'])])
name_1_4 = ['p=0.95', 'm=4']
ax_1_4.set_title(name_1_4[0] + ' ' + name_1_4[1])
ax_1_4.plot(x, Durbin_Watson_test_df[tuple(name_1_4 + ['dL'])],
x, Durbin_Watson_test_df[tuple(name_1_4 + ['dU'])])
name_1_5 = ['p=0.95', 'm=5']
ax_1_5.set_title(name_1_5[0] + ' ' + name_1_5[1])
ax_1_5.plot(x, Durbin_Watson_test_df[tuple(name_1_5 + ['dL'])],
x, Durbin_Watson_test_df[tuple(name_1_5 + ['dU'])])
name_2_1 = ['p=0.975', 'm=1']
ax_2_1.set_title(name_2_1[0] + ' ' + name_2_1[1])
ax_2_1.plot(x, Durbin_Watson_test_df[tuple(name_2_1 + ['dL'])],
x, Durbin_Watson_test_df[tuple(name_2_1 + ['dU'])])
name_2_2 = ['p=0.975', 'm=2']
ax_2_2.set_title(name_2_2[0] + ' ' + name_2_2[1])
ax_2_2.plot(x, Durbin_Watson_test_df[tuple(name_2_2 + ['dL'])],
x, Durbin_Watson_test_df[tuple(name_2_2 + ['dU'])])
name_2_3 = ['p=0.975', 'm=3']
ax_2_3.set_title(name_2_3[0] + ' ' + name_2_3[1])
ax_2_3.plot(x, Durbin_Watson_test_df[tuple(name_2_3 + ['dL'])],
x, Durbin_Watson_test_df[tuple(name_2_3 + ['dU'])])
name_2_4 = ['p=0.975', 'm=4']
ax_2_4.set_title(name_2_4[0] + ' ' + name_2_4[1])
ax_2_4.plot(x, Durbin_Watson_test_df[tuple(name_2_4 + ['dL'])],
x, Durbin_Watson_test_df[tuple(name_2_4 + ['dU'])])
name_2_5 = ['p=0.975', 'm=5']
ax_2_5.set_title(name_2_5[0] + ' ' + name_2_5[1])
ax_2_5.plot(x, Durbin_Watson_test_df[tuple(name_2_5 + ['dL'])],
x, Durbin_Watson_test_df[tuple(name_2_5 + ['dU'])])
name_3_1 = ['p=0.99', 'm=1']
ax_3_1.set_title(name_3_1[0] + ' ' + name_3_1[1])
ax_3_1.plot(x, Durbin_Watson_test_df[tuple(name_3_1 + ['dL'])],
x, Durbin_Watson_test_df[tuple(name_3_1 + ['dU'])])
name_3_2 = ['p=0.99', 'm=2']
ax_3_2.set_title(name_3_2[0] + ' ' + name_3_2[1])
ax_3_2.plot(x, Durbin_Watson_test_df[tuple(name_3_2 + ['dL'])],
x, Durbin_Watson_test_df[tuple(name_3_2 + ['dU'])])
name_3_3 = ['p=0.99', 'm=3']
ax_3_3.set_title(name_3_3[0] + ' ' + name_3_3[1])
ax_3_3.plot(x, Durbin_Watson_test_df[tuple(name_3_3 + ['dL'])],
x, Durbin_Watson_test_df[tuple(name_3_3 + ['dU'])])
name_3_4 = ['p=0.99', 'm=4']
ax_3_4.set_title(name_3_4[0] + ' ' + name_3_4[1])
ax_3_4.plot(x, Durbin_Watson_test_df[tuple(name_3_4 + ['dL'])],
x, Durbin_Watson_test_df[tuple(name_3_4 + ['dU'])])
name_3_5 = ['p=0.99', 'm=5']
ax_3_5.set_title(name_3_5[0] + ' ' + name_3_5[1])
ax_3_5.plot(x, Durbin_Watson_test_df[tuple(name_3_5 + ['dL'])],
x, Durbin_Watson_test_df[tuple(name_3_5 + ['dU'])])
ax_1_1.set_ylim(Ymin, Ymax)
ax_2_1.set_ylim(Ymin, Ymax)
ax_3_1.set_ylim(Ymin, Ymax)
ax_1_2.set_ylim(Ymin, Ymax)
ax_2_2.set_ylim(Ymin, Ymax)
ax_3_2.set_ylim(Ymin, Ymax)
ax_1_3.set_ylim(Ymin, Ymax)
ax_2_3.set_ylim(Ymin, Ymax)
ax_3_3.set_ylim(Ymin, Ymax)
ax_1_4.set_ylim(Ymin, Ymax)
ax_2_4.set_ylim(Ymin, Ymax)
ax_3_4.set_ylim(Ymin, Ymax)
ax_1_5.set_ylim(Ymin, Ymax)
ax_2_5.set_ylim(Ymin, Ymax)
ax_3_5.set_ylim(Ymin, Ymax)
legend = (r'$d_L$', r'$d_U$')
ax_1_1.legend(legend)
ax_2_1.legend(legend)
ax_3_1.legend(legend)
ax_1_2.legend(legend)
ax_2_2.legend(legend)
ax_3_2.legend(legend)
ax_1_3.legend(legend)
ax_2_3.legend(legend)
ax_3_3.legend(legend)
ax_1_4.legend(legend)
ax_2_4.legend(legend)
ax_3_4.legend(legend)
ax_1_5.legend(legend)
ax_2_5.legend(legend)
ax_3_5.legend(legend)
plt.show()
# возвращаем настройки Mathplotlib
plt.rcParams['axes.titlesize'] = f_size + 10 # шрифт заголовка
plt.rcParams['legend.fontsize'] = f_size + 6 # шрифт легенды
plt.rcParams['xtick.labelsize'] = f_size + 4 # шрифт подписей меток
plt.rcParams['ytick.labelsize'] = f_size + 4
-
Сохраняем полученный DataFrame в csv-файл, помещаем его в папку table, расположенную внутри папки с рабочим .ipynb-файлом (в которой папку table у нас хранятся файлы с данными из статистических таблиц):
Durbin_Watson_test_df.to_csv(
path_or_buf='tableDurbin_Watson_test_table.csv',
mode='w+',
sep=';',
index_label='n')
Табличные значения статистики критерия Дарбина-Уотсона у нас теперь имеются, можем приступать к созданию пользовательской функции.
Создание пользовательской функции для реализации критерия Дарбина — Уотсона
Рассчитать статистику критерия Дарбина-Уотсона мы можем с помощью функции statsmodels.stats.stattools.durbin_watson.
Создадим пользовательскую функцию Durbin_Watson_test для проверки гипотезы об автокорреляции:
def Durbin_Watson_test(
data,
m = None,
p_level: float=0.95):
a_level = 1 - p_level
data = np.array(data)
n = len(data)
# расчетное значение статистики критерия
DW_calc = sms.stattools.durbin_watson(data)
# табличное значение статистики критерия
if (n >= 15) and (n <= 100):
# восстанавливаем структуру DataFrame из csv-файла
DW_table_df = pd.read_csv(
filepath_or_buffer='table/Durbin_Watson_test_table.csv',
sep=';',
#index_col='n'
)
DW_table_df = DW_table_df.rename(columns={'Unnamed: 0': 'n'})
DW_table_df = DW_table_df.drop([0, 1, 2])
for col in DW_table_df.columns:
DW_table_df[col] = pd.to_numeric(DW_table_df[col], errors='ignore')
DW_table_df = DW_table_df.set_index('n')
DW_table_df.columns = pd.MultiIndex.from_product(
[['p=0.95', 'p=0.975', 'p=0.99'],
['m=1', 'm=2', 'm=3', 'm=4', 'm=5'],
['dL','dU']])
# интерполяция табличных значений
key = [f'p={p_level}', f'm={m}']
f_lin_L = sci.interpolate.interp1d(DW_table_df.index, DW_table_df[tuple(key + ['dL'])])
f_lin_U = sci.interpolate.interp1d(DW_table_df.index, DW_table_df[tuple(key + ['dU'])])
DW_table_L = float(f_lin_L(n))
DW_table_U = float(f_lin_U(n))
# проверка гипотезы
Durbin_Watson_scale = {
1: DW_table_L,
2: DW_table_U,
3: 4 - DW_table_U,
4: 4 - DW_table_L,
5: 4}
Durbin_Watson_comparison = {
1: ['0 ≤ DW_calc < DW_table_L', 'H1: r > 0'],
2: ['DW_table_L ≤ DW_calc ≤ DW_table_U', 'uncertainty'],
3: ['DW_table_U < DW_calc < 4 - DW_table_U', 'H0: r = 0'],
4: ['4 - DW_table_U ≤ DW_calc ≤ 4 - DW_table_L', 'uncertainty'],
5: ['4 - DW_table_L < DW_calc ≤ 4', 'H1: r < 0']}
r_scale = list(Durbin_Watson_scale.values())
for i, elem in enumerate(r_scale):
if DW_calc <= elem:
key_scale = list(Durbin_Watson_scale.keys())[i]
comparison = Durbin_Watson_comparison[key_scale][0]
conclusion = Durbin_Watson_comparison[key_scale][1]
break
elif n < 15:
comparison = '-'
conclusion = 'count less than 15'
else:
comparison = '-'
conclusion = 'count more than 100'
# формируем результат
result = pd.DataFrame({
'n': (n),
'm': (m),
'p_level': (p_level),
'a_level': (a_level),
'DW_calc': (DW_calc),
'ρ': (1 - DW_calc/2),
'DW_table_L': (DW_table_L if (n >= 15) and (n <= 100) else '-'),
'DW_table_U': (DW_table_U if (n >= 15) and (n <= 100) else '-'),
'comparison of calculated and critical values': (comparison),
'conclusion': (conclusion)
},
index=['Durbin-Watson_test'])
return result
Протестируем созданную функцию — будем моделировать временные ряды с различными свойствами и выполнять проверку автокорреляции:
y_func = lambda x, b0, b1: b0 + b1*x
N = 30 # число наблюдений
(mu, sigma) = (0, 25) # параметры моделируемой случайной компоненты (среднее и станд.отклонение)
-
Смоделируем временной ряд с трендом, без автокорреляции остатков:
# моделирование
T_model = np.linspace(1, N, N) # независимая переменная - номер наблюдения
(b0, b1) = (100, 5) # параметры моделируемого временного ряда
Y_model = np.array(y_func(T_model, b0, b1)) + np.random.normal(mu, sigma, N)
# визуализация
axes = sns.jointplot(
x=T_model, y=Y_model,
kind='reg')
plt.show()
# проверка автокорреляции
display(Durbin_Watson_test(Y_model, m=1, p_level=0.95))
# моделирование
T_model = np.linspace(1, N, N) # независимая переменная - номер наблюдения
(b0, b1) = (100, -5) # параметры моделируемого временного ряда
Y_model = np.array(y_func(T_model, b0, b1)) + np.random.normal(mu, sigma, N)
# визуализация
axes = sns.jointplot(
x=T_model, y=Y_model,
kind='reg')
plt.show()
# проверка автокорреляции
display(Durbin_Watson_test(Y_model, m=1, p_level=0.95))
-
Смоделируем временной ряд без тренда:
# моделирование
T_model = np.linspace(1, N, N) # независимая переменная - номер наблюдения
(b0, b1) = (100, 0) # параметры моделируемого временного ряда
Y_model = np.array(y_func(T_model, b0, b1)) + np.random.normal(mu, sigma, N)
# визуализация
axes = sns.jointplot(
x=T_model, y=Y_model,
kind='reg')
plt.show()
# проверка автокорреляции
display(Durbin_Watson_test(Y_model, m=1, p_level=0.95))
# моделирование
T_model = np.linspace(1, N, N) # независимая переменная - номер наблюдения
(b0, b1) = (0, 0) # параметры моделируемого временного ряда
Y_model = np.array(y_func(T_model, b0, b1)) + np.random.normal(mu, sigma, N)
# визуализация
axes = sns.jointplot(
x=T_model, y=Y_model,
kind='reg')
plt.show()
# проверка автокорреляции
display(Durbin_Watson_test(Y_model, m=1, p_level=0.95))
-
Смоделируем временной ряд с трендом, с положительной автокорреляцией:
# моделирование
T_model = np.linspace(1, N, N) # независимая переменная - номер наблюдения
(b0, b1) = (100, 5) # параметры моделируемого временного ряда
E = np.array([np.random.normal(mu, sigma, 1)])
r = 0.9
for i in range(1, N):
elem = r*E[i-1] + np.random.normal(mu, sigma, 1)
E = np.append(E, elem)
Y_model = np.array(y_func(T_model, b0, b1)) + E
# визуализация
axes = sns.jointplot(
x=T_model, y=Y_model,
kind='reg')
plt.show()
# проверка автокорреляции
display(Durbin_Watson_test(Y_model, m=1, p_level=0.95))
-
Смоделируем временной ряд с трендом, с отрицательной автокорреляцией:
# моделирование
T_model = np.linspace(1, N, N) # независимая переменная - номер наблюдения
(b0, b1) = (100, 5) # параметры моделируемого временного ряда
E = np.array([np.random.normal(mu, sigma, 1)])
r = -0.9
for i in range(1, N):
elem = r*E[i-1] + np.random.normal(mu, sigma, 1)
E = np.append(E, elem)
Y_model = np.array(y_func(T_model, b0, b1)) + E
# визуализация
axes = sns.jointplot(
x=T_model, y=Y_model,
kind='reg')
plt.show()
# проверка автокорреляции
display(Durbin_Watson_test(Y_model, m=1, p_level=0.95))
-
Смоделируем временной ряд без тренда, с положительной автокорреляцией:
# моделирование
T_model = np.linspace(1, N, N) # независимая переменная - номер наблюдения
(b0, b1) = (100, 0) # параметры моделируемого временного ряда
E = np.array([np.random.normal(mu, sigma, 1)])
r = 0.9
for i in range(1, N):
elem = r*E[i-1] + np.random.normal(mu, sigma, 1)
E = np.append(E, elem)
Y_model = np.array(y_func(T_model, b0, b1)) + E
# визуализация
axes = sns.jointplot(
x=T_model, y=Y_model,
kind='reg')
plt.show()
# проверка автокорреляции
display(Durbin_Watson_test(Y_model, m=1, p_level=0.95))
# моделирование
T_model = np.linspace(1, N, N) # независимая переменная - номер наблюдения
(b0, b1) = (0, 0) # параметры моделируемого временного ряда
E = np.array([np.random.normal(mu, sigma, 1)])
r = 0.9
for i in range(1, N):
elem = r*E[i-1] + np.random.normal(mu, sigma, 1)
E = np.append(E, elem)
Y_model = np.array(y_func(T_model, b0, b1)) + E
# визуализация
axes = sns.jointplot(
x=T_model, y=Y_model,
kind='reg')
plt.show()
# проверка автокорреляции
display(Durbin_Watson_test(Y_model, m=1, p_level=0.95))
-
Смоделируем временной ряд без тренда, с отрицательной автокорреляцией:
# моделирование
T_model = np.linspace(1, N, N) # независимая переменная - номер наблюдения
(b0, b1) = (100, 0) # параметры моделируемого временного ряда
E = np.array([np.random.normal(mu, sigma, 1)])
r = -0.9
for i in range(1, N):
elem = r*E[i-1] + np.random.normal(mu, sigma, 1)
E = np.append(E, elem)
Y_model = np.array(y_func(T_model, b0, b1)) + E
# визуализация
axes = sns.jointplot(
x=T_model, y=Y_model,
kind='reg')
plt.show()
# проверка автокорреляции
display(Durbin_Watson_test(Y_model, m=1, p_level=0.95))
# моделирование
T_model = np.linspace(1, N, N) # независимая переменная - номер наблюдения
(b0, b1) = (0, 0) # параметры моделируемого временного ряда
E = np.array([np.random.normal(mu, sigma, 1)])
r = -0.9
for i in range(1, N):
elem = r*E[i-1] + np.random.normal(mu, sigma, 1)
E = np.append(E, elem)
Y_model = np.array(y_func(T_model, b0, b1)) + E
# визуализация
axes = sns.jointplot(
x=T_model, y=Y_model,
kind='reg')
plt.show()
# проверка автокорреляции
display(Durbin_Watson_test(Y_model, m=1, p_level=0.95))
Конечно, данный вычислительный эксперимент не может претендовать на всеобъемлемость, однако определенный любопытный предварительный вывод можно сделать: при наличии любого тренда (даже если этот тренда представляет собой равенство постоянной величине ) критерий Дарбина-Уотсона выдает нам наличие положительной автокорреляции (даже если в модели автокорреляция не заложена нет или она отрицательная). Такой вывод нужно исследовать более глубоко, но это не входит в цель данного обзора. Специалист должен помнить об особенностях критерия Дарбина-Уотсона.
Теперь мы можем перейти к практическим примерам.
Пример 1: проверка автокорреляции модели временного ряда
Формирование исходных данных
В качестве исходных данных рассмотрим динамику показателей индексов пересчета сметной стоимости проектно-изыскательских работ в РФ. Эти показатели ежеквартально публикует Министерство строительства и ЖКХ РФ, а все проектные и изыскательские организации используют эти показатели при составлении смет на свои работы.
В данном случае мы имеем набор показателей в виде временного ряда, для которого будем строить регрессионную модель долговременной тенденции (тренда), и остатки этой регрессионной модели будем исследовать на автокорреляцию.
Исходные данные содержаться в файле Ежеквартальные индексы ПИР.xlsx, который помещен в папку data.
Прочитаем xlsx-файл:
data_df = pd.read_excel('data/Ежеквартальные индексы ПИР.xlsx', sheet_name='БД')
#display(data_df)
display(data_df.head(), data_df.tail())
data_df.info()
Не будем подробно останавливаться на содержимом файла и его первичной обработке — это выходит за пределы данного обзора. Специалисты, причастные к сфере строительства и проектирования, поймут, а для остальных специалистов эти цифры можно воспринимать по аналогии с индексами инфляции Росстата и Минэкономразвития.
Прочитаем из этого файла интересующие нас данные — индексы изменения сметной стоимости проектных работ к уровню цен на 01.01.2001 г.:
Ind_design_2001 = np.array(data_df['Ипроект2001'])
print(Ind_design_2001, 'n', type(Ind_design_2001), len(Ind_design_2001))
Сохраним также вспомогательные (технические) переменные, необходимые при анализе временных рядов — дату (Date) и номер наблюдения (T):
# Дата показателя
Date = np.array(data_df['ДАТА'])
# Номер наблюдения
T = np.array(data_df['N'])
Для удобства дальнейшей работы сформируем сформируем отдельный DataFrame:
dataset_df = pd.DataFrame({
'T': T,
'Date': Date,
'Ind_design_2001': Ind_design_2001})
display(dataset_df.head(), dataset_df.tail())
Визуализация
Настройка заголовков:
# Общий заголовок проекта
Task_Project = "Анализ динамики индексов изменения сметной стоимости проектно-изыскательских работ в РФ"
# Заголовок, фиксирующий момент времени
AsOfTheDate = "за 2008-2022 гг."
# Заголовок раздела проекта
Task_Theme = ""
# Общий заголовок проекта для графиков
Title_String = f"{Task_Project}n{AsOfTheDate}"
# Наименования переменных
Variable_Name_T_month = "Ежемесячные данные"
Variable_Name_Ind_design_2001 = "Индекс изменения сметной стоимости проектных работ к уровню цен на 01.01.2001 г."
# Границы значений переменных (при построении графиков):
(X_min_graph, X_max_graph) = (0.0, max(T))
(Y_min_graph, Y_max_graph) = (2.0, 6.0)
graph_plot_sns_np(
Date, Ind_design_2001,
Ymin_in=Y_min_graph, Ymax_in=Y_max_graph,
color='orange',
title_figure=Title_String, title_figure_fontsize=12,
title_axes=Variable_Name_Ind_design_2001, title_axes_fontsize=15,
x_label=Variable_Name_T_month, label_fontsize=12)
Построение и анализ регрессионной модели
Построим линейную регрессионную модель и проведем ее экспресс-анализ:
model_linear_ols_1 = smf.ols(formula='Ind_design_2001 ~ T', data=dataset_df)
result_linear_ols_1 = model_linear_ols_1.fit()
print(result_linear_ols_1.summary2())
Формализация модели:
# Функция линейной регрессионной модели (SLRM - simple linear regression model)
SLRM_func = lambda x, b0, b1: b0 + b1*x
# параметры модели
b0 = result_linear_ols_1.params['Intercept']
b1 = result_linear_ols_1.params['T']
# уравнение модели
regr_model_linear_ols_1_func = lambda x: SLRM_func(x, b0, b1)
График модели:
R2 = round(result_linear_ols_1.rsquared, DecPlace)
legend_equation = f'линейная регрессия ' + r'$Y$' + f' = {b0:.4f} + {b1:.5f}{chr(183)}' + r'$X$' if b1 > 0 else
f'линейная регрессия ' + r'$Y$' + f' = {b0:.4f} - {abs(b1):.5f}{chr(183)}' + r'$X$'
# Пользовательская функция
graph_regression_plot_sns(
T, Ind_design_2001,
regression_model=regr_model_linear_ols_1_func,
#Xmin=X_min_graph, Xmax=X_max_graph,
Ymin=Y_min_graph, Ymax=Y_max_graph,
display_residuals=True,
title_figure=Variable_Name_Ind_design_2001, title_figure_fontsize=16,
title_axes = 'Линейная регрессионная модель',
x_label=Variable_Name_T_month,
#y_label=Variable_Name_Ind_design_2001,
label_legend_regr_model = legend_equation + 'n' + r'$R^2$' + f' = {R2}',
s=60)
Ошибки аппроксимации модели:
(model_error_metrics, result) = regression_error_metrics(model_linear_ols_1, model_name='linear_ols')
display(result)
Проверка нормальности распределения остатков:
res_Y_1 = np.array(result_linear_ols_1.resid)
# Пользовательская функция
graph_hist_boxplot_probplot_sns(
data=res_Y_1,
data_min=-0.25, data_max=0.25,
graph_inclusion='hbp',
data_label=r'$ΔY = Y - Y_{calc}$',
#title_figure=Task_Project,
title_axes='Остатки линейной регрессионной модели', title_axes_fontsize=16)
norm_distr_check(res_Y_1)
Проверка гетероскедастичности:
Goldfeld_Quandt_test_df = Goldfeld_Quandt_test(result_linear_ols_1, p_level=0.95, model_name='linear_ols')
Breush_Pagan_test_df = Breush_Pagan_test(result_linear_ols_1, p_level=0.95, model_name='linear_ols')
White_test_df = White_test(result_linear_ols_1, p_level=0.95, model_name='linear_ols')
heteroscedasticity_tests_df = pd.concat([Breush_Pagan_test_df, White_test_df, Goldfeld_Quandt_test_df])
display(heteroscedasticity_tests_df)
Проверка автокорреляции:
sms.stattools.durbin_watson(res_Y_1)
Как видим, результат совпадает со значением статистики критерия в таблице выдачи регрессионного анализа.
display(Durbin_Watson_test(res_Y_1, m=1, p_level=0.95))
Выводы по результатам анализа модели:
Итак, мы провели статистический анализ регрессионной модели и установили:
-
Регрессионная модель хорошо аппроксимирует фактические данные.
-
Остатки модели имеют нормальное распределение (хотя результаты тестов противоречивы).
-
Коэффициент детерминации значим; модель объясняет 97% вариации независимой переменной.
-
Коэффициенты регрессии значимы.
-
Обнаружена гетероскедастичность.
-
Тест критерия Дарбина-Уотсона свидетельствует о наличии значимой положительной автокорреляции остатков.
Резюме — несмотря на вроде бы формально хорошие качественные показатели, нам следует признать эту модель некачественной и отвергнуть по следующим негативным причинам:
-
На графике модели хорошо заметна точка излома, которая говорит о смене тенденции (существуют специальные статистические тесты для проверки гипотез о смене тенденции, например, тест Чоу, но мы в данном обзоре рассматривать их не будем).
-
График остатков показывает нам крайне неприглядную картину: на начальном этапе тенденции явно прослеживаются колебания, а после точки излома тенденция вообще кардинально меняется.
-
Противоречивость тестов проверки нормальности распределения остатков.
-
Наличие гетероскедастичности.
-
Наличие автокорреляции. Явление автокорреляции может возникать в случае смены тенденции [5, с.118].
Тот факт, что распределение остатков признается нормальным по результатам таких тестов как Шапиро-Уилка, Эппса-Палли, Андерсона-Дарлинга может иметь разные причины, например, мы можем иметь дело со смесью двух распределений. Этот вопрос требует отдельного тщательного исследования.
Применение построенной модели приведет к ошибке, так как модель хорошо аппроксимирует существующие данные, но из-за смены тенденции неспособна дать качественный прогноз. Проиллюстрировать это можно, построив доверительный интервалы прогноза (формально мы можем это сделать, так как распределение остатков признано нормальным):
graph_regression_pair_predict_plot_sns(
model_fit=result_linear_ols_1,
regression_model_in=regr_model_linear_ols_1_func,
Xmin=X_min_graph, Xmax=X_max_graph+12, Nx=25,
Ymin_graph=2.0, Ymax_graph=Y_max_graph,
title_figure=Variable_Name_Ind_design_2001, title_figure_fontsize=16,
title_axes='Линейная регрессионная модель', title_axes_fontsize=14,
#x_label=Variable_Name_X,
#y_label=Variable_Name_Y,
label_legend_regr_model=f'линейная регрессия Y = {b0:.3f} + {b1:.4f}*X',
s=50,
result_output=False)
Нет, такой прогноз нам не нужен.
Пример 2: проверка автокорреляция регрессионной модели
Формирование исходных данных
Рассмотрим пример множественной линейной регрессионной модели, приведенный в источнике [6, с.192].
В качестве исходных данных рассматриваются ряд макроэкономических показателей США за 1960-1985 гг. (в сопоставимых ценах 1982 г., млрд.долл):
-
DPI — годовой совокупный располагаемый личный доход;
-
CONS — годовые совокупные потребительские расходы;
-
ASSETS — финансовые активы населения на начало календарного года.
Предполагается, что между переменной CONS и регрессорами DPI, ASSETS имеется линейная регрессионная связь.
Исходные данные содержаться в файле Macroeconomic_indicators_USA_1960_1985.csv, который помещен в папку data.
Прочитаем csv-файл:
data_df = pd.read_csv(filepath_or_buffer='data/Macroeconomic_indicators_USA_1960_1985.csv', sep=';')
display(data_df)
#display(data_df.head(), data_df.tail())
data_df.info()
Визуализация
fig, axes = plt.subplots(figsize=(297/INCH, 210/INCH))
title_figure = 'Анализ макроэкономических показателей США за 1960-1985 гг.'
fig.suptitle(title_figure, fontsize = 18)
sns.lineplot(
x = data_df['YEAR'], y = data_df['DPI'],
linewidth=3,
legend=True,
label='DPI',
ax=axes)
sns.lineplot(
x = data_df['YEAR'], y = data_df['CONS'],
linewidth=3,
legend=True,
label='CONS',
ax=axes)
sns.lineplot(
x = data_df['YEAR'], y = data_df['ASSETS'],
linewidth=3,
legend=True,
label='ASSETS',
ax=axes)
axes.set_xlabel('Year')
axes.set_ylabel('US$ billion')
plt.show()
Построение и анализ регрессионной модели
Построим линейную регрессионную модель и проведем ее экспресс-анализ:
y = data_df['CONS']
X = data_df[['DPI', 'ASSETS']]
X = sm.add_constant(X)
model_linear_ols_2 = sm.OLS(y, X)
result_linear_ols_2 = model_linear_ols_2.fit()
print(result_linear_ols_2.summary2())
График модели:
fig = plt.figure(figsize=(297/INCH, 420/INCH/1.5))
ax1 = plt.subplot(2,1,1)
ax2 = plt.subplot(2,1,2)
title_figure = 'Анализ макроэкономических показателей США за 1960-1985 гг.'
fig.suptitle(title_figure, fontsize = 18)
fig = sm.graphics.plot_fit(
result_linear_ols_2, 'DPI',
vlines=True, # это параметр отвечает за отображение доверительных интервалов для Y
ax=ax1)
ax1.set_ylabel('CONS (US$ billion)', fontsize = 12)
ax1.set_xlabel('DPI (US$ billion)', fontsize = 12)
ax1.set_title('Fitted values vs. DPI', fontsize = 15)
fig = sm.graphics.plot_fit(
result_linear_ols_2, 'ASSETS',
vlines=True, # это параметр отвечает за отображение доверительных интервалов для Y
ax=ax2)
ax2.set_ylabel('CONS (US$ billion)', fontsize = 12)
ax2.set_xlabel('ASSETS (US$ billion)', fontsize = 12)
ax2.set_title('Fitted values vs. ASSETS', fontsize = 15)
plt.show()
Ошибки аппроксимации модели:
(model_error_metrics, result) = regrpy
ession_error_metrics(model_linear_ols_2, model_name='linear_ols')
display(result)
Проверка нормальности распределения остатков:
res_Y_2 = np.array(result_linear_ols_2.resid)
# Пользовательская функция
graph_hist_boxplot_probplot_sns(
data=res_Y_2,
data_min=-60, data_max=60,
graph_inclusion='hbp',
data_label=r'$ΔY = Y - Y_{calc}$',
#title_figure=Task_Project,
title_axes='Остатки линейной регрессионной модели', title_axes_fontsize=16)
norm_distr_check(res_Y_2)
Прроверка гетероскедастичности:
Goldfeld_Quandt_test_df = Goldfeld_Quandt_test(result_linear_ols_2, p_level=0.95, model_name='linear_ols')
Breush_Pagan_test_df = Breush_Pagan_test(result_linear_ols_2, p_level=0.95, model_name='linear_ols')
White_test_df = White_test(result_linear_ols_2, p_level=0.95, model_name='linear_ols')
heteroscedasticity_tests_df = pd.concat([Breush_Pagan_test_df, White_test_df, Goldfeld_Quandt_test_df])
display(heteroscedasticity_tests_df)
Проверка автокорреляции:
display(Durbin_Watson_test(res_Y_2, m=1, p_level=0.95))
Выводы по результатам анализа модели:
Как видим, в целом результаты расчетов совпадают с результатами из первоисточника [6], в части выявления автокорреляции аналогично.
Информация к размышлению.
Анализ показывает, что модель хорошо аппроксимирует фактические данные, но имеет место отклонение от нормального закона распределения остатков, противоречивые выводы о гетероскедастичности и наличие автокорреляции, то есть модель некачественная.
Также мы видим, что динамика макроэкономических показателей свидетельствует о наличии трендов, однако, если в модель добавить еще один фактор — год или номер наблюдения — то, этот фактор окажется незначимым.
В дальнейшем автор при анализе остатков модели [6, с.198] выявляет структурный сдвиг (обусловленный мировым топливно-энергетическим кризисом в 1973 г.) и вводит в модель фиктивные переменные, учитывающие этот структурный сдвиг
Итоги
Итак, подведем итоги:
-
мы рассмотрели способы реализации в полной мере критерия Дарбина-Уотсона средствами python, создали пользовательскую функцию, уменьшающую размер кода;
-
разобрали пример оцифровки таблицы критических значений статистического критерия для реализации пользовательской функции.
Исходный код находится в моем репозитории на GitHub.
Надеюсь, данный обзор поможет специалистам DataScience в работе.
Литература
-
Кобзарь А.И. Прикладная математическая статистика. Для инженеров и научных работников. — М.: ФИЗМАТЛИТ, 2006. — 816 с.
-
Айвазян С.А. Прикладная статистика. Основы эконометрики: В 2 т. — Т.2: Основы эконометрики. — 2-е изд., испр. — М.: ЮНИТИ-ДАНА, 2001. — 432 с.
-
Фёрстер Э., Рёнц Б. Методы корреляционного и регрессионного анализа / пер с нем. — М.: Финансы и статистика, 1983. — 302 с.
-
Магнус Я.Р. и др. Эконометрика. Начальный курс — М.: Дело, 2004. — 576 с.
-
Тихомиров Н.П., дорохина Е.Ю. Эконометрика. — М.: Экзамен, 2003. — 512 с.
-
Носко В.П. Эконометрика. Кн.1. Ч.1, 2. — М.: Издательский дом «Дело» РАНХиГС, 2011. — 672 с.
-
Вандер Плас Дж. Python для сложных задач: наука о данных и машинное обучение. — СПб: Питер, 2018. — 576 с.