Как выполнить квантильную регрессию в R

Как выполнить квантильную регрессию в R

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

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

Однако вместо этого мы могли бы использовать метод, известный как квантильная регрессия , для оценки любого значения квантиля или процентиля значения ответа, такого как 70-й процентиль, 90-й процентиль, 98-й процентиль и т. д.

Для выполнения квантильной регрессии в R мы можем использовать функцию rq() из пакета quantreg , которая использует следующий синтаксис:

library (quantreg)

model <- rq(y ~ x, data = dataset, tau = 0.5 )

куда:

  • y: переменная ответа
  • x: переменная (переменные) предиктора
  • данные: имя набора данных
  • тау: процентиль, чтобы найти. По умолчанию используется медиана (tau = 0,5), но вы можете увидеть это для любого числа от 0 до 1.

В этом руководстве представлен пошаговый пример использования этой функции для выполнения квантильной регрессии в R.

Шаг 1: введите данные

Для этого примера мы создадим набор данных, который содержит часы обучения и результаты экзаменов, полученные для 100 разных студентов в каком-то университете:

#make this example reproducible
set.seed(0)

#create data frame 
hours <- runif(100, 1, 10)
score <- 60 + 2\*hours + rnorm(100, mean=0, sd=.45\*hours)
df <- data.frame(hours, score)

#view first six rows
head(df)

 hours score
1 9.070275 79.22682
2 3.389578 66.20457
3 4.349115 73.47623
4 6.155680 70.10823
5 9.173870 78.12119
6 2.815137 65.94716

Шаг 2. Выполнение квантильной регрессии

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

Мы будем использовать модель для прогнозирования ожидаемого 90-го процентиля экзаменационных баллов на основе количества изученных часов:

library (quantreg)

#fit model
model <- rq(score ~ hours, data = df, tau = 0.9 )

#view summary of model
summary(model)

Call: rq(formula = score ~ hours, tau = 0.9, data = df)

tau: [1] 0.9

Coefficients:
 coefficients lower bd upper bd
(Intercept) 60.25185 59.27193 62.56459
hours 2.43746 1.98094 2.76989

На выходе мы можем увидеть оценочное уравнение регрессии:

90-й процентиль экзаменационного балла = 60,25 + 2,437 * (часы)

Например, ожидается, что 90-й процентиль баллов для всех студентов, изучающих 8 часов, будет равен 79,75:

90-й процентиль экзаменационного балла = 60,25 + 2,437*(8) = 79,75 .

Выходные данные также отображают верхний и нижний доверительные пределы для точки пересечения и часов переменной предиктора.

Шаг 3: Визуализируйте результаты

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

library (ggplot2)

#create scatterplot with quantile regression line
ggplot(df, aes(hours,score)) +
 geom_point() + 
 geom_abline(intercept= coef (model)[1], slope= coef (model)[2]) 
Пример квантильной регрессии в R

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

Мы можем увидеть разницу между подобранным уравнением квантильной регрессии и простым уравнением линейной регрессии, добавив аргумент geom_smooth() :

library (ggplot2)

#create scatterplot with quantile regression line *and* simple linear regression line
ggplot(df, aes(hours,score)) +
 geom_point() + 
 geom_abline(intercept= coef (model)[1], slope= coef (model)[2]) +
 geom_smooth(method=" lm", se= F ) 
Квантильная регрессия по сравнению с графиком простой линейной регрессии

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

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

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

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

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.