Ch9. 통계적 추정

지금까지는 모집단의 성격을 알고있다는 것을 전제로 하여, 표본의 성격을 분석하는 방법에 대해서 공부하였다. 그러나 실제로는 모집단의 성격을 모르는 상황에서 모집단의 성격을 규명하여야 할 때가 많이 있다.
가능한 한 모수를 정확하게 추정하는 방법을 개발하는 것이 통계적 분석에서 가장 중요한 분야 (=추측통계학)

  • 통계적 추정의 기본개념
  • 점추정과 추정량
  • 구간추정
  • 표본 크기의 결정

1. 통계적 추정의 기본개념

ex. 서울시 대학 신입생의 수학능력시험 평균 점수를 알아보려 한다. 각 대학에서 총 400명의 표본을 뽑아 그들의 점수를 조사하여 본 결과 평균 점수가 250점이었다고 한다면, 모집단의 평균 점수는 얼마라고 볼 수 있는가?

A. 250점일 것이다.
B. 225~275점일 것이다.
C. 170~330점일 것이다.
  • 위 세 개의 답을 보면 어느 하나도 꼭 틀렸다고 말할 수 없다.
    • A 의 경우 표본의 평균이 250점이라고 해서, 모집단의 평균이 꼭 250점이라고 할 수는 없다.
    • B 의 답은 즉 225점 이상 275점 이하의 어느 점수가 모수가 될 것이라는 것은 모집단의 평균이 꼭 250점이라는 것보다 맞을 가능성이 높다.
    • C 의 답, 즉 170점 이상 330점 이하에 모수가 있을 가능성은 거의 100%라고 할 수 있다.


정보의 효과와 추정구간의 크기는 상반관계(trade-off)

  • 구간을 크게 할 수록 그 추정이 맞을 가능성은 높아지나, 구간이 클수록 그 정보의 효과는 감소된다.
  • 극단적으로 시험점수가 400점 만점일 때 평균 점수가 0점에서 400점 사이에 있을 것이라고 한다면 그 추정이 맞을 가능성은 100%이지만 그것이 주는 정보의 가치는 하나도 없다.

2. 점추정과 추정량

점추정 ( point estimation )

  • 점추정이란 하나의 값으로 모수값을 추정하는 방법이다.
  • 다시 말해서, 표본으로부터 구할 수 있는 통계량 가운데 모수를 추정하기에 가장 적절한 것을 결정하여 그 값을 모수값으로 보는 것

추정값과 추정량

  • 추정값 ( estimate )
    • 모수를 추정한 값
  • 추정량 ( estimator )
    • 추정값을 구하기 위하여 사용되는 추정방법 또는 추정값 계산을 위한 통계량

ex. 모집단의 평균 $\mu$을 알기위해 표본의 평균 통계량 $\bar{X}$를 이용하게 되는데 이때 $\bar{X}$는 $\mu$의 추정량(estimator)이 되며, 표본평균의 구체적인 수치, 예를 들어 $\bar{X} = 250$은 모집단의 평균을 추정하는 추정값(estimate)이 된다.

추정량 ( estimator ) 의 결정기준

점추정에서 모수를 추정하는 데 무엇을 추정량으로 삼느냐가 매우 중요한 문제다. 모집단의 평균 $\mu$ 를 추정하기 위해서는 표본의 산술평균, 기하평균, 중앙값 등 여러 가지 통계량을 사용할 수 있으나, 그중에서도 표본의 산술평균을 추정량으로 사용하는 이유는 무엇인가? 만일 표본의 중앙값을 추정량으로 삼는다면 어떤 문제가 생기는가? 이러한 문제는 모집단의 평균 $\mu$를 추정하는 데만 적용되는 것이 아니고 모집단의 다른 특성치, 예를 들면 비율이나 분산 등을 추정할 때에도 마찬가지로 적용된다.

  • 불편성 ( unbiasedness )
  • 효율성 ( efficiency )
  • 일치성 ( consistency )
  • 충분성 ( sufficiency )

(인쇄물 참고)

3. 구간추정

구간추정 ( interval estimation )

  • 구간추정은 모수가 존재할 범위를 제공함으로써 연구자가 원하는 만큼의 정확도를 가지고 모수를 추정할 수 있다는 장점을 가짐

In [1]:
import numpy as np
import scipy.stats as sp
import matplotlib.pylab as plt
from matplotlib.patches import Polygon

