데이터분석 - A/B 테스트, 유의수준, 검정통계량과 p-value
01. 데이터 분석가의 통계적 실험
통계적 실험
정의 | 어떤 목적을 가지고 관찰을 통해 측정값을 얻어내는 것 |
목적 | 통계적 추론을 통해 보다 진실에 가까운 값을 도출하기 위함 |
프로세스 | 가설 수립 - 실험 설계 - 데이터 수집 - 추론 및 결론의 도출 |
02. A/B TEST
개념이해
A/B 테스트 : 마케팅 고객데이터 분석중 가장 널리 사용되는 방법. 대조실험(가설을 입증하기 위해 대조군, 실험군을 설정하고 검증)과 같다. 따라서, 테스트 과정에서 다양한 통계적 개념을 바탕으로 실험이 진행된다.
프로세스
순서 | 내용 |
1 | 현행 데이터 탐색 - 앞서 살펴본 주요 지표를 기준으로 현재 데이터 탐색 |
2 | 가설 설정 - 비즈니스 목표를 달성하는 데 필요한 KPI를 정의 - KPI 전환율을 증가를 위한 귀무가설, 대립가설을 설정 - 귀무가설 - 통계학에서 처음부터 버릴 것을 예상하는 가설 - 차이가 없거나 의미 있는 차이가 없는 경우의 가설(새로운 광고배너를 게재해도 기존과 차이 없을 것이다.) - 대립가설 - 귀무가설에 대립하는 명제(새로운 광고배너를 게재하면 기존과 차이가 있을 것이다.) |
3 | 유의수준 설정 - 귀무가설이 맞을 때 오류를 얼마나 허용할 것인지 기준을 정하는 단계 |
4 | 테스트 설계 및 실행 - 사용자를 대조군과 실험군의 두 그룹으로 분리 - 대조군 그룹에게는 제품이나 서비스의 현재 버전을 보여주고, 실험군 그룹에게는 개 버전을 노출 처리 |
5 | 테스트 결과 분석 - 측정 항목(가설)에 대해 두 그룹의 결과를 분석(검정통계량 분석) - 통계적 방법으로 결과를 분석하여 대조군과 실험군 사이의 통계적으로 유의미한 차이가 있는지 확인 |
A/B테스트 주의사항
- 적절한 표본 크기 : 표본의 크기가 충분하지 않으면 유의미한 결과를 얻을 수 없다.
- 하나의 변수만 변경 : 하나의 변수만을 변경해야 한다.
- 무작위성 : 무작위로 선택된 사용자들에게 각각 다른 변수를 적용해야 한다.
- 적절한 분석 방법 : 결과를 해석할 때는 가설 검증을 위한 통계적 분석 방법을 선택하고, 유의수준을 설정해야 한다.
- 테스트 결과의 의미 : 결과가 통계적으로 유의미하더라도 항상 실제로 의미 있는 결과인지 한 번 더 생각해보아야한다.
- 정해진 기간 동안 진행 : 일정 기간 동안에만 결과를 수집하고, 분석해야 한다.
03. 유의수준 설정하기
유의수준 = 오류 허용 범위
가설 검정에서 결론을 해석하기 위해서는 기준을 세우고, 그 기준을 만족하는지 확인해야한다. 여기서 그 기준이 되는 것이 유의수준이다.
유의수준 : 귀무가설이 맞을 때 오류허용 기준(확률)
α로 표시하고 95%의 신뢰도를 기준으로 한다면 (1-0.95)인 0.05값이 유의수준 값이 된다.
유의수준은 신뢰수준의 반대 개념 = 오류가 나타날 확률
확률값이므로 0부터 1 사이의 값을 가진다.
04. 검정통계량과 P-VALUE
결과 해석 단계 1 : 검정 방식 정하기 & 검정통계량 계산하기
검정통계량 : 귀무가설을 채택 또는 기각하기 위해 사용하는 확률변수를 의미
확률변수 : 특정 확률로 발생하는 각각의 결과를 수치값으로 표현하는 변수 X
검정통계량은 표본 평균, 비율, 상관계수 간의 차이 등 다양한 형태를 취할 수 있다.
검정 방식 | 검정통계량 | 비교대상 | 대상 |
Z검정 | Z-VALUE | 표본의 평균(차이 분석) 모집단의 분산을 알 수 있는 경우 |
연속형 자료 |
T검정 | T-VALUE | 표본의 평균(차이 분석) 모집단의 분산을 알 수 없는 경우 |
연속형 자료 |
카이제곱검정 | x^2-VALUE | 표본의 분산(상관관계 분석) | 범주형 자료 |
F 검정 | F-VALUE | 표본의 분산(상관관계 분석) | 범주형 자료 |
결과 해석 단계 2 : P-VALUE
P-VALUE : Probablity-value, 확률. 0이상 1이하의 값을 가진다.
유의수준보다 VALUE가 작은 경우에 우연히 일어날 가능성이 거의 없어 대립가설을 채택하게 될 수 있다.
p-value가 0.05보다 작다 = 우연히 일어났을 가능성이 거의 없다. = 인과관계가 있다고 추정 = 대립가설 채택 |
p -value가 0.05 보다 크다 = 우연히 일어났을 가능성이 높다. = 인과관계가 없다고 추정 = 대립가설 기각 |
중심극한정리를 통해, 모집단이 큰 경우 표본이평균이 정규분포를 따르게 된다고 가정.
정규분포의 그래프 아래쪽이 확률값.
우리는 유의 수준을 설정하고, p-value를 도출해서 의미를 해석
# 라이브러리 호출
import pandas as pd
import numpy as np
# 과학 계산용 파이썬 라이브러리
import scipy.stats as stats
from PIL import Image
df = pd.read_csv("users1.csv")
#t-test
# 가설 설정
# 귀무가설: 남성과 여성의 구매금액에 차이가 없을 것이다
# 대립가설: 남성과 여성의 구매금액에 차이가 있을 것이다
# 실제 데이터 비교
df.groupby(['Gender'])['Purchase Amount (USD)'].mean().reset_index()
# 데이터 분리
# mask method
mask=(df['Gender']=='Male')
mask1 = (df['Gender']=='Female')
m_df = df[mask]
f_df = df[mask1]
# 결제금액 컬럼만 가져오기
m_df=m_df[['Purchase Amount (USD)']]
f_df=f_df[['Purchase Amount (USD)']]
# 차이가 있는 것으로 보여짐
# 유의수준은 통상적으로 많이 쓰이는 0.05 로 정함
# scipy 라이브러리를 이용해 t-score 와 pvalue 를 확인할 수 있습니다.
# t-test 는 표본의 평균(차이 분석)을 알고자 할 때 사용되며, 모집단의 분산을 알 수 없는 경우 주로 사용됩니다.
t, pvalue=stats.ttest_ind(m_df, f_df)
# tscore 는 그룹 간 얼마나 차이가 있는지에 대한 지표
# tscore 가 크면 그룹 간 차이가 큼을 의미합니다.
# p-value 는 우연에 의해 나타날 확률에 대한 지표입니다.
# p-value가 0.05 보다 크다 = 우연히 일어났을 가능성이 높다 = 인과관계가 없다고 추정
# 여기서 p-value 값은 0.05 보다 크므로, 인과관계가 없다고 추정할 수 있습니다.
# 대립가설 기각
t, pvalue
#카이제곱검정
# 가설 설정
# 귀무가설: 성별과 구매Size 에는 관련성이 없을 것이다
# 대립가설: 성별과 구매Size 에는 관련성이 있을 것이다
# 실제 데이터 비교
df.groupby(['Gender','Size'])['Customer ID'].count().reset_index()
# pandas 라이브러리의 crosstab 함수를 통해, 두 범주형 자료의 빈도표를 만들어 주겠습니다.
result = pd.crosstab(df['Gender'], df['Size'])
# 카이제곱 검정을 stat 함수를 통해 구현
# chi2_contingency를 통해, 카이제곱통계량, p-value를 출력할 수 있습니다.
stats.chi2_contingency(observed=result)
# 각 값들을 별도로 보기
# 카이제곱 검정 통계량, pvalue, 자유도를 확인할 수 있습니다.
stats.chi2_contingency(observed=result)[0]
# p-value 는 우연에 의해 나타날 확률에 대한 지표입니다.
# p-value가 0.05 보다 크다 = 우연히 일어났을 가능성이 높다 = 인과관계가 없다고 추정
# 여기서 p-value 값은 0.05 보다 크므로, 인과관계가 없다고 추정할 수 있습니다.
# 대립가설 기각
stats.chi2_contingency(observed=result)[1]
# 자유도와 유의수준을 통해 귀무가설 기각 여부를 판단하기도 합니다.
# 자유도란, 굉장히 복잡한 개념이므로,,, (변수1 그룹의 수-1)*(변수2 그룹의 수-1) 가 되겠습니다.
# 1*3 = 3 이 도출되었습니다.
stats.chi2_contingency(observed=result)[2]