AI/기초통계

[기초통계] 모평균 비교 :: 독립인 두 모집단에서 표본의 크기가 클 때 비교 :: R에서 확인하기 :: t.test() in R

슈퍼짱짱 2019. 11. 25. 08:00
반응형

이전 포스팅에서 자료수집과정에 따른 두 모집단 비교 방법에 대해 알아보았다.

이번에는 그 중 두 모집단이 독립일 경우에 모평균 차이를 추론하는 방법에 대해 알아보겠다.


>> 두 모집단 비교 방법 바로가기


두 개의 독립 표본에서 모평균 차이 추론하는 방법


우선 두 모집단으로부터 추출된 표본과 그로부터 계산되는 통계량은 다음과 같다.


\(X_{1}, \cdots, X_{n_{1}}\) : 평균이 \(\mu_{1}\)이고 표준편차가 \(\sigma_{1}\)인 모집단으로부터 추출된 표본

\(\bar{X} = \frac{1}{n_{1}} \sum_{i=1}^{n_{1}} X_{i}\),  \(s^2_{1} = \frac{1}{n_{1}-1} \sum_{i=1}^{n_{1}} (X_{i}-\bar{X})^2\)


\(Y_{1}, \cdots, Y_{n_{2}}\) : 평균이 \(\mu_{2}\)이고 표준편차가 \(\sigma_{2}\)인 모집단으로부터 추출된 표본

\(\bar{Y} = \frac{1}{n_{2}} \sum_{i=1}^{n_{2}} Y_{i}\),  \(s^2_{2} = \frac{1}{n_{2}-1} \sum_{i=1}^{n_{2}} (Y_{i}-\bar{Y})^2\)


여기서 우리의 관심사는 두 모집단의 평균 반응값의 차이이다. 즉, 모수 \(\mu_{1} - \mu_{2}\)에 대한 추론이다.



모평균의 차(\(\mu_{1} - \mu_{2}\))에 대한 추론은 표본의 크기가 충분히 클 때와 작을 때로 나뉜다.


1. 표본의 크기가 클 때


두 모평균의 차 (\(\mu_{1} - \mu_{2}\))에 대한 추론을 위해서는 두 표본평균의 차 (\(\bar{X} - \bar{Y}\))를 이용한다. 두 표본의 크기 \(\mu_{1}, \mu_{2}\)가 모두 큰 경우(30 이상)에는 중심극한정리에 의해 \(\bar{X}\)와 \(\bar{Y}\)는 근사적으로 정규분포를 따른다.

$$ \bar{X} \sim N(\mu_{1}, \frac{\sigma_{1}^2}{n_{1}}),\ \bar{Y} \sim N(\mu_{2}, \frac{\sigma_{2}^2}{n_{2}}) $$ 


여기서 중요한 정규분포의 특징은 다음과 같다.


두 개의 확률변수 X, Y가 서로 독립이고 다음과 같이 정규분포를 따를 때

$$ X\sim N(\mu_{1}, \sigma_{1}^2),\ Y\sim N(\mu_{2}, \sigma_{2}^2) $$ 

두 변수의 합과 차는 각각 정규분포를 따르고, 평균은 \(\mu_{1} \pm \mu_{2}\), 분산은 \(\sigma_{1} + \sigma_{2}\)이 된다. 이를 기호로 나타내면 다음과 같다.

$$ (X \pm Y) \sim N(\mu_{1} \pm \mu_{2}, \sigma_{1} + \sigma_{2})  $$


위의 특징으로 두 표본은 서로 독립이기때문에 두 표본평균의 차인 \(\bar{X}-\bar{Y}\)도 다음과 같은 정규분포를 따른다.

$$ (\bar{X} - \bar{Y}) \sim N(\mu_{1} - \mu_{2}, \frac{\sigma_{1}^2}{n_{1}}+\frac{\sigma_{2}^2}{n_{2}}) $$


모분산을 모를 때에는 이를 표본분산으로 대체해도 다음과 같이 근사적으로 표준정규분포를 따른다.

$$ Z=\frac{(\bar{X}-\bar{Y}) - (\mu_{1} - \mu_{2})}{\sqrt{s^2_{1}/n_{1} + s^2_{2}/n_{2}}} \sim N(0, 1)$$


이를 바탕으로 (\(\mu_{1} - \mu_{2}\))에 대한 신뢰구간은 다음과 같다.


* 모평균의 차 (\(\mu_{1} - \mu_{2}\))에 대한 신뢰구간(표본의 크기가 클 때)


표본의 크기 \(n_{1}, n_{2}\)가 모두 30 이상일 때 (\(\mu_{1} - \mu_{2}\))에 대한 \(100(1-\alpha)%\) 신뢰구간은

$$ ((\bar{X} - \bar{Y}) - z_{\alpha/2} \times \sqrt{\frac{s^2_{1}}{n_{1}}+\frac{s^2_{2}}{n_{2}}},\  (\bar{X} - \bar{Y}) + z_{\alpha/2} \times \sqrt{\frac{s^2_{1}}{n_{1}}+\frac{s^2_{2}}{n_{2}}}) $$

혹은

$$ (\bar{X} - \bar{Y}) \pm  z_{\alpha/2} \times \sqrt{\frac{s^2_{1}}{n_{1}}+\frac{s^2_{2}}{n_{2}}} $$

이다.


표본의 크기가 클 때 두 모평균의 차에 대한 검정은 다음과 같이 한다.


* \(H_{0}\ :\ \mu_{1}-\mu_{2}=\delta_{0} \)에 대한 검정


표본의 크기 \(n_{1}, n_{2}\)가 모두 30이상 일 때 가설 \(H_{0}\ :\ \mu_{1}-\mu_{2}=\delta_{0} \)에 대한 검정통계량을 다음과 같다.

$$ Z = \frac{(\bar{X}-\bar{Y})-\delta_{0}}{\sqrt{s^2_{1}/n_{1}+s^2_{2}/n_{2}}} $$

검정통계량의 분포는 \(H_{0}\)이 맞을 때 N(0, 1)을 따른다. 각 대립가설에 대해 유의수준 \(\alpha\)를 갖는 기각역은 다음과 같다.

$$ H_{1}\ :\ \mu_{1}-\mu_{2}<\delta_{0} 일 때 \quad R\ :\ Z \le -z_{\alpha} $$

$$ H_{1}\ :\ \mu_{1}-\mu_{2}>\delta_{0} 일 때 \quad R\ :\ Z \ge z_{\alpha} $$

$$ H_{1}\ :\ \mu_{1}-\mu_{2} \ne \delta_{0} 일 때 \quad R\ :\ \left| Z \right| \ge z_{\alpha/2} $$




위 정규분포의 특징을 R에서 확인해보면 다음과 같다.


예를 들어, 평균이 5이고 표준편차가 1인 정규분포를 따르는 모집단 X와, 평균이 3이고 표준편차가 2인 정규분포를 따르는 모집단 Y에서 각각 30개의 표본을 뽑아 평균을 구했다.

$$ X \sim N(5, 1^2),\ Y \sim N(3, 2^2) $$

이론상, \(\bar{X}\)와 \(\bar{Y}\)의 분포는 다음과 같을 것이다.

$$ \bar{X} \sim N(5, 1^2/30),\ \bar{Y} \sim N(3, 2^2/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


이론상의 \(\bar{X}\)와 \(\bar{Y}\)의 분포가 실제로도 잘 맞는 것을 확인할 수 있다.

이를 그래프로 그려보면 다음과 같다.


() X의 분포

() 계산된 \(\bar{X}\)의 분포

(--) 이론상\(\bar{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_bar의 분포


예시의 \(\bar{X}\)의 분포와 이론상 \(\bar{X}\)의 분포가 거의 일치하는 것을 볼 수 있으며, X의 분포와 \(\bar{X}\)의 분포는 같은 평균을 갖지만, \(\bar{X}\)의 분산이 훨씬 작은 것을 볼 수 있다.


() Y의 분포

() 계산된 \(\bar{Y}\)의 분포

(--) 이론상\(\bar{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


y_bar의 분포




(\(\bar{X} - \bar{Y}\))의 분포 역시 이론상 평균은 2(=5-3), 분산은 \(1^2/30 + 2^2/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


() 이론상 (\(\bar{X} - \bar{Y}\))의 분포

(--) 계산된 (\(\bar{X} - \bar{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


x_bar - y_bar의 분포



\(Z=\frac{(\bar{X}-\bar{Y}) - (\mu_{1} - \mu_{2})}{\sqrt{\sigma^2_{1}/n_{1} + \sigma^2_{2}/n_{2}}}\) 역시 이론상 N(0, 1)을 따라야 한다. 

* 모분산(\(\sigma^2_{1}, \sigma^2_{2}\))를 알고 있기 때문에 표본분산이 아닌 모분산 그대로 계산


> 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


z의 분포




신뢰구간의 의미 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 : \(\alpha\)


예를 들어)

$$ X \sim N(453, 80^2) 과 Y \sim N(401, 60^2) $$

인 두 모집단에 대해 

$$ H_{0} : \mu_{1} - \mu_{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




표본이 작을 때 두 모집단 평균의 차이를 추론하는 방법은 다음 포스팅에서 다루도록 하겠다.


반응형