воскресенье, 18 октября 2020 г.

Статистика в R : диагностика линейной модели

Подобрав линейную модель мы еще не знаем, насколько мы можем доверять тому, что видим, насколько зависимость действительно существует. Для ответа на этот вопрос нужен статистический тест, и таких тестов возможно два. Есть два способа тестировать значимость связи, мы можем проверить, значима ли модель в целом, при помощи F-критерия, или мы можем проверить значимость конкретных коэффициентов, и тут мы можем использовать два способа:t-критерий и тот же F-критерий.


Разберем, как устроен t-тест для проверки значимости коэффициентов линейной регрессии. Прежде чем пользоваться каким-то тестом, нужно сформулировать, как будут выглядеть гипотезы. И в нашем случае нулевая гипотеза будет утверждать, что значение коэффициента равно нулю.  Альтернативная гипотеза формулируется как двусторонняя. То есть, нам будет не важно направление различий, нам будет не важно каким образом именно наклонена регрессионная прямая. Мы просто констатируем факт, что коэффициент линейной регрессии в генеральной совокупности не равен нулю.

Чтобы проверить эти гипотезы, мы можем использовать t-статистику. Все t-статистики устроены одинаково. У нас есть дробь и в числителе мы из наблюдаемого значения параметра, вычитаем ожидаемое при нулевой гипотезе и делим все это на стандартную ошибку.  Наблюдаемое значение. мы его определяем, когда подбирается уравнение линейной регрессии и определяем его по выборке. Ожидаемое значение берется из формулировки нулевой гипотезы. И наконец, мы должны все это поделить на стандартную ошибку. Стандартные ошибки  устроены таким образом, что там может использоваться либо дисперсия остатков, оцененная по генеральной совокупности, либо ее оценка выборочная. К генеральной совокупности у нас нет доступа и мы используем выборочную оценку. В результате получаем вот это отношение,  t-статистика, она подчиняется t-распределению с числом степеней свободы, n минус число параметров, которые мы использовали для подбора линейной регрессии. 

Тестирование значимости коэффициента регрессии при помощи t-критерия

$$H_{0} : \beta _{k}=0$$

$$H_{0} : \beta _{k}\neq 0$$

$$t=\frac{b_{k}-\beta _{k}}{SE_{bk}}=\frac{b_{k}}{SE_{bk}}$$

t-статистика подчиняется t-распределению с числом степеней свободы df=n-p

n - объем выборки

p - число параметров модели

k - конкретный коэффициент линейной регрессии

С помощью t-статистики протестируем значимость коэффициента угла наклона. Обычно при тестировании интересует именно этот коэффициент. Потому что он описывает связь между откликом и переменной предиктором. Он описывает, на сколько единиц изменяется отклик, при изменении предиктора на одну единицу. То есть, у этого коэффициента есть четкий и понятный физический смысл. Тестирование значимости свободного члена проводится значительно реже, так как   для многих данных он не имеет физического смыслы. Поэтому, для того, чтобы проверить значимость связи, нам достаточно протестировать значимость коэффициента b1. 

Чтобы увидеть результаты тестов значимости коэффициентов в R, достаточно заглянуть в summary. 

summary(model1)

Call:

lm(formula = mpg ~ hp, data = df)
Residuals:
    Min      1Q  Median      3Q     Max 
-5.7121 -2.1122 -0.8854  1.5819  8.2360 
Coefficients:
                   Estimate  Std. Error   t value   Pr(>|t|)    
(Intercept) 30.09886    1.63392    18.421     < 2e-16 ***
hp             -0.06823      0.01012    -6.742      1.79e-07 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 3.863 on 30 degrees of freedom
Multiple R-squared:  0.6024, Adjusted R-squared:  0.5892 
F-statistic: 45.46 on 1 and 30 DF,  p-value: 1.788e-07


Функция выдает таблицу коэффициентов, где помимо оценок, будут приведены их стандартные ошибки. Значение t-статистики и уровень значимости для каждого теста. И мы видим, что в случае описания зависимости, величина mpg от мощности двигателя hp мы получили t-статистику равную -6.742 и получили очень маленький уровень значимости, намного меньше, чем 5%, которые обычно используется в качестве порога. Поэтому мы отвергаем нулевую гипотезу об отсутствии связи. 

