HW9 // Простая линейная регрессия. Множественная линейная регрессия
Основные задания
#1
Сегодня в нашем распоряжении данные о продаже домов. В данных достаточно много переменных, кодбук можно найти здесь.
Загрузите данные и сохраните их в объект houses
. Изучите их структуру. Проверьте наличие пропущенных значений в столбцах.
Для самопроверки в поле ответа введите количество пропущенных значений в переменной Alley
. Проверка игнорирует все пробелы.
Подсказки
Как делать задание?
Что надо сделать?
Ответ неверный
#2
В данных есть переменная SalePrice
— цена участка. Поизучаем, какие характеристики участка оказывают влияние1 на его цену.
В данные также есть переменная LotArea
— площадь участка. Кажется, разумно предположить, что площадь участка влияет на его стоимость. Проверим данную гипотезу.
- Постройте регрессионную модель, в которой целевой переменной будет цена участка, а предиктором — его площадь.
- Проинтерпретируйте результаты моделирования.
Для самопроверки в поле ответа введите коэффициент детерминации (Multiple R-squared
) построенной модели. Значение округлите до сотых. В качестве десятичного разделителя используйте точку. Проверка игнорирует все пробелы.
Подсказки
Как построить модель?
- Для построение модели линейной регрессии используйте функцию
lm()
- Модель задается первым аргументом в формульном виде
y ~ x
- Вторым аргументом функции необходимо передать имеющиеся данные
- Сохраните модель в объект (например,
model1
).
Как проинтерпретировать результаты?
- Вывести статистики модели можно с помощью функции
summary()
, в которую необходимо передать объект, содержащий регрессионную модель. - Интерпретируются прежде всего следующие показатели: F-статистика (и её p-value), коэффициент детерминации и t-статистики (и их p-value).
Ответ неверный
- Проверьте, что значение округлено до сотых.
- Проверьте, что в качестве десятичного разделителя используется точка.
#3
- Проведите графическую диагностику модели. Дайте интерпретацию полученных результатов.
- Визуализируйте модель.
Для самопроверки в поле ответа введите количество влиятельных наблюдений, обнаруженых в ходе диагностики. Если влиятельных наблюдений нет, введите 0. Проверка игнорирует все пробелы.
Подсказки
Как провести диагностику?
- Для этого необходимо построить диагностически графики с помощью функции
plot()
. - Необходимо проверить выполнение допущений о распределении остатков модели, их связи с предсказанными значениями целевой переменной и наличие влиятельных наблюдений.
Как визуализировать модель?
Для визуализации необходимо построить график, отображающий линейную связь между переменными модели.
#4
В данных есть интересная переменная SalesCondition
— условия продажи участка. Выдвинем следующую гипотезу: в случае стандартных условий продажи (Normal
) и продажи частично достроенного дома (Partial
) цена будет выше, чем в случае нестандартной продажи (Abnorml
).
Отберите необходимые наблюдения для проверки данной гипотезы.
Для самопроверки в поле ответа введите количество строк в получившемся датасете.
Подсказки
Как делать задание?
Что надо сделать?
Ответ неверный
#5
- Добавьте в имеющуюся модель еще один предиктор
SaleCondition
для проверки заявленной выше гипотезы. Постройте модель на отобранных в предыдущем задании данных. - Проинтерпретируйте результаты моделирования.
Для самопроверки в поле ответа введите коэффициент детерминации (Multiple R-squared
) построенной модели. Значение округлите до сотых. В качестве десятичного разделителя используйте точку. Проверка игнорирует все пробелы.
Подсказки
Как построить модель?
- Для построение модели линейной регрессии используйте всё ту же функцию
lm()
- Модель задается первым аргументом в формульном виде
y ~ x1 + x2
- Вторым аргументом функции необходимо передать имеющиеся данные
- Сохраните модель в объект (например,
model2
).
Как проинтерпретировать результаты?
- Вывести статистики модели можно с помощью функции
summary()
, в которую необходимо передать объект, содержащий регрессионную модель. - Интерпретируются прежде всего следующие показатели: F-статистика (и её p-value), коэффициент детерминации и t-статистики (и их p-value).
- Обратите внимание на смысл коэффицинтов при переменных
SaleConditionNormal
иSaleConditionPartial
.
Ответ неверный
- Проверьте, что значение округлено до сотых.
- Проверьте, что в качестве десятичного разделителя используется точка.
#6
- Проведите графическую диагностику модели. Дайте интерпретацию полученных результатов.
- Сравните по результатам диагностики две построенные модели.
Описание формата инпута.
Подсказки
Как делать задание?
Что надо сделать?
Ответ неверный
#7
В данных есть еще один количественные предиктор, которые потенциально может влиять на целевую переменную — это LotFrontage
, длина стороны участка, которая соединена с улицей города. Выдвинем предположение, что и площадь участка LotArea
, и уличная сторона LotFrontage
влияют на цену участка SalePrice
.
- Постройте модель, позволяющую проверить данную гипотезу.
- Проинтерпретируйте результаты моделирования.
Для самопроверки в поле ответа введите значение F-статистики модели (F-statistic
). Значение округлите до целого. Проверка игнорирует все пробелы.
Подсказки
Как построить модель?
- Для построение модели линейной регрессии используйте всё ту же функцию
lm()
- Согласно гипотезе, нас интересует модель без взаимодействия.
- Модель задается первым аргументом в формульном виде
y ~ x1 + x2
- Вторым аргументом функции необходимо передать имеющиеся данные
- Сохраните модель в объект (например,
model3
).
Как проинтерпретировать результаты?
- Вывести статистики модели можно с помощью функции
summary()
, в которую необходимо передать объект, содержащий регрессионную модель. - Интерпретируются прежде всего следующие показатели: F-статистика (и её p-value), коэффициент детерминации и t-статистики (и их p-value).
- Обратите внимание на смысл коэффицинтов при количественных предикторах.
Ответ неверный
Проверьте, что значение округлено до целого
#8
В последнюю построенную модель включены два количественных предиктора. Мы не проводили подробный разведочный анализ данных, поэтому не знаем, была ли опасность мультиколлинеарности.
Проверьте, есть ли в модели с двумя количественными предикторами проблема мультиколлинеарности.
Для самопроверки в поле ответа введите да
, если проблема мультиколлинеарности есть, и нет
, если такой проблемы нет.
Подсказки
- Для проверки наличия мультиколлинеарности необходимо рассчитать коэффициенты вздутия дисперсии (variance inflation factor, VIF) для предикторов модели.
- Для этого можно воспользоваться функцией
vif()
из пакетаcar
.
#9
Давайте совместим построенные модели. У нас есть следующие предикторы: LotArea
, LotFrontage
и SaleCondition
(изучаем три условия — Normal
, Partial
и Abnorml
). Нам интересно изучить, как эти предикторы влияют на цену участка SalePrice
.
В качестве предикторов в модель должны быть включены основные эффекты предикторов LotArea
, LotFrontage
и SaleCondition
, а также взаимодействие между LotArea
и SaleCondition
.
- Постройте модель на данных, отобранных в задании 4.
- Проинтерпретируйте результаты моделирования. с. Проведите графическую диагностику модели.
Для самопроверки в поле ответа введите значение F-статистики модели (F-statistic
). Значение округлите до целого. Проверка игнорирует все пробелы.
Подсказки
Как делать задание?
Что надо сделать?
Ответ неверный
#10
- По результатам, полученным в задании 9, предположите, можно ли исключить из последней построенной модели взаимодействие предикторов.
- «Обновите» модель из задания 9, исключив из неё взаимодействие предикторов. с. Сравните модель со взаимодействием и модель без взаимодействия с помощью статистического теста. Проинтерпретируйте результаты.
Для самопроверки в поле ответа введите значение F-статистики модели (F-statistic
). Значение округлите до целого. Проверка игнорирует все пробелы.
Подсказки
Как делать задание?
Что надо сделать?
Ответ неверный
Дополнительные задания
#1
В задании 2 мы построили модель, в которой обнаружелись влиятельные наблюдения. Давайте посмотрим, что будет, если мы исключим эти наблюдения из выборки.
- Исключите влиятельные наблюдения из данных, воспользовавшись номером строки, которые представлен на диагностическом графике.
- Постройте регрессионную модель, аналогичную той, что была в задании 2, но на новых данных (без влиятельных наблюдений).
- Сравните две модели. Используйте коэффициент детерминации и среднюю квадратичную ошибку.
Описание формата инпута.
Подсказки
Как делать задание?
Что надо сделать?
Ответ неверный
#2
В задании 5 была построена модель с количественным и категориальным предиктором без взаимодействия. Неплохо было бы её визуализировать, однако если мы воспользуемся стандартной функцией geom_smooth(method = "lm")
из ggplot2
, то получим визуализацию модели со взаимодействием. Для того, чтобы получить нужную визуализацию, надо немного поколдовать.
а. Добавьте в датасет, на котором была построена модель из задания 5, колонку с предсказанными моделью значениями b. Визуализируйте связь между переменными модели с помошью диаграммы рассеяния с. Добавьте визуализацию предсказанных моделью значений с помощью линии
Описание формата инпута.
Подсказки
Как делать задание?
Что надо сделать?
Ответ неверный
#3
Мы построили несколько моделей в заданиях выше. Давайте выберем ту, которая наиболее хорошо описывает наши данные.
- Выберите критерий (критерии) для сравнения моделей — это может быть как статистический тест, так и какая-либо из метрик качества модели (её предсказательной силы).
- Используя выбранный критерий (критерии), из построенных моделей выберите ту, которая лучше всего описывает данные.
Описание формата инпута.
Подсказки
Как делать задание?
Что надо сделать?
Ответ неверный
#4
Для модели, выбранной в предыдущем задании, экспортируйте результаты моделирования: текстовое описание результатов и таблицу со статистиками для предикторов модели.
Описание формата инпута.
Подсказки
Как делать задание?
Что надо сделать?
Ответ неверный
#5
Мы знаем формулу для матричного вычисления коэффициент регрессионной модели:
\[ \mathbf{b} = ( \mathbf{X}^\top\mathbf{X})^{-1} \mathbf{X}^\top\mathbf{y} \]
Давайте проверим, что результаты вычисления по этой формуле совпадают с результатами работы функции lm()
. Рассмотрим случай только с количественными предикторами.
- Напишите функцию
reg_coef()
, которая вычисляет коэффициенты модели множественной линейной регрессии с количественными предкиторами без взаимодействия. Функция должна:
- принимать на вход:
- датасет, на котором будет строится модель (например, в аргумент
data
) - название целевой переменной (например, в аргумент
y
) - вектор названия количественных предикторов (например, в аргумент
X
)
- датасет, на котором будет строится модель (например, в аргумент
- вычислять вектор коэффициентов в соответствии с формулой
- возвращать вектор коэффциентов
Учтите, что:
- интерсепт также должен быть включен в возвращаемый вектор
- данные могут содержать пропущенные значения
- Проверьте, что команды
reg_coef(data = houses, y = "SalePrice", X = c("LotArea", "LotFrontage"))
иlm(SalePrice ~ LotArea + LotFrontage, houses)
дают одинаковый результат.
Описание формата инпута.
Подсказки
Как делать задание?
Что надо сделать?
Ответ неверный
Будем говорить здесь о влиянии, исходя из простого здравосмысленного соображения: кажется, что сначала существует участок со своими характеристиками, а затем, когда владельцы решают его продать, они выставляют определенную цену.↩︎