Тесты на гетероскедастичность
Лабораторная работа 6
Мультиколлинеарность и гетероскедастичность
Мультиколлинеарность
1. Выгрузим файл
f = read.csv(“flats_moscow.txt”, sep=”\t”, header=TRUE, dec=”.”)
Построим регрессионное уравнение
model = lm(data=f, price ~totsp+livesp+kitsp+dist)
Проверим модель на наличие мультиколлиарности.
2. Выгрузим исходные данные в виде матрицы
x0 = model.matrix(data=d, price~0+totsp+livesp+kitsp+dist)
head(x0)# проверим что получилось
3. Считаем корреляционную матрицу
cor(x0)
Делаем выводы
4. Считаем VIF для каждого фактора с помощью модели (1). Команда vif из пакета HH.
vif (data=f, price~1+ totsp+livesp+kitsp+dist)
5. Сделать выводы о наличии мультиколлинеарности в модели
Гетероскедастичность
Загружаем пакеты ggplot 2 (построение графиков), lmtest , dplyr , sandwich .
Обнаружение гетероскедастичности
A) самое главное - теоретические предпосылки. Если объекты выборки разного «размера», то можно предположить наличие гетероскедастичности и использовать робастные стандартные ошибки.
B) графики
Загружаем файл
f = read.csv(“flats_moscow.txt”, sep=”\t”, header=TRUE, dec=”.”)
head(f)
# price - цена квартиры, тыс. долларов; totsp- общая площадь квартиры,м. кв; livesp -жилая площадь квартиры,м.кв.; kitsp - площадь кухни,м.кв.; dist - расстояние до центра Москвы, км.; metrdist - время до метро, мин.; walk =1, если квартира находится в пешей доступности от метро,= 0 – если до метро нужно добираться на транспорте; brick =1, если дом кирпичный, =0, если дом не кирпичный; floor -этаж#
|
|
Построим график
qplot (data=f, x=totsp, y=price) #типичное проявление гетероскедастичности. Смотрим на разброс price по вертикали. При маленьких значениях totsp разброс price небольшой, при увеличении totsp разброс price увеличивается.
Строим модель линейной парной регрессии
model_1 = lm(data=f, price~totsp)]
summary(model)
coeftest(model)
confint (model )# оценки стандартных ошибок и доверит. интервалов строятся при предположении о гомоскедастичности.
2. Способы борьбы с гетероскедастичностью:
а) Найдем робастные стандартные ошибки:
coeftest(model,vcov = vcovHC(model)) # значения коэффициентов регрессии не изменились, изменились стандартные ошибки.
Найдем новые доверительные интервалы, используя робастные стандартные ошибки (в R нет готовой команды для расчета робастных доверительных интервалов, поэтому приходится считать их вручную):
conftable = coeftest(model,vcov = vcovHC(model))
ci = data.frame (estimate=conftable[,1], se_hc = conftable[,2])
ci
ci = mutate(ci,left_ci=estimate-1.96*se_hc,right_ci=estimate+1,96*se_hc
ci
Доверительные интервалы увеличились. Часто это приводит к изменению значимости коэффициента регрессии.
Было:
Стало:
б) Переход к логарифмам.
Пример1.
Рассмотрим данные о цене бриллиантов
h = diamonds
glimpse(h)
help(diamonds) # очень много наблюдений!!!! 54000
|
|
Построим диаграмму рассеивания для двух переменных carat – массы бриллиантов (в каратах) и price – цены бриллианта.
qplot(data=h, carat, price) # по графику видно, присутствует гетероскедастичность.
Построим такой же график для логарифмов переменных
qplot(data=h, log(carat), log(price)) # по графику видно, что гетероскедастичности нет
Пример 2.
f = read.csv(“flats_moscow.txt”, sep=”\t”, header=TRUE, dec=”.”)
f
# price - цена квартиры, тыс. долларов; totsp- общая площадь квартиры,м. кв; livesp -жилая площадь квартиры,м.кв.; kitsp - площадь кухни,м.кв.; dist - расстояние до центра Москвы, км.; metrdist - время до метро, мин.; walk =1, если квартира находится в пешей доступности от метро,= 0 – если до метро нужно добираться на транспорте; brick =1, если дом кирпичный, =0, если дом не кирпичный; floor -этаж
qplot(data=f, totsp, price) # гетероскедастичность есть.
Перейдем к логарифмам
qplot(data=f, log(totsp), log( price)) #гетероскедастичность существенно уменьшилась.
Построим модель зависимости price от totsp в логарифмах
model_0 = lm(data=f, log(price)~log(totsp))
Тесты на гетероскедастичность
Дата добавления: 2020-01-07; просмотров: 211; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!