project:eve
R을 이용한 데이터 분석 : 상관분석 본문
오늘은 R을 이용해 상관분석을 하는 과정을 소개해드리려고 해요.
상관분석이란? 두 연속형의 변수 그룹 간 선형 관계를 측정하는 방법입니다.
결과값이 +1이면 그룹1의 값이 증가하면 그룹2의 값도 증가하고, -1이면 반대로 감소합니다. 그리고 값이 0이면 선형관계는 존재하지 않고 각 그룹이 독립성을 가집니다.
분석에 필요한 자료를 가져와 살펴볼게요. 자료는 헬스클럽에서 운동하는 사람들에 대한 자료를 대상으로 했습니다.
혹여 같은 데이터로 실습해보고자 하시는 분들은 아래의 첨부 파일을 다운로드 해주세요!
healthcsv<-read.csv('/Users/eve/Downloads/rpy/health.csv')
head(healthcsv)
이 자료는 weight, pulse, muscle, quarter 데이터가 time 데이터에 영향을 미치는 구조로 되어 있어요. 즉 앞의 4개 데이터가 독립변수, time 데이터가 종속변수가 됩니다. 운동을 많이 할수록 심박수나 근육량은 더 높아지거나 많아지고 그에 따라 시간이 많이 소요되겠죠?
데이터 내에서 두 변수를 뽑아서 그래프로 관계를 알아볼게요.
pch 속성은 그래프에서 표현되는 점 기호의 종류를 지정할 수 있어요. 1은 흰색 동그라미, 19는 아래 그림처럼 검은 동그라미에요.
plot(healthcsv$weight, healthcsv$time, pch=19)
이번에는 모든 변수에 대해 서로 각각의 선형관계에 대해 그래프로 그려볼게요. 데이터에 [, -1]을 넣은 이유는 1항이 id항으로 사실 index항이나 다름없기 때문에 제외했습니다.
pairs(health[, -1], pch=19)
위 그림으로만 봤을 때, 가장 선형적인 관계는 quarter와 time 같고, 그렇지 않은 관계는 muscle과 quarter인 것 같아요.
여기에서 우리는 상관관계 함수를 사용해서 변수 간 관계를 수치로 명확하게 표현할 수 있습니다.
cor(health[, -1]
이번에는 맨 처음에 말했던 time이라는 종속변수와 나머지 독립변수 간의 상관관계를 수치로 나타내 볼게요.
x<-health[, c(2:5)]
cor(x, health$time)
마지막으로 상관관계 측정을 위한 함수로 cor.test()가 있는데요. output은 cor와 같지만 값의 타당성(p-value), 신뢰구간, 자유도 등 부가적인 데이터도 같이 표시해 줍니다. 한번 사용해 볼게요. 여기에서 출력된 상관계수 값은 피어슨 상관계수로 불립니다.
참고로 cor 함수와 달리 x데이터에는 하나의 데이터만 입력할 수 있어요.
cor.test(health$quarter, health$time)
출력된 내용을 살펴보면 t통계량은 8.4691, 자유도는 28, p-value의 값으로 보았을 때 귀무가설이 기각되었다는 것을 알 수 있습니다.
즉, 아랫줄의 alternative hypothesis(대립가설)이 채택되었다는 걸 알 수 있고 대립가설이란 'true correlation is not equal to 0'으로 해당 변수 간 상관계수가 0이 아님을 알 수 있습니다.
상관계수 값이 95% 신뢰구간에서 0.7024195에서 0.9255545 안에 있다는 것을 알 수 있고 결과값은 0.8480748으로 두 변수 간에 강한 양의 상관관계를 가지는 것으로 결론을 내릴 수 있습니다.
'R' 카테고리의 다른 글
R을 이용한 데이터 분석 : 회귀분석 (0) | 2022.12.31 |
---|---|
R을 이용한 통계자료 분석 : 분산분석 (0) | 2022.12.24 |