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テストの有意差判定(CVRの2群比較・p値・信頼区間)

A群(元のパターン)とB群(変更したパターン)それぞれの訪問数とコンバージョン数を入力してください。各群のCVR・差・相対リフト率に加え、2標本比率のz検定でz値とp値を求め、選んだ有意水準で「有意差あり/なし」を判定します。

訪問数はクリック数・セッション数・ユーザー数のどれでもかまいませんが、両群で同じ数え方にしてください。数値は半角の整数で入力します。有意水準と片側/両側は、テストを始める前に決めておいた条件を選んでください(結果を見てから変えるのは正しい使い方ではありません)。
計算結果・グラフ
左の入力欄にA群・B群の訪問数とCV数を入れて「計算する」を押すと、ここに判定結果とグラフが表示されます。

このページでできること

  • A群・B群それぞれの訪問数(クリック数・セッション数でも可)とコンバージョン数を入れるだけで、各群のCVR・CVRの差・相対リフト率をまとめて計算します
  • 「Bの方がCVRが高く見えるけれど、偶然のばらつきではないか?」を2標本比率のz検定で判定します(z値・両側/片側のp値・有意水準5%/1%/10%の判定)
  • CVRの差の信頼区間(95%など)と、「有意になるまでz値があとどれだけ足りないか」の余裕もわかります
  • 標準正規分布のグラフに、今回のz値の位置と棄却域(ここに入れば有意)を塗って表示します
  • 式のやさしい解説・Excel/Googleスプレッドシート/Python用のコピペ数式・計算ドリル(演習問題)もこのページにまとまっています
このページは「A群とB群のCVR(比率)に差があるか」を判定する専用ページです。手元にz値があってp値に変換したいだけなら「P値計算機」、平均値の区間推定は「信頼区間計算機」、1つの比率を調べる調査の必要人数は「サンプルサイズ計算機」をお使いください。「有意差あり」は「効果が確実」という意味ではありません(下の「考え方のポイント」と用語集を参照)。

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

ランディングページや広告文の改善(Webマーケティング)

「ボタンの色を変えたBの方がCVRが2.0%から2.5%に上がった」——この差が偶然でないか確かめるのがA/Bテストの有意差判定で、Webマーケティングでは日常的に行われています。訪問10000回ずつなら両側p値は約0.017で「5%で有意差あり」ですが、同じくらいのCVRでも訪問500回ずつ(CV10件と12〜13件)なら p値は0.5〜0.7程度になり「偶然かもしれない」としか言えません。
「Bの方が高そう」と見た目で判断して切り替えると、翌月には元に戻っていた、ということが実際によく起こります。訪問数を先に決めてテストし、有意水準で判定するのはそれを防ぐためです(訪問者がランダムに振り分けられていることが前提です)。

メール配信の件名・送信時刻のテスト(メールマーケティング)

同じメールを件名だけ変えて半数ずつに送り、開封率48%と52%を比べる——これも2つの比率の差の検定です。各5000通なら差4ポイントのz値は約4で、偶然とは考えにくい差だと判断できます。
開封率のような大きめの比率は、CVRのような小さい比率よりも同じ通数で判定しやすい(標準誤差に対して差が大きくなりやすい)という性質があります。どの指標を比べるかで必要な配信数が変わる、という感覚がこの式から身につきます。

新しい治療法の有効率の比較(医学・臨床試験)

「従来の治療で改善した人の割合は60%、新しい治療では70%」のような2つの群の改善率の比較は、医学の臨床試験で使われる基本的な検定です(実際の試験ではランダム化・盲検化などの厳密な設計のもとで行われます)。
薬の承認や治療ガイドラインの根拠となる論文には、必ずp値や信頼区間が載っています。この式の意味がわかると、「有意差あり」の一言に振り回されず、「差の大きさはどのくらいか」「対象人数は十分か」まで読み取れるようになります。

製造ラインの不良率の比較(品質管理)

新しい工程Bで不良率が1.5%から1.0%に下がったように見えるとき、生産数がそれぞれ2000個なら「偶然の範囲」、20000個なら「有意な改善」と判定が変わります。設備投資や工程変更の判断を、少ないサンプルの偶然に左右されないようにするための計算です。
不良率のように小さい比率では、期待不良数(個数 × 不良率)が5を下回ると正規近似が粗くなるため、そういうときは二項分布を直接使う正確な検定(フィッシャーの正確検定など)が選ばれます。

教材・授業方法の効果測定(教育)

「新しい教材を使ったクラスの合格率は75%、従来の教材では65%」のような比較にも同じ検定が使えます。ただしクラス単位で教材を分けると、生徒をランダムに振り分けたことにはならず、先生や生徒の違いが結果に混ざります。
教育や社会科学の研究では、この式で有意差を確かめると同時に、「ランダムに分けられているか」「結果を見てから比較の切り口を変えていないか」という設計の面が重視されます。式の前提を知ることが、数字にだまされないための力になります。

式

各群のCVR(コンバージョン率)
数学表記 (一般的な数式)
\(\hat{p}_A\) \(=\) \(x_A\) \(\div\) \(n_A\)
日本語表記 (記号を日本語に置き換えた式)
③ A群のCVR \(\hat{p}_A\) \(=\) ① A群のCV数 \(x_A\) \(\div\) ② A群の訪問数 \(n_A\)
式を日本語で読むと
① A群のCV数 \(x_A\) を
② A群の訪問数 \(n_A\) で割ると
③ A群のCVR \(\hat{p}_A\) になる(B群も同じ式で \(\hat{p}_B = x_B \div n_B\))
簡単な例
A群は訪問10000回でCV200件、B群は訪問10000回でCV250件のとき、それぞれのCVRは
A群のCVR \(\hat{p}_A\) \(=\) CV数(200件) \(\div\) 訪問数(10000回)
\(200 \div 10000 = 0.02\ \ (2\%)\)
\(250 \div 10000 = 0.025\ \ (2.5\%)\)
考え方のポイント
CVRの分母(訪問数)はクリック数・セッション数・ユーザー数のどれで数えてもかまいませんが、A群とB群で必ず同じ数え方にします。式の中では割合を \(0.02\) のような小数(0〜1)で扱い、表示するときだけ%に直します。 記号の \(\hat{p}\)(ピーハット)は「本当のCVR \(p\) を、手元のデータから推定した値」という意味です。同じページを10000人が見ても、CV数は偶然で少し増減します。だから「今回2%だった」は「本当のCVRがぴったり2%」ではなく、そのあたりの推定値にすぎません。この「偶然の揺れ」をきちんと扱うのが、以下の検定です。
CVRの差と相対リフト率
数学表記 (一般的な数式)
\(d\) \(=\) \(\hat{p}_B\) \(-\) \(\hat{p}_A\)
\(L\) \(=\) \(d\) \(\div\) \(\hat{p}_A\) \(\times\) \(100\)
日本語表記 (記号を日本語に置き換えた式)
③ CVRの差 \(d\) \(=\) ① B群のCVR \(\hat{p}_B\) \(-\) ② A群のCVR \(\hat{p}_A\)
⑦ 相対リフト率 \(L\)(%) \(=\) ④ CVRの差 \(d\) \(\div\) ⑤ A群のCVR \(\hat{p}_A\) \(\times\) ⑥ 百分率の基準 \(100\)
式を日本語で読むと
① B群のCVR \(\hat{p}_B\) から
② A群のCVR \(\hat{p}_A\) を引くと
③ CVRの差 \(d\) になる(表示では100倍して「ポイント」で示す)
④ CVRの差 \(d\) を
⑤ A群のCVR \(\hat{p}_A\) で割り、
⑥ 百分率の基準 \(100\) を掛けてパーセントに直すと
⑦ 相対リフト率 \(L\)(%) になる
簡単な例
A群のCVRが0.02(2%)、B群のCVRが0.025(2.5%)のとき、差と相対リフト率は
CVRの差 \(d\) \(=\) B群のCVR(0.025) \(-\) A群のCVR(0.02)
相対リフト率 \(L\)(%) \(=\) 差(0.005) \(\div\) A群のCVR(0.02) \(\times\) \(100\)
\(0.025 - 0.02 = 0.005\ \ (0.5\ \mathrm{pt})\)
\(0.005 \div 0.02 \times 100 = 25\ \ (25\%)\)
考え方のポイント
「2%から2.5%に上がった」は、差で言えば0.5ポイント、割合で言えば25%増です。%の値どうしの引き算の結果は、混同を避けるために「%」ではなく「ポイント」と呼びます(2.5% − 2% = 0.5ポイント)。 相対リフト率は「Aに比べてBはCV数が何%増えるか」を表すので、広告費や売上の見積もりに直結する、実務でよく使われる指標です。ただしこの2つの数値は「今回の標本で観測された差」であって、「本当の差」がこのとおりとは限りません。それを確かめるのが次の検定です。
プールしたCVR(両群を合わせた1つのCVR)
数学表記 (一般的な数式)
\(\hat{p}\) \(=\) \((x_A + x_B)\) \(\div\) \((n_A + n_B)\)
日本語表記 (記号を日本語に置き換えた式)
③ プールしたCVR \(\hat{p}\) \(=\) ① 両群のCV数の合計 \((x_A + x_B)\) \(\div\) ② 両群の訪問数の合計 \((n_A + n_B)\)
式を日本語で読むと
① 両群のCV数の合計 \((x_A + x_B)\) を
② 両群の訪問数の合計 \((n_A + n_B)\) で割ると
③ プールしたCVR \(\hat{p}\) になる
簡単な例
A群がCV200件/訪問10000回、B群がCV250件/訪問10000回のとき、プールしたCVRは
プールしたCVR \(\hat{p}\) \(=\) CV数の合計(200 + 250) \(\div\) 訪問数の合計(10000 + 10000)
\((200 + 250) \div (10000 + 10000) = 450 \div 20000 = 0.0225\ \ (2.25\%)\)
考え方のポイント
検定では、まず「AとBのCVRは本当は同じだ」という仮説(帰無仮説)を立てます。同じなら両群のデータは1つのCVRから生まれたはずなので、両群を合わせて(プールして)そのCVRを推定します。これがプールしたCVRで、次の標準誤差の計算に使います。 「同じだと仮定して計算してみたら、今回ほどの差はめったに出ないはずだった」となれば、その仮定(差がない)の方を疑う——これが検定の考え方です。
標準誤差とz値(2標本比率のz検定)
数学表記 (一般的な数式)
\(\mathrm{SE}\) \(=\) \(\sqrt{\hat{p}(1-\hat{p})\left(\dfrac{1}{n_A}+\dfrac{1}{n_B}\right)}\)
\(z\) \(=\) \(d\) \(\div\) \(\mathrm{SE}\)
日本語表記 (記号を日本語に置き換えた式)
② 標準誤差 \(\mathrm{SE}\) \(=\) ① プールしたCVRのばらつき \(\hat{p}(1-\hat{p})\) × 両群の訪問数の逆数の和 \(\left(\dfrac{1}{n_A}+\dfrac{1}{n_B}\right)\) の平方根
⑤ z値 \(z\) \(=\) ③ CVRの差 \(d\) \(\div\) ④ 標準誤差 \(\mathrm{SE}\)
式を日本語で読むと
① プールしたCVRのばらつき \(\hat{p}(1-\hat{p})\) に、両群の訪問数の逆数の和 \(\left(\dfrac{1}{n_A}+\dfrac{1}{n_B}\right)\) を掛けたものの平方根 が
② 標準誤差 \(\mathrm{SE}\) になる(差が偶然で揺れる幅の目安)
③ CVRの差 \(d\) を
④ 標準誤差 \(\mathrm{SE}\) で割ると
⑤ z値 \(z\) になる(差が「偶然の揺れ幅の何倍」あるか)
簡単な例
プールしたCVRが0.0225、両群の訪問数がそれぞれ10000回、CVRの差が0.005のとき、標準誤差とz値は
標準誤差 \(\mathrm{SE}\) \(=\) 「0.0225 × (1 − 0.0225) × (1/10000 + 1/10000)」の平方根
z値 \(z\) \(=\) 差(0.005) \(\div\) 標準誤差(0.002097)
\(0.0225 \times (1 - 0.0225) \times \left(\dfrac{1}{10000} + \dfrac{1}{10000}\right) = 0.02199375 \times 0.0002 \fallingdotseq 0.0000043988\)
\(\mathrm{SE} = \sqrt{0.0000043988} \fallingdotseq 0.002097\)
\(z = 0.005 \div 0.002097 \fallingdotseq 2.384\)
考え方のポイント
z値は「観測された差は、偶然の揺れ幅(標準誤差)の何倍か」を表す数です。差がないときz値は平均0・標準偏差1の標準正規分布に従うので、\(|z|\) が2を超えるような差は「差がないのに偶然出る」ことがめったにない(約5%以下)とわかります。 標準誤差の式に訪問数の逆数 \(1/n\) が入っているので、訪問数が多いほど標準誤差は小さくなり、同じ0.5ポイントの差でもz値は大きく(=有意になりやすく)なります。逆に訪問数が少ないと、大きな差が出ても「偶然かもしれない」としか言えません。 この式は、CV数のばらつき(二項分布)を正規分布で近似しています。各群の期待CV数 \(n\hat{p}\) と期待非CV数 \(n(1-\hat{p})\) がすべて5以上(できれば10以上)あることが目安で、満たさないときは計算結果の欄に注意が表示されます。
p値(両側・片側)
数学表記 (一般的な数式)
\(p_2\) \(=\) \(2\) \(\times\) \((\) \(1\) \(-\) \(\Phi(|z|)\) \()\)
\(p_1\) \(=\) \(1\) \(-\) \(\Phi(z)\)
日本語表記 (記号を日本語に置き換えた式)
④ 両側p値 \(p_2\) \(=\) ③ 両すそ分の \(2\) \(\times\) \((\) ① 全体の確率 \(1\) \(-\) ② \(|z|\) までの累積確率 \(\Phi(|z|)\) \()\)
⑦ 片側p値 \(p_1\) \(=\) ⑤ 全体の確率 \(1\) \(-\) ⑥ \(z\) までの累積確率 \(\Phi(z)\)
式を日本語で読むと
① 全体の確率 \(1\) から
② \(|z|\) までの累積確率 \(\Phi(|z|)\) を引き(=片方のすその面積)、
③ 両すそ分の \(2\) を掛けると
④ 両側p値 \(p_2\) になる
⑤ 全体の確率 \(1\) から
⑥ \(z\) までの累積確率 \(\Phi(z)\) を引くと
⑦ 片側p値 \(p_1\) になる(「BがAより高い」という仮説のとき)
簡単な例
z値が2.384のとき(標準正規分布の累積確率は \(\Phi(2.384) \fallingdotseq 0.99144\))、両側p値と片側p値は
両側p値 \(p_2\) \(=\) \(2\) \(\times\) \((\) \(1\) \(-\) \(\Phi(2.384)\)(0.99144) \()\)
\(p_2 = 2 \times (1 - 0.99144) = 2 \times 0.00856 \fallingdotseq 0.0171\)
\(p_1 = 1 - 0.99144 \fallingdotseq 0.0086\)
考え方のポイント
p値は「本当は差がないのに、偶然で今回以上の差が出る確率」です。両側p値0.0171は「差がないなら、これほどの差(どちら向きでも)は100回に約1.7回しか出ない」という意味で、有意水準5%(0.05)より小さいので「有意差あり」、1%(0.01)より大きいので「1%では有意差なし」と判定します。 両側検定は「AとBに差があるか(どちらが高いかは問わない)」、片側検定は「BがAより高いか」だけを調べます。片側p値は両側の半分になるので有意になりやすいのですが、使ってよいのは「Bが低くなる可能性は最初から考えない」と**テストを始める前に**決めていた場合だけです。結果を見てから片側に切り替えるのは正しい使い方ではありません。 同じ理由で、結果を途中で何度も見て有意になった時点でテストをやめる(早期停止)、多くのパターンや指標を同時に検定してどれか1つでも有意なら採用する(多重比較)も、差がないのに「有意」が出る確率を5%よりずっと大きくしてしまいます。必要な訪問数と見る指標をテストの前に決め、そこまで待ってから1回だけ判定するのが基本です。 \(\Phi\)(ファイ)は標準正規分布の累積分布関数で、「z値がその値以下になる確率」=ベル型の曲線の左側の面積です。値は表やExcelの NORM.S.DIST 関数で求められます(このページの計算機は数値計算で求めています)。
CVRの差の信頼区間
数学表記 (一般的な数式)
\(d_L,\ d_U\) \(=\) \(d\) \(\pm\) \(z_{\alpha/2}\) \(\times\) \(\sqrt{\dfrac{\hat{p}_A(1-\hat{p}_A)}{n_A}+\dfrac{\hat{p}_B(1-\hat{p}_B)}{n_B}}\)
日本語表記 (記号を日本語に置き換えた式)
④ 差の信頼区間の下限 \(d_L\)・上限 \(d_U\) \(=\) ① CVRの差 \(d\) \(\pm\) ② 信頼水準から決まる \(z_{\alpha/2}\) \(\times\) ③ 各群のばらつきから求めた標準誤差 \(\mathrm{SE}_d\)
式を日本語で読むと
① CVRの差 \(d\) を中心に、
② 信頼水準から決まる \(z_{\alpha/2}\)(95%なら1.96) と
③ 各群のばらつきから求めた標準誤差 \(\mathrm{SE}_d\) を掛けた幅を上下に取ると
④ 差の信頼区間の下限 \(d_L\)・上限 \(d_U\) になる
簡単な例
A群のCVRが0.02(訪問10000回)、B群のCVRが0.025(訪問10000回)、差が0.005のとき、差の95%信頼区間は
下限 \(d_L\)・上限 \(d_U\) \(=\) 差(0.005) \(\pm\) \(z_{\alpha/2}\)(1.96) \(\times\) 標準誤差(0.002097)
\(\mathrm{SE}_d = \sqrt{\dfrac{0.02 \times 0.98}{10000} + \dfrac{0.025 \times 0.975}{10000}} = \sqrt{0.00000196 + 0.0000024375} \fallingdotseq 0.002097\)
\(0.005 \pm 1.96 \times 0.002097 = 0.005 \pm 0.00411\)
\(0.00089 \leq d \leq 0.00911\ \ (0.09 \sim 0.91\ \mathrm{pt})\)
考え方のポイント
検定は「差があるか・ないか」の二択しか答えませんが、信頼区間は「本当の差はこのくらいの範囲にありそうだ」という大きさを教えてくれます。この例の95%信頼区間は0.09〜0.91ポイントで、0を含まないので「Bの方が高い」と言えますが、「0.5ポイント上がった」と言い切るには幅が広い、ということも同時にわかります。 標準誤差には、検定で使ったプールした値ではなく、各群それぞれのCVRのばらつきを使います(信頼区間は「差がない」という仮定を置かないためです)。\(z_{\alpha/2}\) は信頼水準に対応する標準正規分布の値で、90%なら1.645、95%なら1.96、99%なら2.576です。信頼水準は「100 − 有意水準」(有意水準5%なら95%)にすると、両側検定の判定と区間が0を含むかどうかがほぼ対応します(片側検定を選んだときは対応しません。また検定はプールした標準誤差、区間は各群の標準誤差を使うので、境目付近ではまれに食い違います)。
各群のCVRの差を、「差がない」と仮定したときの偶然の揺れ幅(標準誤差)で割ったものがz値、そのz値以上の差が偶然で出る確率がp値です。p値が有意水準(5%など)より小さければ「有意差あり」と判定し、差の信頼区間で「本当の差の大きさ」の範囲を確かめます。有意差ありは「偶然では説明しにくい」という意味であって、「効果が確実・大きい」という意味ではありません。

用語・記号の解説

記号

\(n_A,\ n_B\) エヌ・エー、エヌ・ビー A群・B群の訪問数(クリック数・セッション数)。\(n\) は number(数)の頭文字で、統計では標本の大きさ(サンプルサイズ)を表す慣例の文字です。
\(x_A,\ x_B\) エックス・エー、エックス・ビー A群・B群のコンバージョン数(CV数)。「成功した回数」を \(x\) で表すのは二項分布の慣例です。
\(\hat{p}_A,\ \hat{p}_B\) ピーハット・エー、ピーハット・ビー ピーのハット A群・B群のCVR(標本から求めた比率)。\(p\) は proportion(比率)または probability(確率)の頭文字、上の「\(\hat{}\)」(ハット)は「本当の値 \(p\) を標本から推定した値」という意味の記号です。
\(\hat{p}\) ピーハット プールしたCVR。「差がない」と仮定して両群のデータを合わせて求めた、1つのCVRの推定値です。\(\hat{p} = (x_A + x_B) \div (n_A + n_B)\) で求めます。
\(d\) ディー CVRの差(\(\hat{p}_B - \hat{p}_A\))。\(d\) は difference(差)の頭文字です。このページでは100倍して「ポイント」で表示します。
\(L\) エル 相対リフト率(%)。\(L\) は lift(持ち上げる)の頭文字で、AのCVRに対してBのCVRが何%増えたかを表します。
\(\mathrm{SE}\) エスイー 標準誤差(Standard Error)。標本から求めた値(ここではCVRの差)が偶然でどのくらい揺れるかの目安で、標本の値の標準偏差にあたります。検定ではプールしたCVRで求め、信頼区間では各群のCVRで求めた \(\mathrm{SE}_d\) を使います。
\(z\) ゼット z値(検定統計量)。差を標準誤差で割った値で、「差は偶然の揺れ幅の何倍か」を表します。差がないとき標準正規分布(平均0・標準偏差1)に従うので、この値の大きさからp値が求められます。
\(|z|\) ゼットの絶対値 z値の符号を取り去った大きさ。両側検定では「どちら向きの差か」を問わないので、絶対値を使います。
\(\Phi\) ファイ 標準正規分布の累積分布関数。\(\Phi(z)\) は「標準正規分布に従う値が \(z\) 以下になる確率」で、ベル型の曲線の \(z\) から左側の面積です。ギリシャ文字の大文字ファイで、確率分布の累積分布関数を表すのに慣例的に使われます。
\(p_2,\ p_1\) ピー・ツー、ピー・ワン 両側p値と片側p値。添え字の2・1は「すそが2つ(両側)」「すそが1つ(片側)」を表す、このページでの書き分けです。統計の本では単に \(p\) と書きます。
\(\alpha\) アルファ 有意水準。「p値がこれより小さければ帰無仮説を捨てる」と事前に決める境界で、5%(0.05)がよく使われます。ギリシャ文字のアルファで、第一種の過誤(差がないのに「ある」と判定してしまう誤り)の確率にあたります。
\(z_{\alpha/2}\) ゼット・アルファ・ニブンノイチ 両側で合わせて \(\alpha\) の確率をすそに残すときの境界のz値(臨界値)。95%信頼区間(\(\alpha = 0.05\))なら1.96、99%なら2.576です。片側では \(z_\alpha\)(5%なら1.645)になります。
\(d_L,\ d_U\) ディー・エル、ディー・ユー 差の信頼区間の下限(Lower)と上限(Upper)。本当の差がこの範囲にありそうだ、という区間の両端です。

