코딩스토리

12 일차 - 통계 분석 기법을 이용한 가설 검정 본문

데이터 분석

12 일차 - 통계 분석 기법을 이용한 가설 검정

kimtaehyun98 2021. 2. 21. 09:42

# 이 글을 "Do it! 쉽게 배우는 R 데이터 분석"의 내용을 바탕으로 작성한 글입니다.

 

주제부터가 쉽지 않아 보인다.

 

차근차근 알아보자.

 

 

 

통계 분석

 

통계 분석은 '기술 통계''추론 통계'로 나눌 수 있다.

 

기술 통계란 데이터를 요약해 설명하는 기법이다.

 

책에서는 사람들이 받는 월급을 집계해 전체 월급 평균을 구하는 예제를 들고 있다.

 

이처럼 어떠한 실험이나 조사를 통해 측정한 데이터를 분석해 데이터들의 특성을 찾아내는 기법이다.

 

추론 통계란 단순히 숫자를 요약하는 것을 넘어 어떤 값이 발생할 확률을 계산하는 통계 기법이다.

 

책에서는 아래와 같은 예제를 들고 있다.

 

수집된 데이터에서 성별에 따라 월급에 차이가 있다는 것이 나타났다.

이때 이런 차이가 우연히 발생할 확률을 계산한다.

계산된 확률에 따라 해당 분석 결과가 유의한 지, 유의하지 않은지를 결론 내린다.

 

이처럼 분석 결과의 타당성을 따지는 분석기법을 추론 통계라 한다.

 

 

일반적으로 통계 분석을 수행했다는 뜻은

 

기술 통계를 통해 가설을 세웠고, 추론 통계를 통해 해당 가설이 유의한 지 판단하는 가설 검정을 했다는 의미이다.

 

 

 

통계적 가설 검정

 

통계적 가설 검정이란 유의 확률을 이용해 가설을 검정하는 방법을 말한다.

 

이때 '유의 확률'이란 실제로는 집단 간 차이가 없는데 우연히 차이가 있는 데이터가 추출될 확률을 의미한다.

 

유의 확률이 크다 => 집단 간 차이가 통계적으로 유의하지 않다

유의확률이 작다 => 집단 간 차이가 통계적으로 유의하다.

 

즉 유의 확률과 가설의 타당성은 반비례한다.

 

 

t - 검정

 

t - 검정은 두 집단의 평균에 통계적으로 유의한 차이가 있는지 알아볼 때 사용하는 통계 분석 기법이다.

 

mpg <- as.data.frame(ggplot2::mpg)

library(dplyr)
mpg_diff <- mpg %>%                       # mpg데이터 중 
  select(class, cty) %>%                  # class와 cty변수만 선택
  filter(class %in% c("compact", "suv"))  # class가 "compact"와 "suv"만
# compact = 소형차 suv = 준대형차

head(mpg_diff)

table(mpg_diff$class)

 

이 코드에서 cty 변수는 도시 연비를 나타내는 변수이다.

 

코드 실행 결과 값은 다음과 같다.

 

그럼 이제 t - 검정을 통해 이 분석이 유의한 지 살펴보자.

 

t - 검정을 하는 방법은 간단하다.

이미 R의 내장 함수로 정의되어있기 때문이다.

 

# '~' 기호를 통해 비교할 변수(cty)와 비교할 집단(class)를 지정
# t - 검정에서는 비교하는 집단의 분산이 같은지 여부에 따라 적용공식 다름
# var.equal = T 라는 코드는 집단 간 분산이 같다고 가정하는 것이다
t.test(data = mpg_diff, cty ~ class, var.equal = T)

 

 

 

위의 그림에서 형광펜 칠한 부분을 살펴보자.

 

먼저 t - 검정을 통해 출력된 p-value값이 유의 확률을 의미한다.

 

일반적으로 5%를 판단 기준으로 삼는다고 한다.

 

p - value값이 0.05 미만이라면 '집단 간 차이가 유의하다'라는 의미이다.

 

여기서 2.2e-16은 풀어써보면 2.2 * 10^-16이란 말이다.

즉, 0.05보단 매우 매우 작은 수임을 알 수 있다.

다음으로 'sample estimates' 부분을 보자.

 

mean in group compact = compact(소형차) 집단의 cty(도시 연비)의 평균 = 20.12766이고

mean in group suv = suv(준대형차) 집단의 cty(도시 연비)의 평균 = 13.5000이라는 의미이다.

 