Однако подтвердив статистическую значимость связи мы не знаем, насколько хорошо полученное уравнение регрессии описывает данные.

Тестирование значимости модели при помощи F критерия

Существует еще один способ тестировать значимость зависимости. Это F-критерий, который построен совсем на другом принципе. Для того чтобы в нем разобраться,  нужно рассмотреть, как устроена общая изменчивость и понять, из каких частей она может состоять, на какие части мы ее можем разложить. 

Самый простой способ описать общую изменчивость — это посчитать отклонение значений и наблюдений от общего среднего. Сами по себе отклонения в положительную или отрицательную сторону нивилируют друг друга, поэтому мы берем не просто сумму отклонений, а сумму квадратов отклонений, и это называется по-английски sum of squares. Поэтому характеристику общей изменчивости принято называть двумя латинскими буквами SSt. Индекс t в данном случае обозначает слово total — общая изменчивость.

 Эту общую изменчивость в данных можно разложить на части. Когда мы изучаем зависимость отклика от предикторов, эта зависимость описывает часть информации, содержащейся в общей изменчивости. И часть информации остается неописанной— это остаточная изменчивость. Изменчивость, связанная с регрессией,— это отклонение от общего среднего точек предсказанных значений, которые лежат на регрессионной прямой. А случайная изменчивость — это то, что мы не смогли объяснить нашей регрессией, это остатки отклонения наблюдаемых значений от предсказанных. 

Все эти характеристики изменчивости прекрасно ее описывают, но их сложно сравнивать между двумя разными моделями, потому что их величина будет зависеть от объема выборки. Нужно их каким-то образом усреднить. Для этого мы можем использовать число степеней свободы и поделить каждую изменчивость на соответствующее значение. Общее число степеней свободы— это объем выборки минус 1, потому что мы для этой выборки знаем, чему равна общая сумма квадратов отклонений, чему равно среднее значение. Из-за этих ограничений у нас свободно варьирует только n − 1 значение. Число степеней свободы, связанное со случайной изменчивостью, это объем выборки минус число параметров, которым описывается наша зависимость. В данном случае у нас простая линейная регрессия, в ней использовано два параметра, соответственно, число степеней свободы будет n − 2. Число степеней свободы, связанное с регрессией, можно найти по разности этих величин. После того как мы поделим сумму квадратов отклонений на их число степеней свободы, у нас получатся дисперсии. И если суммы квадратов были аддитивны и общая сумма квадратов была равна сумме квадратов, связанных с регрессией и остаточной сумме квадратов, то дисперсии уже не будут аддитивны, но зато у нас появится возможность сравнивать их друг с другом. Дисперсия, связанная с регрессией, и остаточная дисперсия помогут нам протестировать значимость зависимости.  Можно показать, что в случае для простой линейной регрессии, а для других там будет аналогичная логика, сумма квадратов, связанная с регрессией, будет описываться вот таким вот выражением, ее ожидаемое значение. 

$$E(MS_r)=\sigma ^{2}+\beta _{1}\sum (x_{i}-\bar{x})^2$$

$$E(MS_e)=\sigma ^{2}$$

Она будет состоять из суммы квадратов остатков в генеральной совокупности и слагаемого, величина которого зависит от коэффициента угла наклона. Матожидание дисперсии, связанной с остаточной изменчивостью, будет равно дисперсии остатков в генеральной совокупности. Эти две дисперсии только частью, зависящей от β1. В случае, если нет зависимости, коэффициент β1 будет равен нулю. Соответственно, мы можем использовать эту информацию для того, чтобы проверить при помощи дисперсий — остаточной и связанной с регрессией — гипотезу о равенстве коэффициента угла наклона нулю. Если у нас связь есть, то дисперсия, связанная с регрессией, всегда будет больше, чем остаточная дисперсия. Если связи нет, то они будут одинаковы, потому что там останется только сигма.

Критерий, который позволяет проверить эти гипотезы, называется F-критерием в честь сэра Рональда Фишера, который его открыл где-то в 20-х,30-х годах прошлого века. Вначале этот статистический критерий назывался Z Фишера, но потом другой известный статистик Снедекер предложил его назвать в честь Рональда Фишера, потому что Рональд Фишер  оказал очень сильное влияние на развитие всей статистики XX и XXI веков, потому что он заложил основы практически всех областей современной статистики. 

