Bookmarks    
P値の計算    
比の計算    
行列式    
逆行列    
円の計算    
球の体積    
年齢計算    
日数計算    
曜日計算    
時差計算    
複利計算    
単利計算    
利息計算    
ROIの計算    
IRRの計算    
GDPの計算    
CAGR計算    
BMI計算機    
TDEE計算機    
1RM計算機    
露点温度    
進数変換    
給与換算    
燃費計算    
生コン量    
外壁面積    
   追加
確率・ランダムの計算ツール
2つの独立な事象の確率
2つの独立な事象の確率
2つの事象の確率(逆算)
2つの事象の確率(逆算)
くり返したときの確率
くり返したときの確率
条件付き確率・ベイズの定理
条件付き確率・ベイズの定理
期待値計算機
期待値計算機
二項分布の計算機
二項分布の計算機
順列・組み合わせ
順列・組み合わせ
円順列・じゅず順列
円順列・じゅず順列
重複順列・重複組合せ
重複順列・重複組合せ
乱数ジェネレーター
乱数ジェネレーター
平均・統計の計算ツール
平均計算機
平均計算機
代表値計算機(最頻値ほか)
代表値計算機(最頻値ほか)
標準偏差計算機
標準偏差計算機
四分位数計算機
四分位数計算機
度数分布表 計算機
度数分布表 計算機
相関係数計算機
相関係数計算機
正規分布の確率
正規分布の確率
Zスコアの計算
Zスコアの計算
信頼区間の計算
信頼区間の計算
サンプルサイズの計算
サンプルサイズの計算
標本調査の計算
標本調査の計算
P値の計算
P値の計算
割合・パーセントの計算ツール
割合・パーセントの計算
割合・パーセントの計算
増減率の計算
増減率の計算
パーセント差
パーセント差
誤差率の計算
誤差率の計算
比の計算
比の計算
割引計算機
割引計算機
消費税の計算
消費税の計算
利益率計算機
利益率計算機
速さの計算ツール
速さ計算機
速さ計算機
密度・濃度の計算ツール
密度計算機
密度計算機
モル濃度計算機
モル濃度計算機
分子量・モル質量
分子量・モル質量
物理・電気工学の計算ツール
オームの法則の計算
オームの法則の計算
W・A・V の相互換算
W・A・V の相互換算
抵抗器カラーコードの計算
抵抗器カラーコードの計算
電圧降下の計算
電圧降下の計算
単位の換算の計算ツール
坪・畳・㎡換算
坪・畳・㎡換算
重さの単位換算
重さの単位換算
靴サイズの変換
靴サイズの変換
整数・正負の数の計算ツール
割り算の筆算(商と余り)
割り算の筆算(商と余り)
最小公倍数計算機
最小公倍数計算機
最大公約数
最大公約数
正負の数の計算機
正負の数の計算機
素因数分解
素因数分解
一次不定方程式計算機
一次不定方程式計算機
合同式・余りの計算機
合同式・余りの計算機
約数計算機
約数計算機
ローマ数字変換
ローマ数字変換
分数・小数・端数処理の計算ツール
分数計算機
分数計算機
帯分数計算機
帯分数計算機
約分計算機
約分計算機
分数から小数への変換
分数から小数への変換
小数から分数への変換
小数から分数への変換
四捨五入・切り上げ・切り捨て
四捨五入・切り上げ・切り捨て
方程式・不等式の計算ツール
一次方程式計算機
一次方程式計算機
連立方程式計算機
連立方程式計算機
二次方程式の解の公式
二次方程式の解の公式
絶対値の方程式・不等式
絶対値の方程式・不等式
二次不等式 計算機
二次不等式 計算機
三次方程式計算機
三次方程式計算機
多項式・式の展開の計算ツール
文字式の計算機
文字式の計算機
因数分解計算機
因数分解計算機
式の展開 計算機
式の展開 計算機
多項式の割り算計算機
多項式の割り算計算機
二項定理の計算機
二項定理の計算機
平方根・n乗根の計算ツール
根号の簡約
根号の簡約
分母の有理化
分母の有理化
累乗根の計算
累乗根の計算
指数・対数の計算ツール
べき乗計算機
べき乗計算機
対数計算機
対数計算機
常用対数と桁数
常用対数と桁数
科学的記数法
科学的記数法
科学的記数法の計算
科学的記数法の計算
半減期計算機
半減期計算機
複素数の計算ツール
複素数計算機
複素数計算機
複素数の極形式変換
複素数の極形式変換
ド・モアブルの定理
ド・モアブルの定理
関数・グラフの計算ツール
直線の傾きの計算
直線の傾きの計算
一次関数計算機
一次関数計算機
比例・反比例 計算機
比例・反比例 計算機
二次関数 y=ax² 計算機
二次関数 y=ax² 計算機
2点間の距離の計算
2点間の距離の計算
3D空間の2点間の距離の計算
3D空間の2点間の距離の計算
内分点・外分点の計算
内分点・外分点の計算
点と直線の距離 計算機
点と直線の距離 計算機
緯度経度の距離計算
緯度経度の距離計算
平方完成 計算機
平方完成 計算機
円の方程式 計算機
円の方程式 計算機
二次曲線計算機
二次曲線計算機
極座標と直交座標の変換
極座標と直交座標の変換
微分・積分の計算ツール
極限計算機
極限計算機
導関数計算機
導関数計算機
微分公式の計算機
微分公式の計算機
接線・法線 計算機
接線・法線 計算機
定積分計算機
定積分計算機
不定積分計算機
不定積分計算機
2曲線間の面積
2曲線間の面積
回転体の体積 計算機
回転体の体積 計算機
数列の計算ツール
等差数列の計算
等差数列の計算
等比数列の計算
等比数列の計算
Σ(シグマ)計算機
Σ(シグマ)計算機
フィボナッチ数列の計算
フィボナッチ数列の計算
漸化式計算機
漸化式計算機
ベクトルの計算ツール
ベクトルの計算
ベクトルの計算
外積の計算
外積の計算
行列の計算ツール
行列の計算
行列の計算
行列式
行列式
逆行列
逆行列
平面図形の計算ツール
三角比の計算
三角比の計算
度とラジアンの変換
度とラジアンの変換
三角関数の合成
三角関数の合成
三角形計算機
三角形計算機
三角形の面積計算機
三角形の面積計算機
直角三角形の計算
直角三角形の計算
三平方の定理の計算
三平方の定理の計算
多角形の内角・外角
多角形の内角・外角
相似比・面積比・体積比
相似比・面積比・体積比
平行線と角
平行線と角
長方形の面積
長方形の面積
平行四辺形の面積
平行四辺形の面積
台形の面積
台形の面積
円の計算
円の計算
扇形の面積
扇形の面積
円周角の定理
円周角の定理
楕円の面積
楕円の面積
空間図形の計算ツール
立方体の体積
立方体の体積
立方体の表面積
立方体の表面積
直方体の体積
直方体の体積
直方体の表面積
直方体の表面積
円柱の体積
円柱の体積
円柱の表面積
円柱の表面積
球の体積
球の体積
球の表面積
球の表面積
球欠(球冠)の体積
球欠(球冠)の体積
球冠の表面積
球冠の表面積
楕円体の体積
楕円体の体積
楕円体の表面積
楕円体の表面積
四角錐の体積
四角錐の体積
四角錐の表面積
四角錐の表面積
円錐の体積
円錐の体積
円錐の表面積
円錐の表面積
円錐台の体積
円錐台の体積
円錐台の表面積
円錐台の表面積
パイプ(管)の体積
パイプ(管)の体積
カプセル形の体積
カプセル形の体積
カプセルの表面積
カプセルの表面積
日付・時間の計算ツール
年齢計算
年齢計算
日数計算
日数計算
○日後・○日前の日付
○日後・○日前の日付
○時間後・○時間前の日時
○時間後・○時間前の日時
曜日計算
曜日計算
時間の足し算・引き算
時間の足し算・引き算
時差計算
時差計算
勤務時間計算
勤務時間計算
時間差の計算
時間差の計算
タイムカード計算
タイムカード計算
金融・経済の計算ツール
複利計算
複利計算
単利計算
単利計算
利息計算
利息計算
ファイナンス計算機
ファイナンス計算機
現在価値の計算
現在価値の計算
将来価値の計算
将来価値の計算
ROIの計算
ROIの計算
IRRの計算
IRRの計算
回収期間の計算
回収期間の計算
平均リターンの計算
平均リターンの計算
GDPの計算
GDPの計算
Webマーケ・広告指標の計算ツール
クリック率(CTR)の計算
クリック率(CTR)の計算
コンバージョン率(CVR)の計算
コンバージョン率(CVR)の計算
CPC・CPM・CPA計算機
CPC・CPM・CPA計算機
ROAS(広告費用対効果)の計算
ROAS(広告費用対効果)の計算
損益分岐CPA・許容CPA計算機
損益分岐CPA・許容CPA計算機
顧客生涯価値(LTV)の計算
顧客生涯価値(LTV)の計算
顧客獲得コスト(CAC)とLTV/CAC比
顧客獲得コスト(CAC)とLTV/CAC比
チャーン率(解約率)と平均継続期間
チャーン率(解約率)と平均継続期間
A/Bテストの有意差判定
A/Bテストの有意差判定
A/Bテストの必要サンプル数
A/Bテストの必要サンプル数
検索順位別CTRからの想定流入数
検索順位別CTRからの想定流入数
損益分岐点計算機
損益分岐点計算機
値入率・掛率換算
値入率・掛率換算
CAGR計算
CAGR計算
健康・フィットネスの計算ツール
BMI計算機
BMI計算機
睡眠サイクル計算
睡眠サイクル計算
カロリー計算機
カロリー計算機
基礎代謝量計算機
基礎代謝量計算機
TDEE計算機
TDEE計算機
理想体重計算機
理想体重計算機
体脂肪率計算機
体脂肪率計算機
除脂肪体重計算機
除脂肪体重計算機
消費カロリー計算機
消費カロリー計算機
たんぱく質摂取量計算機
たんぱく質摂取量計算機
PFCバランス計算機
PFCバランス計算機
炭水化物摂取量計算機
炭水化物摂取量計算機
脂質摂取量計算機
脂質摂取量計算機
子供の身長予測
子供の身長予測
スポーツの計算ツール
ゴルフハンディキャップ
ゴルフハンディキャップ
ペース計算機
ペース計算機
1RM計算機
1RM計算機
目標心拍数計算機
目標心拍数計算機
気象の計算ツール
ヒートインデックス
ヒートインデックス
ウインドチル
ウインドチル
露点温度
露点温度
コンピュータの計算ツール
進数変換
進数変換
IPサブネット計算機
IPサブネット計算機
帯域幅・ダウンロード時間の計算機
帯域幅・ダウンロード時間の計算機
家計・光熱費の計算ツール
電気代計算
電気代計算
kWh→電気代・逆算
kWh→電気代・逆算
年間消費電力量→電気代
年間消費電力量→電気代
エアコン畳数・能力
エアコン畳数・能力
エアコンの電気代計算
エアコンの電気代計算
暖房の電気代比較
暖房の電気代比較
ガスと電気の光熱費比較
ガスと電気の光熱費比較
LED交換の節約額
LED交換の節約額
給与換算
給与換算
家計収支の計算
家計収支の計算
自動車の計算ツール
ガソリン代計算
ガソリン代計算
EV充電コスト
EV充電コスト
EVとガソリン車の燃料費比較
EVとガソリン車の燃料費比較
燃費計算
燃費計算
タイヤサイズ計算
タイヤサイズ計算
太陽光発電・蓄電池の計算ツール
太陽光発電の発電量
太陽光発電の発電量
太陽光パネルの枚数と面積
太陽光パネルの枚数と面積
太陽光発電の回収年数
太陽光発電の回収年数
蓄電池の必要容量と持ち時間
蓄電池の必要容量と持ち時間
住まい・DIYの計算ツール
タイル枚数
タイル枚数
階段の寸法
階段の寸法
生コン量
生コン量
壁・天井・床の面積
壁・天井・床の面積
壁紙の必要量
壁紙の必要量
塗料の必要量
塗料の必要量
フローリング枚数
フローリング枚数
外壁面積
外壁面積
砂利の必要量
砂利の必要量
モルタルの配合
モルタルの配合
勾配の計算
勾配の計算
木材の取り数
木材の取り数
建ぺい率・容積率
建ぺい率・容積率
クッションフロア必要量
クッションフロア必要量
畳の枚数と広さ
畳の枚数と広さ
断熱材の必要量
断熱材の必要量
カーテンのサイズ
カーテンのサイズ
テレビのサイズと視聴距離
テレビのサイズと視聴距離
土・培養土の必要量
土・培養土の必要量
芝生の必要枚数
芝生の必要枚数
ブロック塀の個数
ブロック塀の個数
レンガの必要枚数
レンガの必要枚数
ウッドデッキの材料
ウッドデッキの材料
スロープの必要長さ
スロープの必要長さ
ネジの下穴径と長さ
ネジの下穴径と長さ
容積と必要換気量
容積と必要換気量
塗料の希釈計算
塗料の希釈計算
巾木・廻り縁の長さ
巾木・廻り縁の長さ
ブラインドの採寸
ブラインドの採寸
額縁の取り付け高さと配置
額縁の取り付け高さと配置
排水勾配と高低差
排水勾配と高低差
ビス・釘の必要本数
ビス・釘の必要本数
木材の材積(m³・才)
木材の材積(m³・才)
フェンスの本数
フェンスの本数
木材の収縮量(含水率変化)
木材の収縮量(含水率変化)
接着剤・コーキングの必要量
接着剤・コーキングの必要量
部屋の熱損失の目安
部屋の熱損失の目安
家具の搬入可否
家具の搬入可否
引越しのダンボール枚数
引越しのダンボール枚数
収納・棚の容量
収納・棚の容量
板取り計算
板取り計算
棚板のたわみと耐荷重
棚板のたわみと耐荷重

