| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
- cor()
- querydsl적용하기
- git
- R프로그래밍
- Spring
- queryDSL
- LIKE검색
- 머신러닝
- Q타입클래스
- git오류
- java
- DTO사용이유
- stepfilter
- programmers
- Rstudio
- 알고리즘
- str()
- R명령어
- summary()
- core.autocrlf
- Eclipse
- 프로그래머스
- 이중배열
- 머신러닝프로세스
- 자바
- RProgramming
- 한글깨지는문제
- r
- 이클립스
- JPA
- Today
- Total
놀고 싶어요
[R Programming] 상관분석 (Correlation Analysis) 본문
데이터 분석 초입 단계에서 어떤 변수가 중요한지, 각 변수끼리 무슨 관계가 있는지 모르므로 제일 먼저 변수 간의 관계를 파악하려는 시도를 다양하게 한다.
1.시각화(visualization)
2.탐색적 데이터 분석(EDA)
이러한 초기의 과정들이 결국 상관분석의 한 부분이 된다.
깊이 있는 분석이 어떤 분석을 중심으로 진행되어야 하는가를 다양한 가능성으로부터 점점 좁혀가는 과정, 방법에 상관분석이 종종 사용된다.
상관분석 (Correlation analysis)
두 수치형 데이터간의 관계
데이터 간에 관계가 있는가 하는 상관분석을 가장 쉽게 하는 방법은 산점도(scatter plot)을 그리는 방법이다.
시각화(visualization): 빠르고 간략하게 상관성 여부를 파악할 수 있지만 계량적으로 얼마나 관계가 강한지 말하려면 상관분석을 함께 사용해야 한다.
상관분석 특징
1. 두 수치형 데이터 간의 직선적 관계를 알려준다. - 직선성외에는 알려주는 것이 없다.
상관관계는 여러 개의 변수를 한 번에 분석에 포함할 수 있지만 항상 변수 2개씩에 대해 분석을 수행한다. - 2개씩 여러번의 분석을 수행한다.
수치형 데이터에 대해서만 사용 가능하다. (카이제곱 독립성 검정에서는 범주형 데이터만 다룬다.)
상관분석으로 알 수 있는 결과는
수치형 변수 두 개가 서로 연관되어 보이는지, 연관이 있다면 양의 관계인지 음의 관계인지 알려준다.
(양의 관계: 하나의 변수가 증가할 때 다른 하나도 증가하는 경향이 있다. (감소할 때는 감소))
2. 직선적 관계, 음/양의 관계와는 단순히 관련이 있다.
양의 관계인지 음의 관계인지는 알 수 있지만 인과관계(원인-결과 관계)를 얘기하는 것은 아니다. - 중요
상관 분석이 알려주는 것은 인과관계가 아니다.
3. 상관계수가 데이터 안에 존재하는 진짜 상관성과 일치하지 않는 경우가 종종 있다.
여러가지 이유로 이러한 현상이 나타날 수 있다.
Ex) 직선성이 아닌 경우, 몇 개의 그룹으로 나눠진 경우, 이상값이 일부 극단값으로 존재하는 경우
-> 상관분석에 전적으로 기대하는 것은 바람직하지 않다.
==> 인과관계 설명 및 예측에 활용할 수 있도록 확인해 내는 것이 뒤따라 와야 한다.
(인과관계를 찾아볼 수 있는 방법: 회귀분석)
예시 (함수의 사용방법과 분석 결과에 대한 해석에 초점을 둠)


5개 구의 총 대여 건수 count_by_Gu 변수 선언
count_by_Gu <- bike_data2 %>% group_by(Gu) %>% summarise(count=n())
count_by_Gu
구별 대여 건수를 집계한 count_by_Gu와 population(인구 정보) 결합하여 by_Gu 변수 생성
by_Gu <- inner_join(count_by_Gu, population, by='Gu')
산점도 그리기 (구별 총 대여건수와 구별 인구 간의 상관분석 수행)
plot(by_Gu$count, by_Gu$Population, cex=2, lwd=3)
cex=2 원의 크기, lwd=3 원을 그리는 선의 두께
데이터가 적어 분석의 의미가 높지 않다. 너무 흩어져 있어 상관계수가 높지 않지만 대체로 음의 관계를 갖는다.

cor(by_Gu$count, by_Gu$Population)
cor() 상관계수를 구하는 함수
반환 값은 상관계수 뿐이다.
-1 <= 상관계수 <= 1
절대값이 클수록 강한 상관관계가 있다.
cor.test() 함수
상관계수에 대한 가설 검정을 하는 함수. 계량적 정보를 보여줌
cor.test(by_Gu$count, by_Gu$Population)
가장 널리 쓰이는 피어슨 상관계수 (pearson)에 대한 가설검정을 수행한다.
p-value = 0.558
유의수준 0.05보다 큰 값으로 귀무가설을 받아 들인다. (귀무가설: 상관관계가 없다.)
상관관계가 없다 -> p-value 가 유의수준보다 크므로 귀무가설 기각할 수없다. 구별 자전거 대여 회수와 구별 인구간에는 상관관계가 없다.
cor = -0.3547744, p-value = 0.558
상관계수가 통계적으로 유의한 값이 아니다. (통계적으로 평가하기에 적절한 데이터는 아니다.)
-> 데이터를 더 확보하여 분석을 다시 수행할 필요가 있다.
'R' 카테고리의 다른 글
| [R Programming] 회귀분석 - 독립변수가 1개인 회귀분석 (0) | 2021.05.19 |
|---|---|
| [R Programming] R 기본 명령어 정리 (0) | 2021.05.19 |
| [R Programming] 카이제곱분포 Chi-square Distribution, 카이제곱 독립성 검정 (0) | 2021.05.18 |
| [R Programming] 분산분석 (0) | 2021.05.17 |
| [R Error] Error in plot.new() : figure margins too large (0) | 2021.05.17 |