mu = 140; std = 30;
rv = sp.norm(mu, std)

xx = np.linspace(50, 230, 100)

fig = plt.figure()

ax = fig.add_subplot(111)
plt.plot(xx, rv.pdf(xx), 'r', linewidth=2)

ix = np.linspace(mu-2*std, mu+2*std)
iy = rv.pdf(ix)
verts = [(mu-2*std, 0)] + list(zip(ix, iy)) + [(mu+2*std, 0)]
poly = Polygon(verts, facecolor='0.7', edgecolor='0.5')
ax.add_patch(poly)

plt.text(140, 0.005, "95%", horizontalalignment="center", fontsize=15)
plt.annotate("80(-2std)", xy=(80, 0), xytext=(80, 0.002),
            arrowprops=dict(facecolor="black", linewidth=0.3),
            fontsize=13
            )
plt.annotate("140(mean)", xy=(140, 0), xytext=(140, 0.002),
            arrowprops=dict(facecolor="black", linewidth=0.3),
            fontsize=13
            )
plt.annotate("200(+2std)", xy=(200, 0), xytext=(200, 0.002),
            arrowprops=dict(facecolor="black", linewidth=0.3),
            fontsize=13
            )
plt.show()


  • 정규모집단으로부터의 표본평균 $\bar{X}$ 가 $[\mu-2\sigma_{\bar{X}}, \mu+2\sigma_{\bar{X}}]$ 의 구간에 포함될 확률이 약 0.95라는 사실은 통계학적으로 이미 알려져있다. $$P(\mu-2\sigma_{\bar{X}} \le \bar{X} \le \mu + 2\sigma_{\bar{X}}) \fallingdotseq 0.95$$
  • 이를 표본의 평균 $\bar{X}$ 를 중심으로 $[\bar{X}-2\sigma_{\bar{X}}, \bar{X}+2\sigma_{\bar{X}}]$ 의 구간이 $\mu$ 를 포함할 가능성을 생각해 보자. 위의 수식을 변형하면 다음과 같이 쓸 수 있 다. $$P(\bar{X}-2\sigma_{\bar{X}} \le \mu \le \bar{X}+2\sigma_{\bar{X}}) \fallingdotseq 0.95$$
  • 이 식은 $\mu$ 가 $[\bar{X}-2\sigma_{\bar{X}}, \bar{X}+2\sigma_{\bar{X}}]$ 의 구간에 포함될 확률이 약 0.95라는 표현인 것 같지만, 이는 틀린 표현이다.
  • 왜냐하면 $\mu$ 는 모수로서 확률변수가 아닌 상수이며, 위 식에서의 확률변수는 신뢰구간 $[\bar{X}-2\sigma_{\bar{X}}, \bar{X}+2\sigma_{\bar{X}}]$ 이기 때문이다.
  • 그러므로 위의 식은 " 모수 $\mu$ 에 대한 구간추정량인 $[\bar{X}-2\sigma_{\bar{X}}, \bar{X}+2\sigma_{\bar{X}}]$ 가 $\mu$ 를 포함할 확률은 약 0.95 "라고 해석되어야 한다.
  • 이는 구간추정량, 즉 신뢰구간 $\bar{X} \pm 2\sigma_{\bar{X}}$ 로 100회의 추정을 할 경우, 100개의 구간추정값 중 95개 정도는 $\mu$ 를 포함할 것으로 기대할 수 있다는 것을 의미한다.

In [3]:
fig = plt.figure(figsize=(7, 7))

ax1 = fig.add_subplot(221)
plt.plot(xx, rv.pdf(xx), 'r', linewidth=2)

ix1 = np.linspace(mu+2*std, mu+4*std)
iy1 = rv.pdf(ix1)
verts1 = list(zip(ix1, iy1)) + [(mu+2*std, 0)]
poly1 = Polygon(verts1, facecolor='#1E90FF', edgecolor='0.5')
ax1.add_patch(poly1)

plt.annotate(r"$Z_{\alpha} = 1.64$", xy=(200, 0), xytext=(200, -0.002),
            arrowprops=dict(facecolor="black", headwidth=5, headlength=5, width=1 ),
            fontsize=13
            )
