본문 바로가기
AI SCHOOL/TIL

[DAY 35] 표집(sampling), 추정, 통계적 가설 검정, A/B 테스트

2023. 2. 14.

어제 배운 모집단과 표본에 대한 개념 체크 문제를 간단히 풀고 강의가 시작됐다.

통계 이론을 배우고 일부는 Python의 pingouin 라이브러리를 활용해서 실습을 했다.

표집(sampling)

모집단에서 표본을 추출하는 절차.
표본추출이라고도 한다.

무작위 표집(random sampling)
일정한 확률에 따라 표본을 선택
- 무선표집, 확률표집이라고도 한다.

단순 무작위 표집(simple random sampling)
모든 사례를 동일 확률로 추출
- 계통 표집
- 층화 표집
- 집락 표집

계통 표집(systematic sampling)
- 첫 번째 요소는 무작위로 선정한 후 목록의 매 번 k번째 요소를 표본으로 선정
- 요소들의 목록이 추출되기 전에 무작위로 되어 있다면 단순 무작위 표집과 거의 동일하면서도 더 간단하다.
- 예시 : 투표 출구 조사에 활용
  - 투표소에서 나오는 사람 n번째마다 설문
- 주기성(periodicity)이 있다면 왜곡 가능성이 있다.
  - 만약 공장에서 기계 5개가 제품을 생산하는데 5번째마다 조사한다면?

층화 표집(stratified random sampling)
- 모집단을 이루는 각 계층별로 무작위 추출
- 모집단이 서로 다른 하위 집단들로 이뤄져 있을 경우에 사용
- 여론 조사의 경우 지역별, 연령별, 성별로 나누어 추출

집락 표집(cluster random sampling)
- 모집단을 집락으로 나눈 후, 집락 중 일부를 무작위로 선택
- 선택된 집락에서 표본을 추출
- 층화 추출과 달리 집락들이 서로 비슷해야한다.
- 예시 : 같은 도시의 학교 중 일부를 무작위로 골라, 그 학교의 학생들을 조사

표집 분포(sampling distribution)
- 모집단이 같아도, 통계량은 표본에 따라 달라진다.
- 표집 분포 : 통계량의 분포
- 표준 오차(standard error) : 표집 분포의 표준편차

데이터를 많이 모아야 하는 이유
- 데이터가 많을수록 표준 오차가 작아진다.
- 표본의 통계량이 모수에 더 가깝게 나온다.
- 표준오차는 1/√N 으로 줄어들기 때문에, 데이터를 4배 늘리면 2배 정확해진다.

추정(estimation)

통계량으로부터 모수를 추측하는 절차
- 점 추정(point estimate) : 하나의 수치로 추정
- 구간 추정(interval estimate) : 구간으로 추정

신뢰 구간(confidence interval)
- 대표적인 구간 추정 방법
- 모수가 있을 법한 범위로 추정
- 신뢰 구간 = 통계량±오차범위
- 95% 신뢰구간 = 95%의 경우에 모수가 추정된 신뢰구간에 포함된다
  - 5%정도의 극단적 경우는 배제하고 이야기

신뢰 수준(confidence level)
신뢰 구간에 모수가 존재하는 표본의 비율
- 신뢰 수준이 높다 = 많은 표본을 포함한다 = 오차 범위가 더 넓다 = 정보가 적다
- 신뢰 수준이 낮다 = 적은 표본을 포함한다 = 오차 범위가 더 좁다 = 정보가 많다
신뢰 구간이 좁으면 신뢰 수준이 낮음을 의미하므로 타협이 필요하다.
- 교과서적으로는 95%, 99% 등을 추천하나 절대적 기준은 없다.
- 감수할 수 있는 수준에서 결정해야한다.

평균의 신뢰구간
- 모든 통계량에는 신뢰구간이 존재한다.
- 평균의 경우에는 이론적으로 신뢰구간을 간단히 구할 수 있다.
- 다른 통계량은 부트스트래핑 등의 복잡한 계산이 필요하다

Python을 이용하여 평균의 신뢰구간 확인

import pingouin as pg
df = pd.read_excel('car.xlsx')

pingouin 라이브러리 활용

df['price'].mean()

# 실행 결과
853.66

차 가격 평균은 853.66이다.

pg.ttest(df['price'], 0, confidence=0.95)

차 가격 평균의 95% 신뢰 구간을 구해보자.

cofidence

신뢰 구간은 [814.1, 893.22]로 각각 하한, 상한을 의미한다.

다른 값으로 평균의 신뢰구간을 실습
1. 주행거리(mileage)의 평균의 95% 신뢰구간
2. 주행거리(mileage)의 평균의 99% 신뢰구간
3. model == 'Avante'인 경우의 가격의 평균의 95% 신뢰구간
4. model == 'K3'인 경우의 가격의 평균의 95% 신뢰구간

# 1
pg.ttest(df['mileage'], 0, confidence=0.95)

# 2
pg.ttest(df['mileage'], 0, confidence=0.99)

# 3
pg.ttest(df.loc[df['model']=='Avante', 'price'], 0, confidence=0.95)

# 4
pg.ttest(df.loc[df['model']=='K3', 'price'], 0, confidence=0.95)

confidence 인자를 통해 신뢰수준을 지정할 수 있다.

신뢰구간에 영향을 주는 요소
- 신뢰구간이 좁을 수록 예측된 모수의 범위가 좁으므로 유용하다
- 신뢰수준 낮추기: 큰 의미는 없다
- 표본의 변산성 낮추기:
  - 실험과 측정을 정확히 해서 변산성을 낮추기
  - 데이터에 내재한 변산성은 없앨 수 없다
