Tukey HSD 事後検定
分散分析のあと、どの群の平均が違うのかを特定します。平均が2、6、4の3群なら、有意水準0.05ですべての組に差があると判定されます。各群の平均、臨界値、全組の比較表も表示し、ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- ラベル
- A, B, C
- 有意水準
- 0.05
- K
- 3
- 総数(N)
- 12
- 誤差自由度
- 9
- 平均平方誤差(MSE)
- 0.6666666667
一元配置分散分析(ANOVA)が「すべての群平均が等しい」という全体帰無仮説を棄却した後でも、研究者はどの対に差があるのかを知る必要があります。Tukey の有意差(HSD)と、標本サイズが等しくない場合の Tukey–Kramer 形式は、族単位の誤り率をひとつに保ったままこの問いに答えます。すべての対の平均差は、残差平均平方・群サイズ・群数と誤差自由度に対するステューデント化範囲分位点から構成される臨界値と比較されます。この機能は 2 つ以上の数値グループ配列と、任意のラベルおよび alpha を受け取り、群平均・残差 MSE・臨界 q・サイズが一致する場合の共通 HSD、そして有意フラグ付きの完全な対比較表を返します。
有意な ANOVA の後に Tukey HSD が意味するもの
分散分析は k 群の平均のうち少なくともひとつが異なるかを検定しますが、どの対かまでは特定しません。すべての対に通常の 2 標本 t 検定を実行すると、比較数が増えるにつれて偽陽性の確率が膨らみます。Tukey の手法は、ステューデント化範囲分布を用いることで、すべての対比較について族単位の誤り率を同時に制御します。
臨界距離は、帰無仮説の下で k 個の平均の最大の隔たりが残差標準誤差で尺度化されたときにどれほど大きく見えるかに依存します。すべての群が同じ標本サイズ n を持つとき、この距離はしばしば単一の有意差として書かれます。すなわち HSD は、k と誤差自由度に対する q-alpha に、MSE を n で割った値の平方根を掛けたものです。
HSD より大きい絶対平均差はすべて、選択した alpha で有意と判定されます。標本サイズが異なる場合、Tukey–Kramer の調整は共通の n を、1/n-i に 1/n-j を加えた対固有の標準誤差で置き換えるため、各比較は同じ q 臨界値を共有しつつ独自の臨界差を持ちます。
教科書では、心理学・生物学・農学・A/B 製品実験において、一元配置 ANOVA の直後に HSD を導入します。手計算は、MSE を ANOVA 表から写し間違えたとき、誤差自由度が 1 ずれたとき、ラベルが入れ替わったとき、あるいは不均等な n を無視したときに失敗します。
生の観測値から MSE と対フラグまでの経路を自動化すれば、解答の記述が求める中間量を残しつつ、こうした取りこぼしを排除できます。
この機能が答えを計算する仕組み
任意の labels は、配列の配列を渡す場合に群に名前を付けます。任意の alpha は族単位の水準を設定し、既定値は 0.05 です。
各群の平均と群内平方和を計算し、残差 SSE をプールして MSE すなわち SSE を N 引く k で割った値を求め、alpha・k・誤差自由度に対するステューデント化範囲臨界値 q を近似し、順序を問わないすべての対を構成します。等しい標本サイズでは単一の HSD 値も報告し、不均等なサイズでは Tukey–Kramer の対固有の臨界差を用います。
各比較は、両方の平均・符号付きおよび絶対の差・標本サイズ・範囲尺度の標準誤差・臨界差・定義される場合の観測 q 統計量、そして真偽の有意フラグを列挙します。応答はさらに、手法名・k・n-total・誤差自由度・mse・sse・q-crit・標本サイズが等しいか・平均と標本分散を含む群サマリー・有意な対の数を返します。
どこで使うか、いくらかかるか
典型的な用途には、有意な一元配置 ANOVA の後にどの食事・肥料・UI バリアントの平均が分離するかの確認、各対をその臨界差とともに列挙する解答キーの生成、全体の F 検定と対ごとの HSD 判定の違いを教えること、そして生の群ベクトルをすでに保存しているレポートへ有意な対のフラグを送り込むことが含まれます。
ブラウザー経路はローカルで動作し、アカウントを必要としません。検証に失敗しても残高は消費されません。
残差自由度が少なくとも 1 になるよう群内の反復を十分に確保して 2 群以上を保ち、場当たり的な表計算で浮動小数点経路を再導出するより、サーバーが計算した mse と比較を優先し、結果は独立性やおおよそ同等の残差分散などの仮定を確認する代わりではなく、ANOVA の後の事後ステップとして扱ってください。
活用例
宿題と試験の解答キー
学生が一元配置 ANOVA を実行した後、ひとつの正準な対比較表と HSD 値を用いて、どの群対が Tukey HSD を超えるかを検証します。
実験室と圃場の試験
生物学や農学の試験からの処理反復配列を渡し、有意な対フラグを残差 MSE の隣に保存します。
よくある質問
すべての組でt検定をしてはいけないのはなぜですか?
検定を重ねるたびに偽陽性の可能性が増え、組が多いほど誤りが積み重なるためです。Tukey HSD法は全体の誤り率を一つに保ったまま、すべての組を同時に比べます。
群ごとの人数が違っても使えますか?
使えます。大きさが違う場合はTukey–Kramer法に切り替わり、2つの群の大きさに応じて組ごとの臨界差を計算します。臨界値qは共通のままです。
比較表はどう読めばよいですか?
各行が2つの群の比較です。平均の差の絶対値が臨界差より大きければ、その組は有意と表示されます。平均が2、6、4なら、差の4、2、2はすべて基準を超えます。
有意水準はいくつで検定しますか?
指定しなければ0.05を使い、0.01や0.10などに変えることもできます。この水準は組ごとではなく、比較全体にまとめて適用されます。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/stat/tukey-hsd \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"groups":[[1,2,3,2],[5,6,7,6],[3,4,5,4]]}'const res = await fetch("https://api.kit.forhosting.com/stat/tukey-hsd", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"groups": [
[
1,
2,
3,
2
],
[
5,
6,
7,
6
],
[
3,
4,
5,
4
]
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/stat/tukey-hsd",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"groups": [
[
1,
2,
3,
2
],
[
5,
6,
7,
6
],
[
3,
4,
5,
4
]
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/stat/tukey-hsd", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"groups":[[1,2,3,2],[5,6,7,6],[3,4,5,4]]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"groups":[[1,2,3,2],[5,6,7,6],[3,4,5,4]]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/stat/tukey-hsd", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"groups": [
[
1,
2,
3,
2
],
[
5,
6,
7,
6
],
[
3,
4,
5,
4
]
]
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "stat.tukey_hsd",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
この機能が答えを計算する仕組み
必須の groups フィールドを持つ JSON ボディを送信します。これは少なくとも 2 つの数値配列からなる配列、または文字列ラベルを数値配列に対応づけるオブジェクトのいずれかです。エンジンは JSON 数値または単純な数値文字列から有限の数を解析し、2 群未満・空の群・非数値のセル・開区間の外にある alpha・残差自由度が 1 未満の設計を、いずれも invalid_input として課金なしで拒否します。乱数もクロックもネットワークもなく、同一入力は常に同一の JSON を生みます。処理は検証に、総観測数の O と k の 2 乗の対算術の O を加えたものであり、この tier-A parse 機能の分析的コストモデルに収まり、成功したリクエストごとに $0.002 で提供されます。
どこで使うか、いくらかかるか
宿題の確認や小規模実験の手早い事後検定には無料のブラウザーツールを使い、ノートブック・成績簿・実験パイプライン・製品分析ジョブが多数の多群比較を毎回同じ方法で解決しなければならないときには API を呼び出してください。API の利用は、成功したリクエストごとに公表された $0.002 の基本価格でプリペイドの KIT 残高から差し引かれます。
連携の活用例
製品の A/B/n 分析
多バリアントの指標標本を API 経由でまとめて処理し、共有の族単位 alpha の下でどのバリアントに差があるかを報告します。
技術的な質問
この API で Tukey HSD 電卓を実行するには?
groups を数値配列の配列(またはラベルマップ)として JSON を POST し、任意で alpha と labels を指定します。応答には mse、q_crit、サイズが一致する場合の hsd、そして有意フラグ付きの comparisons 表が含まれます。
群の標本サイズが異なる場合は?
エンジンは Tukey–Kramer 形式を用います。各対は MSE と 2 つの標本サイズから独自の臨界差を得ますが、k と df_error に対するひとつのステューデント化範囲 q_crit を共有します。
群が 2 つ未満だとどのエラーになりますか?
検証は invalid_input で失敗し、Tukey HSD には少なくとも 2 群が必要であると示します。この失敗は課金されません。
Tukey HSD 電卓は無料ですか?
ブラウザーウィジェットは無料でローカルに動作します。API 呼び出しは公表された $0.002 の基本価格でプリペイドの KIT 残高を使用します。無効な入力は課金されません。
同じ入力に対して結果は常に同じですか?
はい。アルゴリズムは固定された臨界値近似を用いる純粋な分析的算術で、乱数もタイムスタンプもないため、同一の群と alpha は同一の JSON を生みます。