즉 이러한 가설 검정 과정을 통해 "compact와 suv 간 평균 도시 연비 차이"가 통계적으로 유의하다는 것을 확인할 수 있다.

 

 

그럼 이번엔 반대로 유의하지 않은 경우를 살펴보자.

 

이번엔 일반 휘발유와 고급 휘발유의 도시 연비에 관해 t - 검정을 수행해보자.

mpg_diff2 <- mpg %>%             # mpg데이터 중 
  select(fl, cty) %>%            # fl = 휘발유의 종류, cty는 도시 연비
  filter(fl %in% c("r", "p"))    # r = regular, p = premium
# regular = 일반 휘발유, premium = 고급 휘발유

t.test(data = mpg_diff2, cty ~ fl, var.equal = T)

이제는 이 결과가 어떤 의미인지 분석할 수 있다.

 

p-value값이 0.2875란 의미는 28.75% 확률로 실제와 관련 없이 우연에 의해 해당 데이터가 수집되었을 수 있다는 의미이다.

 

즉, 고급 휘발유(p)를 사용하는 자동차가 일반 휘발유(r)를 사용하는 자동차보다 도시 연비가 0.6만큼 좋다는 가설이 우연히 발생했을 가능성이 높다고 해석할 수 있다.

 

 

 

상관 분석

 

상관 분석이란 두 연속 변수가 서로 관련이 있는지 검정하는 통계 분석 기법이다.

 

(궁금해서 찾아보니 통계학적 지식이 필요한 부분인 것 같다...)

 

상관 분석을 통해 도출한 상관 계수로 두 변수가 얼마나 관련되어 있는지, 관련성의 정도를 파악할 수 있다.

 

상관 계수는 0~1 값을 가지며 1에 가까울수록 관련성이 크다고 한다.

 

또 상관 계수가 양수면 정비례, 음수면 반비례 관계를 나타낸다.

 

이번에는 실업자 수(unemploy)와 개인 소비 지출(pce)의 상관관계에 대해 알아보자.

 

상관 분석 역시 R의 내장 함수인 cor.test()를 통해 쉽게 할 수 있다.

 

이제 책을 보지 않아도 분석 결과를 설명할 수 있다.

 

p-value가 0.5 미만이고, 상관계수(cor)가 양수이기 때문에 

"실업자 수와 개인 소비 지출은 정비례 관계이고, 이는 통계적으로 유의하다"라는 결론을 내릴 수 있다.

 

 

 

상관 행렬 히트맵 만들기

 

위에서 두 변수의 상관관계를 살펴보았다.

 

만약 여러 변수들의 관련성을 알아야 한다면?

 

이렇게 여러 변수의 관련성을 한 번에 알아보고자 할 경우, 모든 변수의 상관 관계를 나타낸 상관 행렬을 만든다.

 

그리고 만들어진 상관 행렬은 수많은 숫자 데이터들을 가지고 있으므로 알아보기 쉽게 값의 크기를 색깔로 표현하는 히트맵으로 변환한다.

 

 

R에 내장된 mtcars 데이터를 이용해 상관 행렬을 만들어보자.

mtcars는 자동차 32종의 11개의 속성에 대한 정보를 담고 있는 데이터이다. 

(참.. R은 많은 데이터를 내장하고 있네요^^)

 

상관행렬을 만드는 함수인 cor() 역시 r에 내장되어 있다.

 

위의 그림은 상관행렬을 나타낸 것이다.

 

각각의 숫자들은 말 그대로 두 변수끼리의 상관 계수이다.

 

우리는 위에서 공부했기 때문에 -0.85, 0.90 등등 각각의 숫자들이 어떤 관계(비례인지 반비례인지)를 나타내는 것인지를 잘 알고 있다.

 

하지만 이를 한눈에 파악하긴 쉽지 않다. 

 

이제 히트맵을 그려보자.

 

당연히 R에 패키지가 있겠죠?

install.packages("corrplot")
library(corrplot)

corrplot(car_cor)

와우! 너무 간단하다.

 

뭐.. 너무 직관적이고 이해하기 쉬우니 설명은 생략한다.

 

이렇게 보여주는 것 외에도 파라미터를 변경해 여러 가지 히트맵을 생성할 수 있다.

(이건 책을 다시 한번 읽어보는 걸로~)

 

 

이번 챕터도 R의 편리함과 편리함을 제대로 느낀 단원이었다.

Comments