Tomato [R_tidyverse] t-검정: 대응표본 t-검정 paired sample t-test ②

새소식

Programs/R

[R_tidyverse] t-검정: 대응표본 t-검정 paired sample t-test ②

  • -

  • 통계분석의 종류는 목적에 따라 크게 (그룹 간) 차이검정, (변수 간) 관계검정 으로 나눌 수 있고, t-검정은 전자에 해당함
  • 그룹 간 차이검정 방법은 t검정과 분산분석(ANOVA) 이 있음, t-검정은 그룹이 1~2개일 때, ANOVA는 3개 이상일 때 사용
  • t-검정의 종류
   
단일표본 t-검정
one sample t-test
1개의 그룹, 단일 집단의 평균을 특정 값과 비교하는 검정
독립표본 t-검정 independent samples t-test 2개의 그룹, 단일 집단의 평균을 특정 값과 비교하는 검정
대응표본 t-검정
paired sample t-test
2개의 그룹, 같은 개체 또는 짝을 이루는 개체들의 두 관측치 간의 평균 차이를 비교하는 검정

 

*tidyverse 패키지를 활용한 분석방법

  • 추론 방식을 사용하여 t-검정을 실시할 때는 부트스트래핑 방법을 활용할 수 있음
    • 부트스트래핑: 데이터에서 여러 개의 샘플을 반복적으로 추출하여 새로운 분포를 만들어 내고, 이를 활용하여 통계적 추정이나 가설 검정을 수행하는 방법
  • 사용되는 함수
    • specify(): 어떤 데이터를 가져올거야?
    • generate(): 데이터에서 가상의 샘플들을 뽑아줘
    • calculate(): 각각의 통계치 계산해
    • visualize(): 새로운 분포 그래프 만들기
    • hypothesize(): 귀무가설 가정
  • 두 가지 방법 있음: 표본평균 활용, t값 활용
  • 대응표본 t-검정 같은 집단에 대해 두 번의 측정을 수행했을 때, 두 측정 결과 사이의 평균 차이가 유의미한지를 검정하는 방법이다. 즉, 처치 전후, 훈련 전후, 시술 전후 등 같은 대상에 대한 변화를 비교하는 데 사용된다.
  • 독립표본 t-검정의 경우 서로 다른 두 집단을 데리고 오기 때문에 둘의 분산이 동질한지 검정할 필요가 있었으나(등분산 검정), 대응표본 t-검정에서는 같은 집단의 처치 전후를 비교하기 때문에 필요가 없다.

오늘 실습에서는 한 집단을 대상으로 다이어트 복용 전과 복용 후(3개월 후) 체중을 비교해본다.
귀무가설: 복용 전후 몸무게 차이가 없다

 

 

 

 

 

 

 

 

- 패키지 설치 및 불러오기, 데이터 불러오기, 변수 설정

- 1번 방법: 표본평균 활용

1) 통계치 확인 및 새로운 분포 생성

2) 신뢰구간 계산

3) p값 확인 및 시각화

- 2번 방법: t값 활용

1) 가설 설정 및 통계량 계산

2) 신뢰구간 계산 및 시각화

 

 

 

 

 

  • 오늘의 실습을 위해 필요한 R 패키지. 패키지는 한 번 설치하면 다음에 다시 설치할 필요 없음. 그러나 라이브러리는 매번 불러와야 함!
  • 오늘 실습에서는 한 집단을 대상으로 다이어트 복용 전과 복용 후(3개월 후) 체중을 비교해 본다.
  • 우리가 알고자하는 것은 섭취 전과 후의 몸무게 차이이기 때문에(섭취전 몸무게 - 섭취후 몸무게) 둘의 몸무게 차이값을 새로운 변수로 설정함
# 패키지 설치 install.packages("tidyverse") #쌍따옴표 주의 install.packages("tidymodels") install.packages("rstatix") # 설치한 패키지 불러오기 (라이브러리) library(tidyverse) #쌍따옴표 없음 library(tidymodels) library(rstatix) # 데이터 불러오기 pst_tb <- read_csv("07.pst.csv", col_names = T, na = ".", locale = locale("ko", encoding = "euc-kr")) #원데이터의 변수명이 한글이라 # 차이값 추가 변수 설정 pst_tb <- pst_tb %>% mutate(차이 = 섭취후 - 섭취전) %>% print()

 

 

 

 

 

 

 

 

 

x_bar <- pst_tb %>% specify(response = 차이) %>% calculate(stat = "mean") %>% print() null_dist_x <- pst_tb %>% specify(response = 차이) %>% hypothesize(null = "point", mu = 0) %>% generate(reps = 1000, type = "bootstrap") %>% calculate(stat = "mean")%>% print()

위를 실행시키면 아래와 같이 출력됨. 1000번 추출한 샘플들 각각의 평균을 보여줌

Response: 차이 (numeric) Null Hypothesis: point # A tibble: 1,000 × 2 replicate stat <int> <dbl> 1 1 -1.2 2 2 -0.200 3 3 -0.2 4 4 0.200 5 5 -1.4 6 6 0.150 7 7 -0.200 8 8 -0.35 9 9 -0.85 10 10 0.200

 

 

 

 

 

 

 

# 신뢰구간 계산: 이 구간 안에 값이 들어와야 귀무가설 채택 가능 null_dist_ci <- null_dist_x %>% get_ci(level = 0.95, type = "percentile") %>% print()

아래가 신뢰구간

# A tibble: 1 × 2 lower_ci upper_ci <dbl> <dbl> 1 -1.45 1.30

 

 

 

 

 

 

 

 

null_dist_x %>% visualize() + shade_p_value(obs_stat = x_bar, direction = "less") + # 섭취 후의 몸무게가 줄어들었는지를 보기 때문에 less shade_confidence_interval(endpoints = null_dist_ci)

빨간 선이 p-value, 초록영역이 신뢰구간. 신뢰구간 안에 관측치가 들어와야 귀무가설 채택, 아래를 보면 아닌 것을 알 수 있음

-> 대체가설 채택(다이어트 약 복용 전후 몸무게 차이가 있다!)

 

 

 

 

 

 

 

 

 

t_cal <- pst_tb %>% specify(response = 차이) %>% hypothesize(null = "point", mu = 0) %>% calculate(stat = "t") %>% print() null_dist_t <- pst_tb %>% # 귀무가설 가정 specify(response = 차이) %>% hypothesize(null = "point", mu = 0) %>% # 검증값을 0으로 설정(복용 전후 몸무게 차이=0) generate(reps = 1000, # 1000개 샘플링 type = "bootstrap") %>% calculate(stat = "t")%>% print() # 저장과 동시에 프린트

 

 

 

ull_dist_ci <- null_dist_t %>% get_ci(level = 0.95, type = "percentile") %>% print() null_dist_t %>% visualize(method = "both") + #both를 넣으면 이론적 분포(라인그래프)와 샘플의 값(히스토그램)을 비교 shade_p_value(obs_stat = t_cal, # obs_stat 관측치 direction = "less") + # 값이 너무 많이 떨어져 있어, 귀무가설 기각 shade_confidence_interval(endpoints = null_dist_ci)

아래의 그래프가 생성됨 → 귀무가설 기각

 

 

 

 

 

 

 

 

 

 

 

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.