북마크    
근의 공식    
원 계산기    
타원 넓이    
구의 부피    
캡슐 부피    
ROI 계산기    
IRR 계산기    
GDP 계산기    
CTR 계산기    
LTV 계산기    
CAC 계산기    
BMI 계산기    
1RM 계산기    
진법 변환    
급여 환산    
   추가
확률과 무작위 계산기
독립사건 확률
독립사건 확률
두 사건 확률 역산
두 사건 확률 역산
반복 시행의 확률
반복 시행의 확률
조건부확률·베이즈
조건부확률·베이즈
기댓값 계산기
기댓값 계산기
이항분포 계산기
이항분포 계산기
순열·조합
순열·조합
원순열·염주순열
원순열·염주순열
중복순열·중복조합
중복순열·중복조합
난수 생성기
난수 생성기
평균과 통계 계산기
평균 계산기
평균 계산기
대푯값 계산기
대푯값 계산기
표준편차 계산기
표준편차 계산기
사분위수 계산기
사분위수 계산기
도수분포표 계산기
도수분포표 계산기
상관계수 계산기
상관계수 계산기
정규분포 확률
정규분포 확률
z점수 계산기
z점수 계산기
신뢰구간 계산기
신뢰구간 계산기
표본 크기 계산기
표본 크기 계산기
표지 재포획법
표지 재포획법
p값 계산기
p값 계산기
비율과 백분율 계산기
퍼센트 계산기
퍼센트 계산기
증감률 계산기
증감률 계산기
퍼센트 차이
퍼센트 차이
오차율 계산기
오차율 계산기
비례식 계산기
비례식 계산기
할인율 계산기
할인율 계산기
부가세 계산기
부가세 계산기
마진율 계산기
마진율 계산기
속력 계산기
속력 계산기
속력 계산기
밀도와 농도 계산기
밀도 계산기
밀도 계산기
몰 농도 계산기
몰 농도 계산기
분자량·몰 질량
분자량·몰 질량
물리와 전기 계산기
옴의 법칙 계산
옴의 법칙 계산
와트·암페어 변환
와트·암페어 변환
저항 색 코드
저항 색 코드
전압강하 계산
전압강하 계산
단위 변환 계산기
평 ↔ m² 환산
평 ↔ m² 환산
무게 단위 변환
무게 단위 변환
신발 사이즈 변환
신발 사이즈 변환
정수와 양수·음수 계산기
나눗셈 세로셈
나눗셈 세로셈
최소공배수
최소공배수
최대공약수
최대공약수
양수 음수 계산기
양수 음수 계산기
소인수분해
소인수분해
일차부정방정식
일차부정방정식
나머지 계산기
나머지 계산기
약수 계산기
약수 계산기
로마 숫자 변환
로마 숫자 변환
분수·소수와 어림하기 계산기
분수 계산기
분수 계산기
대분수 계산기
대분수 계산기
약분 계산기
약분 계산기
분수 → 소수 변환
분수 → 소수 변환
소수 → 분수 변환
소수 → 분수 변환
반올림 계산기
반올림 계산기
방정식과 부등식 계산기
일차방정식 계산기
일차방정식 계산기
연립방정식 계산기
연립방정식 계산기
근의 공식
근의 공식
절댓값 방정식
절댓값 방정식
이차부등식 계산기
이차부등식 계산기
다항식과 전개 계산기
이항정리 계산기
이항정리 계산기
제곱근과 거듭제곱근 계산기
근호 계산기
근호 계산기
거듭제곱근 계산
거듭제곱근 계산
지수와 로그 계산기
거듭제곱 계산기
거듭제곱 계산기
로그 계산기
로그 계산기
상용로그와 자릿수
상용로그와 자릿수
과학적 표기법
과학적 표기법
과학적 표기법 계산
과학적 표기법 계산
반감기 계산기
반감기 계산기
복소수 계산기
복소수 계산기
복소수 계산기
복소수 극형식
복소수 극형식
드무아브르 정리
드무아브르 정리
함수와 그래프 계산기
기울기 계산기
기울기 계산기
일차함수 계산기
일차함수 계산기
정비례·반비례
정비례·반비례
이차함수 계산기
이차함수 계산기
두 점 사이의 거리
두 점 사이의 거리
3차원 거리 계산
3차원 거리 계산
내분점·외분점
내분점·외분점
점과 직선의 거리
점과 직선의 거리
위도·경도 거리
위도·경도 거리
완전제곱식 계산기
완전제곱식 계산기
원의 방정식 계산기
원의 방정식 계산기
이차곡선 계산기
이차곡선 계산기
극좌표 변환 계산기
극좌표 변환 계산기
수열 계산기
등차수열 계산기
등차수열 계산기
등비수열 계산기
등비수열 계산기
피보나치 수열
피보나치 수열
점화식 계산기
점화식 계산기
벡터 계산기
벡터 계산기
벡터 계산기
외적 계산기
외적 계산기
행렬 계산기
행렬 계산기
행렬 계산기
행렬식 계산기
행렬식 계산기
역행렬 계산기
역행렬 계산기
평면도형 계산기
삼각비 계산기
삼각비 계산기
도 ⇔ 라디안 변환
도 ⇔ 라디안 변환
삼각함수의 합성
삼각함수의 합성
삼각형 계산기
삼각형 계산기
삼각형 넓이 계산기
삼각형 넓이 계산기
직각삼각형 계산
직각삼각형 계산
피타고라스 정리
피타고라스 정리
다각형의 내각·외각
다각형의 내각·외각
닮음비·넓이·부피
닮음비·넓이·부피
평행선과 각
평행선과 각
직사각형의 넓이
직사각형의 넓이
평행사변형 넓이
평행사변형 넓이
사다리꼴 넓이
사다리꼴 넓이
원 계산기
원 계산기
부채꼴 넓이
부채꼴 넓이
원주각 계산기
원주각 계산기
타원 넓이
타원 넓이
입체도형 계산기
정육면체 부피
정육면체 부피
정육면체 겉넓이
정육면체 겉넓이
직육면체 부피
직육면체 부피
직육면체 겉넓이
직육면체 겉넓이
원기둥 부피
원기둥 부피
원기둥 겉넓이
원기둥 겉넓이
구의 부피
구의 부피
구의 겉넓이
구의 겉넓이
구결의 부피
구결의 부피
구관의 넓이
구관의 넓이
타원체의 부피
타원체의 부피
타원체의 겉넓이
타원체의 겉넓이
사각뿔의 부피
사각뿔의 부피
사각뿔의 겉넓이
사각뿔의 겉넓이
원뿔의 부피
원뿔의 부피
원뿔의 겉넓이
원뿔의 겉넓이
원뿔대의 부피
원뿔대의 부피
원뿔대의 겉넓이
원뿔대의 겉넓이
파이프 부피
파이프 부피
캡슐 부피
캡슐 부피
캡슐 겉넓이
캡슐 겉넓이
날짜와 시간 계산기
만 나이 계산기
만 나이 계산기
일수 계산기
일수 계산기
며칠 후·전 날짜
며칠 후·전 날짜
몇 시간 후·전 계산
몇 시간 후·전 계산
요일 계산기
요일 계산기
시간 더하기 빼기
시간 더하기 빼기
시차 계산기
시차 계산기
근무시간 계산기
근무시간 계산기
시간 차이 계산기
시간 차이 계산기
근무시간 계산기
근무시간 계산기
금융과 경제 계산기
복리 계산기
복리 계산기
단리 계산기
단리 계산기
이자 계산기
이자 계산기
재무용 계산기
재무용 계산기
현재가치 계산기
현재가치 계산기
미래가치 계산기
미래가치 계산기
ROI 계산기
ROI 계산기
IRR 계산기
IRR 계산기
회수기간 계산기
회수기간 계산기
평균 수익률 계산기
평균 수익률 계산기
GDP 계산기
GDP 계산기
웹 마케팅·광고 지표 계산기
CTR 계산기
CTR 계산기
전환율 계산기
전환율 계산기
CPC·CPM·CPA 계산
CPC·CPM·CPA 계산
ROAS 계산기
ROAS 계산기
손익분기 CPA
손익분기 CPA
LTV 계산기
LTV 계산기
CAC 계산기
CAC 계산기
이탈률 계산기
이탈률 계산기
A/B 테스트 유의성
A/B 테스트 유의성
A/B 표본 크기
A/B 표본 크기
SEO 유입 예측
SEO 유입 예측
손익분기점 계산기
손익분기점 계산기
마진율·마크업률
마진율·마크업률
CAGR 계산기
CAGR 계산기
건강과 피트니스 계산기
BMI 계산기
BMI 계산기
수면 주기 계산기
수면 주기 계산기
칼로리 계산기
칼로리 계산기
기초대사량 계산기
기초대사량 계산기
TDEE 계산기
TDEE 계산기
표준체중 계산기
표준체중 계산기
체지방률 계산기
체지방률 계산기
제지방량 계산기
제지방량 계산기
칼로리 소모 계산기
칼로리 소모 계산기
단백질 계산기
단백질 계산기
탄단지 계산기
탄단지 계산기
탄수화물 계산기
탄수화물 계산기
지방 섭취량 계산기
지방 섭취량 계산기
예상키 계산기
예상키 계산기
스포츠 계산기
골프 핸디캡
골프 핸디캡
페이스 계산기
페이스 계산기
1RM 계산기
1RM 계산기
목표심박수 계산기
목표심박수 계산기
날씨 계산기
열지수 계산기
열지수 계산기
겨울 체감온도
겨울 체감온도
이슬점 계산기
이슬점 계산기
컴퓨터 계산기
진법 변환
진법 변환
서브넷 계산기
서브넷 계산기
다운로드 시간 계산
다운로드 시간 계산
가계와 공과금 계산기
가전 전기요금
가전 전기요금
전기요금 계산기
전기요금 계산기
연간 kWh→전기요금
연간 kWh→전기요금
에어컨 평형 계산
에어컨 평형 계산
에어컨 전기요금
에어컨 전기요금
난방 전기요금 비교
난방 전기요금 비교
가스 vs 전기 요금
가스 vs 전기 요금
LED 교체 절약액
LED 교체 절약액
급여 환산
급여 환산
가계 수지 계산
가계 수지 계산
자동차 계산기
주유비 계산기
주유비 계산기
전기차 충전 요금
전기차 충전 요금
전기차 vs 휘발유차
전기차 vs 휘발유차
연비 계산기
연비 계산기
타이어 사이즈 계산
타이어 사이즈 계산
태양광 발전과 에너지 저장 계산기
태양광 발전량
태양광 발전량
태양광 패널 장수
태양광 패널 장수
태양광 회수기간
태양광 회수기간
ESS 용량·사용 시간
ESS 용량·사용 시간
집과 DIY 계산기
타일 수량 계산
타일 수량 계산
계단 치수 계산
계단 치수 계산
콘크리트 물량
콘크리트 물량
벽·천장·바닥 면적
벽·천장·바닥 면적
벽지 계산기
벽지 계산기
페인트 계산기
페인트 계산기
마루 계산기
마루 계산기
외벽 면적 계산
외벽 면적 계산
자갈 계산기
자갈 계산기
몰탈 배합 계산
몰탈 배합 계산
경사도 계산
경사도 계산
목재 재단 계산
목재 재단 계산
건폐율·용적률
건폐율·용적률
장판 필요량
장판 필요량
단열재 필요량
단열재 필요량
커튼 사이즈
커튼 사이즈
TV 크기·시청 거리
TV 크기·시청 거리
흙·배양토 필요량
흙·배양토 필요량
잔디 평수·장수
잔디 평수·장수
블록 담장 수량
블록 담장 수량
벽돌 필요 장수
벽돌 필요 장수
데크 자재 계산
데크 자재 계산
경사로 길이
경사로 길이
피스 가이드 홀
피스 가이드 홀
필요 환기량
필요 환기량
페인트 희석
페인트 희석
걸레받이 계산기
걸레받이 계산기
블라인드 사이즈
블라인드 사이즈
액자 거는 높이
액자 거는 높이
배수 구배·높이차
배수 구배·높이차
피스 수량 계산
피스 수량 계산
목재 재 계산
목재 재 계산
펜스 자재 계산
펜스 자재 계산
목재 수축량 계산
목재 수축량 계산
실리콘 필요량
실리콘 필요량
방 열손실 계산기
방 열손실 계산기
가구 반입 계산기
가구 반입 계산기
이사 박스 개수
이사 박스 개수
수납 용량 계산기
수납 용량 계산기
합판 재단 계산기
합판 재단 계산기
선반 처짐 계산
선반 처짐 계산

A/B 테스트 표본 크기 계산기(최소 검출 효과·검정력·테스트 기간)

‘필요 표본 수’에서는 기준 전환율, 검출하고 싶은 개선 폭(MDE), 유의수준, 검정력을 입력하고 ‘계산’을 누르세요. A·B 그룹별 필요 표본 수(올림)와 합계, 하루 유입 수를 넣으면 필요한 일수까지 표시합니다. ‘구할 값’을 ‘검정력’으로 바꾸면 그룹별 표본 수를 고정했을 때의 검정력 1 − β를 구합니다.

전환율과 개선 폭은 % 숫자로 입력하세요(3%라면 ‘3’, 10% 개선이라면 ‘10’). 개선 폭은 ‘상대 %’(3% → 3.3%라면 10%)와 ‘%p’(3% → 3.3%라면 0.3) 중 어느 쪽으로든 지정할 수 있습니다. 하루 유입 수는 A·B 두 그룹의 합계(테스트 대상 페이지 전체의 방문 수)를 넣으세요.
계산 결과·그래프
왼쪽 입력란에 값을 넣고 ‘계산’을 누르면 여기에 결과와 ‘개선 폭 → 필요 표본 수’ 그래프가 표시됩니다.

이 페이지에서 할 수 있는 것

  • 기준 전환율(지금 A안의 전환율), 검출하고 싶은 개선 폭(MDE. 상대 % 또는 %p로 지정), 유의수준 \(\alpha\)(양측·단측), 검정력 \(1-\beta\)만 넣으면 A/B 테스트의 그룹별 필요 표본 수(올림)와 합계를 계산합니다
  • ‘전환율 3%인 페이지에서 10% 개선(3% → 3.3%)을 검출하려면 A·B에 각각 몇 명이 필요할까?’ 테스트를 시작하기 전에 가장 중요한 이 질문을 한 번에 해결합니다
  • 하루 유입 수(선택)를 넣으면 필요한 인원이 모일 때까지의 일수(올림)도 알 수 있습니다
  • 반대로 ‘그룹마다 이만큼의 인원밖에 모을 수 없다’면 표본 수를 고정하고 검정력 \(1-\beta\)(실제로 차이가 있을 때 그것을 찾아낼 확률)를 역산할 수 있습니다
  • 개선 폭을 바꾸면 필요 표본 수가 얼마나 달라지는지 보여 주는 그래프, 공식의 쉬운 해설, Excel·Google 스프레드시트·Python용으로 복사해 쓰는 수식도 이 페이지에 정리되어 있습니다
이 페이지는 ‘A안과 B안의 전환율(CVR)에 차이가 있는가’를 확인하는 A/B 테스트 전용으로, 두 비율 z검정의 표준 공식을 씁니다. 설문 조사에서 비율 하나를 정확하게 알기 위한 인원은 ‘표본 크기 계산기’를, 이미 모은 결과에서 p값을 읽으려면 ‘p값 계산기’를 이용하세요. 필요 표본 수를 모았다고 해서 유의한 결과가 실제 효과라는 것이 증명되지는 않습니다. 공식 해설의 주의 사항도 함께 읽어 주세요.

이 계산은 어디에 쓰일까요?

쇼핑몰 ‘구매 버튼’의 A/B 테스트 설계하기

쇼핑몰 상품 페이지의 전환율이 2%이고, 버튼 문구를 바꿔 상대 10%(2% → 2.2%)의 개선을 검출하고 싶다고 합시다. 유의수준 5%(양측), 검정력 80%라면 그룹마다 약 80,682명, 합계 약 161,364명이 필요합니다.
수십~수백 명으로 비교해서는(‘지난주는 B가 좋았다’) 우연한 차이와 진짜 차이를 구별할 수 없습니다. 시작하기 전에 필요 표본 수를 계산해 두면 답이 나올 수 없는 테스트에 몇 주를 허비하지 않게 됩니다.

B2B SaaS의 랜딩 페이지를 며칠 테스트할지 정하기

무료 체험·상담 신청의 전환율이 5%인 랜딩 페이지에서 1%p(5% → 6%)의 개선을 검출하려면 그룹마다 8,158명, 합계 16,316명이 필요합니다. 하루 300회 방문이라면 \(16316 \div 300 \fallingdotseq 54.4\)이므로 55일, 요일을 고르게 하려면 8주가 기준입니다.
‘2주 만에 결과를 내 달라’는 요청을 받아도 이 계산이 있으면 ‘2주(4,200명, 그룹별 2,100명)라면 개선 폭(MDE)을 3%p 정도(5% → 8%, 그룹별 1,059명이 필요)로 크게 잡아야 한다’고 숫자로 설명할 수 있습니다.

이메일 뉴스레터 제목 테스트(오픈율 비교)

오픈율이 20%인 뉴스레터에서 새 제목으로 2%p(20% → 22%)의 개선을 검출하려면 그룹마다 6,510명, 합계 13,020명에게 보내야 합니다(유의수준 5%, 검정력 80%).
오픈율처럼 비율이 높은 지표는 몇 % 수준의 전환율보다 적은 인원으로 차이를 확인할 수 있습니다. 공식의 \(p(1-p)\) 부분이 다르기 때문으로, 같은 ‘2%p’라도 지표마다 필요 표본 수가 다릅니다.

‘차이가 없었다’고 결론 내리기 전에 검정력 확인하기

전환율 3%인 페이지에서 상대 10% 개선을 노린 테스트를 그룹별 5,000명으로 했더니 ‘유의한 차이 없음’이 나왔다고 합시다. 검정력을 역산하면 약 13.5%밖에 되지 않습니다. 실제 개선을 10번 중 8번 이상 놓치는 설정이었던 것입니다.
이 경우 올바른 결론은 ‘효과가 없었다’가 아니라 ‘이 표본 수로는 판단할 수 없었다’입니다. 검정력을 역산하면 테스트를 잘못 읽고 좋은 아이디어를 버리는 일을 막을 수 있습니다.

앱 첫 튜토리얼 개선으로 유지율 비교하기

다음 날 유지율이 40%인 앱에서 새 튜토리얼로 상대 10%(40% → 44%)의 개선을 검출하려면 그룹마다 약 2,389명, 합계 약 4,778명의 신규 사용자면 충분합니다(유의수준 5%, 검정력 80%).
유지율처럼 50%에 가까운 지표는 변동이 크지만 비율의 차이(4%p)도 크기 때문에, 몇 % 수준의 전환율 테스트보다 빨리 결과가 나옵니다. 지표마다 필요 표본 수를 어림해 두면 어떤 개선부터 손댈지 정하는 데도 도움이 됩니다.

놓치고 싶지 않은 테스트는 검정력 90%로 설계하기

가격 표시 방법 변경처럼 좋은 아이디어를 놓치면 손실이 큰 테스트에서는 검정력을 80%에서 90%로 올릴 수 있습니다. 전환율 3%, 상대 10% 개선이라면 그룹별 필요 표본 수는 53,211명에서 71,233명(약 1.34배)으로 늘어납니다.
이 계산으로 놓침을 절반(20%에서 10%)으로 줄이는 데 인원이 얼마나 더 필요한지 정확히 알 수 있으므로, 테스트의 중요도에 맞춰 표본 수와 기간을 정할 수 있습니다.

공식과 그림

