오늘의 tip
ctrl+p를 누르면 괄호안에 커서가 끝에서 끝으로 움직입니다!!
지난 시간에 연속형 두변수를 그래프로 그리는 방법을 다뤘었는데 더 좋은 방법을 알아내서 알려드립니다. 첫번째 방식으로하면 일일히 색 지정해줄 필요도 없고 범례도 표시되서 더 좋은 방법인거같습니다.
> 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번
여기서 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)
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%오차의 범위가 더 좁아진걸 확인할수있습니다. 참고로 다양한 설정값은 보기 위해서 구글링을 하는것도 좋지만 스크립트창에서 help(함수이름) 하시면 아래와 같이 상세한 설명을 볼수있습니다. 다만 영어로 되있어서 저는 잘 사용하지 않습니다.
회귀분석 및 회귀선 표시하기
> 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개를 만들어 보고싶은데 아직은 잘 모르니 다음에 공부해오겠습니다.
'R' 카테고리의 다른 글
R 버전 확인 및 변경하기 (다운그레이드,업그레이드) (0) | 2021.04.07 |
---|---|
Randomforest로 사이영 상 수상 예측하기 (0) | 2021.04.06 |
ggplot2를 이용한 시각화 ① (두변수가연속형인경우, 그룹별 표시하기) (0) | 2021.04.05 |
DPLYR를 이용한 Cars93처리 ② (0) | 2021.04.05 |
DPLYR를 이용한 Cars93처리 ① (0) | 2021.04.04 |