群要約からのANOVA
平均、標準偏差、標本サイズだけで一元配置分散分析ができます。平均3、5、7、標準偏差1、各4人の3群なら、Fは16、p値は0.001087837278です。元のデータは必要ありません。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
論文・教科書・ダッシュボードでは、完全な観測ベクトルではなく群平均・標準偏差・標本サイズだけが示されることが多くあります。それでも、群間平均平方と群内平均平方を比べるF統計量と、中心F分布の上側p値が必要です。本群要約からのANOVA計算機は、平均・標本偏差・サイズを持つ2群以上を受け取り、古典的なANOVA表を再構成し、生の行を要求せずにFとpを報告します。
要約からの一元配置ANOVAが意味すること
一元配置分散分析は、独立正規・等分散の通常モデルの下で、k個の群平均のうち少なくとも1つが他と異なるかを検定します。教科書は生の観測から始めますが、各群が標本平均・標本標準偏差・標本サイズだけを与える場合でも同じF比を復元できます。全体平均は群平均のサイズ加重平均です。
群間平方和SSBは、各サイズと「群平均と全体平均の差の二乗」の積を合計します。群内平方和SSWは、各(n−1)と標本偏差の二乗の積を合計し、偏差が通常の標本SDであれば残差平方和と一致します。自由度は群間がk−1、群内がN−kです。
平均平方はそれらの和を自由度で割ったもので、Fは群間平均平方を群内平均平方で割った比です。p値は、その自由度を持つ中心F確率変数が観測統計量を超える確率です。効果量η²は総SSが正のときSSBを総SSで割った値です。
生データがプライバシー境界を越えられない場合、公表表しかない場合、表計算がすでに反復を平均とSDに潰している場合に、この要約経路は不可欠です。手計算はnとn−1の混同、母集団SDと標本SDの混在、全体平均での不均等サイズの無視、F裾の誤った臨界行の読み取りで崩れます。
利用場面と費用
宿題や論文表にすでに群平均・SD・nがあり、生得点を打ち直さずに対応するFとpが必要なときは、無料のブラウザツールをご利用ください。典型的な用途は、圧縮表からの教科書ANOVA解答の検算、生データ請求前の公表実験要約のスクリーニング、ANOVA表とF裾の関係の教材、プライバシーのため群集計だけを保存する報告へのF・pの供給です。
ブラウザ経路はローカルで動作し、アカウントは不要です。群内自由度が正になるよう各群nを少なくとも2として2群以上を保ち、deviationには標本SDを用い、結果を独立性やおおむね同程度の残差分散の確認の代替ではなく、大域的な一元配置検定として扱ってください。
活用例
宿題・試験の解答キー
公表された群平均・標本SD・サイズだけから、一元配置ANOVAのF統計量とp値を単一の標準表で照合します。
論文・報告書の表
生の観測ベクトルが無い雑誌や社内ダッシュボードの要約統計からFとpを再構成します。
よくある質問
元のデータがなくても分散分析はできますか?
はい。論文や表に各群の平均、標準偏差、標本サイズしか載っていなくても、この3つから平方和、F統計量、p値を組み立て直せます。
自由度はどう求めますか?
群間の自由度は群の数から1を引いた値、群内の自由度は全体の標本サイズから群の数を引いた値です。4人ずつの3群なら2と9になります。
イータ二乗は何を表しますか?
全体のばらつきのうち、群の平均の違いで説明される割合です。群間平方和を全体の平方和で割って求め、例では41のうち32で0.780487804878です。
標準偏差がすべて0だとどうなりますか?
平均も等しければFは0、p値は1です。平均が異なる場合は、群内にばらつきがないためFは無限大とみなされ、p値は0になります。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/stat/anova-summary \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"groups":[{"mean":3,"deviation":1,"size":4,"label":"A"},{"mean":5,"deviation":1,"size":4,"label":"B"},{"mean":7,"deviation":1,"size":4,"label":"C"}]}'const res = await fetch("https://api.kit.forhosting.com/stat/anova-summary", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"groups": [
{
"mean": 3,
"deviation": 1,
"size": 4,
"label": "A"
},
{
"mean": 5,
"deviation": 1,
"size": 4,
"label": "B"
},
{
"mean": 7,
"deviation": 1,
"size": 4,
"label": "C"
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/stat/anova-summary",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"groups": [
{
"mean": 3,
"deviation": 1,
"size": 4,
"label": "A"
},
{
"mean": 5,
"deviation": 1,
"size": 4,
"label": "B"
},
{
"mean": 7,
"deviation": 1,
"size": 4,
"label": "C"
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/stat/anova-summary", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"groups":[{"mean":3,"deviation":1,"size":4,"label":"A"},{"mean":5,"deviation":1,"size":4,"label":"B"},{"mean":7,"deviation":1,"size":4,"label":"C"}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"groups":[{"mean":3,"deviation":1,"size":4,"label":"A"},{"mean":5,"deviation":1,"size":4,"label":"B"},{"mean":7,"deviation":1,"size":4,"label":"C"}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/stat/anova-summary", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"groups": [
{
"mean": 3,
"deviation": 1,
"size": 4,
"label": "A"
},
{
"mean": 5,
"deviation": 1,
"size": 4,
"label": "B"
},
{
"mean": 7,
"deviation": 1,
"size": 4,
"label": "C"
}
]
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "stat.anova_summary",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
要約からの一元配置ANOVAが意味すること
mean・deviation・sizeの明示フィールドから再構成を自動化すれば、それらの取り違えを除きつつ、解答記述が求める中間のSS・MS列をそのまま示せます。
本機能がFとpを計算する仕組み
各オブジェクトにはmean(有限数)、deviation(非負の標本標準偏差)、size(2以上の整数n)が必要です。任意のlabelは応答表で群名になり、省略時はG1、G2…と付きます。sd・std・n・summariesなどの別名も受け付けますが、正規契約はmean・deviation・sizeです。その後、サイズの和N、サイズ加重の全体平均、上記のSSBとSSW、自由度、平均平方、MSWが正のときMSB/MSWとしてのF、およびF分布の正則化不完全ベータ恒等式による上側p値を求めます。偏差がすべて0で平均が一致すればFは0・pは1です。必須のgroups配列に少なくとも2つのオブジェクトを含むJSON本体を送ります。エンジンは群が2未満、非有限数、負の偏差、非整数や小さすぎるサイズ、不正な行をinvalid_inputで拒否し、課金しません。偏差がすべて0でも平均が異なればFは無限、pは0とし、JSONを有限に保つためf_statisticはnull、f_statistic_infiniteはtrueです。応答にはk、n_total、grand_mean、df_between、df_within、ss_between、ss_within、ss_total、ms_between、ms_within、eta_squared、エコーされたgroups、短いformula文字列も含まれます。乱数も時計もネットワークもなく、同一の要約は常に同一のJSONになります。作業は検証とO(k)の算術、有界な連分数による不完全ベータ評価であり、成功リクエストあたり$0.002のtier-A parse能力の解析コストモデルに収まります。
利用場面と費用
ノートブック、成績簿、メタ分析パイプライン、プロダクト分析ジョブが多数の多群要約表を毎回同じ方法で解く必要があるときはAPIを呼び出します。API利用は成功リクエストごとに公開の基本価格$0.002で前払いKIT残高から差し引かれ、検証失敗は残高を消費しません。
連携の活用例
プライバシーを守る分析
API経由で群レベルの集計を一括処理し、個人データを送らずに多群実験を検定します。
技術的な質問
このAPIで群要約からのANOVAを実行するには?
mean・deviation(標本SD)・size(n ≥ 2)を持つオブジェクトの配列groupsをJSONでPOSTします。応答にss_between、ss_within、ms_between、ms_within、f_statistic、p_valueが含まれます。
deviationは標本標準偏差ですか、母標準偏差ですか?
通常の標本標準偏差(除数n−1)を用いてください。群内SSはΣ (n_i − 1) · deviation_i²として再構成され、その規約に一致します。
群が2未満のとき何のエラーになりますか?
要約からの一元配置ANOVAには少なくとも2群が必要である旨のinvalid_inputで検証が失敗します。この失敗は課金されません。
群要約からのANOVA計算機は無料ですか?
ブラウザウィジェットは無料でローカル実行です。API呼び出しは公開基本価格$0.002で前払いKIT残高を使い、無効入力は課金されません。
同じ入力なら結果は常に同じですか?
はい。アルゴリズムは固定の不完全ベータp値経路を持つ純粋解析算術で、乱数もタイムスタンプもなく、同一の要約は同一のJSONを生成します。