$$F_{df_{r},df_{e}}=\frac{MS_{r}}{MS_{e}}$$

Для простой линейной регрессии 

$$df_{r}=1$$

$$df_{у}=т-2$$

Будем использоватьF-критерий для тестирования значимости коэффициента регрессии. И для этого нам понадобится построить теоретическое распределение F-статистики. Теоретическое распределение имеет характерную форму с такой горкой в начале в области маленьких значений и с длинным-длинным правым хвостом. Гипотеза, которую мы будем проверять, односторонняя, поэтому нас будет интересовать только правый хвост. Действительно, по формулам матожиданий, дисперсия, связанная с регрессией, будет всегда больше, чем остаточная дисперсия, если есть зависимость. Именно поэтому нас интересует правый хвост F-распределения. Форма F-распределения зависит от двух параметров: от числа степеней свободы той дисперсии, которая была использована в числителе, и числа степеней свободы той дисперсии, которая была использована в знаменателе. Соответственно, мы по нашим данным получим какое-то значение t-статистики, и если оно попадет в этот хвост редких значений и если вероятность получить такое или более экстремальное значение в статистике в условиях, когда нулевая гипотеза верна очень низка, мы эту нулевую гипотезу отвергнем и скажем, что связь есть. 

Еще раз посмотрим на summary модели

summary(model1)

Call:

lm(formula = mpg ~ hp, data = df)
Residuals:
    Min      1Q  Median      3Q     Max 
-5.7121 -2.1122 -0.8854  1.5819  8.2360 
Coefficients:
                   Estimate  Std. Error   t value   Pr(>|t|)    
(Intercept) 30.09886    1.63392    18.421     < 2e-16 ***
hp             -0.06823      0.01012    -6.742      1.79e-07 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 3.863 on 30 degrees of freedom
Multiple R-squared:  0.6024, Adjusted R-squared:  0.5892 
F-statistic: 45.46 on 1 and 30 DF,  p-value: 1.788e-07

F-статистики по нашим данным и число степеней свободы числителя и знаменателя, а также уровень значимости. Сравниваем уровень значимости с пороговым значением, которое мы используем, видим, что этот уровень значимости намного меньше 5 %, и отвергаем гипотезу нулевую об отсутствии связей. Мы можем сказать, что наши данные показывают, что связь между величиной mpg и hp статистически значима. 

Качество подгонки модели

В тот момент, когда вы уже подобрали линейную регрессию, конечно, вас интересует вопрос: а насколько  модель адекватно она описывает данные?  Когда мы говорили про F-критерий, мы говорили о том, как устроена общая изменчивость, на какие части она раскладывается. Поэтому логично использовать меру, которая бы позволила посчитать соотношение объясненной и общей изменчивости? 

Можно легко получить количественную оценку, которая будет показывать, какая доля общей изменчивости объясняется регрессией. Нужно поделить изменчивость, связанную с регрессией, на общую изменчивость. Коэффициент детерминации будет меняться в интервале от нуля до единицы. Если он будет большой какой-то величиной, это будет значить, что регрессия объяснила практически все, что было в данных. И если мы получим какое-то маленькое значение, это будет значить, что регрессия объяснила очень мало и очень много изменчивости осталось не объясненной, ушло в остаточную изменчивость. Коэффициент детерминации R² непосредственно связан с величиной коэффициента корреляции, или простой линейной регрессии. Справедливо, что если мы возьмем и посчитаем корреляцию между двумя величинами и возведем ее в квадрат, то это будет значение коэффициента детерминации. Таким образом, уже если вы просто посчитали корреляцию, вы можете представить, как лягут точки на графике. Соответственно, если коэффициент корреляции большой, то точки на графике будут вот таким вот узким вытянутым облаком. Если коэффициент корреляции маленький, то это значит, что точки на графике будут расположены довольно широко вокруг мысленно проведенной регрессионной прямой.

Коэффициент детерминации - мера качества подгонки модели

Описывает, какую долю изменчивости зависимой переменной объясняет модель