plt.annotate(r"$\alpha = 0.05$", xy=(210, 0.0005), xytext=(220, 0.002),
            arrowprops=dict(facecolor="black", headwidth=5, width=1 ),
            fontsize=13
            )

ax2 = fig.add_subplot(222)
plt.plot(xx, rv.pdf(xx), 'r', linewidth=2)

ix2 = np.linspace(mu-4*std, mu-2*std)
iy2 = rv.pdf(ix2)
verts2 = [(mu-2*std, 0)] + list(zip(ix2, iy2))
poly2 = Polygon(verts2, facecolor='#1E90FF', edgecolor='0.5')
ax2.add_patch(poly2)

plt.annotate(r"$-Z_{\alpha} = -1.64$", xy=(80, 0), xytext=(80, -0.002),
            arrowprops=dict(facecolor="black", headwidth=5, headlength=5, width=1 ),
            fontsize=13
            )
plt.annotate(r"$\alpha = 0.05$", xy=(70, 0.0005), xytext=(100, 0.002),
            arrowprops=dict(facecolor="black", headwidth=5, width=1 ),
            fontsize=13
            )

ax3 = fig.add_subplot(212)
plt.plot(xx, rv.pdf(xx), 'r', linewidth=2)

ix3 = np.linspace(mu-4*std, mu-2*std)
iy3 = rv.pdf(ix3)
verts3 = [(mu-2*std, 0)] + list(zip(ix3, iy3))
poly3 = Polygon(verts3, facecolor='#1E90FF', edgecolor='0.5')
ax3.add_patch(poly3)

ix4 = np.linspace(mu+2*std, mu+4*std)
iy4 = rv.pdf(ix4)
verts4 = [(mu+2*std, 0)] + list(zip(ix4, iy4))
poly4 = Polygon(verts4, facecolor='#1E90FF', edgecolor='0.5')
ax3.add_patch(poly4)

plt.annotate(r"$-Z_{\alpha}/2 = -1.96$", xy=(80, 0), xytext=(80, -0.002),
            arrowprops=dict(facecolor="black", headwidth=5, headlength=5, width=1 ),
            fontsize=13
            )
plt.annotate(r"$\alpha /2 = 0.025$", xy=(70, 0.0005), xytext=(90, 0.002),
            arrowprops=dict(facecolor="black", headwidth=5, width=1 ),
            fontsize=13
            )
plt.annotate(r"$Z_{\alpha}/2 = 1.96$", xy=(200, 0), xytext=(175, -0.002),
            arrowprops=dict(facecolor="black", headwidth=5, headlength=5, width=1 ),
            fontsize=13
            )
plt.annotate(r"$\alpha /2 = 0.025$", xy=(210, 0.0005), xytext=(160, 0.002),
            arrowprops=dict(facecolor="black", headwidth=5, width=1 ),
            fontsize=13
            )

plt.show()


모집단 평균의 구간 추정 ( $\sigma$ 를 알고 있는 경우 )

  • $Z$ 가 $Z_{\alpha}$ 보다 클 가능성을 $\alpha$ 로 표시하여 보자.
  • 예를 들어 $\alpha = 0.05$ 일 때, $P(Z \ge Z_{0.05})=0.05$, 즉 파란 면적이 $0.05$ 인 $Z_{0.05}$ 값을 표준정규분포표에서 찾아보면 $1.64$ 이다.
  • 구간으로 모수를 추정하는 데 있어서는 한쪽으로 $\alpha$ 의 확률을 갖는 $Z_{\alpha}$ 또는 $-Z_{\alpha}$ 보다는 양쪽으로 $\alpha / 2$ 씩의 확률을 갖는 $Z$ 의 값, 즉 $\pm Z_{\alpha/2}$ 로 표시하는 경우가 많다.
    • 왜냐하면 한 모집단에서 선택가능한 모든 표본들의 평균을 구해 보면 모집단 평균을 중심으로 좌우대칭이기 때문
  • 만일 $\alpha = 0.05$ 라고 한다면, 양쪽 끝이 각각 $\alpha$ 의 $1/2$, 즉 $0.025$ 씩의 면적을 갖게 되고, 이때 $Z_{0.025} = 1.96$, $-Z_{0.025} = -1.96$ 의 값을 갖는다


$Z$-통계량 $$ Z = \frac{(\bar{X} - \mu_{\bar{X}})}{\sigma_{\bar{X}}}$$