用語

A/Bテスト エービーテスト 元のパターン(A)と変更したパターン(B)を、同じ期間に訪問者へランダムに出し分けて成果を比べる実験。Webサイト・広告・メールなどで広く使われます。ランダムに分けることで、曜日や流入元の違いなど「パターン以外の要因」を両群で同じ条件にできるのがポイントです。
コンバージョン率
(CVR)
コンバージョンりつ 訪問(クリック)のうち、購入・申込などの成果(コンバージョン)に至った割合。\(\mathrm{CVR}\) は Conversion Rate の略です。CVR単体の計算・逆算は「コンバージョン率(CVR)の計算」ページで扱っています。
帰無仮説 きむかせつ 「AとBのCVRに本当は差がない(\(p_A = p_B\))」という、検定で否定したい側の仮説。「無に帰したい仮説」という意味の名前です。検定は、この仮説のもとで今回の差がどれくらい起こりにくいかを調べます。
対立仮説 たいりつかせつ 帰無仮説と対立する、示したい側の仮説。両側検定では「AとBに差がある(\(p_A \neq p_B\))」、片側検定では「BがAより高い(\(p_B > p_A\))」です。
有意水準 ゆういすいじゅん 「p値がこれより小さければ帰無仮説を捨てる」と、テストの前に決めておく境界。5%がよく使われ、厳しく判定したいときは1%にします。「5%で有意」とは「差がないのに偶然これほどの差が出る確率が5%未満」という意味です。
p値 ピーち 帰無仮説(差がない)が正しいと仮定したとき、今回以上の差が偶然に出る確率。小さいほど「偶然とは考えにくい」ことを表します。「Bの方が良い確率」ではないことに注意してください(よくある誤解です)。
有意差 ゆういさ p値が有意水準より小さく、「偶然のばらつきでは説明しにくい差」と判断されたこと。「統計的に有意」とも言います。差の大きさや効果の確実さを保証する言葉ではなく、訪問数が非常に多ければごくわずかな差でも有意になります。
検定統計量 けんていとうけいりょう 検定のためにデータから計算する1つの数値。このページではz値がそれで、「差 ÷ 標準誤差」で求めます。この値がどのくらい極端かでp値が決まります。
2標本比率のz検定 にひょうほんひりつのゼットけんてい 2つの群の比率(CVRなど)に差があるかを、正規分布を使って調べる検定。A/Bテストの有意差判定として最も基本的な方法です。ほぼ同じ内容を「2×2のカイ二乗検定」で行うこともでき、両側検定のp値は一致します。
標準誤差 ひょうじゅんごさ 標本から求めた統計量(ここではCVRの差)が、標本の取り方によって偶然どのくらい揺れるかを表す標準偏差。訪問数の平方根に反比例して小さくなるので、標準誤差を半分にするには訪問数を4倍にする必要があります。
プール プール 「差がない」と仮定して、両群のデータを合わせて1つのCVRを推定すること。英語の pool(1つにまとめる)から来ています。検定の標準誤差はこのプールした値で計算します。
信頼区間 しんらいくかん 「本当の差はこの範囲にありそうだ」という区間。95%信頼区間は、同じ実験を何度もくり返したとき、その95%で本当の差を含むような区間の作り方です。区間が0を含まなければ、両側5%の検定で有意になることとほぼ対応します。
両側検定 りょうがわけんてい 「差があるか(どちらが高いかは問わない)」を調べる検定。どちらに転ぶかわからない普通のA/Bテストではこちらを使います。
片側検定 かたがわけんてい 「BがAより高いか」のように向きを決めて調べる検定。両側検定に比べてp値が半分になり有意になりやすいので、向きをテストの前に決めていた場合だけ使います。
棄却域 ききゃくいき 「z値がここに入ったら帰無仮説を捨てる(棄却する)」という、標準正規分布のすその領域。両側5%なら \(z < -1.96\) と \(z > 1.96\) の2つのすそで、合わせて面積が0.05になります。このページのグラフで塗られている部分です。
臨界値 りんかいち 棄却域の境界になるz値。両側5%なら1.96、両側1%なら2.576、片側5%なら1.645です。計算結果の「z値の余裕」は、今回のz値が臨界値をどれだけ超えているか(足りないか)を表します。
正規近似 せいききんじ CV数のばらつきは本来「二項分布」に従いますが、訪問数が多いと正規分布(ベル型の曲線)でよく近似できます。z検定はこの近似を使うので、各群の期待CV数 \(n\hat{p}\) と期待非CV数 \(n(1-\hat{p})\) が5以上(できれば10以上)あることが目安です。
検出力 けんしゅつりょく 本当に差があるときに、検定がそれを「有意」と検出できる確率。訪問数が少ないと検出力が低く、本当は効果があっても「有意差なし」になりがちです。「有意差なし」は「差がない」の証明ではありません。
第一種の過誤 だいいっしゅのかご 本当は差がないのに「有意差あり」と判定してしまう誤り。有意水準 \(\alpha\) はこの誤りを許す確率で、5%なら「差がないテストを100回やると約5回は偶然有意になる」ことを意味します。
多重比較 たじゅうひかく 同時に多くのパターンや指標を検定すること。5%の有意水準でも、20個の指標を検定すればどれか1つは偶然「有意」になる計算です。見る指標を事前に絞るか、有意水準を厳しくする(ボンフェローニ補正など)必要があります。
早期停止
(ピーキング)
そうきていし 結果を途中で何度も見て、有意になった時点でテストを打ち切ること。p値はテスト中に上下に揺れるので、「一度でも5%を切ったら止める」を続けると、差がなくても有意になる確率が5%をはるかに超えてしまいます。必要な訪問数を先に決め、そこまで待つのが基本です。
相対リフト率 そうたいリフトりつ AのCVRに対してBのCVRが何%増えたか。差 \(d\) をAのCVRで割って100倍します。「0.5ポイント上がった」より「25%増えた」の方が、CV数や売上の増加を見積もりやすい表現です。
ポイント ポイント %どうしの引き算の結果を表す単位。「2.5% − 2% = 0.5ポイント」のように使い、「0.5%」と書くと「2%の0.5%」と混同されるのを避けます。

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

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

