A/Bテストの標本サイズと有意性を確認
このA/Bテスト有意性チェッカーは、2つのランディングページ案の訪問者数とコンバージョン数から、観測コンバージョン率、その差、2標本比率のプールされたzスコアを算出します。また、正規近似を妥当とみなすために、各案に十分なコンバージョンと非コンバージョンがあるかも確認します。意思決定前の迅速で透明な目安としてご利用いただけますが、統計的な表示は、実験設計、トラフィック品質の確認、事前に定めた停止規則の代わりにはなりません。
無料で実行
同じ実験から得た整合性のある集計値をご入力ください
案Aと案Bについて、訪問者数とコンバージョン数をご入力ください。訪問者数は各ページ案へ割り当てられた対象者または対象セッションを表し、コンバージョン数は同一の事前定義済み目標を達成した対象者を表します。アトリビューション期間、オーディエンス条件、ボット除外、コンバージョンの定義は両案で統一してください。訪問者が0人の案では率を観測できないため、計算はエラーになります。また、1人につき成否1件という二項結果を表さないため、コンバージョン数が訪問者数を超える入力も受け付けません。指標にリピート購入や1人あたり複数イベントが含まれる場合は、利用前に各訪問者がコンバージョンしたか否かという結果へ集約してください。計画上の要因でない限り、異なる日付、キャンペーン、端末、割り当て規則の集計を混ぜないでください。無作為割り当てと同時期の露出も重要です。数式上正確なzスコアでも、曜日効果、配分不良、訪問者の重複、案ごとに異なる計測は修正できません。結果をページ自体の効果と判断する前に、これらの前提をご確認ください。
率、差、zスコアをまとめてご確認ください
各案の観測率は、コンバージョン数を訪問者数で割った値です。絶対差は案Bの率から案Aの率を引くため、正の値はB、負の値はAに有利です。パーセントポイント差は同じ隔たりを0から100の尺度で示したもので、相対的な増加率ではありません。次に、真の率が等しいという帰無仮説のもとで予想される標準誤差を推定するため、両群のコンバージョンをプールします。観測差をその標準誤差で割った値がzスコアです。絶対値が1.96以上なら、一般的な両側5%基準に照らして統計的に注目すべき結果と表示します。これは簡易的な判定規則であり、勝ったページが同じ改善を再現する保証ではありません。ベイズ確率は算出せず、繰り返し確認や複数案に対する補正も行わず、売上価値も反映しません。都合のよい1つの数字だけを選ばず、方向、実務上の大きさ、統計的な表示をあわせてご判断ください。
判断前に標本の妥当性に関する注意をご確認ください
2標本比率のz手法は正規近似に依存します。本ツールでは、各案にコンバージョンが5件以上、非コンバージョンも5件以上ある場合に限り、標本を妥当と表示します。これは実務的な最低条件であり、十分な検出力を保証するものではありません。条件を満たさない場合も透明性のためzスコアは表示しますが、基準到達の表示は慎重に解釈してください。正確検定や追加観測のほうが適切な場合があります。条件を満たす場合でも、商業上意味のある最小効果を検出できる実験かをご検討ください。ごく小さくても統計的に注目される改善は実装費に見合わない可能性があり、大きく有望な差でもトラフィックが少なければ不確実です。スコアが1.96を超えた瞬間に停止すると、逐次設計を採用しない限り、繰り返し確認によって偽陽性が増えます。開始前に、主要指標、最小検出可能効果、期間、除外条件、停止規則を定めてください。さらに、ガードレール指標とセグメントの均衡もご確認ください。本計算は1つの二値結果を要約するだけで、表示速度の低下、返金の変化、標本比率の不整合、不審なトラフィックだけに現れる改善は検出できません。
活用例
有力なランディングページ案を評価
計画済みテストの登録数を比較し、観測差が一般的な両側z基準を超えるかご確認いただけます。
初期データ不足を確認
正規近似による結論を提示する前に、コンバージョンまたは非コンバージョンが不足する案を特定できます。
報告済み実験を監査
元の集計値から率とプールされたzスコアを再計算し、ダッシュボードや関係者の説明をご確認いただけます。
よくある質問
ここで統計的に注目すべきとは何ですか?
2標本比率のプールされたzスコアの絶対値が1.96以上であることです。検定の前提下で、単純な両側5%基準に相当します。
標本の妥当性はどのように確認しますか?
各案にコンバージョンと非コンバージョンがそれぞれ5件以上必要です。近似の根拠にはなりますが、事業目標に十分な検出力を証明するものではありません。
注目すべき結果ならBが優れていると証明できますか?
いいえ。特定の統計モデルに基づく証拠であり、因果関係や将来の成果の証明ではありません。無作為割り当て、信頼できる計測、計画済み停止規則が必要です。
コンバージョン数が訪問者数を超えてもよいですか?
いいえ。本計算は訪問者単位の二値結果を扱います。繰り返しイベントは、1回以上コンバージョンしたユニーク訪問者数に集約してください。
利用料金はいくらですか?
このページのブラウザー上では無料で実行できます。APIリクエストは1回$0.002です。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/ecom/landing-page-ab-test-significance \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"variant_a_visitors":5000,"variant_a_conversions":500,"variant_b_visitors":5000,"variant_b_conversions":600}'const res = await fetch("https://api.kit.forhosting.com/ecom/landing-page-ab-test-significance", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"variant_a_visitors": 5000,
"variant_a_conversions": 500,
"variant_b_visitors": 5000,
"variant_b_conversions": 600
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/ecom/landing-page-ab-test-significance",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"variant_a_visitors": 5000,
"variant_a_conversions": 500,
"variant_b_visitors": 5000,
"variant_b_conversions": 600
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/ecom/landing-page-ab-test-significance", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"variant_a_visitors":5000,"variant_a_conversions":500,"variant_b_visitors":5000,"variant_b_conversions":600}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"variant_a_visitors":5000,"variant_a_conversions":500,"variant_b_visitors":5000,"variant_b_conversions":600}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/ecom/landing-page-ab-test-significance", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"variant_a_visitors": 5000,
"variant_a_conversions": 500,
"variant_b_visitors": 5000,
"variant_b_conversions": 600
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "ecom.landing_page_ab_test_significance",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |