Линейные модели
Презентация: 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