개선 후 전환율(B안에 기대하는 전환율)을 구하는 공식
수학 표기 (일반적인 수식)
\(p_2\) \(=\) \(p_1\) \(\times\) \(\left(1 + \dfrac{r}{100}\right)\)
\(p_2\) \(=\) \(p_1\) \(+\) \(d\)
말로 쓴 표기 (기호를 말로 바꾼 식)
③ 개선 후 전환율 \(p_2\) \(=\) ① 기준 전환율 \(p_1\) \(\times\) ② \(1 +\) 상대 개선 폭 \(r \div 100\)
개선 후 전환율 \(p_2\) \(=\) 기준 전환율 \(p_1\) \(+\) ④ %p로 나타낸 개선 폭 \(d\)
공식을 말로 읽으면
① 기준 전환율(\(p_1\)) 에
② \(1 +\) 상대 개선 폭 \(r \div 100\) 을 곱하면
③ 개선 후 전환율(\(p_2\)) 이 됩니다
④ (개선 폭을 %p로 지정할 때는 기준 전환율(\(p_1\))에 %p로 나타낸 개선 폭(\(d\)) 을 그대로 더한 것이 개선 후 전환율이 됩니다)
간단한 예
기준 전환율이 3%이고 상대 10%의 개선을 검출하고 싶을 때의 개선 후 전환율은
개선 후 전환율 \(p_2\) \(=\) 기준 전환율(3%) \(\times\) \(1 + 10 \div 100\)
\(3 \times (1 + 10 \div 100) = 3 \times 1.1 = 3.3\ \ (3.3\%)\)
이해의 핵심
‘10% 개선’에는 두 가지 뜻이 있으니 주의하세요. 상대 %라면 ‘3%의 10분의 1을 더해 3.3%’, %p라면 ‘3% + 10%p = 13%’로, 필요 표본 수가 완전히 달라집니다. 마케팅에서 ‘전환율 10% 개선’이라고 하면 보통 상대 %를 가리키며, 이 페이지의 기본값도 상대 %입니다. 개선 후 전환율(\(p_2\))은 ‘B안이 실제로 이렇게 된다’는 예상이 아니라 ‘이 이상의 차이라면 놓치고 싶지 않다’는 최소 차이(MDE)입니다. 실제 차이가 이보다 작으면 필요 표본 수를 다 모아도 유의한 차이가 나오지 않을 가능성이 높습니다.
그룹별 필요 표본 수를 구하는 공식(두 비율 z검정)
그림
수학 표기 (일반적인 수식)
\(n\) \(=\) \(\bigl(\) \(z_{\alpha/2}\sqrt{2\bar{p}(1-\bar{p})}\) \(+\) \(z_{\beta}\sqrt{p_1(1-p_1)+p_2(1-p_2)}\) \(\bigr)^2\) \(\div\) \((p_2 - p_1)^2\)
말로 쓴 표기 (기호를 말로 바꾼 식)
④ 그룹별 필요 표본 수 \(n\) \(=\) \(\bigl(\) ① 유의수준에 따른 여유분 \(z_{\alpha/2}\sqrt{2\bar{p}(1-\bar{p})}\) \(+\) ② 검정력에 따른 여유분 \(z_{\beta}\sqrt{p_1(1-p_1)+p_2(1-p_2)}\) \(\bigr)^2\) \(\div\) ③ 검출하고 싶은 차이 \((p_2 - p_1)\)의 제곱
공식을 말로 읽으면
① 유의수준에 따른 여유분(유의수준으로 정해지는 \(z_{\alpha/2}\) × 차이가 없을 때의 변동 \(\sqrt{2\bar{p}(1-\bar{p})}\)) 과
② 검정력에 따른 여유분(검정력으로 정해지는 \(z_{\beta}\) × 차이가 있을 때의 변동 \(\sqrt{p_1(1-p_1)+p_2(1-p_2)}\)) 을 더해 제곱하고,
③ 검출하고 싶은 차이 \((p_2 - p_1)\)의 제곱 으로 나누면
④ 그룹별 필요 표본 수(\(n\)) 가 됩니다(끝수는 올림합니다)
간단한 예
기준 전환율 3%(0.03), 개선 후 3.3%(0.033), 유의수준 5%의 양측검정(\(z_{\alpha/2} = 1.9600\)), 검정력 80%(\(z_{\beta} = 0.8416\))일 때 그룹별 필요 표본 수는
그룹별 필요 표본 수 \(n\) \(=\) \(\bigl(\) \(1.9600 \times \sqrt{2 \times 0.0315 \times 0.9685}\) \(+\) \(0.8416 \times \sqrt{0.03 \times 0.97 + 0.033 \times 0.967}\) \(\bigr)^2\) \(\div\) \((0.033 - 0.03)^2\)
\(\bar{p} = (0.03 + 0.033) \div 2 = 0.0315\)
\(1.9600 \times \sqrt{2 \times 0.0315 \times 0.9685} = 1.9600 \times 0.24701 \fallingdotseq 0.48414\)
\(0.8416 \times \sqrt{0.03 \times 0.97 + 0.033 \times 0.967} = 0.8416 \times 0.24700 \fallingdotseq 0.20788\)
\((0.48414 + 0.20788)^2 \div (0.033 - 0.03)^2 = 0.47889 \div 0.000009 \fallingdotseq 53210.3 \rightarrow 53211\)
이해의 핵심
\(\bar{p}\)(피 바)는 두 전환율의 평균 \((p_1 + p_2) \div 2\)로, ‘차이가 없다’고 가정했을 때의 공통 전환율입니다. \(\sqrt{2\bar{p}(1-\bar{p})}\)와 \(\sqrt{p_1(1-p_1)+p_2(1-p_2)}\)는 둘 다 ‘전환율의 차이가 우연에 따라 얼마나 흔들리는가’를 나타내는 변동으로, 앞의 것은 ‘차이가 없을 때’, 뒤의 것은 ‘차이가 있을 때’의 변동입니다. 공식을 보면 필요 표본 수는 ‘검출하고 싶은 차이의 제곱’으로 나눕니다. 그래서 개선 폭(MDE)을 절반으로 하면 필요 표본 수는 약 4배, 3분의 1로 하면 약 9배가 됩니다. 작은 개선까지 잡으려고 하면 필요 인원이 급격히 늘어나는 이유가 여기에 있습니다. 유의수준으로 정해지는 z값은 양측검정이라면 \(z_{\alpha/2}\)(5%에서 1.9600, 1%에서 2.5758, 10%에서 1.6449), 단측검정이라면 \(z_{\alpha}\)(5%에서 1.6449, 1%에서 2.3263, 10%에서 1.2816)입니다. 검정력으로 정해지는 z값 \(z_{\beta}\)는 80%에서 0.8416, 90%에서 1.2816입니다. 교과서나 다른 도구에서는 두 변동을 \(\sqrt{2\bar{p}(1-\bar{p})}\) 하나로 합친 간략식 \(n \fallingdotseq 2\bar{p}(1-\bar{p})(z_{\alpha/2}+z_{\beta})^2 \div (p_2-p_1)^2\)을 쓰기도 합니다. 이 계산기는 위 카드의 공식(변동을 둘로 나눈 것)으로 계산하고, 간략식의 값도 참고로 결과에 표시합니다. 전환율이 작을 때는 둘이 거의 같습니다(위의 예라면 53,211명 대 53,212명). 필요 표본 수를 모았다고 해서 유의한 결과가 확실한 효과가 되는 것은 아닙니다. 방문자를 무작위로 배정할 것, 도중에 결과를 여러 번 들여다보고(중간 확인) 일찍 멈추지 않을 것, 여러 지표나 여러 B안을 한꺼번에 비교할 때는 더 엄격한 기준을 쓸 것(다중비교)이 공식이 성립하는 전제입니다.
필요 일수를 구하는 공식(하루 유입 수로)
수학 표기 (일반적인 수식)
\(D\) \(=\) \(\lceil\) \(2n\) \(\div\) \(V\) \(\rceil\)
말로 쓴 표기 (기호를 말로 바꾼 식)
③ 필요 일수 \(D\) \(=\) \(\lceil\) ① A·B 합계 표본 수 \(2n\) \(\div\) ② 하루 유입 수 \(V\) \(\rceil\)
공식을 말로 읽으면
① A·B 합계 표본 수(\(2n\). 그룹별 필요 표본 수 \(n\)의 2배) 를
② 하루 유입 수(\(V\)) 로 나누고 끝수를 올림하면(\(\lceil\ \rceil\)은 올림의 기호)
③ 필요 일수(\(D\)) 가 됩니다
간단한 예
그룹별 필요 표본 수가 53,211명이고 테스트 대상 페이지에 하루 2,000회 방문이 있을 때의 필요 일수는
필요 일수 \(D\) \(=\) \(\lceil\) \(2 \times 53211\) \(\div\) 2,000회 \(\rceil\)
\(2 \times 53211 \div 2000 = 106422 \div 2000 = 53.211 \rightarrow 54\)
이해의 핵심
\(\lceil\ \rceil\)은 ‘올림’을 나타내는 기호(천장 함수)로, 53.211일은 54일이 됩니다. 방문자는 A·B에 절반씩 나뉘므로, 하루 유입 수에는 A·B 합계(테스트 대상 페이지 전체의 방문 수)를 넣습니다. 계산상으로는 54일이라도 실제 테스트는 ‘1주일의 배수’로 돌리는 것이 관례입니다. 전환율은 요일에 따라 달라지므로(평일과 주말은 방문자의 성격이 다릅니다), 7일, 14일, … 단위로 돌리면 요일의 영향이 두 그룹에 고르게 퍼집니다. 이 예라면 8주(56일)로 계획하면 좋습니다. 필요 일수가 몇 달이나 된다면 개선 폭(MDE)을 크게 잡거나 유입이 많은 페이지에서 테스트하는 것이 현실적입니다.
검정력을 구하는 공식(그룹별 표본 수를 고정했을 때)
그림
수학 표기 (일반적인 수식)
\(z_{1-\beta}\) \(=\) \(\bigl(\) \(|p_2 - p_1|\sqrt{n}\) \(-\) \(z_{\alpha/2}\sqrt{2\bar{p}(1-\bar{p})}\) \(\bigr)\) \(\div\) \(\sqrt{p_1(1-p_1)+p_2(1-p_2)}\)
\(1-\beta\) \(=\) \(\Phi\bigl(\) \(z_{1-\beta}\) \(\bigr)\)
말로 쓴 표기 (기호를 말로 바꾼 식)
④ 검정력에 대응하는 \(z\)값 \(z_{1-\beta}\) \(=\) \(\bigl(\) ① 검출하고 싶은 차이 \(|p_2 - p_1|\) × \(\sqrt{\text{그룹별 표본 수 } n}\) \(-\) ② 유의수준에 따른 여유분 \(z_{\alpha/2}\sqrt{2\bar{p}(1-\bar{p})}\) \(\bigr)\) \(\div\) ③ 차이가 있을 때의 변동 \(\sqrt{p_1(1-p_1)+p_2(1-p_2)}\)
⑥ 검정력 \(1-\beta\) \(=\) \(\Phi\bigl(\) ⑤ 검정력에 대응하는 \(z\)값 \(z_{1-\beta}\) \(\bigr)\)
공식을 말로 읽으면
① 검출하고 싶은 차이 \(|p_2 - p_1|\)에 그룹별 표본 수의 제곱근 \(\sqrt{n}\)을 곱한 것 에서
② 유의수준에 따른 여유분(\(z_{\alpha/2}\sqrt{2\bar{p}(1-\bar{p})}\)) 을 빼고,
③ 차이가 있을 때의 변동(\(\sqrt{p_1(1-p_1)+p_2(1-p_2)}\)) 으로 나누면
④ 검정력에 대응하는 z값(\(z_{1-\beta}\)) 이 되고,
⑤ 그 검정력에 대응하는 z값(\(z_{1-\beta}\)) 이하가 될 확률을 표준정규분포의 누적분포함수 \(\Phi\)로 구하면
⑥ 검정력(\(1-\beta\)) 이 됩니다
간단한 예
기준 전환율 3%, 개선 후 3.3%, 유의수준 5%의 양측검정(\(z_{\alpha/2} = 1.9600\))에서 그룹마다 30,000명밖에 모을 수 없을 때의 검정력은
검정력에 대응하는 \(z\)값 \(z_{1-\beta}\) \(=\) \(\bigl(\) \(0.003 \times \sqrt{30000}\) \(-\) \(1.9600 \times 0.24701\) \(\bigr)\) \(\div\) \(0.24700\)
\(0.003 \times \sqrt{30000} = 0.003 \times 173.205 \fallingdotseq 0.51962\)
\((0.51962 - 0.48414) \div 0.24700 \fallingdotseq 0.1436\)
\(1 - \beta = \Phi(0.1436) \fallingdotseq 0.5571\ \ (55.71\%)\)
이해의 핵심
이것은 ‘그룹별 필요 표본 수를 구하는 공식’을 \(z_{\beta}\)에 대해 다시 푼 것입니다. \(\Phi\)(파이)는 표준정규분포의 누적분포함수로, z값이 어떤 값 이하가 될 확률을 돌려줍니다(\(\Phi(0.8416) \fallingdotseq 0.80\), \(\Phi(1.2816) \fallingdotseq 0.90\)). 위의 예에서는 검정력이 약 56%밖에 되지 않습니다. 즉 B안이 실제로 3.3%가 되더라도 그룹별 30,000명의 테스트로는 거의 절반의 확률로 ‘차이 없음’이 됩니다. 검정력이 80%에 못 미치는 테스트는 실제 효과를 자주 놓칩니다. 검정력이 낮은 테스트로 ‘차이가 없었다’고 결론 내리는 것은 성급합니다. 엄밀하게는 양측검정에서 반대쪽 꼬리(B가 유의하게 나쁘게 나올 확률)도 더해야 하지만, 그 값은 아주 작으므로 이 계산기는 일반적인 관례에 따라 생략합니다.
A/B 테스트의 그룹별 필요 표본 수는 ‘(유의수준에 따른 여유분 + 검정력에 따른 여유분)의 제곱 ÷ 검출하고 싶은 차이의 제곱’으로 구하고, 끝수는 올림합니다. 개선 폭(MDE)을 절반으로 하면 필요 표본 수는 약 4배가 되므로, 먼저 ‘어느 정도의 개선을 잡고 싶은가’를 정하는 것이 요령입니다. 하루 유입 수로 나누면 필요 일수를, 표본 수를 고정하고 공식을 다시 풀면 검정력을 구할 수 있습니다.

