쌍체 표본 t검정 기초개념

2021-06-26

.

Data_Preprocessing_TIL(20210626)

[학습자료]

패스트캠퍼스 온라인 강의 “파이썬을 활용한 데이터 전처리 Level UP 올인원 패키지 Online.” 를 공부하고 정리한 내용입니다.

URL : https://fastcampus.co.kr/data_online_preprocess

[학습내용]

  • 쌍체 표본 t검정의 목적 : 특정 실험 및 조치 등이 효과가 있는지에 대한 유의성을 검정

일반적으로 어떤 실험을 하기 전과 한 후를 비교했을때 그 차이가 유의한지를 보는 것이다.

예를 들어서 실험전에 n개의 샘플이 있고, 값을 x1 ~ xn까지 있다고 하자. 그리고 실험 후의 결과를 y1 ~ yn까지라고 해보자. 주의해야할 점은 샘플데이터는 실험전과 후의 차이가 있을뿐 데이터는 동일한 것이다. 실험 전후의 차이를 d1 ~ dn까지로 나타낸 것이다. 그래서 이 실험전후의 차이가 0인것을 영가설로 두고, 0이 아닌것을 대립가설로 두고 검정하는 것을 말한다.

1

  • 쌍체 표본 t검정을 수행하기 위한 선행조건

실험전값과 실험후의 측정값은 정규분포를 따르지 않아도 무방하나 실험전후 측정값의 차이인 d는 정규성을 띄고 있어야 한다.

  • 쌍체 표본 t검정의 통계량

분자는 d의 평균이 들어가고, 분모에는 이 d에 대한 표준편차가 들어간다. d가 크면 클수록 통계량이 커지는 것을 알 수 있다. 표준편차가 작으면 작을수록 또 통계량이 커진다.

2

  • 파이썬을 이용한 쌍체 표본 t검정

1) 정규성 검정(Kolmogorov-Smornov 검정)

코드

scipy.stats.kstest(x,'norn')

결과해석

pvalue가 특정수치(0.05) 미만이면 정규성을 따른다고 판단

2) 쌍체표본 t검정

코드

# a,b : 실험전후 결과(주의사항 : 반드시 길이가 같아야 함)
scipy.stats.ttest_rel(a,b)

결과해석

pvalue가 특정수치 미만이면 그룹 a와 그룹 b간 차이가 존재한다고 판단(즉, 특정실험의 효과가 있음)

statistics가 양수이면 양의 효과(d>0)가 있다고 판단하며, 음수면 음의효과(d<0)가 있다고 판단

  • python을 이용한 실제 실습

다이어트 약이 효과가 있었는지를 검정하는 예시

step 1) 데이터 load

# data 불러오기
import os
import pandas as pd
# pwd 시 경로 : /c/Users/user/Desktop/aa/2. 탐색적 데이터 분석/데이터
os.chdir(r"C:/Users/user/Desktop/aa/2. 탐색적 데이터 분석/데이터/")

df = pd.read_csv("다이어트약_효과검증.csv")
df
다이어트전(kg) 다이어트후(kg)
0 87.41 88.30
1 81.05 76.21
2 60.72 53.34
3 81.02 78.21
4 75.75 76.74
5 85.48 74.74
6 62.11 59.00
7 56.56 49.85
8 85.11 79.79
9 80.67 79.38
10 66.65 65.53
11 59.29 53.80
12 77.08 68.51
13 80.08 78.30
14 82.89 82.26
15 84.45 83.48
16 88.72 86.44
17 67.97 62.91
18 73.23 74.53
19 75.32 71.58
20 58.96 51.54
21 55.89 52.07
22 89.54 84.32
23 73.34 64.47
24 69.92 67.26
25 76.70 69.76
26 72.76 68.79
27 84.80 83.77
28 81.31 78.05
29 77.63 74.82
30 57.19 52.65
31 89.08 88.31
32 68.69 65.70
33 66.58 64.10
34 61.49 60.53
35 67.12 62.10
36 69.87 60.27
37 82.98 82.20
38 72.75 61.21
39 79.50 77.63
40 57.93 54.11
41 65.19 56.46
42 70.02 67.07
43 83.36 76.00
44 78.59 74.65
45 88.18 84.15
46 59.97 51.40
47 82.43 75.39
48 58.08 49.02
49 58.60 52.48
df.columns
Index(['다이어트전(kg)', '다이어트후(kg)'], dtype='object')
before = df['다이어트전(kg)']
after = df['다이어트후(kg)']

step 2) 정규성 검정

# 차이 d(after-before)에 대한 정규성 검정
from scipy.stats import *
kstest(after - before, 'norm')
KstestResult(statistic=0.7424620196514834, pvalue=7.04108433205159e-29)

step 3) 쌍체표본 t검정

ttest_rel(before, after) # 확실한 양의 효과가 있음을 확인 
Ttest_relResult(statistic=9.70596986565785, pvalue=5.370404098342324e-13)