R에서 분위수 회귀를 수행하는 방법


선형 회귀는 하나 이상의 예측 변수와 반응 변수 사이의 관계를 이해하는 데 사용할 수 있는 방법입니다.

일반적으로 선형 회귀를 수행할 때 응답 변수의 평균 값을 추정하려고 합니다.

그러나 대신 분위수 회귀 라는 방법을 사용하여 70번째 백분위수, 90번째 백분위수, 98번째 백분위수 등과 같은 반응 값의 분위수 또는 백분위수 값을 추정할 수 있습니다.

R에서 분위수 회귀를 수행하려면 다음 구문을 사용하는 quantreg 패키지의 rq() 함수를 사용할 수 있습니다.

 library (quantreg)

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

금:

  • y: 응답 변수
  • x: 예측 변수
  • data: 데이터 세트의 이름
  • tau: 찾을 백분위수입니다. 기본값은 중앙값(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*(시간)

예를 들어, 8시간 공부한 모든 학생의 90번째 백분위수 점수는 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에서 다중 선형 회귀를 수행하는 방법
R에서 2차 회귀를 수행하는 방법

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다