Kodomo

Пользователь

Линейные модели

Презентация: http://makarich.fbb.msu.ru/artemov/R/R_4.pdf

Загрузите датасет laptop_price.csv, содержащий данные о цене на ноутбуки с различными техническими характеристиками. В целом задача - определить, какие факторы сильнее всего влияют на цену. http://makarich.fbb.msu.ru/artemov/R/laptop_price.csv

laptop=read.csv("http://makarich.fbb.msu.ru/artemov/R/laptop_price.csv")

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

Шаг 1. Как зависит цена от объема HDD

l1=lm(Price_RUR ~ HDD_Gb, data=laptop)
summary(l1)

Нарисуем

plot(laptop$HDD_Gb, laptop$Price_RUR)
abline(l1)

Шаг 2. Наблюдаем на scatterplot 2 группы. Влияет фактор, какой тип жесткого диска, HDD или SSD.

plot(laptop$HDD_Gb, 
laptop$Price_RUR, 
col=laptop$HDD_type)

Добавим этот фактор в модель

l2=lm(Price_RUR ~ HDD_Gb + HDD_type, data=laptop) 
summary(l2)

Нарисуем две регрессионные прямые зависимости цены от объема диска: для случая HDD и SSD. Это придётся делать, задавая коэффициенты (intercept и slope) прямой вручную:

l2$coeff
plot(laptop$HDD_Gb, laptop$Price_RUR, col=laptop$HDD_type)
abline(l2$coeff[1], l2$coeff[2], col="black")
abline(l2$coeff[1]+l2$coeff[3], l2$coeff[2], col="red")

Шаг 3. Похоже, что наклоны для двух групп тоже отличаются, другими словами, каждый 1Gb SSD стоит дороже каждого 1Gb HDD. Как это учесть? Для этого добавим в формулу взаимодействие предикторов. HDD_Gb:HDD_type

l3=lm(Price_RUR ~ HDD_Gb + HDD_type + HDD_Gb:HDD_type, data=laptop)
#эквивалентно: l3=lm(Price_RUR ~ HDD_Gb*HDD_type , data=laptop)
summary(l3)

Нарисуем (объяснение, почему такие коэффициенты наклона - в презентации):

plot(laptop$HDD_Gb, laptop$Price_RUR, col=laptop$HDD_type)
abline(l3$coeff[1], l3$coeff[2])
abline(l3$coeff[1]+l3$coeff[3], l3$coeff[2]+l3$coeff[4], col="red")

ANOVA для сравнения моделей

Есть две вложенные (nested) модели. Улучшает ли учёт большего количества факторов модель?

fit2=lm(Price_RUR ~ Memory_Gb+HDD_Gb+HDD_type, data=laptop)
fit1=lm(Price_RUR ~ Memory_Gb, data=laptop)
anova(fit1, fit2)

Другой пример

fit1=lm(Price_RUR ~ Memory_Gb+HDD_Gb+HDD_type+Color, data=laptop)
fit2=lm(Price_RUR ~ Memory_Gb+HDD_Gb+HDD_type, data=laptop)
anova(fit1, fit2)

Предсказание по модели

L3 = lm(formula = Price_RUR ~ HDD_Gb + HDD_type + HDD_Gb:HDD_type, data = laptop)
newlaptops=data.frame( HDD_Gb=c(200, 1000, 500), HDD_type=c("SSD", "HDD", "HDD"))
newlaptops
predict( L3, newlaptops )

Логистическая регрессия

Зависимая переменная y - булева (да-нет), в данном случае - есть ли заболевание сердца (коронарная недостаточность, coronary heart disease) (столбец CHD). Как вероятность получить заболевание сердца зависит от возраста (столбец AGE)?

CHD=read.csv2("http://makarich.fbb.msu.ru/artemov/R/CHD.csv")

Собственно, регрессия. Обратите внимание на аргумент family="binomial"

logReg<-glm( CHD~AGE, data=CHD, family="binomial")
logReg

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

plot(CHD$AGE, CHD$CHD, pch=19, col='blue')
points(CHD$AGE, logReg$fitted, pch=19, col='red')

(*) Другие примеры со слайдов

Как зависит цена от объема оперативной памяти?

L_M=lm(Price_RUR ~ Memory_Gb, data=laptop)
summary(L_M)

Пример с несколькими предикторами: как цена зависит от объема памяти, размера экрана и объема жесткого диска

l_MSH=lm(Price_RUR ~ Memory_Gb + Screen_size_inch + HDD_Gb, data=laptop)
summary(l_MSH)

Что, если предиктор - факторная переменная?

boxplot(Price_RUR ~ Manufacturer, data=laptop)
L_M=lm(Price_RUR ~ Manufacturer, data=laptop)
summary(L_M)

Задача:

Загрузите таблицу из файла npk.csv (в формате csv), содержащую информацию об урожае горошка в зависимости от следующих параметров: - номер участка, на котором он был посажен (block), - применялись ли удобрения, содержащие азот (N) - применялись ли удобрения, содержащие фосфор (P) - применялись ли удобрения, содержащие калий (K)

Постройте линейную модель, объясняющую урожай (yield) по переменным block, N, P, K (внимание: переменные должны быть ровно в этом порядке). Посчитайте статистику ANOVA для полученной модели. Какие из переменных вносят значимый вклад в объяснение вариации урожая на уровне значимости 0.05. Выберите все правильные ответы:

1. block 2. N 3. P 4. K

[файл к заданию]

Загрузите стандартный dataset faithful ( data(faithful) ), описывающий извержения гейзера. Колонка eruptions описывает длительность извержения, колонка waiting описывает время ожидания Задача состоит в исследовании зависимости времени извержения от времени ожидания и 3-fold кросс-валидации полученной модели вручную. Выберите первую треть таблицы (строки с 1 по 90-ю) и используетй их как тестовую выборку. Остальные строки используйте для обучения линейной модели зависимости времени извержения от времени ожидания. Предскажите по построенной модели значения y (времени извержения для тестовой выборки). Вычислите СРЕДНИЙ квадрат разностей между настоящими y и предсказанными y (округлите до 3 цифр после запятой).


Загрузите датасет из таблицы awards_math.csv. В нем показано соответствие между количеством побед ученика на олимпиадах (столбец num_awards) и его оценкой за экзамен по математике (столбец math). Предположите, что количество побед на олимпиадах (при фиксированной оценке по математике) распределено по Пуассону, и проведите соответствующую регрессию. Каков 95%-й доверительный интервал для коэффициента, с которым в разложение входит оценка по математике (math).

0.049 0.096 0.049 0.056 0.056 0.096 0.056 0.096

[файл к заданию awards_math.csv]