Вот и я решил замахнуться ни на что-то там такое, а на самую, что ни на есть регрессию.
В предыдущих статьях мы вместе с вами уже рассматривали много интересных задач:
dataset <- read.csv(«SpeedReading_3_Groups.csv», sep = «;»)
head(dataset)
library(ggplot2)
ggplot(df_post, aes(x=Скорость.чтения, y=Сколько.книг))+ geom_point(size=3)+
ggtitle(‘Скорость чтения & Количество прочитанных книг за год (scatter plot)’)+
xlab(‘Скорость чтения, слов/мин’) +
ylab(‘Кол-во прочитанных книг, шт.’)
fit_2 <- lm(Сколько.книг ~ Скорость.чтения, data=dataset)
fit_2
y = b0 + b1*x
y = 1.23343 + 0.02485*x
dataset[,c(4,5)]
summary(fit_2)
ggplot(dataset, aes(x=Скорость.чтения , y = Сколько.книг))+
geom_point(size=3)+
geom_line(aes(x=Скорость.чтения, y=predict(fit_2, dataset)),col=»red»,lwd=1)+
ggtitle(‘Скорость чтения & Количество прочитанных книг за год (scatter plot)’)+
xlab(‘Скорость чтения, слов/мин’)+
ylab(‘Кол-во прочитанных книг, шт.’)
y_pred <- predict(fit_2, newdata = dataset)
results <- cbind(y_pred, dataset$Сколько.книг)
colnames(results) <- c(«predicted», «actual»)
results <- as.data.frame(results)
results
В этой таблице мы видим фактические значения (actual) и предсказанные нашей моделью значения (predicted).
Мы можем сравнить полученные пары значений и опять увидеть, что наша модель не очень точно предсказывает Количество прочитанных книг. Мы помним, что R2 нашей модели равен 0,1425. А это очень мало для адекватной модели.
Что мы можем сделать, чтобы улучшить нашу модель? Мы можем добавить в нее другие предикторы (независимые переменные). Например, пол, возраст и т. д. В данном случае, нам нужно будет построить множественную линейную регрессию.
Также, мы можем попробовать построить полиномиальную модель, где наш предиктор Скорость чтения мы будем возводить в степень.
Но это уже идеи для будущих статей.
Работая с простой линейной регрессией с одной независимой переменной, следует также помнить о нескольких условиях ее применения: