전공자를 위한 생물학/생물학을 위한 통계

[t-test] 6편 : t-test 실습 가이드 - R과 Python으로 평균 차이 분석하기

단세포가 되고파🫠 2025. 4. 16. 21:17
반응형

 

 

 

지금까지 t-test의 개념, 종류, 적용 조건, 해석법, 다른 통계 검정과의 차이점까지 모두 살펴봤어요. 

 

 

 

 

이제는 직접 손으로 실습해볼 차례에요. 이번 글에서는 R과 Python을 활용하여 독립표본 t-test와 대응표본 t-test를 수행하는 방법을 소개할게요. 실제 데이터를 이용해 t-test 결과를 해석하는 방법까지 하나씩 따라 해보며 익혀봅시다.



R로 독립표본 t-test 수행하기


먼저 R에서 두 그룹 간의 평균을 비교하는 독립표본 t-test를 진행해볼게요. 아래는 가상의 두 그룹(예: 실험군과 대조군)의 시험 점수를 비교하는 예시입니다.



# 데이터 생성
control <- c(80, 85, 78, 90, 82)
treatment <- c(88, 92, 95, 91, 89)

# 독립표본 t-test 실행
t.test(control, treatment, var.equal = TRUE)

 


 


위 코드에서 var.equal = TRUE는 두 그룹의 분산이 같다고 가정하는 경우입니다. 결과 출력에서는 p-value를 확인해서 유의미한 차이가 있는지 해석할 수 있어요. 일반적으로 p < 0.05면 통계적으로 유의하다고 판단하죠.

 

반응형

 

R로 대응표본 t-test 수행하기

 


같은 사람의 전후 데이터를 비교하는 대응표본 t-test도 자주 쓰여요. 예를 들어 운동 전후의 체중 변화 데이터를 비교해볼게요.



# 데이터 생성
before <- c(70, 68, 72, 71, 69)
after <- c(68, 67, 70, 69, 68)

# 대응표본 t-test 실행
t.test(before, after, paired = TRUE)

 


 


여기서는 paired = TRUE로 설정해줘야 대응표본이라는 점을 R이 인식합니다. 이 역시 p-value를 통해 운동 전후에 유의한 변화가 있었는지 판단할 수 있어요.

 


Python에서 t-test 수행하기 (scipy 이용)


Python에서는 scipy.stats 라이브러리를 이용해 t-test를 쉽게 실행할 수 있어요.



from scipy.stats import ttest_ind, ttest_rel

# 독립표본 t-test
control = [80, 85, 78, 90, 82]
treatment = [88, 92, 95, 91, 89]
t_stat, p_val = ttest_ind(control, treatment)
print("독립표본 t-test:", p_val)

# 대응표본 t-test
before = [70, 68, 72, 71, 69]
after = [68, 67, 70, 69, 68]
t_stat, p_val = ttest_rel(before, after)
print("대응표본 t-test:", p_val)

 


 


두 경우 모두 반환되는 p_val 값을 기준으로 귀무가설(두 평균은 같다)을 기각할 수 있는지를 확인할 수 있어요.

 

 


실습 시 주의할 점


항상 데이터의 정규성(정규분포 여부)을 먼저 확인하세요. R에서는 shapiro.test(), Python에서는 scipy.stats.shapiro()로 확인할 수 있어요.

 



그룹 간 분산이 같은지 확인하려면 R에서는 var.test() 또는 Python에서는 levene()을 사용해보세요.

 



t-test는 이상치(outlier)에 민감하니, 박스플롯 등으로 시각화해보는 것도 중요합니다.

 

 


통계는 이론만 공부해서는 절대 익숙해질 수 없어요. 실제 데이터를 가지고 반복해서 실습하고 결과를 직접 해석해보는 것이 진짜 실력으로 이어집니다. 오늘 살펴본 t-test 코드는 아주 기본적인 예시이지만, 여러분이 가지고 있는 데이터셋에 바로 적용해볼 수 있어요.

반응형