상세 컨텐츠

본문 제목

[Practical Statistics for Data Scientists] A팀 Sampling Distribution of a Statistic

본문

Sample distribution(표본분포)는 하나의 동일한 모집단에서 얻은 여러 샘플에 대한 sample statistic(표본 통계량)의 분포를 나타낸다.

우리는 Sample statistic으로 어떤 것을 측정하거나 모델링하기 위해 표본을 뽑는데, 이 때 다른 표본을 뽑았다면 결과가 달라지기 때문에 표본에 따라 결과가 얼마나 달라질 지 즉, sampling variability(표본의 변동성)에 관심을 둔다.

평균과 같은 sample statistic의 분포는 데이터 자체의 분포(data distribution)보다 더 규칙적이고, 종 모양(bell-shaped)일 가능성이 높으며, 표본이 클수록 표본 통계량의 분포가 좁아진다.

- 표본이 커질 수록, sample statistics의 분포가 좁아지는 현상

: data distribution > sample이 5개일 때 sampling distribution > 20개일 때 sampling distribution

Central Limit Theorem(중심극한정리)

앞서 표본의 크기가 커질 수록, 데이터가 더 규칙적이고 종 모양을 이루는 현상을 Central Limit Theorem(중심극한정리)라고 부른다. 중심극한정리는 모집단이 정규분포를 따르지 않을 경우에도, 표본의 크기가 충분하고 데이터가 정규성을 크게 이탈하지 않을 경우 표본 분포가 정규 분포의 형태를 띄는 것을 말한다. 덕분에 신뢰구간이나 가설 검정을 계산하는 데에 t-분포와 같은 정규 근사 공식을 사용할 수 있다.

단, 데이터 사이언스의 관점에서는 중심극한정리가 그렇게 중요하지 않다. 오히려, 뒤에서 다룰 부트스트랩을 사용한다!

Standard Error(표준오차)

표준오차에 대한 수식적인 증명- https://angeloyeo.github.io/2020/02/12/standard_error.html

표준오차는 sampling distribution의 변동성을 보여주는 **단일 측정 지표(single metric)**이다.(표준편차와 표본오차를 헷갈리지 말자!) 표준 오차는 표준 편차 s와 표본의 크기 n을 기반으로한 통계량으로 추정한다. 앞선 보았듯, 표본의 크기가 커지면 표준오차가 줄어드는데, 흔히 이 관계를 square-root of n rule(제곱근의 법칙)이라고 부른다. 예를 들어, 표준오차를 2배로 줄이려면 표본의 크기를 4배나 증가시켜야한다!

표준오차를 측정하는 접근방식은 다음과 같다.

  1. 모집단에서 새로운 샘플들을 수집한다.
  2. 각각의 샘플에 대해서 통계량을 계산한다.
  3. 앞선 단계에서 얻은 통계량의 표준편차를 계산하다. 이것을 표준오차의 추정치로 사용한다.

실질적으로 표준오차 측정을 위해 새로운 샘플을 측정하는 방식이 거의 불가능하기 때문에 새로운 샘플을 뽑을 필요가 없는 부트스트랩 재표본을 사용한다!

Standard deviation VS Standard error

간단히 이야기하자면, 표준편차는 '모집단의 분포가 얼마나 퍼져 있는가?'에 대한 개념이다. 표준오차는 모수의 추정치에 대한 불확실도(오차)를 수치화한 것이다. 표준오차가 표본 통계량의 표준편차이고, 표본 통계량이 추정치이기 때문에 오차를 수반하게 되고, 값이 매번 변한다. 즉, 표준 편차data distribution에서 individual data points의 variability를 측정하는 값, 표준오차sampling distribution에서 sample metric의 variability를 측정하는 것이다.

Bootstrap(부트스트랩)

데이터나 표본통계량이 정규분포를 따라야한다는 가정이 필요하지 않은, sampling distribution에 대한 어떠한 가정이 필요 없는 절차가 부트스트랩이다.

간단히 말하면, original sample을 여러번 복제하는 것이 부트스트랩의 기본 아이디어다. 이를 통해 우리는 가상의 모집단을 얻고, 표본분포를 추정할 표본을 수집할 수 있다. 또한 복원추출의 방법을 활용해 각 원소가 뽑힐 확률은 유지하고, 무한한 크기의 모집단을 만들어 낸다.

크기 n의 샘플의 평균을 구하는 부트스트랩 resampling 알고리즘

  1. 샘플 값을 하나 뽑아서 기록하고 다시 제자리에 놓는다(복원추출)
  2. n번 반복
  3. 재표본추출된 값의 평균을 기록한다
  4. 1~3 단계를 R번 반복한다.
  5. R번의 결과를 활용해
  1. 표준편차 계산
  2. 히스토그램 or 박스플랏 그리기
  3. 신뢰구간 찾기

아래는 부트스트랩을 구현한 파이썬 코드이다. 파이썬의 경우 부트스트랩 방식의 구현을 제공하지 않기에, scikit-learn의 resample 매서드를 활용한다.(R의 경우 stat_fun함수로 구현할 수 있다.)

부트스트랩은 의사결정트리 등 앙상블에서의 배깅(예측값을 모아서 결론을 만드는 프로세스)에 활용되는데, 이는 단일 트리보다 효과적이다.

Resampling VS Bootstrap

: 재표본추출은 여러 표본이 결합되어 비복원 추출을 수행하는 과정, 부트스트랩은 관측된 데이터로부터 복원추출을 한다는 것이다.

Confidence Intervals(신뢰구간)

신뢰구간은 추정치를 범위로 제시하는 것이다. 일반적으로 사람들은 단일 수치(점추정)으로 추정치가 제시될 때 과도하게 믿기 때문에, 이를 방지하기 위해 구간을 제시한 것이 신뢰구간이다.

