R

ggplot2를 이용한 시각화 ② (회귀선표시, 회귀분석, 범례표시)

한번해보즈아 2021. 4. 5. 18:20

오늘의 tip 

ctrl+p를 누르면 괄호안에 커서가 끝에서 끝으로 움직입니다!!

TIP

지난 시간에 연속형 두변수를 그래프로 그리는 방법을 다뤘었는데 더 좋은 방법을 알아내서 알려드립니다. 첫번째 방식으로하면 일일히 색 지정해줄 필요도 없고 범례도 표시되서 더 좋은 방법인거같습니다.

 

> ggplot(data=df,
+        mapping=aes(x=Min.Price,
+                    y=Max.Price))+geom_point(aes(color=Type))+
+   geom_smooth() #1번

ggplot(data=df,
       mapping=aes(x=Min.Price,
                   y=Max.Price))+geom_point(colour=c("red","blue","pink","green","yellow","black")[df$Type])+
  geom_smooth() #2번

 

 

 

1번 범례표시O

 

 

2번 범례표시X

 

여기서 geom_smooth()의 default값은  국소 회귀분석(loess)방식을 쓰고 있으며 우리가 알고 있는 선형회귀선이 필요한 경우에는 다음과 같은 방법을 사용하면됩니다.  그리고 파란색 선 주위에 회색으로 칠해져있는 부분은 표준오차인데 이걸 지우고 싶으시면 se=F 를 입력해주시면 됩니다.

 

 

> ggplot(data=df,
+        mapping=aes(x=Min.Price,
+                    y=Max.Price))+geom_point(aes(color=Type))+
+   geom_smooth(method='lm', se=F)

 

 

 

다른 방법으로는 색을 바꾸거나 오차의 신뢰수준을 조절할수도 있습니다. 기본값은 0.95로 설정되어있습니다.

 

ggplot(data=df,
       mapping=aes(x=Min.Price,
                   y=Max.Price))+geom_point(aes(color=Type))+
  geom_smooth(method='lm',color="red",level=0.99)

 

 

신뢰수준 99%의오차

 

ggplot(data=df,
       mapping=aes(x=Min.Price,
                   y=Max.Price))+geom_point(aes(color=Type))+
  geom_smooth(method='lm',color="red",level=0.9)

 

 

신뢰수준 90%의 오차

 

 

미세하게 신뢰수준90%오차의 범위가 더 좁아진걸 확인할수있습니다. 참고로 다양한 설정값은 보기 위해서 구글링을 하는것도 좋지만 스크립트창에서 help(함수이름) 하시면 아래와 같이 상세한 설명을 볼수있습니다. 다만 영어로 되있어서 저는 잘 사용하지 않습니다.

 

 

help(geom_smooth)

 

회귀분석 및 회귀선 표시하기

> cor(df$Min.Price,df$Max.Price)
[1] 0.9067561
> summary(lm(df$Max.Price~df$Min.Price))

Call:
lm(formula = df$Max.Price ~ df$Min.Price)

Residuals:
    Min      1Q  Median      3Q     Max 
-6.9808 -2.7632 -0.7483  1.7455 27.5965 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept)   2.31390    1.07081   2.161   0.0333 *  
df$Min.Price  1.14360    0.05575  20.514   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 4.677 on 91 degrees of freedom
Multiple R-squared:  0.8222,	Adjusted R-squared:  0.8203 
F-statistic: 420.8 on 1 and 91 DF,  p-value: < 2.2e-16

 

두 변수간의 상관관계는 0.9067로 나왔고 추정된 회귀식은 유의하며 그 식은 다음과 같습니다.

"y=2.31+1.14x"

식과 결정계수를 그래프에 표시하기 위해서는 다음과 같이 하시며 되며 geom_text()안에 들어가는 x,y값은 각각 텍스트가 표시될 좌표를 입력해주시면됩니다.

 

ggplot(data=df,
       mapping=aes(x=Min.Price,
                   y=Max.Price))+geom_point(aes(color=Type))+
  geom_smooth(method='lm',color="red",level=0.95)+
  geom_text(x=40,y=40,label="y=1.14x+2.31")+
  geom_text(x=40,y=35,label="R^2=0.822")

 

 

회귀식 표시

 

여기서 각 범주별 (즉,Type의 6종류)로 회귀선 6개를 만들어 보고싶은데 아직은 잘 모르니 다음에 공부해오겠습니다.