Theil指数
合計100、平均25の不揃いな4つの所得では、Theil指数は正ですが4人での上限よりずっと小さく、格差は中程度です。グループ名を加えると、格差がどこにあるかも分かります。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- 所得
- 10, 20, 30, 40
- N
- 4
- 平均所得
- 25
- 総所得
- 100
- タイルのT
- 0.1064401353
Theil T指数は、個人所得の一覧をひとつの非負の数値にまとめるエントロピー型の不平等指標です。全員が同じ所得ならゼロとなり、所得が少数に集中するほど大きくなります。経済学者、政策分析者、データジャーナリズムが用いる理由は、グループ内とグループ間への加法分解ができる点にあり、ジニ係数ではきれいに得られない性質です。本機能は厳密に正の所得分布を受け取り、自然対数を用いた古典的なTheil T式を計算し、平均所得・合計所得・理論上界 ln(n)・任意の正規化比 T/ln(n) を返します。同じ長さのサブグループラベルを併せて指定すると、グループ別のTheil値と、全体指数に戻る within/between の寄与も返します。
Theil T指数が測るものとエントロピーの意義
Theil Tは一般化エントロピー族の不平等指標に属します。すべての所得が平均に等しければ各比は1、対数項は0となり、Tはちょうど0—完全平等—です。一人がほぼ全所得を持ち、他がごく小さい正の額だけを残すと、加重対数項は増え、Tは有限標本の天井 ln(n) に近づきます。
Tを実際の所得分布と均等配分ベンチマークの間のKullback–Leiblerダイバージェンスと読むのは宣伝文句ではなく、エントロピーという呼び名を正当化する情報理論の標準的解釈です。ローレンツ曲線をペア間ギャップの二重計上で要約するジニ係数と異なり、Theil Tは分布の上位変化に敏感で、人口の分割にわたる正確な加法分解が可能です。
その分解があるからこそ、地域勘定・産業別賃金研究・学区財政分析では「グループ内の不平等はどれだけか、グループ間の差はどれだけか」という問いに対してTheilが好まれます。本計算器はその定義を有限数の算術のみで実装します。サンプリングもモデル呼び出しも、測定したい所得をあなたが渡さない限り隠れた再重み付けもありません。
研究や分析でTheil指数が役立つ場面
開発経済学者や各国統計機関は、家計調査マイクロデータ上でTheil Tを計算し、不平等の趨勢を追い、変化を地域内と地域間の力に帰属させます。企業の報酬チームやHR分析基盤は、部署・拠点別の給与帯に同じ式を当て、単一の不透明なジニではなく分解可能な不平等ダッシュボードが必要なときに使います。
所得を厳密に正に保ち、任意のグループラベルをインデックスで揃えれば、ノートブック・LMSプラグイン・エッジワーカー向けに再現可能なエントロピー型不平等指標が得られ、自前の統計スタックを立てる必要はありません。
活用例
調査マイクロデータと地域分解
家計所得でTheil Tを計算し、地域ラベルがあれば不平等を地域内・地域間のシェアに分けて政策メモに使います。
報酬と労働力アナリティクス
従業員間の給与不平等を測り、部署や拠点ごとに同じ within/between のTheil寄与で分解します。
教育と自動採点
教科書のTheil例題と任意のサブグループ恒等式を、LMSプラグイン内の決定的オラクルに照合させます。
よくある質問
Theil Tとジニ係数の違いは何ですか?
ジニはローレンツ曲線を要約し、グループ間で単純な加法分解ができません。Theil Tはエントロピー型で上位に敏感で、グループ内とグループ間の不平等にきれいに分かれます。
Theil指数がゼロとはどういう意味ですか?
完全な平等を表します。全員が平均と同じ所得で、対数の項がすべてゼロになります。所得が少数に集中するほど指数は大きくなり、上限は人数の自然対数です。
グループ内とグループ間の格差に分けられますか?
できます。地域や部署など、各所得にグループ名を付けてください。グループごとの指数と、グループ内・グループ間の寄与が示され、その合計は全体の指数と一致します。
正規化したTheil指数とは何ですか?
指数を、その人数で取りうる最大値である人数の自然対数で割った値です。規模の違う集団の結果を、0から1の共通の尺度で比べられます。
所得がすべて正でなければならないのはなぜですか?
式で各所得と平均の比の自然対数を取るため、ゼロや負の値では計算できないからです。ゼロや負の所得は受け付けません。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/econ/theil-index-distribution \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"incomes":[10,20,30,40]}'const res = await fetch("https://api.kit.forhosting.com/econ/theil-index-distribution", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"incomes": [
10,
20,
30,
40
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/econ/theil-index-distribution",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"incomes": [
10,
20,
30,
40
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/econ/theil-index-distribution", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"incomes":[10,20,30,40]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"incomes":[10,20,30,40]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/econ/theil-index-distribution", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"incomes": [
10,
20,
30,
40
]
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "econ.theil_index_distribution",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
Theil T指数が測るものとエントロピーの意義
厳密に正の所得 y_i を持つ n 人の集団と算術平均 μ に対し、指数は所得シェアにそのシェアの対数を掛けたものの平均です。つまり T は 1/n に、各 i について (y_i/μ) と ln(y_i/μ) の積を足し合わせた値です。
入力契約、任意グループ、応答フィールドとエラー
非正の所得比の対数は定義されないためです。incomes と同じ長さの空でないラベル配列です。数値はランタイム横断の安定したgoldensのため小数第12位に丸めます。検証失敗は課金されません。必須フィールド incomes を含むJSON本体を送信してください。厳密に正の有限数の空でない配列です(別名 values、y、data も受け付けます)。空リスト・ゼロ・負値・非有限値は invalid_input で失敗します。任意で groups(別名 subgroup、labels、region)を送れます。グループがある場合、ソルバはラベルごとに観測をまとめ、各グループのTheil Tを計算し、グループ内不平等をそのグループ指数の所得シェア加重和として、グループ間不平等を s_g · ln(s_g/p_g) の和として作ります。ここで s_g はグループの総所得シェア、p_g は人口シェアです。応答は常に n、mean_income、total_income、theil_t、nが1より大きいときの max_theil = ln(n)(単独なら0)、上限が正なら normalized_theil = theil_t / max_theil、equal_share 真偽値、formula 文字列、短い解釈を返します。groups がある場合は within_theil、between_theil、decomposition_check(監査用の和)、group_count、ラベル順の groups 配列(グループ別平均・シェア・寄与)も返します。成功した呼び出しはAPI経路で公開の基本価格 $0.002 を用い、ブラウザツールは無料のままです。
研究とプロダクトでTheil指数APIが役立つ場面
教室やMOOCはエンドポイントをオラクルとして使い、学生が十・二十・三十・四十のような小さな例ベクトルを送り、全体Tと、地域ラベルを付けたときの within と between の恒等式の両方を検証します。実装は純粋なparseティアAのため、成功呼び出しは毎回公開の $0.002 で、モデルトークンも外向きネットワークもなく、検証失敗は残高を消費せず、丸めた出力をユニットテストに固定できます。
技術的な質問
所得からTheil T指数はどう計算しますか?
平均 μ の正の所得 n 個について T = (1/n) · Σ (y_i/μ) · ln(y_i/μ) です。APIはその値を theil_t として返し、平均・合計・max_theil = ln(n)・任意の normalized_theil = T/ln(n) も付けます。
すべての所得が厳密に正でなければならない理由は?
Theil Tは所得比の自然対数を使います。ゼロや負の所得ではその対数が未定義になるため、NaNを返す代わりに invalid_input で失敗します。
サブグループ分解はどのように動きますか?
incomes と揃えた groups 配列を渡します。応答に within_theil、between_theil、グループ詳細が含まれます。構成上、within_theil + between_theil は全体 theil_t に等しくなります(丸め差を除く)。
Theil指数計算の料金は?
ブラウザツールは無料です。APIリクエストは成功呼び出しごとにプリペイドKIT残高から $0.002 を使い、無効入力は課金されません。