Самый простой и простой способ прогнозирования количественных значений, объясненный и реализованный в R

Регрессия - это метод определения статистической взаимосвязи между двумя или более переменными, когда увеличение одной переменной вызывает увеличение другой переменной или наоборот. А линейная регрессия помогает определить
линейную зависимость, которая представляет собой прямую или почти прямую линию между двумя переменными. Сегодня мы говорим о простой линейной регрессии. Это очень простой и легкий подход к предсказанию y на основе x. Отношения между двумя должны быть линейными, чтобы использовать этот метод.

Формула:

y= b0+ b1*x+e

  • Здесь «b0» - термин смещения или перехват. Это точка в y, когда x равно 0.
  • «B1» - наклон переменной. Это просто означает, на сколько точек y увеличивается, когда x увеличивается до одной точки.
  • y - зависимая переменная, которую мы прогнозируем
  • x - независимая переменная, которую мы используем для предсказания y
  • e - это термин ошибки для того, что мы пропустили при прогнозировании y (разница между фактическим и прогнозируемым значением)

Допустим, перехват равен 4, а наклон равен 3, тогда:
y = 4 + 3x
теперь нам нужно ввести любое значение для x, тогда он покажет нам, что такое y.

Корреляция против причинно-следственной связи

Думаю, вы уже слышали клише: корреляция не подразумевает причинно-следственной связи. Позвольте мне еще раз объяснить, корреляция - это движение в одном или противоположном направлении между двумя переменными. Между тем причинность - это движущая сила или причина движения. Например, говорят, что существует положительная связь между продажей мороженого и нападениями акул. Это означает, что чем выше продажи мороженого, тем больше нападений акул. Что же нам тогда делать? Стоит ли закрывать магазины мороженого? Нет, не совсем . Мороженое - не причина нападения акул. Настоящая причина увеличения количества нападений акул и увеличения продаж мороженого - это высокая температура. В жаркую погоду все больше людей покупают мороженое и все больше людей отправляются на пляжи, где могут подвергнуться нападению акул. Поэтому вам следует знать, что наличие корреляции между двумя вещами не обязательно означает, что одно вызывает другое.

Остатки

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

Линейная регрессия в R

Мы используем набор данных BostonHousing в пакете mlbench.

install.packages(“mlbench”)
library(mlbench)
data(“BostonHousing”)

В наборе данных есть 13 предикторов и 1 переменная ответа. Это означает, что у нас есть 13 x s и 1 y. Наше y - medv (средняя стоимость дома), и мы пытаемся спрогнозировать с помощью lstat (процент домохозяйств с низким социально-экономическим статусом)


R имеет базовый пакет для соответствия линейным моделям. Поэтому нам не нужно ничего устанавливать, чтобы использовать функцию линейной регрессии.
Базовый синтаксис простой линейной модели в R:
lm (y ~ x, data = something)

Здесь y - зависимая переменная, x - независимая переменная, а данные - это набор данных.

Мы назначим модель в lm.model (можете назвать как хотите)

lm.model<-lm(medv~lstat,data=BostonHousing)
 

Мы используем функцию summary (), чтобы увидеть детали нашей модели.

summary(lm.model)

Вы получите следующий результат:

Call:
lm(formula = medv ~ lstat, data = BostonHousing)
Residuals:
 Min 1Q Median 3Q Max 
-15.168 -3.990 -1.318 2.034 24.500
Coefficients:
 Estimate Std. Error t value Pr(>|t|) 
(Intercept) 34.55384 0.56263 61.41 <2e-16 ***
lstat -0.95005 0.03873 -24.53 <2e-16 ***
 — -
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 6.216 on 504 degrees of freedom
Multiple R-squared: 0.5441, Adjusted R-squared: 0.5432 
F-statistic: 601.6 on 1 and 504 DF, p-value: < 2.2e-16

Первая строка - это наш синтаксический код. Вторая строка касается распределения остатков (разницы между фактическим и прогнозируемым значением), таких как минимальные и максимальные остатки и т. Д.

Раздел «Коэффициенты» дает нам много информации. Но пока мы смотрим только на первый столбец, который мы уже изучили.
Перехват (обозначенный в формуле как 'b0') равен 34,55384, а наклон (здесь он указан как lstat) равен -0,95005

Итак, давайте поместим его в нашу формулу
y = 34.55384 + (- 0.95005) * x
Теперь нам нужно ввести значение в наш x. Положим 6
y = 34,55384 + (- 0,95005) * 6 = 28,85354

УРА! Нам удалось спрогнозировать значение на основе коэффициентов «b0» и «b1».
Это здорово, но когда у вас так много данных, вы не можете сделать это вручную. К счастью, у R есть для этого отличное решение. Я говорю о функции pred (). Нам просто нужно поместить нашу модель и ввести некоторые числа в переменную lstat и BAAAM! вы получите результат.

predict(lm.model,newdata = data.frame(lstat=c(7,5,8,7,6,12,15)))

Что здесь происходит ? Вы можете понять первую часть. Это наша модель. А как насчет второй части. Это может показаться запутанным, но это не так уж сложно. Нам нужно ввести новые данные, и они должны быть в формате data.frame. Также мы не можем поместить более одного числа без функции c (), вы можете называть ее комбинированной функцией, потому что она объединяет более одного значения.

Теперь вы получите следующий результат:

1.  27.90350 
2.  29.80359 
3.  26.95345 
4.  27.90350 
5.  28.85354 
6.  23.15325 
7.  20.30310

Мы помещаем семь новых чисел для нашего x, и это дает нам семь прогнозов для y (здесь y - это медианная стоимость дома-medv). Вы по-прежнему можете использовать формулы и прогнозировать их вручную и при этом получать тот же результат, но это довольно сложная задача.

Быстрые ссылки для других значений коэффициентов

Стандартная ошибка
Стандартная ошибка коэффициента оценивает среднее отклонение оценок коэффициентов (точки пересечения и наклона) от фактического значения.

Значение t
Это значение измеряет, на сколько стандартного отклонения наша оценка коэффициента отличается от нуля.
Чтобы указать, что существует взаимосвязь между двумя переменными нам нужно значение t, которое далеко от 0.

Коэффициент Pr (›| t |)
Pr (› | t |) показывает, случайна ли связь между двумя переменными. Чем меньше p-значение, тем выше вероятность того, что отношения не являются случайными. В большинстве случаев мы используем 0,05 в качестве порога. Любое значение ниже 0,05 показывает, что корреляция не является случайной.

Остаточная стандартная ошибка
Остаточная стандартная ошибка - это качество нашей модели. Как мы уже говорили ранее, всегда есть некоторая ошибка, которая представляет собой разницу между фактическим и прогнозируемым значением. В нашем примере истинное значение отличается от прогнозируемого в среднем примерно на 6,22.

Статистика R в квадрате
Это значение всегда будет между 0 и 1. Числа, близкие к нулю, показывают, что регрессия не объясняет большую часть изменчивости в переменной ответа и наоборот. У нас есть R-квадрат 0,5441, что означает, что более половины вариации объясняется моделью.

F-статистика
Измеряет общую значимость наших предикторов. Когда это значение далеко от 1, это означает, что по крайней мере одна функция имеет значительный эффект.

Сюжет

Теперь давайте построим нашу модель, используя базовую графику R.

attach(BostonHousing)
plot(lstat,medv,col=’steelblue’)
abline(lm.model,lwd=3,col=’red’)

Здесь мы приложили данные, чтобы помочь R идентифицировать переменные внутри данных. А затем построили lstat и medv стальным синим цветом. Наконец, мы установили для нашей модели ширину 3 и красный цвет в функции abline ().

Резюме

До сих пор мы говорили о наиболее прямом подходе к прогнозированию количественных переменных. Теперь вы знаете основы математики, лежащие в основе этой модели, и понимаете интуицию простой линейной регрессии.
Вы также знаете, как реализовать эту модель в R, и можете интерпретировать результаты. Наконец, вы можете построить все это и посмотреть, как это будет выглядеть на графической панели. Надеюсь, это было полезно!

БЛАГОДАРЮ ВАС !

Это всегда выглядит невозможным, пока не сделаешь

-Нельсон Мандела

Если вам понравилось это сообщение и вы хотите увидеть больше, убедитесь, что вы хлопали в ладоши, а мой блог - подписывайтесь.