Линейная регрессия — это метод, который мы можем использовать для понимания взаимосвязи между одной или несколькими переменными-предикторами и переменной- откликом .
Обычно, когда мы выполняем линейную регрессию, нас интересует оценка среднего значения переменной ответа.
Однако вместо этого мы могли бы использовать метод, известный как квантильная регрессия , для оценки любого значения квантиля или процентиля значения ответа, такого как 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])

Обратите внимание, что в отличие от традиционной линии линейной регрессии эта подобранная линия не проходит через сердцевину данных. Вместо этого он проходит через предполагаемый 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