용어·기호 해설

기호

\(p_1\) 피 원 기준 전환율(A안·현재의 전환율)입니다. \(p\)는 proportion(비율) 또는 probability(확률)의 머리글자로, 공식 안에서는 3%를 0.03처럼 소수로 다룹니다.
\(p_2\) 피 투 개선 후 전환율(B안에 기대하는 전환율)입니다. 상대 %라면 \(p_1 (1 + r/100)\), %p라면 \(p_1 + d\)입니다.
\(\bar{p}\) 피 바 두 전환율의 평균 \((p_1 + p_2) \div 2\)입니다. ‘차이가 없다’고 가정했을 때의 공통 전환율이며, 위의 가로선(바)은 통계에서 ‘평균’을 나타내는 표시입니다.
\(r\) 알 상대 %로 지정한 개선 폭(MDE)입니다. ratio(비율)의 머리글자로, ‘기준 전환율의 몇 % 개선인가’를 나타냅니다(3% → 3.3%라면 \(r = 10\)).
\(d\) 디 %p로 지정한 개선 폭(MDE)입니다. difference(차이)의 머리글자로, 전환율의 차이 그 자체입니다(3% → 3.3%라면 \(d = 0.3\)%p).
\(p_2 - p_1\) 피 투 빼기 피 원 검출하고 싶은 차이(%p를 소수로 나타낸 것. 0.3%p라면 0.003)입니다. 필요 표본 수는 이것의 제곱으로 나누므로, 차이가 작을수록 인원이 급격히 늘어납니다.
\(\alpha\) 알파 유의수준입니다. ‘실제로는 차이가 없는데 차이가 있다고 판정하는’ 확률(제1종 오류의 확률)로, 5%(0.05)를 많이 씁니다. 알파는 그리스 문자의 첫 번째 글자로, 통계에서는 ‘제1종’ 오류의 확률에 씁니다.
\(\beta\) 베타 ‘실제로는 차이가 있는데 차이가 없다고 판정하는(놓치는)’ 확률(제2종 오류의 확률)입니다. 베타는 그리스 문자의 두 번째 글자로, ‘제2종’ 오류의 확률에 씁니다.
\(1-\beta\) 일 빼기 베타 검정력입니다. 실제로 차이가 있을 때 그것을 차이가 있다고 판정할 수 있는 확률로, 80%나 90%를 많이 씁니다.
\(z_{\alpha/2}\) 제트 알파 2분의 1 양측검정에서 유의수준 \(\alpha\)에 대응하는 z값(표준정규분포의 위쪽 \(\alpha/2\) 지점)입니다. 5%에서 1.9600, 1%에서 2.5758, 10%에서 1.6449입니다. 단측검정에서는 대신 \(z_{\alpha}\)(5%에서 1.6449)를 씁니다.
\(z_{\beta}\) 제트 베타 검정력 \(1-\beta\)에 대응하는 z값(표준정규분포에서 아래쪽 확률이 \(1-\beta\)가 되는 지점)입니다. 80%라면 0.8416, 90%라면 1.2816입니다.
\(z_{1-\beta}\) 제트 일 빼기 베타 검정력을 구하는 공식에서 표본 수로 역산한 z값입니다. 이것을 \(\Phi\)에 넣으면 검정력이 됩니다(\(z_{\beta}\)와 같은 것을 구하는 쪽에서 본 표기입니다).
\(\Phi\) 파이(대문자) 표준정규분포의 누적분포함수입니다. z값이 어떤 값 이하가 될 확률을 돌려주며, \(\Phi(1.96) \fallingdotseq 0.975\), \(\Phi(0.8416) \fallingdotseq 0.80\)입니다. 그리스 문자 대문자 파이로, 이 함수를 나타낼 때 관례적으로 씁니다.
\(n\) 엔 그룹별(A안·B안 각각) 표본 수입니다. number(수)의 머리글자이며, A·B 합계는 \(2n\)이 됩니다.
\(\sqrt{\ \ }\) 루트 제곱근입니다. 제곱하면 그 수가 되는 양수로, \(\sqrt{30000} \fallingdotseq 173.205\)입니다. 전환율의 변동(표준편차)을 구할 때 나옵니다.
\(V\) 브이 하루 유입 수(테스트 대상 페이지 전체의 방문 수, 즉 A·B 합계)입니다. visits(방문 수)의 머리글자입니다.
\(D\) 디 필요 일수입니다. days(일수)의 머리글자입니다.
\(\lceil\ \rceil\) 천장 함수 올림을 나타내는 기호(천장 함수)입니다. 안의 수 이상인 가장 작은 정수를 돌려줍니다(\(\lceil 53.211 \rceil = 54\)).

용어

A/B 테스트 지금 안(A)과 새 안(B)을 방문자를 무작위로 나누어 같은 기간에 보여 주고, 어느 쪽의 성과(전환율 등)가 높은지 비교하는 실험입니다. 버튼 색, 헤드라인, 가격 표시 방법, 랜딩 페이지의 구성 같은 변경이 정말 효과가 있는지를 감이 아니라 데이터로 확인할 때 씁니다.
전환율 (CVR) 방문자나 클릭 가운데 구매, 신청 같은 성과(전환)로 이어진 비율입니다. Conversion Rate의 줄임으로, 이 페이지의 공식에서는 A안을 \(p_1\), B안을 \(p_2\)로 씁니다.
MDE (최소 검출 효과) Minimum Detectable Effect의 줄임으로, ‘이 정도 개선이면 찾아내고 싶다’는 개선 폭의 하한입니다. A/B 테스트를 설계할 때 가장 먼저 정하는 값입니다. 작게 할수록 필요 표본 수가 급격히 늘어나므로(차이의 제곱에 반비례), 사업상 의미가 있는 최소한의 개선 폭으로 정하세요.
유의수준 ‘실제로는 차이가 없는데 우연한 차이를 보고 차이가 있다고 판정하는’ 실패를 어디까지 허용할지의 확률 \(\alpha\)입니다. 5%가 일반적이며, 이는 20번에 1번 정도의 헛짚음을 허용한다는 뜻입니다. 엄격하게(1%) 하면 필요 표본 수가 늘어납니다.
검정력 ‘실제로 차이가 있을 때 그것을 차이가 있다고 판정할 수 있는’ 확률 \(1-\beta\)입니다. 80%가 일반적이며, 이는 5번에 1번 정도 실제 개선을 놓치는 것을 허용한다는 뜻입니다. 검정력이 낮은 테스트에서 ‘차이 없음’이 나와도 차이가 없다는 증거는 되지 않습니다.
제1종 오류 ‘실제로는 차이가 없는데 차이가 있다고 말하는’ 잘못(거짓 양성)입니다. 이것을 허용하는 확률이 유의수준 \(\alpha\)입니다. 제2종 오류(놓침)와 서로 맞물려 있어 한쪽을 줄이면 다른 쪽이 늘기 쉬우며, 둘 다 줄이는 가장 기본적인 방법은 표본 수를 늘리는 것입니다.
제2종 오류 ‘실제로는 차이가 있는데 놓치는’ 잘못(거짓 음성)입니다. 그 확률이 \(\beta\)이고, \(1-\beta\)가 검정력입니다. 제1종 오류(헛짚음)와 서로 맞물려 있어 한쪽을 줄이면 다른 쪽이 늘기 쉬우며, 둘 다 줄이는 가장 기본적인 방법은 표본 수를 늘리는 것입니다.
귀무가설 ‘A안과 B안의 전환율에 차이가 없다’는, 검정에서 부정하고 싶은 쪽의 가설입니다. 검정은 귀무가설이 옳다면 데이터가 얼마나 드문지를 묻고, 충분히 드물면 귀무가설을 버리고 ‘차이가 있다’고 판정합니다.
대립가설 ‘A안과 B안의 전환율에 차이가 있다’는, 검정에서 보여 주고 싶은 쪽의 가설입니다. 귀무가설(차이가 없다)이 버려졌을 때 채택됩니다.
양측검정 ‘B안이 높다’와 ‘낮다’를 모두 차이로 검출하는 검정입니다. 어느 쪽으로 갈지 모르는 보통의 A/B 테스트에서 씁니다. 단측검정보다 필요 표본 수가 많지만, B가 나빠진 경우도 잡아낼 수 있습니다.
단측검정 ‘B안이 높다’만 검출하는 검정입니다. 양측검정보다 필요 표본 수가 적지만 B가 나빠진 경우는 잡아내지 못하므로, 테스트를 시작하기 전에 정해 두어야 합니다(결과를 보고 나서 단측으로 바꾸는 것은 올바르지 않습니다).
두 비율 z검정 두 그룹의 비율(전환율 등)에 차이가 있는지를, 차이를 표준화한 z값과 표준정규분포로 판정하는 검정입니다. 이 페이지의 공식은 이 검정의 필요 표본 수를 구합니다. 그룹마다 전환 수가 충분할 때(기준으로 5~10건 이상) 정규근사가 잘 맞습니다.
표준정규분포 평균 0, 표준편차 1인 정규분포(좌우 대칭인 종 모양)입니다. z값은 이 분포의 가로축 값이며, ‘1.96보다 오른쪽의 넓이는 2.5%’처럼 z값 하나에 확률 하나가 대응합니다.
누적분포함수 ‘어떤 값 이하가 될 확률’을 돌려주는 함수입니다. 표준정규분포의 누적분포함수는 \(\Phi\)로 쓰며, 검정력 공식의 마지막에 나옵니다. Excel에서는 NORM.S.DIST(두 번째 인수 TRUE), Python에서는 NormalDist().cdf로 계산할 수 있습니다.
표준편차 (변동) 데이터가 흩어진 정도입니다. 비율 \(p\)의 변동은 \(\sqrt{p(1-p)}\)에 비례합니다. 공식 안의 \(\sqrt{2\bar{p}(1-\bar{p})}\)와 \(\sqrt{p_1(1-p_1)+p_2(1-p_2)}\)는 두 그룹 전환율의 차이의 변동입니다.
다중비교 여러 B안이나 여러 지표를 동시에 비교하는 것입니다. 비교가 늘수록 적어도 하나가 우연히 유의해 보일 가능성이 커지므로, 유의수준을 비교 횟수로 나누는(본페로니 보정) 등의 조정이 필요합니다.
중간 확인 (조기 중단) 필요 표본 수가 모이기 전에 결과를 여러 번 보고 유의한 차이가 나온 순간 테스트를 멈추는 것(피킹)입니다. 우연한 차이를 잡기 쉬워져, 유의수준 5%로 할 생각이 실제로는 훨씬 높은 확률로 잘못 판정하게 됩니다. 이 페이지의 공식은 표본 수를 먼저 정하고 거기에 이를 때까지 기다리는 것을 전제로 합니다.

먼저 알아 두면 좋은 내용

이 페이지의 계산을 버튼만 누르는 것이 아니라 ‘뜻을 알고’ 쓸 수 있도록, 먼저 알아 두면 좋은 내용을 정리했습니다.
막히면 이 내용으로 돌아가 복습하는 것이 지름길입니다.

비와 비율·백분율(초등학교 6학년, 11~12세)
  • %와 소수를 서로 바꿀 수 있는 것(\(3\% = 0.03\), \(0.033 = 3.3\%\))
  • ‘상대 %의 증가’(3%의 10% 증가는 3.3%)와 ‘%p의 증가’(3% + 0.3%p = 3.3%)의 차이를 아는 것
제곱근(중학교 3학년, 14~15세)
  • \(\sqrt{a}\)가 ‘제곱하면 \(a\)가 되는 양수’라는 것을 알고, \(\sqrt{30000} \fallingdotseq 173.2\) 같은 값을 계산기로 구할 수 있는 것
  • 제곱으로 나누는 식에서는 나누는 수가 절반이 되면 답이 4배가 된다는 것(\((1/2)^2 = 1/4\))
확률의 기초(중학교 2학년~고등학교, 13~17세)
  • ‘방문 1,000회 중 30회 구매’처럼 비율을 확률(0~1의 수)로 다룰 수 있는 것
  • ‘실제로는 차이가 없는데 우연히 차이가 나올 수 있다’는 감각이 있는 것(동전을 10번 던져 앞면이 7번 나오는 일은 드물지 않습니다)
정규분포와 표준화(고등학교 확률과 통계, 16~18세)
  • 정규분포가 좌우 대칭인 종 모양이며, 평균에서 표준편차의 1.96배 범위에 약 95%가 들어간다는 것을 알고 있는 것
  • z값(표준점수)이 ‘평균에서 표준편차의 몇 배 떨어져 있는가’를 나타낸다는 것을 아는 것
가설검정의 사고방식(대학 기초 통계)
  • 귀무가설 ‘차이가 없다’를 세우고, 그 아래에서 데이터가 드물면 ‘차이가 있다’고 판정한다는 검정의 흐름을 아는 것
  • 유의수준 \(\alpha\)(차이가 없는데 있다고 말할 확률)와 검정력 \(1-\beta\)(차이가 있을 때 찾아낼 확률)가 서로 다른 두 가지 실패에 관한 것임을 아는 것
올림(초등학교 5학년, 10~11세)
  • 인원과 일수는 소수로 할 수 없으므로 53210.3명은 53211명, 53.211일은 54일처럼 올림해서 정수로 하는 이유를 아는 것

Excel로 계산하는 방법

아래 표를 통째로 복사해 Excel의 A1 셀에 붙여 넣으면 그대로 사용할 수 있습니다.
개선 후 전환율을 구하는 표(상대 % 지정)
기준 전환율 p1(%) 3
상대 개선 폭 r(%) 10
개선 후 전환율 p2(%) =B1*(1+B2/100)
그룹별 필요 표본 수를 구하는 표
기준 전환율 p1(%) 3
개선 후 전환율 p2(%) 3.3
유의수준 α(%, 양측) 5
검정력 1−β(%) 80
z_α/2 =NORM.S.INV(1-B3/100/2)
z_β =NORM.S.INV(B4/100)
평균 전환율 p̄ =(B1+B2)/2/100
그룹별 필요 표본 수 n(올림) =ROUNDUP((B5*SQRT(2*B7*(1-B7))+B6*SQRT(B1/100*(1-B1/100)+B2/100*(1-B2/100)))^2/((B2-B1)/100)^2,0)
필요 일수를 구하는 표
그룹별 필요 표본 수 n 53211
하루 유입 수 V(두 그룹 합계) 2000
필요 일수 D(올림) =ROUNDUP(2*B1/B2,0)
검정력을 구하는 표(그룹별 표본 수 고정)
기준 전환율 p1(%) 3
개선 후 전환율 p2(%) 3.3
유의수준 α(%, 양측) 5
그룹별 표본 수 n 30000
z_α/2 =NORM.S.INV(1-B3/100/2)
평균 전환율 p̄ =(B1+B2)/2/100
z_1−β =(ABS(B2-B1)/100*SQRT(B4)-B5*SQRT(2*B6*(1-B6)))/SQRT(B1/100*(1-B1/100)+B2/100*(1-B2/100))
검정력 1−β(%) =NORM.S.DIST(B7,TRUE)*100
붙여 넣으면 위쪽 행이 입력란이 되고, 마지막 행이 자동으로 계산된 결과가 됩니다.
첫 번째 표의 B3에는 3.3(개선 후 전환율 3.3%), 두 번째 표의 B8에는 53211(그룹별 필요 표본 수), 세 번째 표의 B3에는 54(필요 일수), 네 번째 표의 B8에는 약 55.71(검정력 55.71%)이 표시됩니다.
NORM.S.INV는 ‘확률 → z값’, NORM.S.DIST(두 번째 인수 TRUE)는 ‘z값 → 확률’로 바꾸는 함수입니다. 단측검정으로 하려면 z_α/2 식의 ‘/2’를 지워 =NORM.S.INV(1-B3/100)로 하세요. ROUNDUP(…,0)은 올림입니다.

Google 스프레드시트로 계산하는 방법

아래 표를 통째로 복사해 Google 스프레드시트의 A1 셀에 붙여 넣으면 그대로 사용할 수 있습니다.
개선 후 전환율을 구하는 표(상대 % 지정)
기준 전환율 p1(%) 3
상대 개선 폭 r(%) 10
개선 후 전환율 p2(%) =B1*(1+B2/100)
그룹별 필요 표본 수를 구하는 표
기준 전환율 p1(%) 3
개선 후 전환율 p2(%) 3.3
유의수준 α(%, 양측) 5
검정력 1−β(%) 80
z_α/2 =NORM.S.INV(1-B3/100/2)
z_β =NORM.S.INV(B4/100)
평균 전환율 p̄ =(B1+B2)/2/100
그룹별 필요 표본 수 n(올림) =ROUNDUP((B5*SQRT(2*B7*(1-B7))+B6*SQRT(B1/100*(1-B1/100)+B2/100*(1-B2/100)))^2/((B2-B1)/100)^2,0)
필요 일수를 구하는 표
그룹별 필요 표본 수 n 53211
하루 유입 수 V(두 그룹 합계) 2000
필요 일수 D(올림) =ROUNDUP(2*B1/B2,0)
검정력을 구하는 표(그룹별 표본 수 고정)
기준 전환율 p1(%) 3
개선 후 전환율 p2(%) 3.3
유의수준 α(%, 양측) 5
그룹별 표본 수 n 30000
z_α/2 =NORM.S.INV(1-B3/100/2)
평균 전환율 p̄ =(B1+B2)/2/100
z_1−β =(ABS(B2-B1)/100*SQRT(B4)-B5*SQRT(2*B6*(1-B6)))/SQRT(B1/100*(1-B1/100)+B2/100*(1-B2/100))
검정력 1−β(%) =NORM.S.DIST(B7,TRUE)*100
Excel과 같은 수식을 그대로 쓸 수 있습니다(Google 스프레드시트에도 NORM.S.INV, NORM.S.DIST, ROUNDUP이 있습니다). 표를 통째로 복사해 A1 셀에 붙여 넣고, B열의 입력란을 자신의 숫자로 바꾸세요.

Python으로 계산하는 방법

from math import sqrt, ceil
from statistics import NormalDist

base_cvr = 3.0          # 기준 전환율(%)
relative_mde = 10.0     # 검출하고 싶은 개선 폭(상대 %)
alpha = 0.05            # 유의수준(양측)
power = 0.80            # 검정력
daily_visits = 2000     # 하루 유입 수(두 그룹 합계)

p1 = base_cvr / 100
p2 = p1 * (1 + relative_mde / 100)          # 개선 후 전환율
z_alpha = NormalDist().inv_cdf(1 - alpha / 2)  # 단측검정이라면 1 - alpha
z_beta = NormalDist().inv_cdf(power)
p_bar = (p1 + p2) / 2

n_exact = (z_alpha * sqrt(2 * p_bar * (1 - p_bar))
           + z_beta * sqrt(p1 * (1 - p1) + p2 * (1 - p2))) ** 2 / (p2 - p1) ** 2
n_per_group = ceil(n_exact)                  # 그룹별 필요 표본 수(올림)
days = ceil(2 * n_per_group / daily_visits)  # 필요 일수

print(f"개선 후 전환율: {p2 * 100:.4g}%")
print(f"그룹별 필요 표본 수: {n_per_group}명(합계 {2 * n_per_group}명)")
print(f"필요 일수: {days}일")

# 역산: 그룹별 30,000명일 때의 검정력
n_fixed = 30000
z_power = (abs(p2 - p1) * sqrt(n_fixed) - z_alpha * sqrt(2 * p_bar * (1 - p_bar))) \
          / sqrt(p1 * (1 - p1) + p2 * (1 - p2))
print(f"그룹별 {n_fixed}명일 때의 검정력: {NormalDist().cdf(z_power) * 100:.2f}%")
표준 라이브러리만으로 실행됩니다(statistics.NormalDist는 Python 3.8 이상). 이 예에서는 개선 후 전환율 3.3%, 그룹별 필요 표본 수 53211명(합계 106422명), 필요 일수 54일, 그룹별 30,000명일 때의 검정력 약 55.71%가 출력됩니다. 맨 위의 값을 바꿔서 실행해 보세요.

LaTeX 등 수식 언어로 쓰는 법(복사 가능)

개선 후 전환율(B안에 기대하는 전환율)을 구하는 공식
p₂ = p₁ × (1 + r/100)
p_2 = p_1 \left(1 + \dfrac{r}{100}\right)
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
  <mrow>
    <msub><mi>p</mi><mn>2</mn></msub>
    <mo>=</mo>
    <msub><mi>p</mi><mn>1</mn></msub>
    <mo>(</mo><mn>1</mn><mo>+</mo><mfrac><mi>r</mi><mn>100</mn></mfrac><mo>)</mo>
  </mrow>