A/Bテストの必要サンプル数計算機(MDE・有意水準・検出力から各群の人数と必要日数)

「必要サンプル数を求める」では、ベースCVR・検出したい改善幅(MDE)・有意水準・検出力を入力して「計算する」を押してください。A/Bの各群に必要なサンプル数(切り上げ)と合計を計算し、1日あたりの流入数を入れると必要日数も表示します。「検出力を求める」に切り替えると、各群のサンプル数を固定して検出力 1−β を逆算します。

CVRと改善幅は%の数値で入力してください(3%なら「3」、10%の改善なら「10」)。改善幅は「相対%」(3%→3.3%なら10%)と「絶対ポイント」(3%→3.3%なら0.3)のどちらでも指定できます。1日あたりの流入数はA・B両群の合計(テスト対象ページ全体の訪問数)を入れてください。
計算結果・グラフ
左の入力欄に値を入れて「計算する」を押すと、ここに結果と「改善幅→必要サンプル数」のグラフが表示されます。

このページでできること

  • ベースCVR(今のA案の転換率)・検出したい改善幅(MDE。相対%か絶対ポイントで指定)・有意水準 \(\alpha\)(両側/片側)・検出力 \(1-\beta\) を入れるだけで、A/Bテストの各群に必要なサンプル数(切り上げ)と合計を計算します
  • 「CVR3%のページで10%の改善(3%→3.3%)を検出するには、A・Bそれぞれ何人必要?」——テストを始める前の一番大事な疑問がこれ1つで解決します
  • 1日あたりの流入数(任意)を入れると、必要な人数が集まるまでの日数(切り上げ)もわかります
  • 逆に「各群にこれだけの人数しか集められない」ときは、サンプル数を固定して検出力 \(1-\beta\)(本当に差があるときにそれを見つけられる確率)を逆算できます
  • 改善幅を変えると必要サンプル数がどれだけ変わるかのグラフ、式のやさしい解説・Excel/Googleスプレッドシート/Python用のコピペ数式・計算ドリル(演習問題)もこのページにまとまっています
このページは「A案とB案のCVR(転換率)に差があるか」を確かめるA/Bテスト専用で、2標本比率の差の検定(z検定)の標準的な式を使います。アンケートなどで「1つの割合を精度よく知りたい」ときの人数は「サンプルサイズ計算機」、実際に集めた結果からP値を見るときは「P値計算機」の領分です。必要サンプル数を満たしても「有意差あり=効果が確実」とは限らない点は、式の解説の注意もあわせてお読みください。

この計算は何の役に立つ?

ECサイトの「購入ボタン」のA/Bテストを設計する

商品ページのCVRが2%のネットショップで、ボタンの文言を変えて相対10%の改善(2%→2.2%)を検出したいとします。有意水準5%(両側)・検出力80%なら、各群に約80,682人、合計約161,364人の訪問が必要です。
「先週はB案の方が良かった」という数十人・数百人の比較では、偶然の差と本当の差を区別できません。始める前に人数を計算しておくことで、「結果が出ない実験」に何週間も費やすのを防げます。

BtoB SaaSのランディングページを何日テストするか決める

資料請求のCVRが5%のランディングページで、1ポイントの改善(5%→6%)を検出するには各群8,158人、合計16,316人が必要です。1日300人の訪問なら \(16316 \div 300 \fallingdotseq 54.4\) で55日、曜日のかたよりをそろえるなら8週間が目安になります。
「2週間で結果を出したい」という要望に対して、この計算があれば「2週間(4,200人=各群2,100人)では、改善幅を3ポイント(5%→8%。各群1,059人)程度まで大きく取り直す必要がある」と数字で説明できます。

メールマガジンの件名テスト(開封率の比較)

開封率20%のメールマガジンで、件名を変えて2ポイントの改善(20%→22%)を検出したいなら、各群6,510人、合計13,020人に配信する必要があります(有意水準5%・検出力80%)。
開封率のように率が大きい指標は、CVRが数%の指標よりも少ない人数で差を検出できます。式の \(p(1-p)\) の部分が違うためで、同じ「2ポイント」でも指標によって必要人数が変わることがわかります。

「差がなかった」テストを結論づける前に検出力を確かめる

CVR3%のページで相対10%の改善を狙ったテストを各群5,000人で行い、「有意差なし」だったとします。検出力を逆算すると約13.5%しかなく、本当に改善していても8割以上の確率で見逃す設計だったことがわかります。
この場合の正しい結論は「効果がなかった」ではなく「この人数では判断できなかった」です。検出力の逆算は、テスト結果を読み違えて良い案を捨ててしまうことを防ぎます。

アプリの初回チュートリアル改善で継続率を比べる

翌日継続率が40%のアプリで、チュートリアルを変えて相対10%の改善(40%→44%)を検出したい場合、各群約2,389人、合計約4,778人の新規ユーザーで足ります(有意水準5%・検出力80%)。
継続率のように50%に近い指標はばらつきが大きい分、率の差(4ポイント)も大きいので、CVRが数%のテストより短期間で結果が出ます。指標ごとに必要人数を見積もっておくと、どの改善から手を付けるかの優先順位も決めやすくなります。

見逃したくないテストは検出力90%で設計する

価格表示の変更のように「良い案を見逃すと損失が大きい」テストでは、検出力を80%から90%に上げる設計が考えられます。CVR3%・相対10%の改善では、各群の必要人数が53,211人から71,233人に増えます(約1.34倍)。
「何人増やせば見逃しを半分(20%→10%)に減らせるか」がこの計算で具体的にわかるので、テストの重要度に応じて人数と期間を配分できます。

式と図

改善後のCVR(B案に期待するCVR)を求める式
数学表記 (一般的な数式)
\(p_2\) \(=\) \(p_1\) \(\times\) \(\left(1 + \dfrac{r}{100}\right)\)
\(p_2\) \(=\) \(p_1\) \(+\) \(d\)
日本語表記 (記号を日本語に置き換えた式)
③ 改善後のCVR \(p_2\) \(=\) ① ベースCVR \(p_1\) \(\times\) ② \(1 +\) 相対改善幅 \(r \div 100\)
改善後のCVR \(p_2\) \(=\) ベースCVR \(p_1\) \(+\) ④ 絶対ポイントの改善幅 \(d\)
式を日本語で読むと
① ベースCVR \(p_1\) に
② \(1 +\) 相対改善幅 \(r \div 100\) を掛けると
③ 改善後のCVR \(p_2\) になる
④ (改善幅を絶対ポイントで指定するときは、ベースCVR \(p_1\) に 絶対ポイントの改善幅 \(d\) をそのまま足したものが改善後のCVRになる)
簡単な例
ベースCVRが3%で、相対10%の改善を検出したいときの改善後のCVRは
改善後のCVR \(p_2\) \(=\) ベースCVR(3%) \(\times\) \(1 + 10 \div 100\)
\(3 \times (1 + 10 \div 100) = 3 \times 1.1 = 3.3\ \ (3.3\%)\)
考え方のポイント
「10%の改善」には2つの意味があるので注意してください。相対%なら「3%の1割増し=3.3%」、絶対ポイントなら「3%+10ポイント=13%」で、必要サンプル数はまったく違う値になります。マーケティングの現場では「CVRを10%改善」は相対%の意味で使われることが多く、このページの初期設定も相対%です。 改善後のCVR \(p_2\) は「B案が実際にこうなる」という予想ではなく、「これくらいの差があるなら見逃したくない」という検出の下限(MDE)です。差がこれより小さいときは、必要サンプル数を満たしても差ありと判定できない可能性が高くなります。
各群の必要サンプル数を求める式(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)^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)\) の2乗
式を日本語で読むと
① 有意水準の分の余裕(有意水準から決まる \(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乗 で割ると
④ 各群の必要サンプル数 \(n\) になる(端数は切り上げる)
簡単な例
ベースCVR 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}\) は2つのCVRの平均 \((p_1 + p_2) \div 2\) で、「差がない」と仮定したときの共通のCVRです。\(\sqrt{2\bar{p}(1-\bar{p})}\) と \(\sqrt{p_1(1-p_1)+p_2(1-p_2)}\) はどちらも「CVRの差がどれくらいぶれるか」の大きさで、前者は差がないとき、後者は差があるときのものです。 式を読むと、必要サンプル数は「検出したい差の2乗で割る」形になっています。つまり改善幅を半分にすると必要人数は約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_{\beta}\) は80%で0.8416、90%で1.2816です。 教科書や他のツールでは、2つのばらつきを \(\sqrt{2\bar{p}(1-\bar{p})}\) 1つにまとめた簡略式 \(n \fallingdotseq 2\bar{p}(1-\bar{p})(z_{\alpha/2}+z_{\beta})^2 \div (p_2-p_1)^2\) を使うこともあります。この計算機は上のカードの式(ばらつきを2種類に分ける形)を採用し、簡略式の値は「参考」として結果欄に並べて表示します。CVRが小さいときは両者の差はごくわずかです(上の例では53211と53212)。 必要サンプル数を満たせば「有意差あり=効果が確実」というわけではありません。訪問者をランダムに振り分けること、テストの途中で何度も結果をのぞき見して早く止めないこと、複数の指標や複数のB案を同時に比べるときは判定基準を厳しくすること(多重比較)が守られていて、初めてこの式の前提が成り立ちます。
必要な日数を求める式(1日あたりの流入数から)
数学表記 (一般的な数式)
\(D\) \(=\) \(\lceil\) \(2n\) \(\div\) \(V\) \(\rceil\)
日本語表記 (記号を日本語に置き換えた式)
③ 必要な日数 \(D\) \(=\) \(\lceil\) ① A・B合計のサンプル数 \(2n\) \(\div\) ② 1日あたりの流入数 \(V\) \(\rceil\)
式を日本語で読むと
① A・B合計のサンプル数 \(2n\)(各群の必要サンプル数 \(n\) の2倍) を
② 1日あたりの流入数 \(V\) で割り、端数を切り上げると(\(\lceil\ \rceil\) は切り上げの記号)
③ 必要な日数 \(D\) になる
簡単な例
各群の必要サンプル数が53211で、テスト対象ページに1日2000回の訪問があるときの必要な日数は
必要な日数 \(D\) \(=\) \(\lceil\) \(2 \times 53211\) \(\div\) 2000回 \(\rceil\)
\(2 \times 53211 \div 2000 = 106422 \div 2000 = 53.211 \rightarrow 54\)
考え方のポイント
\(\lceil\ \rceil\) は「切り上げ」を表す記号(天井関数)で、53.211日なら54日です。訪問者を半分ずつA・Bに分けるので、1日あたりの流入数はA・B合計の値(テスト対象ページ全体の訪問数)を入れます。 計算上は54日でも、実際のテストは「1週間の倍数」で回すのが慣例です。曜日によってCVRが変わる(平日と週末で客層が違う)ため、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\) になる
簡単な例
ベースCVR 3%・改善後 3.3%・有意水準5%の両側検定(\(z_{\alpha/2} = 1.9600\))で、各群30000人しか集められないときの検出力は
検出力に対応する \(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%に改善していても、30000人ずつのテストでは半分近くの確率で「差なし」と判定されてしまいます。検出力が80%を下回るテストは「効果があったのに見逃した」が起こりやすく、検出力が低いまま「差がなかった」と結論づけるのは早計です。 両側検定のときは、厳密には反対側の裾(B案が悪い方向に有意になる確率)も足しますが、その値はごく小さいので、この計算機では一般的な扱いに従って無視しています。
A/Bテストの各群の必要サンプル数は「(有意水準の分の余裕 + 検出力の分の余裕)の2乗 ÷ 検出したい差の2乗」で求め、端数は切り上げます。改善幅を半分にすると人数は約4倍になるので、「どのくらいの改善なら見つけたいか(MDE)」を先に決めるのがコツです。1日あたりの流入数で割れば必要日数、人数を固定して解き直せば検出力がわかります。

用語・記号の解説

記号

\(p_1\) ピーワン ベースCVR(A案・現状のコンバージョン率)。\(p\) は proportion(割合)または probability(確率)の頭文字で、式の中では 3% を 0.03 のように小数で扱います。
\(p_2\) ピーツー 改善後のCVR(B案に期待するコンバージョン率)。相対%なら \(p_1 (1 + r/100)\)、絶対ポイントなら \(p_1 + d\) です。
\(\bar{p}\) ピーバー ピーの平均 2つのCVRの平均 \((p_1 + p_2) \div 2\) のことです。「差がない」と仮定したときの共通のCVRで、上の横線(バー)は統計で「平均」を表す印です。
\(r\) アール 相対%で指定した改善幅(MDE)。ratio(比率)の頭文字で、「ベースCVRの何%改善か」を表します(3%→3.3%なら \(r = 10\))。
\(d\) ディー 絶対ポイントで指定した改善幅(MDE)。difference(差)の頭文字で、CVRの差そのものです(3%→3.3%なら \(d = 0.3\) ポイント)。
\(p_2 - p_1\) ピーツー ひく ピーワン 検出したい差(絶対ポイントを小数にしたもの。0.3ポイントなら 0.003)。必要サンプル数はこの2乗で割るので、差が小さいほど人数が急に増えます。
\(\alpha\) アルファ 有意水準。「本当は差がないのに差ありと判定してしまう」確率(第1種の過誤の確率)で、5%(0.05)がよく使われます。ギリシャ文字の1番目で、統計では「1つ目の誤り」の確率に使う慣例です。
\(\beta\) ベータ 「本当は差があるのに差なしと判定してしまう(見逃す)」確率(第2種の過誤の確率)。ギリシャ文字の2番目で、「2つ目の誤り」の確率に使う慣例です。
\(1-\beta\) イチ ひく ベータ 検出力。本当に差があるときに、それを差ありと判定できる確率です。80%や90%がよく使われます。
\(z_{\alpha/2}\) ゼット アルファ にぶんのいち ゼット アルファ ハーフ 両側検定で有意水準 \(\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{\ \ }\) ルート 平方根。2乗するとその数になる正の数で、\(\sqrt{30000} \fallingdotseq 173.205\) です。CVRのばらつき(標準偏差)を求めるときに出てきます。
\(V\) ブイ 1日あたりの流入数(テスト対象ページ全体の訪問数=A・B合計)。visits(訪問数)の頭文字です。
\(D\) ディー 必要な日数。days(日数)の頭文字です。
\(\lceil\ \rceil\) てんじょうかんすう 切り上げを表す記号(天井関数)。中の数以上で最小の整数を返します(\(\lceil 53.211 \rceil = 54\))。

用語

A/Bテスト エービーテスト 今の案(A)と新しい案(B)を、訪問者をランダムに分けて同じ期間に見せ、どちらの成果(CVRなど)が高いかを比べる実験。ボタンの色・見出し・価格表示・ランディングページの構成などの改善効果を、思い込みではなくデータで確かめるために使われます。
コンバージョン率
(CVR)
コンバージョンりつ 訪問者やクリックのうち、購入・申込などの成果(コンバージョン)に至った割合。Conversion Rate の略で、このページの式ではA案を \(p_1\)、B案を \(p_2\) と書きます。
MDE
(最小検出可能効果)
エムディーイー(さいしょうけんしゅつかのうこうか) Minimum Detectable Effect。「このくらいの改善なら見つけたい」という改善幅の下限で、A/Bテストの設計で最初に決める値です。小さくするほど必要サンプル数が急に増える(差の2乗に反比例)ため、「事業として意味のある最小の改善」を選ぶのがコツです。
有意水準 ゆういすいじゅん 「本当は差がないのに、偶然の差を見て差ありと判定してしまう」失敗をどこまで許すかの確率 \(\alpha\) のことです。5%が一般的で、「20回に1回は勘違いを許す」という意味です。厳しくする(1%)と必要サンプル数が増えます。
検出力 けんしゅつりょく 「本当に差があるときに、それを差ありと判定できる」確率 \(1-\beta\) のことです。80%が一般的で、「本当の改善を5回に1回は見逃す」ことを許した水準です。検出力が低いテストで「差なし」と出ても、それは「差がない証拠」にはなりません。
第1種の過誤 だいいっしゅのかご 「本当は差がないのに、差ありと言ってしまう」誤り。この誤りを許す確率が有意水準 \(\alpha\) です。第2種の過誤(見逃し)と裏表の関係にあり、片方を減らそうとするともう片方が増えます。両方を小さくする最も基本的な方法がサンプル数を増やすことです。
第2種の過誤 だいにしゅのかご 「本当は差があるのに、見逃してしまう」誤り。この誤りの確率が \(\beta\) で、\(1-\beta\) が検出力です。第1種の過誤(差がないのに差ありと言う)と裏表の関係にあり、片方を減らそうとするともう片方が増えます。両方を小さくする最も基本的な方法がサンプル数を増やすことです。
帰無仮説 きむかせつ 「A案とB案のCVRに差はない」という、検定で否定したい側の仮説。検定は、帰無仮説が正しいとしたら今のデータはどれくらい珍しいかを調べ、十分珍しければ帰無仮説を捨てて「差あり」と判定します。
対立仮説 たいりつかせつ 「A案とB案のCVRに差がある」という、検定で示したい側の仮説。帰無仮説(差はない)が捨てられたときに採用されます。
両側検定 りょうがわけんてい 「B案が高い」「低い」の両方を差として検出する検定。どちらに転ぶかわからない普通のA/Bテストで使います。片側検定より必要サンプル数は多くなりますが、B案の悪化も検出できます。
片側検定 かたがわけんてい 「B案が高い」だけを検出する検定。両側検定より必要サンプル数は少なくなりますが、B案が悪化していても検出できないので、テストを始める前に決めておく必要があります(結果を見てから片側に変えるのは不適切です)。
2標本比率の差の検定
(z検定)
にひょうほんひりつのさのけんてい(ゼットけんてい) 2つのグループの割合(CVRなど)に差があるかを、差を標準化した \(z\) 値と標準正規分布で判定する検定。このページの式はこの検定で必要サンプル数を求めるもので、各群のCV数が少なすぎない(目安として5〜10件以上)ときに正規分布で近似できます。
標準正規分布 ひょうじゅんせいきぶんぷ 平均0・標準偏差1の正規分布(左右対称のベル型)。\(z\) 値はこの分布の横軸の値で、「1.96より右の面積が2.5%」のように確率と1対1で対応します。
累積分布関数 るいせきぶんぷかんすう 「ある値以下になる確率」を返す関数。標準正規分布のものを \(\Phi\) と書き、検出力を求める式の最後に出てきます。Excelでは NORM.S.DIST(第2引数 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)}\) は「2群のCVRの差のばらつき」です。
多重比較 たじゅうひかく 複数のB案や複数の指標を同時に比べること。比較の回数が増えるほど「どれか1つは偶然有意になる」確率が上がるため、有意水準を回数で割る(ボンフェローニ補正)などの調整が必要です。
のぞき見
(早期停止)
のぞきみ(そうきていし) 必要サンプル数が集まる前に何度も結果を見て、有意差が出た瞬間にテストをやめること。偶然の差を拾いやすくなり、有意水準5%のつもりが実際にはずっと高い確率で誤判定になります。必要サンプル数を先に決め、集まるまで待つのがこのページの式の前提です。

前提として理解しておくといいこと

このページの計算を「意味がわかって」使えるようになるために、前提として理解しておくといいことをまとめました。
つまずいたら、この表の内容に戻って復習するのが近道です。

割合・百分率(小学5年)
  • %と小数を行き来できること(\(3\% = 0.03\)、\(0.033 = 3.3\%\))
  • 「相対%の増加」(3%の1割増しは3.3%)と「ポイントの増加」(3%+0.3ポイント=3.3%)の違いがわかること
平方根(中学3年)
  • \(\sqrt{a}\) が「2乗すると \(a\) になる正の数」だとわかり、\(\sqrt{30000} \fallingdotseq 173.2\) のような値を電卓で求められること
  • 2乗で割る式では、割る数が半分になると答えが4倍になること(\((1/2)^2 = 1/4\))
確率の基本(中学2年〜高校 数学A)
  • 「訪問1000回のうち30回が購入」のように、割合を確率(0〜1の数)として扱えること
  • 「本当は差がないのに、偶然で差が出ることがある」という感覚があること(コインを10回投げて表が7回出ることは珍しくない)
正規分布と標準化(高校 数学B)
  • 正規分布が左右対称のベル型で、平均から標準偏差の1.96倍の範囲に約95%が入ることを知っていること
  • \(z\) 値(標準得点)が「平均から標準偏差の何倍離れているか」を表すとわかること
仮説検定の考え方(高校 数学B〜大学初級)
  • 帰無仮説「差はない」を立て、データがそのもとで珍しければ「差あり」と判定する、という検定の流れがわかること
  • 有意水準 \(\alpha\)(差がないのに差ありと言う確率)と検出力 \(1-\beta\)(差があるときに見つける確率)の2つの失敗が別物だとわかること
切り上げ(小学4年)
  • 人数・日数は小数にできないので、53210.3人は53211人、53.211日は54日のように「切り上げ」で整数にする理由がわかること

Excelで計算する方法

Excelファイルをダウンロード
式ごとにシートが分かれたExcelファイルです。貼り付け場所を気にせず、開いてすぐ使えます。
下の表を丸ごとコピーして、ExcelのA1セルに貼り付けるとそのまま使えます。
「改善後のCVR」を求める表(相対%指定)
ベースCVR p1(%) 3
相対改善幅 r(%) 10
改善後のCVR p2(%) =B1*(1+B2/100)
「各群の必要サンプル数」を求める表
ベースCVR p1(%) 3
改善後のCVR p2(%) 3.3
有意水準 α(%・両側) 5
検出力 1−β(%) 80
z_α/2 =NORM.S.INV(1-B3/100/2)
z_β =NORM.S.INV(B4/100)
平均のCVR 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
1日あたりの流入数 V(両群合計) 2000
必要な日数 D(切り上げ) =ROUNDUP(2*B1/B2,0)
「検出力」を求める表(各群のサンプル数を固定)
ベースCVR p1(%) 3
改善後のCVR p2(%) 3.3
有意水準 α(%・両側) 5
各群のサンプル数 n 30000
z_α/2 =NORM.S.INV(1-B3/100/2)
平均のCVR 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
貼り付けると、上の行が入力欄、最後の行が自動計算の結果になります。
1つ目の表はB3に3.3(改善後のCVR 3.3%)、2つ目の表はB8に53211(各群の必要サンプル数)、3つ目の表はB3に54(必要な日数)、4つ目の表はB8に約55.71(検出力55.71%)と表示されます。
NORM.S.INV は「確率→z値」、NORM.S.DIST(第2引数 TRUE)は「z値→確率」の関数です。片側検定にしたいときは、z_α/2 の式の「/2」を消して =NORM.S.INV(1-B3/100) にしてください。ROUNDUP(…,0) が切り上げです。

Googleスプレッドシートで計算する方法

Excelファイルをダウンロード
上のExcelファイルをダウンロードし、Googleドライブにアップロードして開くと、そのままスプレッドシートとして使えます。
下の表を丸ごとコピーして、GoogleスプレッドシートのA1セルに貼り付けるとそのまま使えます。
「改善後のCVR」を求める表(相対%指定)
ベースCVR p1(%) 3
相対改善幅 r(%) 10
改善後のCVR p2(%) =B1*(1+B2/100)
「各群の必要サンプル数」を求める表
ベースCVR p1(%) 3
改善後のCVR p2(%) 3.3
有意水準 α(%・両側) 5
検出力 1−β(%) 80
z_α/2 =NORM.S.INV(1-B3/100/2)
z_β =NORM.S.INV(B4/100)
平均のCVR 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
1日あたりの流入数 V(両群合計) 2000
必要な日数 D(切り上げ) =ROUNDUP(2*B1/B2,0)
「検出力」を求める表(各群のサンプル数を固定)
ベースCVR p1(%) 3
改善後のCVR p2(%) 3.3
有意水準 α(%・両側) 5
各群のサンプル数 n 30000
z_α/2 =NORM.S.INV(1-B3/100/2)
平均のCVR 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          # ベースCVR(%)
relative_mde = 10.0     # 検出したい改善幅(相対%)
alpha = 0.05            # 有意水準(両側)
power = 0.80            # 検出力
daily_visits = 2000     # 1日あたりの流入数(両群合計)

p1 = base_cvr / 100
p2 = p1 * (1 + relative_mde / 100)          # 改善後のCVR
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"改善後のCVR: {p2 * 100:.4g}%")
print(f"各群の必要サンプル数: {n_per_group}(合計 {2 * n_per_group})")
print(f"必要な日数: {days}日")

# 逆問題:各群30000人のときの検出力
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 以降)。この例では改善後のCVRが3.3%、各群の必要サンプル数が53211(合計106422)、必要な日数が54日、各群30000人のときの検出力が約55.71%になります。先頭の値を書き換えて実行してください。

数式記述言語(LaTeX等)での書き方(コピペ可)

改善後のCVR(B案に期待するCVR)を求める式
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)
各群の必要サンプル数を求める式(2標本比率の差の検定)
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
必要な日数を求める式(1日あたりの流入数から)
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コードを実際に実行して行い、実行結果の数値だけを根拠に回答してください(暗算や推測で答えないでください)。

現在のページのCVR(ベースCVR)は3%です。B案で相対10%の改善(CVR 3.3%)があれば検出したいと考えています。
有意水準5%(両側検定)、検出力80%として、次の値をそれぞれ求めてください。
1. 改善後のCVR p2(p2 = p1 × (1 + 10/100))
2. 各群の必要サンプル数 n(2標本比率の差の検定の式:n = (z_{α/2}·√(2p̄(1−p̄)) + z_β·√(p1(1−p1)+p2(1−p2)))² ÷ (p2−p1)²、p̄ = (p1+p2)/2、端数は切り上げ)と、A・B合計のサンプル数
3. 1日あたりの流入数が2000(両群合計)のときの必要な日数(切り上げ)
4. 各群30000人しか集められない場合の検出力(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の特徴
簡単・無料
無料で回数無制限の変換
専門知識不要、直感的で簡単な操作
会員登録不要
アクセス直後に利用可能
個人情報を登録することなく使用できます
安全・安心
通信を高度に暗号化
「ダウンロード」押下でファイルを自動削除
高速
ストレスのない快適な表示速度・変換速度
透かしなし
ウォーターマークなし
クレジット表記不要
商用利用可能
無料で商用利用可能
商用利用許諾の連絡も不要です