割合・百分率(小学5年)
  • 割合が「比べられる量 ÷ もとにする量」で求められること(CVR = CV数 ÷ 訪問数)
  • %と小数を行き来できること(\(2.5\% = 0.025\))
  • 「%の差はポイントで言う」ことを知っていること(2.5% − 2% = 0.5ポイント)
分数の逆数と平方根(小学6年〜中学3年)
  • \(\dfrac{1}{5000} + \dfrac{1}{5000} = 0.0004\) のような逆数の足し算ができること
  • \(\sqrt{0.0001} = 0.01\) のように、平方根の意味がわかり簡単な値を求められること
正規分布と標準偏差(高校 数学B「統計的な推測」)
  • 平均0・標準偏差1の標準正規分布がベル型で、「\(z\) 以下になる確率 \(\Phi(z)\)」が曲線の左側の面積であること
  • \(\Phi(1.96) \fallingdotseq 0.975\) のように、正規分布表からおよその値が読めること
  • 「平均から標準偏差の2倍以上離れる確率は約5%」という感覚があること
仮説検定の考え方(高校 数学B「統計的な推測」)
  • 「差がない」という帰無仮説を立て、そのもとで観測結果がどれくらい起こりにくいかで判断する、という流れがわかること
  • 有意水準・p値・棄却域の言葉の関係(p値が有意水準より小さい ⇔ z値が棄却域に入る)がわかること
二項分布とその正規近似(高校 数学B)
  • 「確率 \(p\) のことを \(n\) 回試したときの成功回数」が二項分布に従い、\(n\) が大きいと正規分布で近似できることを知っていること

Excelで計算する方法

Excelファイルをダウンロード
式ごとにシートが分かれたExcelファイルです。貼り付け場所を気にせず、開いてすぐ使えます。
下の表を丸ごとコピーして、ExcelのA1セルに貼り付けるとそのまま使えます。
「各群のCVR」を求める表
A群の訪問数 n_A 10000
A群のCV数 x_A 200
B群の訪問数 n_B 10000
B群のCV数 x_B 250
A群のCVR p̂_A =B2/B1
B群のCVR p̂_B =B4/B3
「CVRの差と相対リフト率」を求める表
A群のCVR p̂_A 0.02
B群のCVR p̂_B 0.025
CVRの差 d =B2-B1
相対リフト率 L(%) =B3/B1*100
「プールしたCVR」を求める表
A群のCV数 x_A 200
B群のCV数 x_B 250
A群の訪問数 n_A 10000
B群の訪問数 n_B 10000
プールしたCVR p̂ =(B1+B2)/(B3+B4)
「標準誤差とz値」を求める表
プールしたCVR p̂ 0.0225
A群の訪問数 n_A 10000
B群の訪問数 n_B 10000
CVRの差 d 0.005
標準誤差 SE =SQRT(B1*(1-B1)*(1/B2+1/B3))
z値 z =B4/B5
「p値(両側・片側)」を求める表
z値 z 2.384
両側p値 p₂ =2*(1-NORM.S.DIST(ABS(B1),TRUE))
片側p値 p₁ =1-NORM.S.DIST(B1,TRUE)
「CVRの差の信頼区間」を求める表
A群のCVR p̂_A 0.02
A群の訪問数 n_A 10000
B群のCVR p̂_B 0.025
B群の訪問数 n_B 10000
CVRの差 d 0.005
信頼水準(0.95 = 95%) 0.95
z_(α/2) =NORM.S.INV(1-(1-B6)/2)
標準誤差 SE_d =SQRT(B1*(1-B1)/B2+B3*(1-B3)/B4)
下限 d_L =B5-B7*B8
上限 d_U =B5+B7*B8
貼り付けると、上の行が入力欄、数式の入った行が自動計算の結果になります。比率は0.02のような小数(0〜1)で扱い、%にしたいときは100倍してください。
1つ目の表はB5にA群のCVR 0.02、B6にB群のCVR 0.025が出ます。2つ目の表は差0.005(0.5ポイント)とリフト率25、3つ目の表はプールしたCVR 0.0225、4つ目の表は標準誤差約0.002097とz値約2.384になります。
5つ目の表の NORM.S.DIST(z, TRUE) は標準正規分布の累積確率 Φ(z) を返す関数で、両側p値は約0.0171、片側p値は約0.0086になります。6つ目の表の NORM.S.INV は累積確率からz値を逆に求める関数(信頼水準95%なら1.96)で、下限約0.0009・上限約0.0091(0.09〜0.91ポイント)になります。

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

Excelファイルをダウンロード
上のExcelファイルをダウンロードし、Googleドライブにアップロードして開くと、そのままスプレッドシートとして使えます。
下の表を丸ごとコピーして、GoogleスプレッドシートのA1セルに貼り付けるとそのまま使えます。
「各群のCVR」を求める表
A群の訪問数 n_A 10000
A群のCV数 x_A 200
B群の訪問数 n_B 10000
B群のCV数 x_B 250
A群のCVR p̂_A =B2/B1
B群のCVR p̂_B =B4/B3
「CVRの差と相対リフト率」を求める表
A群のCVR p̂_A 0.02
B群のCVR p̂_B 0.025
CVRの差 d =B2-B1
相対リフト率 L(%) =B3/B1*100
「プールしたCVR」を求める表
A群のCV数 x_A 200
B群のCV数 x_B 250
A群の訪問数 n_A 10000
B群の訪問数 n_B 10000
プールしたCVR p̂ =(B1+B2)/(B3+B4)
「標準誤差とz値」を求める表
プールしたCVR p̂ 0.0225
A群の訪問数 n_A 10000
B群の訪問数 n_B 10000
CVRの差 d 0.005
標準誤差 SE =SQRT(B1*(1-B1)*(1/B2+1/B3))
z値 z =B4/B5
「p値(両側・片側)」を求める表
z値 z 2.384
両側p値 p₂ =2*(1-NORMSDIST(ABS(B1)))
片側p値 p₁ =1-NORMSDIST(B1)
「CVRの差の信頼区間」を求める表
A群のCVR p̂_A 0.02
A群の訪問数 n_A 10000
B群のCVR p̂_B 0.025
B群の訪問数 n_B 10000
CVRの差 d 0.005
信頼水準(0.95 = 95%) 0.95
z_(α/2) =NORMSINV(1-(1-B6)/2)
標準誤差 SE_d =SQRT(B1*(1-B1)/B2+B3*(1-B3)/B4)
下限 d_L =B5-B7*B8
上限 d_U =B5+B7*B8
Excelとほぼ同じ式が使えます。標準正規分布の累積確率は NORMSDIST(z)、その逆はNORMSINV(p) と書きます(Excelの NORM.S.DIST / NORM.S.INV と同じ働きです)。表を丸ごとコピーしてA1セルに貼り付け、入力欄を自分の数値に書き換えてください。

Pythonで計算する方法

import math

visits_a, conversions_a = 10000, 200   # A群の訪問数・CV数
visits_b, conversions_b = 10000, 250   # B群の訪問数・CV数
alpha = 0.05                           # 有意水準(5%)

def normal_cdf(z):
    # 標準正規分布の累積分布関数 Φ(z)
    return 0.5 * math.erfc(-z / math.sqrt(2))

def normal_ppf(p):
    # Φの逆関数(二分法。z_(α/2) を求めるのに使う)
    low, high = -10.0, 10.0
    for _ in range(100):
        mid = (low + high) / 2
        if normal_cdf(mid) < p:
            low = mid
        else:
            high = mid
    return (low + high) / 2

cvr_a = conversions_a / visits_a
cvr_b = conversions_b / visits_b
diff = cvr_b - cvr_a
lift = diff / cvr_a * 100
pooled = (conversions_a + conversions_b) / (visits_a + visits_b)
se_pooled = math.sqrt(pooled * (1 - pooled) * (1 / visits_a + 1 / visits_b))
z = diff / se_pooled
p_two_sided = 2 * (1 - normal_cdf(abs(z)))
p_one_sided = 1 - normal_cdf(z)

se_diff = math.sqrt(cvr_a * (1 - cvr_a) / visits_a + cvr_b * (1 - cvr_b) / visits_b)
z_half = normal_ppf(1 - alpha / 2)
ci_low, ci_high = diff - z_half * se_diff, diff + z_half * se_diff

print(f"A群のCVR: {cvr_a * 100:.2f}%  B群のCVR: {cvr_b * 100:.2f}%")
print(f"差: {diff * 100:.2f}ポイント  相対リフト率: {lift:.1f}%")
print(f"z値: {z:.3f}  両側p値: {p_two_sided:.4f}  片側p値: {p_one_sided:.4f}")
print("判定(両側):", "有意差あり" if p_two_sided < alpha else "有意差なし")
print(f"差の{(1 - alpha) * 100:.0f}%信頼区間: {ci_low * 100:.2f} 〜 {ci_high * 100:.2f}ポイント")
標準ライブラリだけで動きます(math.erfc で標準正規分布の累積確率を求めています)。この例では z値2.384、両側p値0.0171、片側p値0.0086、判定「有意差あり」、差の95%信頼区間0.09〜0.91ポイントと表示されます。先頭の4つの数値と有意水準を書き換えて実行してください。scipyが使える環境なら scipy.stats.norm.cdf / norm.ppf に置き換えられます。

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

各群のCVR(コンバージョン率)
p̂_A = x_A ÷ n_A
\hat{p}_A = \dfrac{x_A}{n_A}
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
  <mrow>
    <msub><mover accent="true"><mi>p</mi><mo>^</mo></mover><mi>A</mi></msub>
    <mo>=</mo>
    <mfrac>
      <msub><mi>x</mi><mi>A</mi></msub>
      <msub><mi>n</mi><mi>A</mi></msub>
    </mfrac>
  </mrow>
</math>
hat(p)_A = x_A / n_A
xA/nA
pA := xA/nA;
pA = xA/nA;
p̂_A = x_A/n_A
CVRの差と相対リフト率
d = p̂_B − p̂_A,  L = d ÷ p̂_A × 100
d = \hat{p}_B - \hat{p}_A, \quad L = \dfrac{d}{\hat{p}_A} \times 100
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
  <mrow>
    <mi>d</mi><mo>=</mo>
    <msub><mover accent="true"><mi>p</mi><mo>^</mo></mover><mi>B</mi></msub>
    <mo>&#x2212;</mo>
    <msub><mover accent="true"><mi>p</mi><mo>^</mo></mover><mi>A</mi></msub>
    <mo>,</mo><mspace width="1em"/>
    <mi>L</mi><mo>=</mo>
    <mfrac><mi>d</mi><msub><mover accent="true"><mi>p</mi><mo>^</mo></mover><mi>A</mi></msub></mfrac>
    <mo>&#xD7;</mo><mn>100</mn>
  </mrow>
</math>
d = hat(p)_B - hat(p)_A, L = d / hat(p)_A xx 100
d = pB - pA; d/pA*100
d := pB - pA; L := d/pA*100;
d = pB - pA; L = d/pA*100;
d = p̂_B − p̂_A, L = d/p̂_A × 100
プールしたCVR(両群を合わせた1つのCVR)
p̂ = (x_A + x_B) ÷ (n_A + n_B)
\hat{p} = \dfrac{x_A + x_B}{n_A + n_B}
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
  <mrow>
    <mover accent="true"><mi>p</mi><mo>^</mo></mover>
    <mo>=</mo>
    <mfrac>
      <mrow><msub><mi>x</mi><mi>A</mi></msub><mo>+</mo><msub><mi>x</mi><mi>B</mi></msub></mrow>
      <mrow><msub><mi>n</mi><mi>A</mi></msub><mo>+</mo><msub><mi>n</mi><mi>B</mi></msub></mrow>
    </mfrac>
  </mrow>
</math>
hat(p) = (x_A + x_B) / (n_A + n_B)
(xA + xB)/(nA + nB)
pPool := (xA + xB)/(nA + nB);
pPool = (xA + xB)/(nA + nB);
p̂ = (x_A + x_B)/(n_A + n_B)
標準誤差とz値(2標本比率のz検定)
SE = √(p̂(1 − p̂)(1/n_A + 1/n_B)),  z = d ÷ SE
\mathrm{SE} = \sqrt{\hat{p}(1-\hat{p})\left(\dfrac{1}{n_A}+\dfrac{1}{n_B}\right)}, \quad z = \dfrac{d}{\mathrm{SE}}
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
  <mrow>
    <mi>z</mi><mo>=</mo>
    <mfrac>
      <mrow><msub><mover accent="true"><mi>p</mi><mo>^</mo></mover><mi>B</mi></msub><mo>&#x2212;</mo><msub><mover accent="true"><mi>p</mi><mo>^</mo></mover><mi>A</mi></msub></mrow>
      <msqrt>
        <mover accent="true"><mi>p</mi><mo>^</mo></mover>
        <mo>(</mo><mn>1</mn><mo>&#x2212;</mo><mover accent="true"><mi>p</mi><mo>^</mo></mover><mo>)</mo>
        <mo>(</mo>
        <mfrac><mn>1</mn><msub><mi>n</mi><mi>A</mi></msub></mfrac>
        <mo>+</mo>
        <mfrac><mn>1</mn><msub><mi>n</mi><mi>B</mi></msub></mfrac>
        <mo>)</mo>
      </msqrt>
    </mfrac>
  </mrow>
</math>
SE = sqrt(hat(p)(1 - hat(p))(1/n_A + 1/n_B)), z = d / SE
se = Sqrt[pPool*(1 - pPool)*(1/nA + 1/nB)]; z = d/se
SE := sqrt(pPool*(1 - pPool)*(1/nA + 1/nB)); z := d/SE;
SE = sqrt(pPool*(1 - pPool)*(1/nA + 1/nB)); z = d/SE;
SE = √(p̂(1 − p̂)(1/n_A + 1/n_B)), z = d/SE
p値(両側・片側)
p₂ = 2(1 − Φ(|z|)),  p₁ = 1 − Φ(z)
p_2 = 2\left(1 - \Phi(|z|)\right), \quad p_1 = 1 - \Phi(z)
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
  <mrow>
    <msub><mi>p</mi><mn>2</mn></msub><mo>=</mo>
    <mn>2</mn><mo>(</mo><mn>1</mn><mo>&#x2212;</mo>
    <mi>&#x3A6;</mi><mo>(</mo><mo>|</mo><mi>z</mi><mo>|</mo><mo>)</mo><mo>)</mo>
    <mo>,</mo><mspace width="1em"/>
    <msub><mi>p</mi><mn>1</mn></msub><mo>=</mo>
    <mn>1</mn><mo>&#x2212;</mo><mi>&#x3A6;</mi><mo>(</mo><mi>z</mi><mo>)</mo>
  </mrow>
</math>
p_2 = 2(1 - Phi(|z|)), p_1 = 1 - Phi(z)
p2 = 2*(1 - CDF[NormalDistribution[0, 1], Abs[z]]); p1 = 1 - CDF[NormalDistribution[0, 1], z]
p2 := 2*(1 - Statistics:-CDF(Normal(0, 1), abs(z))); p1 := 1 - Statistics:-CDF(Normal(0, 1), z);
p2 = 2*(1 - normcdf(abs(z))); p1 = 1 - normcdf(z);
p_2 = 2(1 − Φ(|z|)), p_1 = 1 − Φ(z)
CVRの差の信頼区間
d ± z_(α/2) × √(p̂_A(1 − p̂_A)/n_A + p̂_B(1 − p̂_B)/n_B)
d \pm z_{\alpha/2}\sqrt{\dfrac{\hat{p}_A(1-\hat{p}_A)}{n_A}+\dfrac{\hat{p}_B(1-\hat{p}_B)}{n_B}}
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
  <mrow>
    <mi>d</mi><mo>&#xB1;</mo>
    <msub><mi>z</mi><mrow><mi>&#x3B1;</mi><mo>/</mo><mn>2</mn></mrow></msub>
    <msqrt>
      <mfrac>
        <mrow><msub><mover accent="true"><mi>p</mi><mo>^</mo></mover><mi>A</mi></msub><mo>(</mo><mn>1</mn><mo>&#x2212;</mo><msub><mover accent="true"><mi>p</mi><mo>^</mo></mover><mi>A</mi></msub><mo>)</mo></mrow>
        <msub><mi>n</mi><mi>A</mi></msub>
      </mfrac>
      <mo>+</mo>
      <mfrac>
        <mrow><msub><mover accent="true"><mi>p</mi><mo>^</mo></mover><mi>B</mi></msub><mo>(</mo><mn>1</mn><mo>&#x2212;</mo><msub><mover accent="true"><mi>p</mi><mo>^</mo></mover><mi>B</mi></msub><mo>)</mo></mrow>
        <msub><mi>n</mi><mi>B</mi></msub>
      </mfrac>
    </msqrt>
  </mrow>
</math>
d +- z_(alpha/2) sqrt((hat(p)_A(1 - hat(p)_A))/n_A + (hat(p)_B(1 - hat(p)_B))/n_B)
seD = Sqrt[pA*(1 - pA)/nA + pB*(1 - pB)/nB]; {d - zHalf*seD, d + zHalf*seD}
seD := sqrt(pA*(1 - pA)/nA + pB*(1 - pB)/nB); [d - zHalf*seD, d + zHalf*seD];
seD = sqrt(pA*(1 - pA)/nA + pB*(1 - pB)/nB); ci = [d - zHalf*seD, d + zHalf*seD];
d ± z_(α/2) √(p̂_A(1 − p̂_A)/n_A + p̂_B(1 − p̂_B)/n_B)

ChatGPT に聞いて計算してもらう方法

あなたは統計(仮説検定)の計算アシスタントです。次の計算を、必ずPythonコードを実際に実行して行い、実行結果の数値だけを根拠に回答してください(暗算や推測で答えないでください)。

A/Bテストの結果は次のとおりです。
- A群:訪問数10000、コンバージョン数200
- B群:訪問数10000、コンバージョン数250
次の値をそれぞれ求めてください。
1. 各群のコンバージョン率(%)、CVRの差(ポイント)、相対リフト率(%)
2. プールしたコンバージョン率と、プールした標準誤差 SE = √(p̂(1−p̂)(1/n_A + 1/n_B))
3. z値 = 差 ÷ SE と、両側p値・片側p値(標準正規分布)
4. 有意水準5%(両側)で有意差があるかどうかの判定
5. 差の95%信頼区間(各群のCVRのばらつきから求めた標準誤差 √(p̂_A(1−p̂_A)/n_A + p̂_B(1−p̂_B)/n_B) を使う)

Pythonでは math.erfc(または scipy.stats.norm)を使って計算し、計算に使った式と実行結果の数値を示してください。

計算ドリル(演習問題)

このページの式を、自分の手で計算できるようになるための演習問題です。
答えと解説は解答ページにあります。


使い方
  1. 1
    数値を入力
    計算したい数値を入力欄に入力します
  2. 2
    計算
    「計算する」ボタンを押します
  3. 3
    結果を確認
    計算結果がその場に表示されます。計算の考え方や式の解説も同じページで確認できます
  DataChefの特徴
簡単・無料
無料で回数無制限の変換
専門知識不要、直感的で簡単な操作
会員登録不要
アクセス直後に利用可能
個人情報を登録することなく使用できます
安全・安心
通信を高度に暗号化
「ダウンロード」押下でファイルを自動削除
高速
ストレスのない快適な表示速度・変換速度
透かしなし
ウォーターマークなし
クレジット表記不要
商用利用可能
無料で商用利用可能
商用利用許諾の連絡も不要です