</math>
p_2 = p_1 (1 + r/100)
p1*(1 + r/100)
p2 := p1*(1 + r/100);
p2 = p1*(1 + r/100);
p_2 = p_1 (1 + r/100)
그룹별 필요 표본 수를 구하는 공식(두 비율 z검정)
n = (z_α/2 √(2p̄(1 − p̄)) + z_β √(p₁(1 − p₁) + p₂(1 − p₂)))² ÷ (p₂ − p₁)²
n = \dfrac{\left( z_{\alpha/2}\sqrt{2\bar{p}(1-\bar{p})} + z_{\beta}\sqrt{p_1(1-p_1)+p_2(1-p_2)} \right)^2}{(p_2 - p_1)^2}
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
  <mrow>
    <mi>n</mi>
    <mo>=</mo>
    <mfrac>
      <msup>
        <mrow>
          <mo>(</mo>
          <msub><mi>z</mi><mrow><mi>&#x3B1;</mi><mo>/</mo><mn>2</mn></mrow></msub>
          <msqrt><mn>2</mn><mover><mi>p</mi><mo>&#xAF;</mo></mover><mo>(</mo><mn>1</mn><mo>&#x2212;</mo><mover><mi>p</mi><mo>&#xAF;</mo></mover><mo>)</mo></msqrt>
          <mo>+</mo>
          <msub><mi>z</mi><mi>&#x3B2;</mi></msub>
          <msqrt>
            <msub><mi>p</mi><mn>1</mn></msub><mo>(</mo><mn>1</mn><mo>&#x2212;</mo><msub><mi>p</mi><mn>1</mn></msub><mo>)</mo>
            <mo>+</mo>
            <msub><mi>p</mi><mn>2</mn></msub><mo>(</mo><mn>1</mn><mo>&#x2212;</mo><msub><mi>p</mi><mn>2</mn></msub><mo>)</mo>
          </msqrt>
          <mo>)</mo>
        </mrow>
        <mn>2</mn>
      </msup>
      <msup>
        <mrow><mo>(</mo><msub><mi>p</mi><mn>2</mn></msub><mo>&#x2212;</mo><msub><mi>p</mi><mn>1</mn></msub><mo>)</mo></mrow>
        <mn>2</mn>
      </msup>
    </mfrac>
  </mrow>
</math>
n = (z_(alpha/2) sqrt(2 bar p (1 - bar p)) + z_beta sqrt(p_1(1 - p_1) + p_2(1 - p_2)))^2 / (p_2 - p_1)^2
Ceiling[(za*Sqrt[2*pbar*(1 - pbar)] + zb*Sqrt[p1*(1 - p1) + p2*(1 - p2)])^2/(p2 - p1)^2]
n := ceil((za*sqrt(2*pbar*(1 - pbar)) + zb*sqrt(p1*(1 - p1) + p2*(1 - p2)))^2/(p2 - p1)^2);
n = ceil((za*sqrt(2*pbar*(1 - pbar)) + zb*sqrt(p1*(1 - p1) + p2*(1 - p2)))^2/(p2 - p1)^2);
n = (z_(α/2) √(2p̄(1 − p̄)) + z_β √(p_1(1 − p_1) + p_2(1 − p_2)))^2/(p_2 − p_1)^2
필요 일수를 구하는 공식(하루 유입 수로)
D = ⌈2n ÷ V⌉
D = \left\lceil \dfrac{2n}{V} \right\rceil
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
  <mrow>
    <mi>D</mi>
    <mo>=</mo>
    <mo>&#x2308;</mo>
    <mfrac><mrow><mn>2</mn><mi>n</mi></mrow><mi>V</mi></mfrac>
    <mo>&#x2309;</mo>
  </mrow>
</math>
D = |~ (2n)/V ~|
Ceiling[2*n/v]
days := ceil(2*n/V);
D = ceil(2*n/V);
D = ⌈2n/V⌉
검정력을 구하는 공식(그룹별 표본 수를 고정했을 때)
1 − β = Φ((|p₂ − p₁|√n − z_α/2 √(2p̄(1 − p̄))) ÷ √(p₁(1 − p₁) + p₂(1 − p₂)))
1 - \beta = \Phi\left( \dfrac{|p_2 - p_1|\sqrt{n} - z_{\alpha/2}\sqrt{2\bar{p}(1-\bar{p})}}{\sqrt{p_1(1-p_1)+p_2(1-p_2)}} \right)
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
  <mrow>
    <mn>1</mn><mo>&#x2212;</mo><mi>&#x3B2;</mi>
    <mo>=</mo>
    <mi>&#x3A6;</mi>
    <mo>(</mo>
    <mfrac>
      <mrow>
        <mo>|</mo><msub><mi>p</mi><mn>2</mn></msub><mo>&#x2212;</mo><msub><mi>p</mi><mn>1</mn></msub><mo>|</mo>
        <msqrt><mi>n</mi></msqrt>
        <mo>&#x2212;</mo>
        <msub><mi>z</mi><mrow><mi>&#x3B1;</mi><mo>/</mo><mn>2</mn></mrow></msub>
        <msqrt><mn>2</mn><mover><mi>p</mi><mo>&#xAF;</mo></mover><mo>(</mo><mn>1</mn><mo>&#x2212;</mo><mover><mi>p</mi><mo>&#xAF;</mo></mover><mo>)</mo></msqrt>
      </mrow>
      <msqrt>
        <msub><mi>p</mi><mn>1</mn></msub><mo>(</mo><mn>1</mn><mo>&#x2212;</mo><msub><mi>p</mi><mn>1</mn></msub><mo>)</mo>
        <mo>+</mo>
        <msub><mi>p</mi><mn>2</mn></msub><mo>(</mo><mn>1</mn><mo>&#x2212;</mo><msub><mi>p</mi><mn>2</mn></msub><mo>)</mo>
      </msqrt>
    </mfrac>
    <mo>)</mo>
  </mrow>
</math>
1 - beta = Phi((|p_2 - p_1| sqrt(n) - z_(alpha/2) sqrt(2 bar p (1 - bar p))) / sqrt(p_1(1 - p_1) + p_2(1 - p_2)))
CDF[NormalDistribution[0, 1], (Abs[p2 - p1]*Sqrt[n] - za*Sqrt[2*pbar*(1 - pbar)])/Sqrt[p1*(1 - p1) + p2*(1 - p2)]]
power := Statistics[CDF](Normal(0, 1), (abs(p2 - p1)*sqrt(n) - za*sqrt(2*pbar*(1 - pbar)))/sqrt(p1*(1 - p1) + p2*(1 - p2)));
power = normcdf((abs(p2 - p1)*sqrt(n) - za*sqrt(2*pbar*(1 - pbar)))/sqrt(p1*(1 - p1) + p2*(1 - p2)));
1 − β = Φ((|p_2 − p_1| √n − z_(α/2) √(2p̄(1 − p̄)))/√(p_1(1 − p_1) + p_2(1 − p_2)))

ChatGPT 에게 물어서 계산하는 방법

당신은 A/B 테스트 설계 도우미입니다. 다음 계산을 Python 코드를 실제로 실행해서 하고, 실행 결과의 숫자만을 근거로 답해 주세요(암산이나 추측으로 답하지 마세요).

지금 페이지의 전환율(기준 전환율)은 3%입니다. B안으로 상대 10%의 개선(전환율 3.3%)을 검출할 수 있게 하고 싶습니다.
유의수준 5%(양측검정), 검정력 80%로 다음을 각각 구해 주세요.
1. 개선 후 전환율 p2(p2 = p1 × (1 + 10/100))
2. 그룹별 필요 표본 수 n(두 비율 z검정의 공식: n = (z_{α/2}·√(2p̄(1−p̄)) + z_β·√(p1(1−p1)+p2(1−p2)))² ÷ (p2−p1)², p̄ = (p1+p2)/2, 올림)과 A·B 합계 표본 수
3. 하루 유입 수가 2,000회(A·B 합계)일 때의 필요 일수(올림)
4. 그룹마다 30,000명밖에 모을 수 없을 때의 검정력(1−β = Φ((|p2−p1|·√n − z_{α/2}·√(2p̄(1−p̄))) ÷ √(p1(1−p1)+p2(1−p2))))

z값과 누적분포함수에는 statistics.NormalDist를 사용하고, 사용한 공식과 실행 결과의 숫자를 함께 보여 주세요.

사용법
  1. 1
    숫자 입력
    계산하고 싶은 숫자를 입력란에 입력합니다
  2. 2
    계산
    ‘계산’ 버튼을 누릅니다
  3. 3
    결과 확인
    계산 결과가 바로 표시됩니다. 계산의 원리와 공식 해설도 같은 페이지에서 확인할 수 있습니다
  DataChef의 특징
간단하고 무료
무료로 횟수 제한 없이 변환
전문 지식 없이도 직관적이고 간단하게 사용
회원가입 불필요
접속 즉시 바로 사용 가능
개인정보를 등록하지 않고도 이용할 수 있습니다
안전하고 안심
통신을 강력하게 암호화
"다운로드"를 누르면 파일이 자동으로 삭제됩니다
빠른 속도
기다림 없는 쾌적한 표시 속도와 변환 속도
워터마크 없음
워터마크 없음
출처 표기 불필요
상업적 이용 가능
무료로 상업적 이용 가능
상업적 이용 허가 연락도 필요 없습니다