‘필요 표본 수’에서는 기준 전환율, 검출하고 싶은 개선 폭(MDE), 유의수준, 검정력을 입력하고 ‘계산’을 누르세요. A·B 그룹별 필요 표본 수(올림)와 합계, 하루 유입 수를 넣으면 필요한 일수까지 표시합니다. ‘구할 값’을 ‘검정력’으로 바꾸면 그룹별 표본 수를 고정했을 때의 검정력 1 − β를 구합니다.
이 페이지에서 할 수 있는 것
- 기준 전환율(지금 A안의 전환율), 검출하고 싶은 개선 폭(MDE. 상대 % 또는 %p로 지정), 유의수준 \(\alpha\)(양측·단측), 검정력 \(1-\beta\)만 넣으면 A/B 테스트의 그룹별 필요 표본 수(올림)와 합계를 계산합니다
- ‘전환율 3%인 페이지에서 10% 개선(3% → 3.3%)을 검출하려면 A·B에 각각 몇 명이 필요할까?’ 테스트를 시작하기 전에 가장 중요한 이 질문을 한 번에 해결합니다
- 하루 유입 수(선택)를 넣으면 필요한 인원이 모일 때까지의 일수(올림)도 알 수 있습니다
- 반대로 ‘그룹마다 이만큼의 인원밖에 모을 수 없다’면 표본 수를 고정하고 검정력 \(1-\beta\)(실제로 차이가 있을 때 그것을 찾아낼 확률)를 역산할 수 있습니다
- 개선 폭을 바꾸면 필요 표본 수가 얼마나 달라지는지 보여 주는 그래프, 공식의 쉬운 해설, Excel·Google 스프레드시트·Python용으로 복사해 쓰는 수식도 이 페이지에 정리되어 있습니다
이 계산은 어디에 쓰일까요?
쇼핑몰 상품 페이지의 전환율이 2%이고, 버튼 문구를 바꿔 상대 10%(2% → 2.2%)의 개선을 검출하고 싶다고 합시다. 유의수준 5%(양측), 검정력 80%라면 그룹마다 약 80,682명, 합계 약 161,364명이 필요합니다.
수십~수백 명으로 비교해서는(‘지난주는 B가 좋았다’) 우연한 차이와 진짜 차이를 구별할 수 없습니다. 시작하기 전에 필요 표본 수를 계산해 두면 답이 나올 수 없는 테스트에 몇 주를 허비하지 않게 됩니다.
무료 체험·상담 신청의 전환율이 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)도 크기 때문에, 몇 % 수준의 전환율 테스트보다 빨리 결과가 나옵니다. 지표마다 필요 표본 수를 어림해 두면 어떤 개선부터 손댈지 정하는 데도 도움이 됩니다.
가격 표시 방법 변경처럼 좋은 아이디어를 놓치면 손실이 큰 테스트에서는 검정력을 80%에서 90%로 올릴 수 있습니다. 전환율 3%, 상대 10% 개선이라면 그룹별 필요 표본 수는 53,211명에서 71,233명(약 1.34배)으로 늘어납니다.
이 계산으로 놓침을 절반(20%에서 10%)으로 줄이는 데 인원이 얼마나 더 필요한지 정확히 알 수 있으므로, 테스트의 중요도에 맞춰 표본 수와 기간을 정할 수 있습니다.
공식과 그림
용어·기호 해설
기호
| \(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학년, 14~15세) |
|
| 확률의 기초(중학교 2학년~고등학교, 13~17세) |
|
| 정규분포와 표준화(고등학교 확률과 통계, 16~18세) |
|
| 가설검정의 사고방식(대학 기초 통계) |
|
| 올림(초등학교 5학년, 10~11세) |
|
Excel로 계산하는 방법
| 기준 전환율 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 스프레드시트로 계산하는 방법
| 기준 전환율 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 |
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}%")
LaTeX 등 수식 언어로 쓰는 법(복사 가능)
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)
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>α</mi><mo>/</mo><mn>2</mn></mrow></msub>
<msqrt><mn>2</mn><mover><mi>p</mi><mo>¯</mo></mover><mo>(</mo><mn>1</mn><mo>−</mo><mover><mi>p</mi><mo>¯</mo></mover><mo>)</mo></msqrt>
<mo>+</mo>
<msub><mi>z</mi><mi>β</mi></msub>
<msqrt>
<msub><mi>p</mi><mn>1</mn></msub><mo>(</mo><mn>1</mn><mo>−</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>−</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>−</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>⌈</mo>
<mfrac><mrow><mn>2</mn><mi>n</mi></mrow><mi>V</mi></mfrac>
<mo>⌉</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>−</mo><mi>β</mi>
<mo>=</mo>
<mi>Φ</mi>
<mo>(</mo>
<mfrac>
<mrow>
<mo>|</mo><msub><mi>p</mi><mn>2</mn></msub><mo>−</mo><msub><mi>p</mi><mn>1</mn></msub><mo>|</mo>
<msqrt><mi>n</mi></msqrt>
<mo>−</mo>
<msub><mi>z</mi><mrow><mi>α</mi><mo>/</mo><mn>2</mn></mrow></msub>
<msqrt><mn>2</mn><mover><mi>p</mi><mo>¯</mo></mover><mo>(</mo><mn>1</mn><mo>−</mo><mover><mi>p</mi><mo>¯</mo></mover><mo>)</mo></msqrt>
</mrow>
<msqrt>
<msub><mi>p</mi><mn>1</mn></msub><mo>(</mo><mn>1</mn><mo>−</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>−</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숫자 입력계산하고 싶은 숫자를 입력란에 입력합니다
-
2계산‘계산’ 버튼을 누릅니다
-
3결과 확인계산 결과가 바로 표시됩니다. 계산의 원리와 공식 해설도 같은 페이지에서 확인할 수 있습니다
DataChef의 특징
전문 지식 없이도 직관적이고 간단하게 사용
개인정보를 등록하지 않고도 이용할 수 있습니다
"다운로드"를 누르면 파일이 자동으로 삭제됩니다
출처 표기 불필요
상업적 이용 허가 연락도 필요 없습니다