Тест Гольдфельда-Квандта используется для определения наличия гетероскедастичности в регрессионной модели.
Гетероскедастичность относится к неравному разбросу остатков на разных уровнях переменной отклика в регрессионной модели.
Если присутствует гетероскедастичность, это нарушает одно из ключевых предположений линейной регрессии о том, что остатки одинаково разбросаны на каждом уровне переменной отклика.
В этом руководстве представлен пошаговый пример того, как выполнить тест Гольдфельда-Квандта в R, чтобы определить, присутствует ли гетероскедастичность в данной регрессионной модели.
Шаг 1: Постройте модель регрессии
Во-первых, мы построим модель множественной линейной регрессии, используя встроенный набор данных mtcars в R:
#fit a regression model
model <- lm(mpg~disp+hp, data=mtcars)
#view model summary
summary(model)
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 30.735904 1.331566 23.083 < 2e-16 \*\*\*
disp -0.030346 0.007405 -4.098 0.000306 \*\*\*
hp -0.024840 0.013385 -1.856 0.073679.
---
Signif. codes: 0 '\*\*\*' 0.001 '\*\*' 0.01 '\*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 3.127 on 29 degrees of freedom
Multiple R-squared: 0.7482, Adjusted R-squared: 0.7309
F-statistic: 43.09 on 2 and 29 DF, p-value: 2.062e-09
Шаг 2. Выполните тест Гольдфельда-Квандта.
Далее мы будем использовать функцию gqtest() из пакета lmtest для выполнения теста Гольдфельда-Квандта, чтобы определить, присутствует ли гетероскедастичность.
Эта функция использует следующий синтаксис:
gqtest(модель, order.by, данные, дробь)
куда:
- модель: Модель линейной регрессии, созданная командой lm().
- order.by: предикторная переменная в модели.
- данные: имя набора данных.
- дробь*: количество центральных наблюдений, которые необходимо удалить из набора данных.
*Тест Голдфельда-Квандта работает, удаляя некоторое количество наблюдений, расположенных в центре набора данных, а затем проверяя, отличается ли разброс остатков от результирующих двух наборов данных, которые находятся по обе стороны от центральных наблюдений.
Обычно мы удаляем около 20% всех наблюдений. В этом случае у mtcars всего 32 наблюдения, поэтому мы можем удалить 7 центральных наблюдений:
#load lmtest library
library(lmtest)
#perform the Goldfeld Quandt test
gqtest(model, order.by = ~disp+hp, data = mtcars, fraction = 7)
Goldfeld-Quandt test
data: model
GQ = 1.0316, df1 = 10, df2 = 9, p-value = 0.486
alternative hypothesis: variance increases from segment 1 to 2
Вот как интерпретировать вывод:
- Статистика теста — 1,0316 .
- Соответствующее значение p равно 0,486 .
Тест Гольдфельда-Квандта использует следующие нулевые и альтернативные гипотезы:
- Null (H 0 ) : присутствует гомоскедастичность.
- Альтернатива ( HA ): присутствует гетероскедастичность.
Поскольку p-значение не меньше 0,05, мы не можем отвергнуть нулевую гипотезу. У нас нет достаточных доказательств того, что в регрессионной модели присутствует гетероскедастичность.
Что делать дальше
Если вы не можете отвергнуть нулевую гипотезу теста Гольдфельда-Квандта, тогда гетероскедастичность отсутствует, и вы можете приступить к интерпретации результатов исходной регрессии.
Однако если вы отвергаете нулевую гипотезу, это означает, что в данных присутствует гетероскедастичность. В этом случае стандартные ошибки, показанные в выходной таблице регрессии, могут быть ненадежными.
Есть несколько распространенных способов решить эту проблему, в том числе:
1. Преобразуйте переменную ответа.
Вы можете попробовать выполнить преобразование переменной ответа, например, взять логарифм, квадратный корень или кубический корень из переменной ответа. Как правило, это может привести к исчезновению гетероскедастичности.
2. Используйте взвешенную регрессию.
Взвешенная регрессия присваивает вес каждой точке данных на основе дисперсии ее подобранного значения. По сути, это дает небольшие веса точкам данных с более высокой дисперсией, что уменьшает их квадраты невязок.
При использовании правильных весов взвешенная регрессия может устранить проблему гетероскедастичности.
Дополнительные ресурсы
Как выполнить множественную линейную регрессию в R
Как выполнить тест Уайта в R
Как выполнить тест Бреуша-Пагана в R