スタージェスの公式によるヒストグラムのビン数計算
スタージェスの公式計算ツールは、標本サイズからヒストグラム作成の実用的な出発点を求めます。観測数を入力すると、その値の底が二の対数に一を加え、整数のビン数になるよう切り上げます。丸める前の値も表示されるため、推奨値がどのように算出されたかを正確にご確認いただけます。目測ではなく、再現可能な基準で構成を決めたい場合に便利です。
無料で実行
標本サイズから再現可能なビン数を選びます
ヒストグラムの見え方はビン数によって大きく変わります。少なすぎると集団、空白、歪みが隠れ、多すぎると通常の標本ノイズが意味のある構造に見えることがあります。スタージェスの公式は観測数だけを使う簡潔な基準です。標本の観測数である n を入力すると、1 + log2(n) を計算します。ビン数に端数は使えないため、推奨値は次の整数へ切り上げます。二の累乗では正確な整数になり、それ以外では通常、小数の中間値になります。結果には最終的なビン数と、小数第六位に丸めた中間値の両方が含まれます。そのため、グラフをすぐ設定できる一方、報告書、ノート、検証記録に計算根拠も残せます。複数の担当者や自動処理が異なる規模のデータから比較可能なヒストグラムを作る際の統一的な初期案としてご利用ください。
公式と適用範囲をご確認ください
スタージェスの公式は k = 1 + log2(n) です。n は標本サイズ、k は階級またはビンの数を表します。標本が二倍になるたび、推奨ビン数は一つ増えます。したがって、標本数が一なら一ビン、八なら四ビン、128 なら八ビンです。本ツールは一般的な切り上げ方式を採用し、小数の結果を情報を捨てずに利用可能な整数へ変換します。標本サイズは観測数なので、入力は有限の整数でなければなりません。また、空の標本では対数から有効な推奨値を得られないため、一以上が必要です。この公式によるビン数はデータが増えても緩やかにしか増えません。読みやすい要約になることが多い一方、大規模、強い歪み、多峰性、裾の重い標本では詳細を隠す場合があります。結果は規則に基づく提案であり、分布の重要な特徴をすべて示す保証ではありません。
結果を基準にして分布をお確かめください
実際にヒストグラムへ描画する有効な観測数を入力してください。元の表に欠損値や除外値がある場合は、描画に残す観測だけを数えます。そうしないと、グラフより大きい標本に対する推奨値になります。返されたビン数を描画ライブラリ、表計算ソフト、報告処理へ設定し、その前後の値も一つか二つお試しください。近いビン数との比較により、見えている形が安定した特徴なのか、特定の境界だけが生んだものかを判断しやすくなります。また、ビン数は境界の開始位置を決めません。同じ数でも、範囲や境界位置が変わればヒストグラムは異なります。変動が大きいデータでは、Freedman-Diaconis の規則など幅に基づく方法とも比較してください。自動処理では、後から選択を再現できるよう、使用した方法と結果をグラフとともに記録することをお勧めします。
活用例
描画ライブラリを設定します
保持した観測数を整数のビン数へ変換してからヒストグラムを描画できます。
探索レポートを標準化します
定期的なデータと処理に、文書化された同じビン選択規則を適用できます。
自動設定を検証します
アプリの自動選択を、透明性のあるスタージェス基準と比較できます。
よくある質問
どのような結果が返されますか?
検証済みの標本サイズ、切り上げた推奨ビン数、1 + log2(n) の丸め前の値を小数第六位まで返します。
なぜ切り上げるのですか?
ビン数には整数が必要です。公式が小数を返した場合も、切り上げれば推奨内容を失いません。
n をゼロにできますか?
できません。標本には一つ以上の観測が必要で、ゼロの底が二の対数は定義されません。
スタージェスの公式は常に最適ですか?
いいえ。実用的な基準ですが、大規模、歪み、多峰性、裾の重いデータではビンが少なすぎる場合があります。
欠損値を n に含めますか?
欠損値や除外値を含めず、実際に描画する有効な観測数をご使用ください。
料金はいくらですか?
このページのブラウザー計算は無料です。API は1リクエスト $0.002 です。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/stat/sturges-rule \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"n":100}'const res = await fetch("https://api.kit.forhosting.com/stat/sturges-rule", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"n": 100
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/stat/sturges-rule",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"n": 100
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/stat/sturges-rule", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"n":100}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"n":100}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/stat/sturges-rule", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"n": 100
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "stat.sturges_rule",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |