범위: 3.1 A/B 검정 ~ 3.3 재표본추출
3.1 A/B 검정
1) 가설을 세운다
2) 실험을 설계한다
3) 데이터를 수집한다
4) 추론 및 결론을 도출한다
두가지 처리방법, 제품, 절차 중 어느쪽이 다른 쪽보다 더 우월하다는 것을 입증하기 위해 실험군을 두 그룹으로 나누어 진행하는 실험
-> 원하는 결과의 방향으로 도출하기 위해 '원인'을 추가하거나
-> 결과가 발생했을 때 해당 변화의 '원인'이 예상한 것과 동일한지 판단하기 위해
https://www.beusable.net/blog/?p=2854
처리: 어떤 대상에 주어지는 특별한 환경이나 조건
처리군 : 특정 처리에 노출된 대상들의 집단
대조군 : 어떤 처리도 하지 않은 대상들의 집단
임의화(랜덤화) : 처리를 적용할 대상을 임의로 결정하는 과정
대상(피실험자) : 처리를 적용할 개체 대상
검정통계량 : 처리 효과를 측정하기 위한 지표
1) 예시
종자 발아가 어디에서 더 잘되는지 알아보기 위해 두 가지 토양처리를 검정한다
암을 더 효과적으로 억제하는 두 가지 치료법을 검정한다
두 가지 가격을 검정하여 더 많은 순수익을 산출하는 쪽을 결정한다
두 개의 인터넷 뉴스 제목을 검정하여 더 많은 클릭을 생성하는 쪽을 결정한다
두 개의 인터넷 광고를 검정하여 어느 것이 더 높은 전환율을 얻는지 판단한다
2) 대조군의 필요성
대조군이 없으면 '모든 다른 것들을 동일하다' 라는 보장이 어려움
또한 어떠한 처리로 인한 것인지(또는 우연이지) 확인이 어려움
🎈 주요개념
- 연구 대상을 두 가지 이상의 그룹 중 하나에 할당한다. 여기서 서로 다른 처리 조건을 제외한 나머지 조거들은 정확히 동일하게 처리된다
- 이상적으로, 대상들은 그룹에 무작로 배정된다
3.2 가설검정
연구자가 랜덤하게 우연히 일어날 일에 속지 않도록 보호하기 위한 방법으로 개발
-> 그룹A와 B사이에서 보이는 차이가 우연에 의한 것인지를 평가하기 위해 A/B검정이나 더 나아가 그 외 여러 무작위 실험을 포함하는 분석
귀무가설(null hypothesis) : 우연때문이라는 가설
대립가설(alternative hypothesis) : 귀무가설과의 대조(증명하고자 하는 가설)
일원검정(one-way test) : 한 방향으로만 우연히 일어날 확률을 계산하는 가설검정
이원검정(two-way test) : 양방향으로 우연히 일어날 확률을 계산하는 가설검정
1) 귀무가설/대립가설
목적: 유연이 아님(귀무가설이 틀렸음)을 입증해서 A그룹과 B그룹간의 차이가 우연이 아니라는 것을 증명
방법: 재표본추출, 순열검정
-> 귀무가설과 대립가설이 실험의 모든 가능성을 설명할 수 있어야 함
2) 일원/이원 가설검정
(1) 일원 가설검정
한 방향으로만 우연히 일어날 확률을 계산하는 가설
귀무가설 : 집단 A의 평균은 집단 B의 평균은 같다
대립가설 : 집단 A의 평균은 집단 B의 평균보다 작다(좌측검정)
(2) 이원 가설검정
양방향으로 우연히 일어난 확률을 계산하는 가설
귀무가설 : 집단 A의 평균은 집단 B의 평균은 같다
대립가설 : 집단 A의 평균은 집단 B의 평균과 같지 않다
🎈 주요개념
- 귀무가설은 우리가 관찰한 어떤 효과가 특별한 것이 아니고 우연에 의해 발생한 것이라는 개념을 구체화한 일정의 논리적 구조이다
- 가설검정은 귀무가설이 사실이라고 가정하고 영모형/확률모형을 생성하여 관찰한 효과가 해당 모델로부터 합리적으로 나올 수 있는 결과인지 검증하는 것이다
3.3 재표본추출
재표본추출: 랜덤한 변동성을 알아보고자 관측 데이터로부터 반복해서 표본추출하는 과정,
순열검정 permutation test : 두 개 이상의 표본을 함께 결합해서 관측값들을 무작위로 비복원하여 재표본추출하는 과정(임의화검정, 임의순열검정, 정확검정)
복원/비복원 : 표본을 추출할 때, 이미 한 번 뽑은 데이터를 다음번 추출을 위해 다시 제자리에 돌려 놓거나/다음 추출을 제외하는 표본추출 방법
1) 순열검정
- 기존 데이터의 검정통계량을 구한다-> observed test statistics = D
- 그룹A와 그룹 B의 결과를 합친다
-> 그룹A와 그룹B가 유의미한 차이가 없다는 귀무가설을 논리적으로 구체화 하는 것 - 결합된 데이터를 섞고 그룹A와 동일한 크기(동일한 개수)의 표본을 무작위로 비복원추출한다
- 나머지 데이터에서 그룹B와 동일한 크기의 표본을 무작위로 비복원추출한다-> permuted dataset
- 원래 샘플에 대한 통계량과 무관하게 추출한 표본에 대한 통계량(차이)을 기록한다 -> permuted test statistics
- 앞선 단계들을 반복하여 검정통계량의 순열분포를 얻는다
-> 관찰된 차이가 순열과정에서 얻은 집합안에 잘 들어가 있다면 우연
-> 관찰된 차이가 대부분의 순열 분포 바깥에 있다면 통계적으로 유의미함
🎈 통계적 유의미
통계적으로 유의미하다 => 어떤 실험결과가 확률적으로 봐서 단순한 우연이라고 생각되지 않을 정도로 의미가 있다
통계적으로 유의미하지 않다 => 실험결과가 단순한 우연일 수도 있다
2) 웹 점착성
웹점착성 : 사용자가 웹사이트에 얼마나 오래 머무르고 지속적으로 방문하는지를 나타내는 지표
-> 웹사이트의 디자인, 콘텐츠, 사용성 등이 웹점착성에 영향을 미친다
대리변수 proxy variable : 참된 관심변수를 대신하는 변수로 관심변수를 직접 얻을 수 없거나, 측정하는 데 많은 비용이나 시간이 소요될 경우 이를 대체하는 용도
예) 기후연구에서 고대 빙하 중심부의 산화 함량 -> 당시 온도
<주중/주말 tip평균의 차이>
# A/B 테스트 : 주중, 주말에 따른 팁 비교
def test(tips):
if (tips['day']=='Sun') | (tips['day']=='Sat'):
val = 'Weekend'
else:
val = 'Weekday'
return val
tips['test'] =tips.apply(lambda x : test(x), axis=1)
#boxplot으로 나타내기
ax = tips.boxplot(by = 'test', column = 'tip')
ax.set_xlabel('')
ax.set_ylabel('tip')
상자그림을 통해 주말이 고객들이 평균적으로 더 많은 팁을 지불한 것으로 나타난다
(1) 각 그룹의 평균 구하기
# 각 그룹의 평균
mean_weekday = tips[tips.test =='Weekday']['tip'].mean()
mean_weekend = tips[tips.test =='Weekend']['tip'].mean()
print(mean_weekday)
print(mean_weekend)
print(mean_weekday-mean_weekend)
주중의 팁 평균 : 2.7628395061728392
주말의 팁 평균 :3.115276073619632
두 그룹 평균의 차이 : 0.35243656744679264
주말의 팁은 주중보다 평균적으로 0.35더 많다.
이러한 차이가 우연에 의한 것인지, 통계적으로 중요한 것인지 순열검정을 통해 알 수 있다
(방법: 주중의 163개의 테이블, 주말의 81개의 테이블로 반복하여 추출)
def perm_fun(x, na, nb):
n = na + nb
# perm_fun 함수는 비복원추출방식으로 nb개의표본을 추출하고 그룹 b에 해당한다.
idx_B = list(set(random.sample(range(n),nb)))
# 그리고 나머지 na개는 그룹A에 해당한다 -> 비복원
idx_A = list(set(range(n))- set(idx_B))
# 이때 두 평균의 차이를 결과로 반환한다
return x.loc[idx_B].mean() - x.loc[idx_A].mean()
import random
tip_diff = [perm_fun(tips['tip'], 163, 81)for _ in range(1000)]
fig,ax = plt.subplots(figsize = (5,5))
ax.hist(tip_diff, bins =11, rwidth = 0.9)
# bins=11은 히스토그램의 막대 개수를 11개로 설정
# rwidth=0.9는 막대의 너비를 전체 너비의 90%로 설정
ax.axvline( x=mean_weekend-mean_weekday, color = 'black', lw=2)
# 수직선 그리기: mean_weekend-mean_weekday(0.35243656744679264)
ax.set_xlabel('mean_weekend-mean_weekday')
ax.set_ylabel('Frequency')
주말과 주중의 팀에 대한 차이의 도수분포로 여기서 수직선은 관측한 데이터로
구한 주말-주중 차이를 보여준다
np.mean(np.array(tip_diff)>mean_weekend-mean_weekday)
실험결과 이 경우는 3.3%의 확률로 발생한다.
즉, 주말과 주중사이의 팀에 대한 차이는 신뢰수준 0.05기준으로 유의미한 차이가 있다
3) 전체 및 부트스트랩 순열 검정
전체순열검정 | 부트스트랩 순열 검정 |
데이터를 무작위로 섞고 나누는 대신 실제로 나눌 수 있는 모든 가능한 조합을 찾는다 샘플 크기가 비교적 작을 때만 실용적 셔플링을 반복할수록 임의순열검정결과는 전체순열검정과 유사 |
무작위 순열검정의 2,3단계에서 비복원하던 것을 복원추출한다 |
🎈 주요개념
- 순열검정에서는 여러표본을 결합한 다음 잘 섞는다
- 그런 다음 섞은 값들을 이용해 재표본추출 과정을 거쳐, 관심있는 표본통계량을 계산한다
- 이 과정을 반복하고 재 표본추출한 통계를 도표화 한다
- 관측된 통계량을 재표본추출한 분포와 비교하면 샘플간에 관찰된 차이가 우연에 의한 것인지를 판단할 수 있다
🎈 면접질문
1) 검정력(statistical power)은 무엇일까요?
- 검정하려는 귀무가설이 거짓인 경우, 이를 옳지 않다고 판단하는 활률로 제2종 오류를 범하지 않을 확률
- 제2종오류 : 귀무가설이 옳지 않은데도 채탁하는 오류
2) A/B 테스트의 장점과 단점, 그리고 단점의 경우 이를 해결하기 위한 방안에는 어떤 것이 있나요?
https://datarian.io/blog/a-b-testing
- 장점은 새로운 방식이 기존 방식에 비해 효과적인지 확인가능하며 실험설정에 따라 결과에 따른 인과관계일 가능성을 찾아낼 수 있다.
- 단점은 고객을 대상으로 테스트를 많이 하면 손해가 발생하거나 테스트의 결과가 시간에 따라 바뀔 수 있기 때문에 유효한 기간이 길지 않을 수 있다
- 이를 보완하기 위해 통계적 유의성을 확보하는 최소 표본의 대상을 기준으로 진행한다
'학습노트 > 통계' 카테고리의 다른 글
[통계학습] 데이터와 표본분포(3) (0) | 2024.05.29 |
---|---|
[통계학습] 통계적실험과 유의검정(2) (0) | 2024.05.27 |
[통계학습] 데이터와 표본분포(3) (2) | 2024.05.20 |
[통계학습] 데이터와 표본분포(2) (0) | 2024.05.14 |
[학습노트] 통계2. 데이터와 표본분포 (1) (0) | 2024.04.01 |