$Z$ 값에 대한 신뢰구간 $$ P(-Z_{\alpha /2} \le Z \le Z_{\alpha/2}) = 1 - \alpha $$

$\mu$ 값에 대한 신뢰구간
$$ P(\bar{X} - Z_{\alpha /2} \cdot \sigma_{\bar{X}} \le \mu \le \bar{X} + Z_{\alpha/2} \cdot \sigma_{\bar{X}} ) = 1 - \alpha $$


신뢰도 $(1-\alpha)$ $Z=0$에서 $Z_{\alpha /2}$까지 면적 $Z_{\alpha / 2}$
0.90 0.450 1.64
0.95 0.475 1.96
0.99 0.495 2.57
< table. 신뢰도에 따른 $Z_{\alpha / 2}$ 값 >
  • 신뢰도 또는 신뢰수준 ( confidence level )
    • $1 - \alpha $
    • 신뢰도는 구간으로 추정된 추정값이 실제 모집단의 모수를 포함하고 있을 가능성
  • 신뢰구간 ( confidence interval )
    • 이때 모수가 포함될 것으로 추정된 구간
  • 신뢰도가 높을수록 신뢰구간은 넓어진다.
    • 이는 범위가 넓을수록 그 속에 모집단의 평균이 포함될 가능성이 더 높아짐을 뜻하며,
    • 반면, 범위가 넓을수록 신뢰구간이 갖는 정보의 가치는 줄어들게 됨을 의미한다.

모집단 평균의 구간 추정 ( $\sigma$ 를 모르는 경우 + not 정규분포 + 표본의 크기 작은 경우)

  • 앞에서 모집단의 평균을 추정할 때 정규분포 모집단의 표준편차를 $\sigma$ 를 알고 있는 것으로 가정했으나, 모집단의 평균을 모르면서 모집단의 표준편차를 알고 있는 경우는 매우 드물다. 대개의 경우 모집단의 표준편차는 모집단의 평균 $\mu$ 를 알아야 계산할 수 있기 때문이다.
  • 모집단의 표준편차 $\sigma$ 를 모를 때에는 표본에서 구한 불편추정량 $S$, 즉 표본의 표준편차를 모집단의 표준편차 $\sigma$ 대신으로 사용한다.
$$ S = \sqrt{ \frac{\sum(X_{i}-\bar{X})^{2}} {n-1} } $$

$t$-통계량

  • $t$-통계량은 표준정규분포를 따르지 않고 자유도 $(n-1)$의 $t$-분포를 이루기 때문에 $t$-분포를 이용하여 신뢰구간을 구해야 한다.
$$ t = \frac{(\bar{X} - \mu_{\bar{X}})}{S_{\bar{X}}}, \quad (S_{\bar{X}}=\frac{S}{\sqrt{n}})$$

$t$-통계량을 이용한 신뢰구간 $$ P(-t_{\alpha /2} \le \frac{(\bar{X} - \mu_{\bar{X}})}{S_{\bar{X}}} \le t_{\alpha /2}) = 1-\alpha $$

$t$-분포에서의 신뢰구간 $$ P(\bar{X} -t_{\alpha /2} \cdot S_{\bar{X}} \le \mu \le \bar{X} + t_{\alpha /2} \cdot S_{\bar{X}}) = 1-\alpha $$

$t$-분포

  • $t$-분포의 모양은 $Z$-분포와 유사
  • 종 모양으로서 $t=0$에 대하여 대칭을 이루는데, $t$-곡선의 모양을 결정하는 것은 자유도(df: degrees of freedom)
    • 자유도란 자료집단의 관찰값 중에서 자유롭게 선택될 수 있는 관찰값의 수를 말함
  • $t$-분포는 표준정규분포보다 두터운 꼬리를 가지고 옆으로 퍼져 있음

  • 이러한 특성으로 인해 $\alpha$ 에 대하여 $t$-통계량이 $Z$-통계량보다 큰 값을 갖도록 하므로, 모집단의 표준편차 $\sigma$ 를 알지 못하는 데서 오는 추정상의 오류를 보상해 준다. (후하게 쳐준다)
  • 그러나 표본의 크기 $n$ 이 커질수록 표본의 표준편차 $S$는 $\sigma$에 접근하기 떄문에 $t$-분포는 점차 표준정규분포와 비슷항 형태를 이루게 된다. ($n \ge 30$)