zenn.skin 무료버전 배포중!
자세히보기

DataScience

[Python] 두 표본에 대한 모평균 검정

koosco! 2022. 10. 5. 23:13

두 표본에 대한 모평균 검정을 할 때는 표본이 대응하는 표본인지, 독립된 표본인지에 따라 표준편차를 구하는 방법이 달라집니다.

또 독립된 표본이라도 모분산을 알고 있을 때와 모분산을 모를 때의 검정 방법에 차이가 있습니다.

1. 대응표본 t검정(Paired-sample t test)

대응표본은 검정하려고 하는 두 표본이 동일한 대상일 때 사용 가능합니다.

A, B, C, D라는 표본이 있고, 어떠한 처리가 주어진 후 결과가 A', B', C', D'이 될 때, 표본은 동일하지만 통계치는 달라지게 됩니다.

  처리 전 처리 후
A 13 15
B 16 18
C 19 17
D 11 13

위와 같이 검정하고자하는 표본이 동일한 경우에 대응표본 t검정을 수행할 수 있습니다.

import numpy as np
from math import sqrt

def paired_sample_t_test(x: np.array, y: np.array, mu: float=0) -> float:
  data = x - y
  x_bar = np.mean(data)
  std = np.std(data, ddof=1)

  return (x_bar - mu) * sqrt(len(x)) / std
x = np.array([13, 16, 19, 11])
y = np.array([15, 18, 17, 13])

paired_sample_t_test(x, y, 0) # -1.0

대응표본을 시행했을 때의 t 검정통계량을 구할 수 있습니다.

이 때의 자유도는 n - 1이 됩니다.

2 독립표본 t검정(unpaired-sample t test)

1) 모분산을 아는 경우

이 때 t의 임계치의 자유도는 다음과 같이 구할 수 있습니다.

이 때 자유도가 실수값이 나온다면 내림을 하여 자유도를 계산할 수 있습니다.

2) 모분산을 모르는 경우

① 두 모집단의 분산이 동일하다는 가정이 없는 경우(t-test without pooled variance)

② 두 모집단의 분산이 동일하다는 가정이 있는 경우(t test with pooled variance)

표본의 크기가 충분히 크지 않을 때는 합동분산을 이용해 구한 값을 표준편차로 사용할 수 있습니다.

이 때의 자유도는 n + m - 2가 됩니다.

'DataScience'의 다른글

  • 현재글 [Python] 두 표본에 대한 모평균 검정

관련글