부트스트랩 알고리즘을 활용해 신뢰구간을 구하는 방법은 다음과 같다.

  1. 데이터에서 복원추출 방식으로 크기가 n인 표본을 뽑는다(resampling)
  2. 재표본추출한 표본에 대해 원하는 통계량을 기록한다
  3. 1~2단계를 R번 반복한다.
  4. x%의 신뢰구간을 구하기 위해 R개의 재표본 결과의 분포 양쪽 끝에서 [(100-x)/2]%만큼 잘라낸다
  5. 잘라낸 점들을 x%부트스트랩 신뢰구간의 trim points 이다

신뢰구간의 백분율(같은 모집단으로부터 같은 방식으로 얻은, 관심 통계량을 포함할 것으로 예상되는 것)을 신뢰수준(confidence level)이라고 하는데 신뢰수준이 높을수록 구간이 넓어진다. 또한 표본이 작을수록 구간이 넓어진다(불확실성이 더 커진다.) 따라서 데이터가 적을수록, 확실히 참값을 얻기에 충분한 신뢰구간을 확보해야 한다.

  • 신뢰수준의 의미

“신뢰 수준이 90%?” 라고 한다면, 100개의 표본을 뽑아 각각의 모평균에 대한 신뢰구간을 제시했을 때, 그 구간 안에 모평균이 속하는 표본이 90개라는 뜻이다. 즉, 한 표본에 대한 신뢰구간에 모평균이 포함될 확률이 90%라는 것은 아니다!!

 

Q. 질문 대답 정리

1. "중심극한정리 덕분에 신뢰구간이나 가설 검정을 계산하는 데에 t-분포와 같은 정규 근사 공식을 사용할 수 있다." 라는 부분이 CLT와 어떻게 연관이 있는가?

  • 모집단이 정규분포를 따르지 않는 경우

“대표본인 경우, n이 커질수록 표본평균의 분포는 근사적으로 정규분포를 따르게 되고(중심극한정리), 표본평균을 표준화한 통계량(X_bar - u) / (s - √n)은 n이 증가할수록 정규분포로 수렴한다.”

T분포는 언제쓰지? 모집단의 분산인 σ²를 모르고 소표본인 경우

"모집단의 분포와 모분산을 모두 모르는 경우에도 일단은 σ² 대신 표본분산(s²)을 활용하게 되며 표본평균을 표준화한 통계량은 대략 t분포를 따르는 것으로 간주할 수 밖에 없다. “ = 소표본의 경우에 모집단의 정규성을 가정

  • 모집단이 정규분포를 따르지 않는 경우
  1. 소표본인 경우, 표본평균을 표준화한 통계량 (X_bar - u) / (s - √n)은 알려지지 않은 분포를 따른다. 절대 t분포를 따르지는 않는다. 이러한 소표본의 경우에는 정규성을 가정해야만 뭔가를 할 수 있다. 이렇게 모집단의 정규성을 가정하면 t분포를 쓸 수 있다. t분포의 robustness 덕분에 모집단이 한쪽으로 너무 치우져쳐 있지만 않다면 모집단이 정규분포를 따르지 않더라도 t분포를 활용할 수 있지만, 소표본이면서 데이터가 확실하게 non-normal이라면 더 자료를 수집하거나, 분석을 포기하는게 낫다.
  2. 대표본의 경우 t분포를 쓰는 것은 모집단의 정규성을 가정하는 것이고, 정규분포를 쓰는 것은 (X_bar - u) / (s - √n)이 표준정규분포를 따를 수 있도록 충분히 큰 n이 확보되어 있다는 것을 가정하는 것이기 때문에 두 경우 모두 근사값이라고 하며, 몇몇 학자들은 t분포를 쓰는 것이 더 보수적인 결과를 가져오므로 t분포를 쓰는게 더 낫다고 주장한다고 했다.

그러면서 본인 역시, 대표본의 경우에도 정규성을 가정하여 t분포를 쓰는것이 더 낫다고 생각한다고 했는데, 어차피 n이 충분히 큰 경우에는 t값이나 Z값이나 큰 차이가 없고 학생들이 헷갈려 할 수 있으므로 수업시간에도 이런 것을 굳이 말하진 않고, 참고 목적으로만 몇장 정리해서 공지했다고...

When do you use the t distribution? When do you use the normal distribution? Why

 

When do you use the t distribution? When do you use the normal distribution? Why

When do you use the t distribution? When do you use the normal distribution? Why

www.academia.edu

 

2. 신뢰구간에서 표본이 작을수록 구간이 넓어진다고 하셨는데 이게 언급하신 표본오차가 표본이 작을수록 커지기 때문에 그렇다고 해석할 수 있는가?

: 불확실성이 커진다! 단, 표준오차는 추정치의 정확도를 알려주기 때문에, 작을수록

추정치가 더욱 정밀해진다 = 신뢰구간이 좁아진다 → 표준오차의 값은 표본의 크기 n이 결정함

 

3. bootstrap의 경우 sample에서 resampling을 한 것을 통해 신뢰구간을 구하므로 표본평균에 대한 신뢰구간이 되는 건가요? → 부트스트랩의 신뢰구간은 표본 통계량의 신뢰구간을 구하는 것

 

+ CLT VS Bootstrap

CLT: 모집단에서 표본 여러번 뽑기 → 실제 데이터에서 표본을 여러번 뽑기가 어려움: 현실적으로 어려움

Bootstrap: 표본에서 표본을 여러번 뽑기

https://www.youtube.com/watch?v=g8Tr_Vn7xtE

관련글 더보기

댓글 영역