geom_smooth() 개요
geom_smooth() 함수는 ggplot2 패키지에서 사용되는 함수로, 산점도 위에 부드러운 곡선 또는 선을 그리는 데에 사용됩니다. 주로 산점도의 추세를 시각적으로 보여주기 위해 활용됩니다. 이 함수는 회귀선, LOESS(로컬 회귀), 또는 일정한 구간에서의 평균값을 나타내는 선을 그릴 수 있습니다. 여기서 산점도는 주로 geom_point() 함수를 사용할 수 있으며 X, Y 변수 중 연속형 변수가 있는 경우에 많이 사용합니다.
사용자가 geom_point() 함수를 이용해서 그린 산점도를 보면서 대략적인 X, Y 변수 간의 관계를 눈으로 확인할 수 있습니다. 예를 들어, X가 증가할 수록 Y가 증가하는 비례관계에 있다거나 서로 관계성이 높지 않다거나 하는 다양한 해석이 있을 수 있습니다. 하지만 눈으로 대충 해서하는 방법 말고도 X와 Y가 통계적으로 유의미한 관계를 가지고 있는 건지 아닌지를 시각화할 수 있는 방법이 있습니다. 바로, geom_smooth() 함수를 적용하는 것입니다.
아래 코드는 geom_point() 함수에 geom_smooth() 함수를 추가 적용한 것입니다.이렇게 함으로써 X 변수와 Y 변수 간의 데이터 추세를 나타내는 회귀선이 명확하게 표시됩니다.
ggplot(data, aes(X, Y, colour = class))+geom_point()+geom_smooth()
표준 오차(회색 영역) 제거 방법
geom_point()를 이용한 산점도에 geom_smooth() 함수를 적용하면 나타나는 추세선(파란색)이 나타나고, 추세선 양측에는 회색의 영역이 나타납니다. 이 회색의 영역은 추세선의 표준 오차 범위를 나타내며, 표준 오차가 작을수록 회색 영역이 좁아지고 예측값의 불확실성이 작아집니다. 반면, 회색의 영역 범위가 넓어질수록 표준 오차가 커지고 에측값의 불확실성이 높아집니다.
사용자는 단순히 산점도만 보고서 추세선의 정확한 흐름과 정확한 표준 오차 범위를 확인하기 어렵습니다.하지만 ggplot2에서 사용되는 geom_smooth() 함수를 적용하면, 산점도 데이터에 대한 회귀 모델을 피팅할 때 산출된 표준 오차 기반의 추세 흐름과 회색 영역으로 표현된 표준 오차를 확인할 수 있습니다.
하지만 추세선에 대한 정보를 보다 정확하게 확인하고 하고 싶은 경우 또는 단순한 데이터 분포를 시각화하는 등 표준 오차 정보가 굳이 필요하지 않은 경우에는 회색 영역을 제거할 필요가 있습니다. 아래 코드는 표준 오차를 나타내는 회색 영역을 제거하고 추세선만을 남기는 사례입니다.
ggplot(tips,aes(total_bill,tip))+geom_point()+ geom_smooth(method=”lm”, se=FALSE)
선형 회귀분석 방법
geom_smooth() 함수에서 span 매개변수는 LOESS(로컬 회귀) 메소드를 사용할 때 smoothing의 정도를 제어하는 데 사용됩니다. LOESS는 지역적으로 가중치를 부여하여 데이터의 특정 부분에 높은 가중치를 주고 다른 부분에는 낮은 가중치를 주는 방법으로 smoothing을 수행합니다.
span 값은 0에서 1 사이의 값을 가지며, 0에 가까울수록 데이터의 지역적 특성을 더 많이 반영하며, 1에 가까울수록 전체적인 추세를 따라가게 됩니다. 즉, 작은 span 값은 데이터의 작은 특성에 민감하게 반응하고, 큰 span 값은 전체적인 추세에 더 많이 적합합니다.
.구체적인 사례를 살펴보도록 하겠습니다. 아래 코드와 같이 span을 0.1로 적용한 경우와 spna을 1로 적용한 경우를 살펴보도록 하겠습니다. span이 0.1일 경우 0에 가까운 값이기 때문에 비교적 지역적 특성을 많이 반영하게 되고, 이에 따라 곡률이 높은 추세선을 나타내게 됩니다. 반면에, span이 1일 경우 비교적 지역적 특성을 덜 반영하게 되고, 이에 따라 직선에 가까운 추세선을 나타내게 됩니다.
# 곡률이 높은 사례
ggplot(tips, aes(total_bill,tip))+geom_point()+geom_smooth(span=0.1)
# 직선에 가까운 사례
ggplot(tips, aes(total_bill,tip))+geom_point()+geom_smooth(span=1)
'Data Science' 카테고리의 다른 글
geom_point() vs. geom_jitter() (0) | 2023.12.30 |
---|---|
대표적인 범주형 plot, geom_bar() (0) | 2023.12.30 |
통계값 시각화 방법 (0) | 2023.12.30 |
point 대신 text 표시, geom_text (0) | 2023.12.30 |
범주형+연속형 변수, boxplot & violin 함수 활용 (0) | 2023.12.30 |