Как выполнить регрессию ols в r (с примером)


Регрессия обычных наименьших квадратов (OLS) — это метод, который позволяет нам найти линию, которая лучше всего описывает взаимосвязь между одной или несколькими переменными-предикторами и переменной отклика .

Этот метод позволяет найти следующее уравнение:

ŷ = б 0 + б 1 х

Золото:

  • ŷ : Предполагаемое значение ответа.
  • b 0 : Начало линии регрессии.
  • b 1 : Наклон линии регрессии.

Это уравнение может помочь нам понять взаимосвязь между предиктором и переменной ответа, а также его можно использовать для прогнозирования значения переменной ответа с учетом значения переменной-предиктора.

В следующем пошаговом примере показано, как выполнить регрессию OLS в R.

Шаг 1. Создайте данные

В этом примере мы создадим набор данных, содержащий следующие две переменные для 15 студентов:

  • Общее количество изученных часов
  • Результаты экзамена

Мы выполним регрессию OLS, используя часы в качестве предикторной переменной и оценку на экзамене в качестве переменной ответа.

Следующий код показывает, как создать этот поддельный набор данных в R:

 #create dataset
df <- data. frame (hours=c(1, 2, 4, 5, 5, 6, 6, 7, 8, 10, 11, 11, 12, 12, 14),
                 score=c(64, 66, 76, 73, 74, 81, 83, 82, 80, 88, 84, 82, 91, 93, 89))

#view first six rows of dataset
head(df)

  hours score
1 1 64
2 2 66
3 4 76
4 5 73
5 5 74
6 6 81

Шаг 2. Визуализируйте данные

Прежде чем выполнять регрессию OLS, давайте создадим диаграмму рассеяния, чтобы визуализировать взаимосвязь между часами и оценками на экзамене:

 library (ggplot2)

#create scatterplot
ggplot(df, aes(x=hours, y=score)) +
  geom_point(size= 2 )

Одно из четырех предположений линейной регрессии заключается в том, что существует линейная связь между предиктором и переменной ответа.

Из графика видно, что зависимость линейная. По мере увеличения количества часов оценка также имеет тенденцию к линейному увеличению.

Затем мы можем создать коробчатую диаграмму, чтобы визуализировать распределение результатов экзамена и проверить наличие выбросов.

Примечание . R определяет наблюдение как выброс, если оно в 1,5 раза превышает межквартильный размах выше третьего квартиля или в 1,5 раза превышает межквартильный размах ниже первого квартиля.

Если наблюдение является выбросом, на диаграмме появится небольшой кружок:

 library (ggplot2)

#create scatterplot
ggplot(df, aes(y=score)) +
  geom_boxplot() 

На диаграмме нет маленьких кружков, что означает, что в нашем наборе данных нет выбросов.

Шаг 3. Выполните регрессию OLS

Далее мы можем использовать функцию lm() в R для выполнения регрессии МНК, используя часы в качестве предикторной переменной и оценку в качестве переменной ответа:

 #fit simple linear regression model
model <- lm(score~hours, data=df)

#view model summary
summary(model)

Call:
lm(formula = score ~ hours)

Residuals:
   Min 1Q Median 3Q Max 
-5,140 -3,219 -1,193 2,816 5,772 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 65,334 2,106 31,023 1.41e-13 ***
hours 1.982 0.248 7.995 2.25e-06 ***
---
Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 3.641 on 13 degrees of freedom
Multiple R-squared: 0.831, Adjusted R-squared: 0.818 
F-statistic: 63.91 on 1 and 13 DF, p-value: 2.253e-06

Из сводки модели мы видим, что подобранное уравнение регрессии имеет вид:

Оценка = 65,334 + 1,982*(часы)

Это означает, что каждый дополнительный час обучения связан с увеличением среднего балла на экзамене на 1982 балла.

Исходное значение 65 334 указывает нам средний ожидаемый результат экзамена для студента, обучающегося ноль часов.

Мы также можем использовать это уравнение, чтобы найти ожидаемый результат экзамена на основе количества часов обучения студента.

Например, студент, который учится 10 часов, должен набрать на экзамене балл 85,15 :

Оценка = 65,334 + 1,982*(10) = 85,15

Вот как интерпретировать остальную часть описания модели:

  • Pr(>|t|): это значение p, связанное с коэффициентами модели. Поскольку значение p для часов (2,25e-06) значительно меньше 0,05, мы можем сказать, что существует статистически значимая связь между часами и баллами .
  • Множественный R-квадрат: это число говорит нам о том, что процент вариации результатов экзамена можно объяснить количеством изученных часов. В общем, чем больше значение R-квадрата регрессионной модели, тем лучше переменные-предикторы прогнозируют значение переменной отклика. В этом случае 83,1% разницы в баллах можно объяснить учебными часами.
  • Остаточная стандартная ошибка: это среднее расстояние между наблюдаемыми значениями и линией регрессии. Чем ниже это значение, тем больше линия регрессии может соответствовать наблюдаемым данным. В этом случае средний балл, наблюдаемый на экзамене, отклоняется на 3641 балл от балла, прогнозируемого линией регрессии.
  • F-статистика и значение p: F-статистика ( 63.91 ) и соответствующее значение p ( 2.253e-06 ) говорят нам об общей значимости модели регрессии, т. е. полезны ли переменные-предикторы в модели для объяснения вариаций. . в переменной ответа. Поскольку значение p в этом примере меньше 0,05, наша модель статистически значима, и часы считаются полезными для объяснения изменения оценок .

Шаг 4. Создайте остаточные графики

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

Допущение гомоскедастичности заключается в том, что остатки регрессионной модели имеют примерно равную дисперсию на каждом уровне предикторной переменной.

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

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

 #define residuals
res <- resid(model)

#produce residual vs. fitted plot
plot(fitted(model), res)

#add a horizontal line at 0 
abline(0,0)

Остатки кажутся случайным образом разбросанными вокруг нуля и не демонстрируют заметной закономерности, поэтому это предположение выполняется.

Допущение нормальности утверждает, что остатки регрессионной модели распределены примерно нормально.

Чтобы проверить, выполняется ли это предположение, мы можем создать график QQ . Если точки графика лежат примерно на прямой линии, образующей угол 45 градусов, то данные распределяются нормально:

 #create QQ plot for residuals
qqnorm(res)

#add a straight diagonal line to the plot
qqline(res) 

Остатки немного отклоняются от линии в 45 градусов, но не настолько, чтобы вызывать серьезное беспокойство. Можно предположить, что предположение о нормальности выполнено.

Поскольку остатки нормально распределены и гомоскедастичны, мы проверили, что предположения регрессионной модели OLS выполняются.

Таким образом, выходные данные нашей модели надежны.

Примечание . Если одно или несколько предположений не выполняются, мы можем попытаться преобразовать наши данные.

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные задачи в R:

Как выполнить множественную линейную регрессию в R
Как выполнить экспоненциальную регрессию в R
Как выполнить взвешенную регрессию наименьших квадратов в R

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *