티스토리 뷰

728x90
반응형

R로 단순선형회귀를 하는 방법을 알아보자.

R에서 선형회귀는 lm 함수를 사용한다.

선형회귀를 시도하기 전에 두 변수 간의 인과관계 여부를 우선 파악해야한다.

 

다음의 예시로 선형회귀를 알아보자.


부모의 키와 자녀의 키의 상관관계를 알아보고 선형회귀 분석을 하려 한다. 

다음은 부모와 자녀의 키 데이터이다.

x<-c(160, 170, 155, 181, 175) #부모의 키
y<-c(165, 173, 160, 175, 170) #자녀의 키

 

 

1. 상관관계 분석 (cor)

 

x와 y의 상관관계를 알아보자.

우선, 상관계수란 변수들 간의 통계적 관계 표현을 위해 특정한 상관관계의 정도를 수치적으로 나타낸 계수로, 공분산을 표준화한 것이다.

값은 -1 ~ 1 사이이고 -1 혹은 +1에 가까울수록 상관관계가 높다고 판단할 수 있다.

 

상관계수를 구하는 방법에는 여러가지가 있는데 그 중 하나가 cor()을 이용하는 것이다. 

cor(x,y)
#0.9305463 =>양의 상관관계

출력값이 0.9305463으로 1에 매우 가깝고, 양수이므로 x와 y가 양의 상관관계를 띔을 알 수 있다.

따라서, 우상향 직선이 그려짐을 추측할 수 있다.

 


2. 데이터 시각화하기

주어진 데이터를 시각화해보자.

plot(x,y)


3. 선형회귀 모델 만들기 (lm)

 

R에서 선형회귀는 lm()을 사용한다.

model<-lm(formula = y~x)
model

#Coefficients:
#(Intercept)            x  
#     78.953        0.533

모델의 결과로, y = wx + b에서 w는 0.533, b는 78.953임을 확인할 수 있다.

 


4. abline()

위의 그래프에 구한 모델을 선으로 표시해보자.

abline(model,col='red')

 

양의 상관관계를 가지므로 우상향하는 직선이 그어짐을 확인할 수 있다.


5. predict()

그러면, 위의 부모의 키에 따라 해당 모델을 활용하여 예측한 자녀의 키를 알아보자.

predict()를 사용한다.

predict(model)

#      1        2        3        4        5 
#164.2296 169.5594 161.5646 175.4222 172.2243

실제 값은 165, 173,160, 175, 170이고 예측 결과는 위와 같다.


6. 모델 평가 (summary)

위의 모델을 평가해보자.

summary()를 이용한다.

summary(model)
#Residuals:
#      1       2       3       4       5 
# 0.7704  3.4406 -1.5646 -0.4222 -2.2243 

#Coefficients:
#            Estimate Std. Error t value Pr(>|t|)  
#(Intercept)  78.9525    20.3997   3.870   0.0305 *
#x             0.5330     0.1211   4.402   0.0217 *
#---
#Signif. codes:  
#0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

#Residual standard error: 2.582 on 3 degrees of freedom
#Multiple R-squared:  0.8659,	Adjusted R-squared:  0.8212 
#F-statistic: 19.37 on 1 and 3 DF,  p-value: 0.02174

p-value부터 살펴보자.

 

p-value유의 확률로, 관찰된 데이터가 가설과 양립하는 정도를 0과 1 사이의 수치로 표현한 값이다.

즉, 가설이 옳다고 가정할 때 얻은 결과보다 극단적인 결과가 실제로 관측될 확률이다. 

95%의 신뢰구간에서, p-value가 0.05보다 작으면 유의한 모델이라 판단한다.

현 모델의 p-value 값은 0.02174로 0.05보다 작으므로 유의한 모델임을 확인할 수 있다.

 

R-squared결정계수로, 상관계수를 제곱한 값인데 독립변수가 종속변수의 분산을 얼마나 잘 설명하는지 즉, 설명력을 뜻한다. 

현 모델의 결정계수는 0.8212로 독립변수, 즉 부모의 키가 자녀의 키를 82.12% 설명하고 있다고 말할 수 있다.

Adjusted R-squared는 독립변수가 2개 이상일 경우 사용한다. 현재는 독립변수가 1개이므로 multiple R-squared 값을 확인한다.

 

Pr(>|t|)는 t분포를 사용해 각 변수가 얼마나 유의한지 판단할 수 있는 p-value를 알려준다. 

현 모델의 모든 변수의 Pr 값은 0.05보다 작으므로 귀무가설을 기각하고 각 계수가 0이 아님을 결론 내릴 수 있다

0.05보다 작은 계수 옆에는 '*' 표시가 나타난다.

 

Residuals는 실제 데이터에서 관측된 잔차를 보여준다.


7. 모델을 이용하여 새로운 데이터 값 예측하기

 

이제 위의 모델을 이용해 새로운 부모의 키로 자녀의 키를 예측해보자.

예측은 predict()를 사용한다.

new_x = 190
predict(model,data.frame(x=c(190)))

#      1 
#180.219

부모의 키가 190일 때 자녀의 키는 180.219로 예측될 수 있다.

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함