$$R^{2}=\frac{SS_{r}}{SS_{t}}$$

Изменяется в интервале 0 <= R² <=1 и  R² = r²

В нашей модели

Multiple R-squared:  0.6024, Adjusted R-squared:  0.5892 

В нашей модели это Multiple R-squared. И в данном случае для зависимости величины mpg от hp мы получили множественный коэффициент детерминации R² — 0,60, то есть примерно 60 % общей изменчивости объясняется этой зависимостью. 

Анализ остатков линейной модели

Анализ остатков состоит из двух важных этапов, в первую очередь мы можем использовать остатки для того, чтобы выявлять наблюдения, которые влияют на ход регрессии больше всех, если такие есть, то с ними нужно отдельно разбираться. А кроме того, при помощи анализа остатков можно проверить условия применимости тестов, которые мы использовали для проверки значимости коэффициентов. Можно выяснить линейна ли связь. Есть еще важное требование у всех тестов. Наши наблюдения должны быть независимы друг от друга, independent, и они должны быть распределены идентично, identical distributed, это часто по английски вот так вот сокращается вместе эти три условия. Кроме того, если вдруг мы работаем с моделью, в которой несколько предикторов, нам нужно, чтобы эти предикторы были независимо друг от друга, это называется отсутствие мультиколлинеарности. Все эти условия можно проверить при помощи анализа остатков. 

Разновидности остатков

Сырые остатки

$$e_{i}=y_{i}-\bar{y_{i}}$$

Самый простой тип остатков — это так называемые «сырые» остатки, по-английски raw residuals. . Отклонения наблюдаемых значений от регрессионной прямой Эти остатки  редко используются, потому что с ними не очень удобно работать, nfr rfr  bх величина зависит от масштаба шкалы, в которой измерены переменные.

Стандартизированные (стьюдентизированные) остатки

$$s_{i}=\frac{e_{i}}{\sqrt{MS_{e}(1-h_{ii})}}$$

$h_{ii}$ - сила воздействия отдельного наблюдения (leverage , рычаг проекционной матрицы)

Самый простой способ уравнять шкалы — это стандартизация. Когда мы что-то стандартизуем, автоматически масштаб переменных выравнивается. С остатками можно сделать то же самое. Их можно стандартизовать. Самый простой способ стандартизовать остатки — это поделить на разброс значений остатков. На стандартное отклонение, связанное с остатками, то есть на корень из дисперсии, связанной с остатками. Но такой простой способ стандартизации не подходит, потому что из-за того, что мы оцениваем нашу регрессию по выборке, и у нас эта величина не очень равномерно покрывает весь диапазон значений предикторов.  Чтобы у нас стандартизация во всём диапазоне предикторов была одним и тем же способом сделана, нам нужно ввести какие-то весовые коэффициенты. Здесь h с двумя индексами ii — это сила воздействия, так называемая leverage,или рычаг проекционной матрицы.  В результате такой стандартизации у нас получаются так называемые стьюдентизированные остатки. Эти остатки уже легко сравнивать, потому что их величина не будет зависеть от масштаба. 

В обоих случаях, вне зависимости от того, в каких единицах была измерена зависимая переменная, диапазон остатков примерно одинаков. Он измеряется в одних и тех же значениях. Фактически он измеряется в стандартных отклонениях остатков. Если остатки нормально распределены, то в пределах двух стандартных отклонений будет лежать 95 % всех остатков. Приблизительно. Конечно, стьюдентизированные остатки подчиняются T-распределению, но оно более или менее похоже на нормальное, так что приблизительно 95 % там будет лежать. И если у нас есть какие-то точки, которые заходят за пределы двух стандартных отклонений, но не очень далеко, и остаются в пределах трёх стандартных отклонений — это не обычное наблюдение, но нам ещё не стоит беспокоиться. А вот самые странные наблюдения, они будут лежать уже за пределами трёх стандартных отклонений. 

Влиятельные наблюдения

Влиятельные наблюдения - это такие наблюдения, которые вносят большой вклад в то, как проходит регрессионная прямая. 