- 표본의 크기를 키우기
 - 가장 쉬운 방법이지만 시간과 비용이 증가

통계적 가설 검정(statistical hypothesis testing)

반증주의 철학에 기반하고 있어 일반적인 과학적 가설 검정과 다르다
Karl Pearson, Ronald Fisher 등 통계학의 초기 인물들이 개발한 절차
많은 비판이 있으나, 오랫동안 쓰여왔기 때문에 여전히 널리 쓰인다.

통계적 가설 검정의 절차
(1) 귀무가설 수립
  - 차이가 없다, 똑같다와 같은 형태
  - 귀무가설 null hypothesis : 기각하고자 하는 가설
  - 대립가설 alternative hypothesis : 주장하고자 하는 가설
(2) 유의수준 결정
  - 유의 수준 significance level : 100% - 신뢰수준
  - 신뢰수준이 95%라면 유의수준은 5%
(3) p-값(p-value)을 계산한다
  - p-값: 귀무가설이 참일 때 검정통계량 이상이 나올 확률
(4) p값과 유의수준을 비교한다 
p > 유의수준
  - 결론을 유보한다
  - 결론을 내릴 필요가 있을 경우, 데이터를 더 모은다
  - 단, 반복해서 가설검정을 할 경우 유의수준을 조정한다
p < 유의수준
  - 귀무가설을 기각한다
  - 흔히 "통계적으로 유의하다"라고 표현(현실적으로 유의미한 것은 아니다)

통계적 가설 검정 순서도

flow1

통계적으로 유의한 것과 현실적으로 유의한 것은 별개다.

가설 검정의 결과
1종 오류(False Alarm) : 귀무가설이 참이지만 기각하는 오류
2종 오류(Miss) : 귀무가설이 거짓이지만 기각하지 않는 오류
귀무가설이 참일 경우, 1종 오류는 유의수준만큼 발생
1종 오류와 2종 오류는 반비례 관계

통계학에서는 1종 오류를 더 엄격하게 통제하고 있다.

통계적 유의함(statistical significance)
- 통계적 가설검정에서 귀무가설을 기각하는 경우 "통계적으로 유의하다"라고 한다
- 동일한 관계의 변수라도 표본이 크면 p-value가 작아지고, 통계적으로 유의하게 된다
  - 어떠한 관계가 있다고 주장하기에 표본의 크기가 충분하다는 것으로 이해할 수 있다
- 현실적으로 유의함을 의미하는 것으로 오해하지 말 것
- 현실적 유의함은 가치 판단의 대상
-  통계적 유의함은 표본의 크기에 따라 달라지므로, 반드시 현실적으로 유의미한 것은 아니다
  - 예시 : 환자의 수명을 평균적으로 하루 연장 시켜주는 치료제 (통계적으로 유의하지만, 가격 10억원)
- 현실적 유의미함은 주관적 가치 판단의 결과
- 통계적 유의함은 가치 판단을 위한 조건들 중에 일부일 뿐

A/B 테스팅
- 과학 분야에서 무작위 대조군 시험(Randomized Controlled Trials)
  - 신약 테스트시 신약과 위약 대조
-  주로 웹 서비스 등의 분야에서 A/B 테스팅이라는 명칭을 사용
  - 중고거래 키워드 알림 등록 UI

uiAB
당근마켓 A/B 테스트

- 고객들에게 서로 다른 웹 페이지나 광고를 보여주고 목표 지표(예: 전환율)를 측정
- 당근마켓의 경우 위 사진과 같은 A/B 테스트를 진행한 결과 UI 변경 후 키워드 알림 등록이 현저히 하락했다고 한다.

근거 기반 의학에서 근거의 수준
Level Ⅰ이 가장 높은 수준
- Level Ⅰ : 무작위 대조군 실험(RCT)에서 얻어진 근거
- Level Ⅱ-1 : 대조군 실험에서 얻어진 근거(무작위 할당이 아님)
- Level Ⅱ-2 : 동일 집단 연구 등
- Level Ⅱ-3 : 대조군이 없는 극적인 결과 등
- Level Ⅲ : 임상 경험에 근거한 전문가의 의견 등

독립표본 t-검정

집단 비교 통계 처리 순서도

flow2


두 집단의 평균 차이
- Xa : 대조군 평균
- Xb : 실험군 평균
- 두 집단의 모집단이 모두 정규분포를 따르거나, 또는 각 집단의 크기가 충분히 큰 경우(n > 30) t-분포를 이용해서 Xa − Xb 의 신뢰구간을 계산
- 가설검정의 경우 독립표본 t-검정을 수행

Python을 이용하여 독립표본 t-test
아반떼와 K3의 가격을 독립표본 t-test로 비교

avante = df.loc[df.model == 'Avante', 'price'] 
k3 = df.loc[df.model == 'K3', 'price']

avante : 아반떼 가격 Series
k3 : K3 가격 Series

avante.mean()

# 실행 결과
833.4146341463414

 

k3.mean()

# 실행 결과
913.8115942028985

귀무가설 : 아반떼와 K3 가격 평균은 차이가 없다
t-검정으로 p-value를 확인해보자.

pg.ttest(avante, k3, confidence=0.95)

아래와 같이 p-value가 0.028187로 나타난다.

pvalue

p-value가 유의수준(0.05)보다 작으므로 귀무가설은 기각된다
=> 두 평균은 차이가 있다


가설 검정은 자격증 시험 준비하면서도 봤지만 다시 봐도 쉽지 않은 것 같다.

반응형

댓글