이전 포스팅에서 자료수집과정에 따른 두 모집단 비교 방법에 대해 알아보았다.
이번에는 그 중 두 모집단이 독립일 경우에 모평균 차이를 추론하는 방법에 대해 알아보겠다.
두 개의 독립 표본에서 모평균 차이 추론하는 방법
우선 두 모집단으로부터 추출된 표본과 그로부터 계산되는 통계량은 다음과 같다.
X1,⋯,Xn1 : 평균이 μ1이고 표준편차가 σ1인 모집단으로부터 추출된 표본
ˉX=1n1∑n1i=1Xi, s21=1n1−1∑n1i=1(Xi−ˉX)2
Y1,⋯,Yn2 : 평균이 μ2이고 표준편차가 σ2인 모집단으로부터 추출된 표본
ˉY=1n2∑n2i=1Yi, s22=1n2−1∑n2i=1(Yi−ˉY)2
여기서 우리의 관심사는 두 모집단의 평균 반응값의 차이이다. 즉, 모수 μ1−μ2에 대한 추론이다.
모평균의 차(μ1−μ2)에 대한 추론은 표본의 크기가 충분히 클 때와 작을 때로 나뉜다.
1. 표본의 크기가 클 때
두 모평균의 차 (μ1−μ2)에 대한 추론을 위해서는 두 표본평균의 차 (ˉX−ˉY)를 이용한다. 두 표본의 크기 μ1,μ2가 모두 큰 경우(30 이상)에는 중심극한정리에 의해 ˉX와 ˉY는 근사적으로 정규분포를 따른다.
ˉX∼N(μ1,σ21n1), ˉY∼N(μ2,σ22n2)
여기서 중요한 정규분포의 특징은 다음과 같다.
두 개의 확률변수 X, Y가 서로 독립이고 다음과 같이 정규분포를 따를 때
X∼N(μ1,σ21), Y∼N(μ2,σ22)
두 변수의 합과 차는 각각 정규분포를 따르고, 평균은 μ1±μ2, 분산은 σ1+σ2이 된다. 이를 기호로 나타내면 다음과 같다.
(X±Y)∼N(μ1±μ2,σ1+σ2)
위의 특징으로 두 표본은 서로 독립이기때문에 두 표본평균의 차인 ˉX−ˉY도 다음과 같은 정규분포를 따른다.
(ˉX−ˉY)∼N(μ1−μ2,σ21n1+σ22n2)
모분산을 모를 때에는 이를 표본분산으로 대체해도 다음과 같이 근사적으로 표준정규분포를 따른다.
Z=(ˉX−ˉY)−(μ1−μ2)√s21/n1+s22/n2∼N(0,1)
이를 바탕으로 (μ1−μ2)에 대한 신뢰구간은 다음과 같다.
* 모평균의 차 (μ1−μ2)에 대한 신뢰구간(표본의 크기가 클 때)
표본의 크기 n1,n2가 모두 30 이상일 때 (μ1−μ2)에 대한 100(1−α) 신뢰구간은
((ˉX−ˉY)−zα/2×√s21n1+s22n2, (ˉX−ˉY)+zα/2×√s21n1+s22n2)
혹은
(ˉX−ˉY)±zα/2×√s21n1+s22n2
이다.
표본의 크기가 클 때 두 모평균의 차에 대한 검정은 다음과 같이 한다.
* H0 : μ1−μ2=δ0에 대한 검정
표본의 크기 n1,n2가 모두 30이상 일 때 가설 H0 : μ1−μ2=δ0에 대한 검정통계량을 다음과 같다.
Z=(ˉX−ˉY)−δ0√s21/n1+s22/n2
검정통계량의 분포는 H0이 맞을 때 N(0, 1)을 따른다. 각 대립가설에 대해 유의수준 α를 갖는 기각역은 다음과 같다.
H1 : μ1−μ2<δ0일때R : Z≤−zα
H1 : μ1−μ2>δ0일때R : Z≥zα
H1 : μ1−μ2≠δ0일때R : |Z|≥zα/2
위 정규분포의 특징을 R에서 확인해보면 다음과 같다.
예를 들어, 평균이 5이고 표준편차가 1인 정규분포를 따르는 모집단 X와, 평균이 3이고 표준편차가 2인 정규분포를 따르는 모집단 Y에서 각각 30개의 표본을 뽑아 평균을 구했다.
X∼N(5,12), Y∼N(3,22)
이론상, ˉX와 ˉY의 분포는 다음과 같을 것이다.
ˉX∼N(5,12/30), ˉY∼N(3,22/30)
이를 R에서 확인해보면 다음과 같다.
1 2 3 4 5 6 7 8 9 10 11 | x_mu <- 5; x_sigma <- 1 y_mu <- 3; y_sigma <- 2 x_bar <- c() y_bar <- c() n <- 30 for (i in 1:1000) { x_bar <- c(x_bar,mean(rnorm(n, x_mu, x_sigma))) y_bar <- c(y_bar,mean(rnorm(n, y_mu, y_sigma))) } | cs |
> mean(x_bar)
[1] 5.002784 # x_mu=5
> mean(y_bar)
[1] 3.006945 # y_mu=3
> var(x_bar)
[1] 0.03487879
> x_sigma^2/30
[1] 0.03333333
> var(y_bar)
[1] 0.1326863
> y_sigma^2/30
[1] 0.1333333
이론상의 ˉX와 ˉY의 분포가 실제로도 잘 맞는 것을 확인할 수 있다.
이를 그래프로 그려보면 다음과 같다.
(ㅡ) X의 분포
(ㅡ) 계산된 ˉX의 분포
(--) 이론상ˉX의 분포
1 2 3 4 5 6 7 | plot(seq(-5,10,length.out = 200), dnorm(seq(-5,10,length.out = 200),x_mu,x_sigma), type="l", ylim = c(0, max(density(x_bar)$y)), lwd=2) lines(density(x_bar), type="l", col = "red", lwd=2) lines(seq(-5,10,length.out = 200), dnorm(seq(-5,10,length.out = 200),x_mu,sqrt(x_sigma^2/n)), type="l", ylim = c(0, max(density(x_bar)$y)), col = "blue", lwd = 2, lty=2) | cs |
예시의 ˉX의 분포와 이론상 ˉX의 분포가 거의 일치하는 것을 볼 수 있으며, X의 분포와 ˉX의 분포는 같은 평균을 갖지만, ˉX의 분산이 훨씬 작은 것을 볼 수 있다.
(ㅡ) Y의 분포
(ㅡ) 계산된 ˉY의 분포
(--) 이론상ˉY의 분포
1 2 3 4 5 6 7 | plot(seq(-3,10,length.out = 200), dnorm(seq(-3,10,length.out = 200),y_mu,y_sigma), type="l", ylim = c(0, max(density(y_bar)$y)), lwd=2) lines(density(y_bar), type="l", col = "red", lwd=2) lines(seq(-3,10,length.out = 200), dnorm(seq(-3,10,length.out = 200),y_mu,sqrt(y_sigma^2/n)), type="l", ylim = c(0, max(density(y_bar)$y)), col = "blue", lwd = 2, lty=2) | cs |
(ˉX−ˉY)의 분포 역시 이론상 평균은 2(=5-3), 분산은 12/30+22/30인 정규분포를 따른다.
> mean(x_bar - y_bar)
[1] 1.995839
> var(x_bar - y_bar) # 실제 값
[1] 0.1610267
> (x_sigma^2/n) + (y_sigma^2/n) # 이론상 계산값
[1] 0.1666667
(ㅡ) 이론상 (ˉX−ˉY)의 분포
(--) 계산된 (ˉX−ˉY)의 분포
1 2 3 4 | plot(seq(-3,10,length.out = 200), dnorm(seq(-3,10,length.out = 200),(x_mu-y_mu),sqrt((x_sigma^2/n) + (y_sigma^2/n))), type="l", lwd = 2) lines(density(x_bar - y_bar), type="l", col = "red", lwd = 2, lty=2) | cs |
Z=(ˉX−ˉY)−(μ1−μ2)√σ21/n1+σ22/n2 역시 이론상 N(0, 1)을 따라야 한다.
* 모분산(σ21,σ22)를 알고 있기 때문에 표본분산이 아닌 모분산 그대로 계산
> z <- ((x_bar - y_bar) - (x_mu - y_mu))/sqrt(x_sigma^2/n + y_sigma^2/n)
> mean(z)
[1] -0.0101931 # 0
> var(z)
[1] 0.9661604 # 1
(ㅡ) 이론상 Z의 분포 :: N(0, 1)
(--) 계산된 Z의 분포
1 2 3 4 | plot(seq(-5,5,length.out = 200), dnorm(seq(-5,5,length.out = 200),0,1), type="l", lwd = 2, ylim = c(0, max(density(z)$y))) lines(density(z), type = "l", col = "red", lwd = 2, lty=2) | cs |
신뢰구간의 의미 in R
위의 예시를 그대로 95% 신뢰구간을 구하면 다음과 같다.
1 2 | l <- (x_bar - y_bar) - 1.96*sqrt((x_sigma^2/n) + (y_sigma^2/n)) u <- (x_bar - y_bar) + 1.96*sqrt((x_sigma^2/n) + (y_sigma^2/n)) | cs |
이론상 95% 신뢰구간이란 100개의 표본에 대한 각각의 신뢰구간 중 95개의 신뢰구간에 모평균의 차이값이 포함되어야 한다.
위의 예시에서 이론상 1000개의 표본에 대해 각각 1000개의 신뢰구간이 있을 때 알고자 하는 모평균의 차이값이 포함되는 신뢰구간은 950개가 될 것이다.
> sum(l <= (x_mu - y_mu) & u >= (x_mu - y_mu))
[1] 945
모평균 비교검정 in R
실제 통계프로그램에서는 위의 식들을 일일이 계산하지 않고 이미 구현된 함수로 검정한다. R에서는 t.test()를 사용한다.
t.test(x, y = NULL,
alternative = c("two.sided", "less", "greater"),
mu = 0, paired = FALSE, var.equal = FALSE,
conf.level = 0.95, ...)
alternative : "two.sided"(양측검정)/ "less", "greater"(단측검정)
mu : 검정하고자 하는 값
paired : 짝비교시 TURE
var.equal : 모표준편차가 같을 시 TURE
conf.level : α
예를 들어)
X∼N(453,802)과Y∼N(401,602)
인 두 모집단에 대해
H0:μ1−μ2=52
에 대해 검정한다고 하자.
1 2 3 4 5 6 7 | x_mu <- 453; x_sigma <- 80; x_n <- 50 y_mu <- 401; y_sigma <- 60; y_n <- 100 x <- rnorm(x_n, x_mu, x_sigma) y <- rnorm(y_n, y_mu, y_sigma) t.test(x = x, y=y, mu=52) | cs |
Welch Two Sample t-test
data: x and y
t = -0.2832, df = 72.218, p-value = 0.7778
alternative hypothesis: true difference in means is not equal to 52
95 percent confidence interval:
22.11602 74.44900
sample estimates:
mean of x mean of y
447.7554 399.4729
p-value = 0.7778 > 0.05로 귀무가설을 기각하지 못한다.
위 표본에 대한 95% 신뢰구간을 직접 구해보면 다음과 같다.
> l <- (mean(x)-mean(y)) - 1.96*sqrt(var(x)/x_n + var(y)/y_n)
> u <- (mean(x)-mean(y)) + 1.96*sqrt(var(x)/x_n + var(y)/y_n)
> l
[1] 22.55394
> u
[1] 74.01107
표본이 작을 때 두 모집단 평균의 차이를 추론하는 방법은 다음 포스팅에서 다루도록 하겠다.
'AI > 기초통계' 카테고리의 다른 글
[기초통계] 모평균 비교 :: 독립인 모집단에서 표본의 크기가 작을 때 (2) :: t.test() in R (0) | 2019.11.27 |
---|---|
[기초통계] 모평균 비교 :: 독립인 모집단에서 표본의 크기가 작을 때 (1) :: t.test() in R (0) | 2019.11.26 |
[기초통계] 모평균 비교 :: 두 모집단이 독립일때와 독립이 아닐 때 (0) | 2019.11.24 |
[기초통계] t-distribution :: 표본의 크기가 작을 때 :: n에 따른 t분포 in R (4) | 2019.11.23 |
[기초통계] 유의확률이란? P-value란? (0) | 2019.11.22 |