안녕하세요. 우주신입니다.
이번 포스팅과 다음 포스팅에서는 매우 중요한 상관분석(correlation analysis)과 회귀분석(regression analysis)에 대해 정리해보겠습니다.
plot(), corrplot(), cov(), cor(), cor.test()
우리는 종종 어떤 두 사건 간의 연관성을 분석해야 할 경우가 많습니다. 둘 또는 그 이상의 변수들이 서로 관련성을 가지고 변화할 때 그 관계를 분석하는데 사용되는 방법 중에서 가장 잘 알려진 것이 상관분석(correlation analysis)과 회귀분석(regression analysis)입니다.
GDP와 기대수명 간의 관계, 키와 몸무게 간의 관계 등을 예로 들 수 있는데 여기에서 두 사건, 즉 두 변수 간의 선형적 관계를 상관(correlation)이라고 하며, 이러한 관계에 대한 분석을 상관분석(correlation analysis)이라고 합니다.
먼저 상관분석에 쓸 데이터를 불러서 확인해보겠습니다.
df <- read.csv("http://goo.gl/HKnl74")
그대로 복사해서 데이터프레임 df에 입력하시면 됩니다.
str() 함수를 통해 항상 데이터 구조를 확인하는 습관!
놀이동산에 대한 만족도가 주말이용여부, 동반자녀수, 놀이공원까지의 거리, 놀이기구에 대한 만족도, 게임에 대한 만족도, 대기시간에 대한 만족도, 청결상태에 대한 만족도 그리고 전체만족도로 구성되어 있습니다.
상관분석을 할 때 결측값(NA)가 있으면 결과가 NA 값이 나오게 되므로 이를 꼭 확인하여 처리해야 합니다.
(결측값 처리는 http://ordo.tistory.com/19를 확인)
다행히도, 이번 데이터프레임에는 결측값이 하나도 없네요~
그럼, 저는 '놀이기구에 대한 만족도(rides)'와 '전체만족도(overall)' 간의 관계를 분석해보겠습니다.
아마도 놀이기구에 대한 만족도가 높으면 전체 만족도 또한 높지 않을까 예상을 해보면서, 산점도(scatterplot)부터 그려보겠습니다.
1. 산점도(Scatter plot)
https://ko.wikipedia.org/wiki/산점도
상관계수를 파악하기 전에 우선, 산점도(scatterplot)로부터 두 변수 간에 관련성을 그림을 이용하여 시각적으로 파악할 수 있습니다.
plot(Y~X) 함수의 Y, X에 변수를 입력하면 위와 같이 산점도가 그려집니다.
대략 봤을 때, 양의 관계를 이루고 있는 것 같죠?
좀 더 그림을 이쁘게 그려본다면,
-main="Overall~Rides": 그림의 main 제목 입력
-xlab="Satisfaction with Rides": x축 레이블 입력
-ylab="Overall Satisfaction": y축 레이블 입력
-cex=1: 출력되는 점들의 크기 결정
-pch=1: 출력되는 점의 형태 (기본형태는 빈원)
-col='red': 색상 지정
그 외에
-xlim=: x축 값의 출력범위 지정
-ylim=: y축 값의 출력범위 지정
-lty: 출력되는 선의 형태를 지정
산점도 이용하면 두 변수간의 직선적인 관계를 개략적으로 파악할 수는 있지만, 두 변수 사이의 관계를 보다 정확히 숫자로 나타낼 수 없기 때문에
공분산 및 상관계수를 이용합니다.
3. 상관계수의 검정
상관계수의 가설 검정은 cor.test() 함수를 사용하면 됩니다.
귀무가설 "상관관계가 없다"에 대한 검정 결과 p-value < 2.2e-16 값이 나왔으므로 귀무가설을 기각할 수 있음을 알 수 있습니다.
그 외에 검정통계량의 값(t), 95% 신뢰구간, 표본상관계수 등을 확인할 수 있습니다.
4. 그 외
이번에는 전체만족도와 놀이기구에 대한 만족도, 게임에 대한 만족도, 대기시간에 대한 만족도, 청결상태에 대한 만족도 간의 상관관계를 한 눈에 파악해보겠습니다.
변수를 지정하여 산점도를 나타내봤습니다.
그 후, cor() 함수를 통해 상관계수를 나타냈습니다.
'corrplot' 패키지에 들어있는 corrplot() 함수를 통해 한 눈에 시각적으로 파악했습니다.
끝.
다음 시간에는 회귀분석에 대해 다뤄보겠습니다.
수고하셨습니다~
'R' 카테고리의 다른 글
[R] 누적(Cumulative)과 관련된 함수 (1) | 2017.03.23 |
---|---|
[R] 회귀분석(Regression Analysis) [회귀식 추정, 회귀모형 검정, 적합도 파악] (14) | 2017.03.09 |
[R] 비교연산자, 논리연산자 (0) | 2017.02.25 |
[R] NA, NULL, NaN, Inf, -Inf 구분 및 처리 (3) | 2017.02.20 |
[R] 기술통계(Descriptive Statistics) 함수 시각화 (0) | 2017.02.18 |
댓글