Линии регрессии как бы качаются вокруг точки с координатами x среднее, y среднее. Они качаются и в зависимости оттого насколько далеко наблюдение находится на регрессионной прямой, у него может быть либо маленький рычаг, оно не сильно сдвигает регрессионную прямую, либо большой рычаг, если оно далеко находится в области малых значений или области больших значений. Не только рычаг важен, важна еще величина остатка. Эти две вещи нужно каким-то образом учесть, чтобы описывать, насколько сильно могут точки повлиять на ход регрессионной прямой.  Величина рычага может меняться в пределах от единицы, деленной на объем выборки, до единицы. То есть это какое-то маленькое значение, но у него есть верхний предел. Соответственно, можно рассчитать эту величину для любого наблюдения и по ее величине судить о том, как оно повлияет на ход регрессии. 

Точки, располагающиеся дальше от $\bar{x_{i}}$ окажут более сильное воздействие на $\hat{y}$

$$1/n\leq h_{ii} \leq 1$$

Если $h_{ii} > 2(\frac{p}{n})$, надо проверить данные наблюдения

 Если величина рычага больше, чем два раза взять число параметров и поделить на объем выборки, то такое наблюдение обычно нужно проверить. Это не значит, что это какая-то аномалия или ошибка в данных обязательно. Но это может быть, поэтому лучше проверить. Но влиятельность точек определяется не только величиной рычага, но еще и величиной остатка. Поэтому необходим критерий, учитывающий оба фактора.

