Простая линейная регрессия с использованием R

Опубликовано: 25 Июля, 2021

Линейная регрессия :
Это широко используемый тип прогнозного анализа. Это статистический подход для моделирования взаимосвязи между зависимой переменной и заданным набором независимых переменных.

Есть два типа линейной регрессии.

  • Простая линейная регрессия
  • Множественная линейная регрессия

Давайте обсудим простую линейную регрессию с использованием R.

Простая линейная регрессия:
Это статистический метод, который позволяет нам суммировать и изучать отношения между двумя непрерывными (количественными) переменными. Одна переменная, обозначенная x, рассматривается как независимая переменная, а другая, обозначенная y, рассматривается как зависимая переменная. Предполагается, что две переменные связаны линейно. Следовательно, мы пытаемся найти линейную функцию, которая предсказывает значение отклика (y) как можно точнее как функцию характеристики или независимой переменной (x).

Для понимания концепции давайте рассмотрим набор данных о заработной плате, где дано значение зависимой переменной (зарплаты) для каждой независимой переменной (количество лет опыта).

Набор данных о зарплате

Опыт работы Заработная плата

       1,1 39343,00
       1,3 46205,00
       1,5 37731,00
       2,0 43525,00
       2,2 39891,00
       2,9 56642,00
       3,0 60150,00
       3,2 54445,00
       3,2 64445,00
       3,7 57189,00

Для общих целей мы определяем:
x как вектор признаков, т.е. x = [x_1, x_2,…., x_n],
y как вектор ответа, т.е. y = [y_1, y_2,…., y_n]
для n наблюдений (в примере выше n = 10).

Точечная диаграмма данного набора данных:

Теперь нам нужно найти линию, которая соответствует приведенному выше графику рассеяния, с помощью которого мы можем предсказать любое значение y или отклик для любого значения x.
Линии, которые подходят лучше всего, называются линией регрессии .

Уравнение линии регрессии определяется следующим образом:

у = а + bx

Где y - прогнозируемое значение отклика, a - точка пересечения y, x - значение характеристики, а b - наклон.

Для создания модели оценим значения коэффициента регрессии a и b. И как только оценка этих коэффициентов будет сделана, модель отклика может быть предсказана. Здесь мы собираемся использовать технику наименьших квадратов .

Принцип наименьших квадратов - один из популярных методов поиска кривой, соответствующей заданным данным. Скажем, (x1, y1), (x2, y2)…. (Xn, yn) быть n наблюдениями из эксперимента. Нам интересно найти кривую

Точно соответствует данным размера "n". Теперь при x = x1, в то время как наблюдаемое значение y равно y1, ожидаемое значение y из кривой (1) равно f (x1). Тогда остаток можно определить как ...

Аналогично невязки для x2, x3… xn задаются как…



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

и найдите лучшую репрезентативную кривую.

Подгонка прямой линии методом наименьших квадратов
Предположим, что дан набор данных (x1, y1), (x2, y2), (x3, y3)… .. (xn, yn) из n наблюдений из эксперимента. А нас интересует прямая подгонка.

к приведенным данным.

Теперь рассмотрим:

Теперь рассмотрим сумму квадратов ei


Примечание: E является функцией параметров a и b, и нам нужно найти такие a и b, чтобы E было минимальным, а необходимое условие для минимума E выглядит следующим образом:

Это условие дает:

Вышеупомянутые два уравнения называются нормальными уравнениями, которые решаются для получения значений a и b.

Выражение для E можно переписать как:

Базовый синтаксис для регрессионного анализа в R:

 lm (модель Y ~)

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

Команда lm () предоставляет коэффициенты модели, но не предоставляет дополнительную статистическую информацию.

Следующий код R используется для реализации ПРОСТОЙ ЛИНЕЙНОЙ РЕГРЕССИИ :




# Simple Linear Regression
# Importing the dataset
dataset = read.csv( 'salary.csv' )
# Splitting the dataset into the
# Training set and Test set
install.packages( 'caTools' )
library(caTools)
split = sample.split(dataset$Salary, SplitRatio = 0.7 )
trainingset = subset(dataset, split = = TRUE)
testset = subset(dataset, split = = FALSE)
# Fitting Simple Linear Regression to the Training set
lm.r = lm(formula = Salary ~ YearsExperience,
data = trainingset)
coef(lm.r)
# Predicting the Test set results
ypred = predict(lm.r, newdata = testset)
install.packages( "ggplot2" )
library(ggplot2)
# Visualising the Training set results
ggplot() + geom_point(aes(x = trainingset$YearsExperience,
y = trainingset$Salary), colour = 'red' ) +
geom_line(aes(x = trainingset$YearsExperience,
y = predict(lm.r, newdata = trainingset)), colour = 'blue' ) +
ggtitle( 'Salary vs Experience (Training set)' ) +
xlab( 'Years of experience' ) +
ylab( 'Salary' )
# Visualising the Test set results
ggplot() +
geom_point(aes(x = testset$YearsExperience, y = testset$Salary),
colour = 'red' ) +
geom_line(aes(x = trainingset$YearsExperience,
y = predict(lm.r, newdata = trainingset)),
colour = 'blue' ) +
ggtitle( 'Salary vs Experience (Test set)' ) +
xlab( 'Years of experience' ) +
ylab( 'Salary' )

Выход coef (lm.r):
Intercept ГодыОпыт
24558,39 10639,23

Визуализация результатов тренировочного набора:

Визуализация результатов набора для тестирования: