독립인 두 모집단에서 표본의 크기가 작을 때 모평균의 차 (μ1−μ2μ1−μ2) 비교
표본의 크기가 작을 때는 일반적으로 두 모집단에 대하여 정규분포 가정이 필요하다. 또 다른 가정은 ① 두 모집단의 표준편차가 같다고 가정하는 경우와 ② 두 모집단의 표준편차가 다르다고 가정하는 경우이다.
이전 포스팅에서 독립인 두 모집단에서 표본의 크기가 작을 때, 모표준편차가 같은 경우에 대한 모평균 비교 방법에 대해 알아보았다. 이번에는 모표준편차가 다를 때 모평균 비교 검정 방법에 대해 알아보겠다.
>> 독립인 두 모집단에서 표본의 크기가 작을 때 바로가기
2. 두 모집단의 표준편차가 다른 경우
* 독립인 두 모집단에서 표본의 크기가 작고 두 모표준편차가 다를 때, 모평균의 차 (μ1−μ2μ1−μ2)에 대한 추론
모평균의 차 (μ1−μ2μ1−μ2)에 대한 100(1−α)100(1−α) 신뢰구간은 근사적으로
(ˉX−ˉY)±t∗α/2×√s21n1+s22n2(¯X−¯Y)±t∗α/2×√s21n1+s22n2
이다. 이 때 t∗t∗의 자유도는 (n1−1)(n1−1)과 (n2−1)(n2−1) 중 작은 값이다.
가설 H0:μ1−μ2=δ0H0:μ1−μ2=δ0에 대한 검정통계량은 다음과 같다.
t∗=(ˉX−ˉY)−δ0√s21n1+s22n2t∗=(¯X−¯Y)−δ0√s21n1+s22n2
이 검정통계량의 분포는 H0H0가 맞을 때 근사적으로 자유도가 (n1−1)(n1−1)과 (n2−1)(n2−1) 중 작은 값인 t 분포를 따른다.
독립인 두 모집단에서 표본의 크기가 작고, 두 모표준편차가 다를 때 t.test() in R
예)
X∼N(0,1)X∼N(0,1)에서 13개의 표본을, Y∼N(0,32)Y∼N(0,32)에서 11개의 표본을 수집했다. 이 때 μ1−μ2μ1−μ2에 대해 다음 가설을 검정하라.
H0:μ1−μ2=0 대 H1:μ1−μ2≠0H0:μ1−μ2=0 대 H1:μ1−μ2≠0
> x_n <- 13
> y_n <- 11
# sampling
> x <- rnorm(x_n, 0, 1)
> y <- rnorm(y_n, 0, 3)
# 등분산성 test : ratio of variances is not equal to 1
> var.test(x, y)
F test to compare two variances
data: x and y
F = 0.27948, num df = 12, denom df = 10, p-value = 0.04036
alternative hypothesis: true ratio of variances is not equal to 1
95 percent confidence interval:
0.07718541 0.94285454
sample estimates:
ratio of variances
0.2794841
> t.test(x, y, alternative = "two.sided", mu = 0, var.equal = FALSE, conf.level = 0.95)
Welch Two Sample t-test
data: x and y
t = -1.6276, df = 14.608, p-value = 0.125
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
-2.9925511 0.4045788
sample estimates:
mean of x mean of y
0.2249197 1.5189059
검정 결과 p-value가 0.05보다 크므로 H0H0를 기각할 수 없다. 즉, 두 집단의 평균이 다르다고 할 근거가 충분하지 않다. μ1−μ2μ1−μ2에 대한 신뢰구간도 (-2.99, 0.40)으로 0을 포함하는 것을 볼 수 있다.
* Welch test 자유도
표본의 크기가 작을 때, 두 모표준편차가 같으면 Student's T test를, 다르면 Welch's T test를 한다. 책에서는 Welch`s T test의 자유도가 (n1−1)(n1−1)과 (n2−1)(n2−1) 중 작은 값이라 나와있지만, 실제 통계프로그램에서 Welch`s T test의 자유도는 다음과 같다.
df=(s21/n1+s22/n2)2(s21/n1)2/(n1−1)+(s22/n2)2/(n2−1)df=(s21/n1+s22/n2)2(s21/n1)2/(n1−1)+(s22/n2)2/(n2−1)
> df <- ((x_s^2/x_n) + (y_s^2/y_n))^2 / ((x_s^2/x_n)^2/(x_n-1) + (y_s^2/y_n)^2/(y_n-1))
> df
[1] 14.60818
검정통계량 t 와 신뢰구간을 직접 계산하면 다음과 같다.
# 평균
> x_m <- mean(x)
> y_m <- mean(y)
# 표준편차
> x_s <- sd(x)
> y_s <- sd(y)
# 검정통계량 t
> t <- (x_m - y_m)/sqrt((x_s^2/x_n) + (y_s^2/y_n))
> t
[1] -1.627564
# 자유도
> df <- ((x_s^2/x_n) + (y_s^2/y_n))^2 / ((x_s^2/x_n)^2/(x_n-1) + (y_s^2/y_n)^2/(y_n-1))
# 신뢰구간
> l <- (x_m-y_m) - qt(0.025, df, lower.tail = F)*sqrt((x_s^2/x_n) + (y_s^2/y_n))
> u <- (x_m-y_m) + qt(0.025, df, lower.tail = F)*sqrt((x_s^2/x_n) + (y_s^2/y_n))
> l
[1] -2.992551
> u
[1] 0.4045788