Расстояние Кука (Cook's distance)

Описывает, как повлияет на модель удаление данного наблюдения

Зависит одновременно от величины остатков и силы взаимодействия наблюдений

$$D_{i}=\frac{\sum (\hat y_{i}-\hat y_{j(i)})^2}{pMS_{e}}=\frac{e_{i}^2}{pMS_{e}}\frac{h_{ii}}{(1-h_{ii})^2}$$

$\hat y_{i}$ - значение, предсказанное полной моделью

$\hat y_{j(i)}$ - значение, предсказанное моделью построенной без учета i-го предиктора

Если $D_{i}> 4(h-p)$ надо проверить данное наблюдение, более мягкий порог $D_{i}> 1$ 

Расстояние Кука учитывает одновременно и величину рычага, и величину остатка. Оно описывает, как сильно наблюдение повлияет на ход регрессии. Как это делается? Мы берем предсказанное значение для данного наблюдения, потом выбрасываем это наблюдение, заново подбираем линейную модель и получаем предсказанные значения для этого наблюдения, но уже по уменьшенной модели. Дальше мы просто берем сумму квадратов отклонений и ее каким-то образом нормируем. Если расписать эту формулу, то в конце концов получится, что величина расстояния Кука, она зависит от величины остатков и зависит от величины рычага. Чем больше остаток и чем больше рычаг, тем больше расстояние Кука. Соответственно, у нас есть теперь универсальная мера, которая может влиятельность наблюдений всесторонне оценить, и с ней удобно работать. На самом деле, у нее есть даже пороговые значения, которые можно использовать как ориентиры, для того чтобы решить, опасно нам это наблюдение, сильно ли оно определяет ход зависимости или не сильно.  Есть два пути: есть жесткий порог и мягкий порог. Жесткий порог выглядит вот так: он считается с учетом объема выборки и числа параметров. И, как правило, иногда он срабатывает, когда даже есть не очень сильно отклоняющиеся точки. Есть более мягкий порог, который советуют в других источниках. Если расстояние Кука вы получили больше единицы, то такое наблюдение обязательно нужно проверить, потому что это более мягкий порог. 

Что делать с наблюдениями - выбросами

Первое, конечно, действие,  это наблюдение выкинуть. Если оно так сильно влияет на ход регрессии, то может быть оно ее уводит куда-тоне туда, нам бы не хотелось найти такую зависимость, которая определяется единственным наблюдением из всей выборки. Но сначала нужно разобраться в причинах, почему это наблюдение так сильно отклоняется от всех остальных. Это необязательно может быть связано с тем, что вы сделали какую-то ошибку в данных, хотя это тоже возможно. Как с этим бороться? Помимо удаления можно попробовать рассмотреть разные варианты трансформации данных. Иногда, если вы применяете какую-нибудь трансформацию, например, из тех же линеаризующих трансформаций, это может решить проблему с выбросами. Иногда бывает так, что те наблюдения, которые кажутся нам наблюдениями-выбросами, на самом деле ими не являются, а просто могут свидетельствовать о  том, что мы не очень правильно подобрали форму зависимости, не очень адекватно сформулировали модель, и, возможно, нам нужно посмотреть внимательно. Может быть, нам нужно использовать обобщенные линейные модели с каким-то другим распределением или у нас есть какие-то неучтенные переменные. Если мы переформулируем модель, то, возможно ситуация исправится.

Линейность связи

Для определения линейности зависимости есть два метода : первый - построить график зависимости переменной от предиктора и как правило, нелинейность будет заметна, и второй - использовать график остатков модели, если распределение остатков не симметрично относительно нуля. 

Что делать, если связь нелинейна?

Возможная причина нелинейности, это неучтенные переменные и при помощи анализа остатков такие переменные можно найти. Если же связи действительно нелинейна,  можно попробовать избавиться от нелинейности при помощи линеаризующего преобразования.  Если данных достаточно , можно  нелинейную зависимость произвольной формы подобрать при помощи аддитивных моделей. Например использовать сплайн, и этот сплайн сможет  произвольной формы подобрать. Единственное, что обязательно нужно, чтобы наблюдений по  независимой переменной, по  предиктору, должно быть достаточное количество— не менее 20 уникальный наблюдений на одну переменную, и то это нижний предел, лучше больше. Еще одна причина нелинейности — это то, что , возможно, использовано не совсем правильное распределение остатков. Обычно линейные модели основаны на том, что мы ожидаем, что зависимая переменная и остатки— они нормально распределены. Если зависимая переменная подчиняется не нормальному распределению нужно обратиться к обобщенным линейным моделям.


Но если вдруг зависимая переменная— это какая-то счетная величина или это какая-то величина, пусть мерная, но она подчиняются не нормальному распределению, а другому, например, гамма-распределению, мы увидим характерный нелинейный паттерн —слегка изогнутый график. И тогда это хороший признак того, что, возможно, нам нужна модель с другим распределением. Возможно, нужно обратиться к обобщенным линейным моделям. 
Линеаризация проводиться для предиктора, варианты такой трансформации :

$$\frac{1}{x^{2}}  ; \frac{1}{x} ; \frac{1}{\sqrt{x}} ; \sqrt{x} ; log(x) $$

Требования к модели также включают :

независмость  наблюдений

нормальное распределение остатков

постоянство дисперсий остатков

Анализ остатков в R

Рассмотрим анализ остатков по нашей модели. 

model1 <- lm(mpg ~ hp, data = df)
model1

Call:
lm(formula = mpg ~ hp, data = df)

Coefficients:
(Intercept)           hp  
   30.09886     -0.06823  

 Вот так выглядела формула нашей модели и модель сохранена в объекте model1. Теперь нам нужно добыть из этого объекта диагностическую информацию, мы будем использовать функцию fortify, которая буквально значит укрепить. Это функция в пакете ggplot. Все, что она возвращает мы сложим в переменную. 

model1_diag <- fortify(model1)
head(model1_diag, 2)

                    mpg  hp      .hat   .sigma    .cooksd  .fitted    .resid .stdresid
Cadillac Fleetwood  10.4 205 0.0545837 3.774519 0.06676240 16.11206 -5.712064 -1.520761
Lincoln Continental 10.4 215 0.0632729 3.808642 0.06112499 15.42978 -5.029781 -1.345309

 .hat --- "сила воздействия" данного наблюдения (leverage)
.cooksd` --- расстояние Кука
.fitted` --- предсказанные значения
.resid` --- остатки
.stdresid` --- стьюдентизированные остатки


Там будут исходные переменные, которые использоваys для построения модели, там будет и отклик и предиктор, будет рычаг , который измеряет силу воздействия отдельных наблюдений, что еще здесь важно, здесь важно расстояние Кука, которое одновременно учитывает и силу воздействия наблюдений и их величину остатка, вам покажут предсказанные значения, обычные сырые остатки и стьюдентизированные остатки.
Соединим диагностические данные возвращаемой функции fortify с исходными данными из датафрейма df.

df_diag <- data.frame(model1_diag, df)
head(df_diag, 2)

                     mpg  hp      .hat   .sigma    .cooksd  .fitted    .resid .stdresid mpg.1 cyl disp
Cadillac Fleetwood  10.4 205 0.0545837 3.774519 0.06676240 16.11206 -5.712064 -1.520761  10.4   8  472
Lincoln Continental 10.4 215 0.0632729 3.808642 0.06112499 15.42978 -5.029781 -1.345309  10.4   8  460
                    hp.1 drat    wt  qsec vs am gear carb            car.name mpg_z mpg_type
Cadillac Fleetwood   205 2.93 5.250 17.98  0  0    3    4  Cadillac Fleetwood -1.61    below
Lincoln Continental  215 3.00 5.424 17.82  0  0    3    4 Lincoln Continental -1.61    below

Теперь у нас есть всё для анализа остатков, и мы можем начать строить графики, потому что именно графическими методами мы будем проверять все условия. 

Первое, что мы сделаем, мы построим график расстояния Кука, потому что нам нужно понять, нет ли особенно влиятельных наблюдений, которые определяют весь ход регрессии.  Расстояние Кука хранится в переменной cooksd в датафрейме df_diag. Растение Кука мы будем откладывать по оси Y, а по оси X мы можем просто откладывать порядковый номер наблюдения от единицы до числа строк в нашем датафрейме с диагностическими данными. Соответственно, величину расстояний Кука мы будем изображать в виде столбиков при помощи geom_bar. geom_bar обычно занимается статистической обработкой, т.е. по умолчанию он использует какую-то там стат, чтобы считать уникальное значение, а мы хотим, чтобы эти столбики были той величины, которая записана у нас по Y. Чтобы geom_bar ничего с ними не делал, не делал никакой стат обработки, нам нужно использовать stat identity, то есть такой стат, который ничего не будет делать с исходными данными, так их без изменений будет передавать. 

ggplot(df_diag, aes(x = 1:nrow(df_diag), y = .cooksd)) +
  geom_bar(stat = "identity")




Что мы видим на этом графике? На этом графике мы видим, что есть какое-то одно влиятельное наблюдение, мягкий порог, который использовался для расстояний Кука, это единица. В данном случае расстояния Кука как раз больше единицы. Соответственно, это наблюдение, оно подозрительно, хорошо бы его проверить, все ли там правильно было записано, нет ли каких-то условий, которые отличают это наблюдения от всех остальных. 


Следующим шагом построим классический график остатков, на котором можно проверить большую часть условий применимости.  По оси Y мы будем откладывать стьюдентизированные остатки, а по оси X предсказанные значения. 

gg_resid <- ggplot(data = df_diag, aes(x = .fitted, y = .stdresid)) +
  geom_point() +
  geom_hline(yintercept = 0)+
  ggtitle("График остатков от предсказанных значений")
gg_resid







В идеале эти остатки должны лечь широкой полосой примерно одинаковой ширины. Ось Y на графике будет измеряться в стандартных отклонениях, соответственно, в нашем случае большая часть остатков, она находится в пределах двух стандартных отклонений, это совершенно обычные наблюдение,  однако три наблюдение вышли за эту границу. Кроме того на этом графике остатков можно проверить есть ли выраженный гетерогенность дисперсии остатков. Полоса, в которой распределены остатки должна быть равной ширины на всём протяжении, в нашем случае это не совсем так, есть подозрение на отклонений от гомогенности дисперсии. 

На следующем графике вместо предсказанных значений выбран единственный предиктор, это hp. 

На этом графике также видны три наблюдения, вышедшие за границу двух стандартных отклонений и также есть большое подозрение на отсутствие гомогенности дисперсий.
Также можно построить график остатков модели от переменных, не включенных в модель.

 Последний график, который нам нужен для того, чтобы проверить все условия применимости, это квантильный график остатков. Мы его строим при помощи функции qqPlot из пакета car. Передаем ей нашу линейная модель, и она сама строит для нее график остатков. 

library(car)
qqPlot(model1)



Вы видите, что большая часть точек, ну кроме трех , лежит в пределах доверительной зоны, соответственно, мы можем сказать, что никаких серьезных отклонений от нормального распределения остатков нет. И это условие выполняется. 






Комментариев нет:

Отправить комментарий