Рубрики

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

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

Существует два типа линейной регрессии.

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

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

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

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

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

Years experienced                 Salary

       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
Линии, которые лучше всего подходят, называется линией регрессии .

Уравнение линии регрессии имеет вид:

y = a + bx   

Где у — прогнозируемое значение ответа, а — перехват y, х — значение признака, а 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 ~ model) 

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

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

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

# Простая линейная регрессия
# Импорт набора данных

dataset = read.csv('salary.csv')

   
# Разделение набора данных на
# Тренировочный набор и Тестовый набор

install.packages('caTools')

library(caTools)

split = sample.split(dataset$Salary, SplitRatio = 0.7)

trainingset = subset(dataset, split == TRUE)

testset = subset(dataset, split == FALSE)

   
# Подгонка простой линейной регрессии к обучающему набору

lm.r= lm(formula = Salary ~ YearsExperience,

                        data = trainingset)

coef(lm.r)

   
# Прогнозирование результатов тестового набора

ypred = predict(lm.r, newdata = testset)

   

install.packages("ggplot2")

library(ggplot2)

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

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')

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

  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')

Выход коэф (лм.р):
Перехват Годы Опыт
24558,39 10639,23

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

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

Рекомендуемые посты:

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

0.00 (0%) 0 votes