所得格差のアトキンソン指数計算ツール
アトキンソン指数計算ツールは、正の所得データにおける格差を測り、格差をどの程度重く見るかを明示します。観測値と0以上の格差回避度を入力すると、算術平均、均等分配等価所得、アトキンソン指数が得られます。固定された重みを使う指標とは異なり、分布の下位にある所得差を重視したときに結論がどう変わるかを確認できます。計算は決定的で、各観測値を同じ重みで扱い、0、負数、欠損値、有限でない値は受け付けません。
無料で実行
アトキンソン指数が示すもの
アトキンソン指数は、所得格差による社会厚生上の損失を、通常0から1に近づく尺度で要約します。0は、一覧の全員が同じ所得を得ている状態です。値が大きいほど、同じ社会厚生を平等な分配で実現できるなら、平均所得のより大きな割合が不要と評価されることを示します。この解釈は均等分配等価所得(EDE)に基づきます。EDEとは、観測された分布と同じ厚生をモデル上で生む、1人当たり一律の所得です。本ツールはEDEを算術平均で割り、その比率を1から引きます。たとえば指数が0.20なら、選択した回避度の下で、現在の平均所得の80パーセントを全員に均等配分した状態が厚生上等価だという意味です。これは規範的な統計であり、所得を実際に失っても影響がないという主張ではありません。使用した回避度と対象集団を必ず併記してください。
格差回避度の選び方
通常イプシロンで表す格差回避度は、低所得が結果に及ぼす影響を調整します。0では、総所得と平均だけが評価されるため、有効な分布の指数は常に0です。値を大きくすると、低所得者への移転がより重く評価され、差が大きい分布ほど一般に指数も高くなります。イプシロンが1の場合、EDEは幾何平均となり、本ツールは厳密な対数形式で計算します。それ以外では、数値安定性を保つため、対数を用いた一般化平均を適用します。すべての用途に正しい値はありません。実務では0.5、1、1.5、2などが使われますが、倫理的前提、機関、比較目的によって適切な選択は異なります。複数の妥当な値を報告すると感度を明確にできます。集団間の比較では必ず同じ値を使い、データの差と規範的な重みの差を混同しないでください。
データの準備と比較の読み方
同じ重みを持つ各観測について、有限で厳密に正の所得を入力してください。年間の等価可処分世帯所得など、同じ期間と一貫した定義の値を使用します。月額と年額、異なる通貨、名目値と物価調整値、個人所得と世帯所得を混在させないでください。本ツールは調査ウェイト、等価尺度、税、移転、購買力調整を適用しないため、送信前に処理する必要があります。0の所得は、対数や負のべき乗が未定義または非有界になるため拒否されます。地域や年を比較する際は、所得概念、標本の作り方、回避度を一定にしてください。指数とともに平均とEDEを確認すると、単位の誤りを発見しやすくなります。全所得に同じ正の換算係数を掛けても指数は変わりませんが、平均とEDEは変化します。
活用例
年ごとの格差を比較
同じ所得定義と回避度で各年を計算し、変化を追跡して感度を確認します。
政策シナリオを評価
政策前後の所得分布を比較し、低所得を重視する前提を明示します。
研究計算を検証
平均と均等分配等価所得を含む指数を再現し、監査可能な記録を作成します。
よくある質問
アトキンソン指数の計算料金はいくらですか?
APIでの計算は1回 $0.002 です。ブラウザー版は対話的な確認に利用できます。
結果はどの範囲になりますか?
有効な正の所得と0以上の回避度では、通常0以上1未満です。0は全所得が等しいことを示します。
なぜすべての所得が正である必要がありますか?
対応する式では、0または負の所得に対して対数やべき乗が未定義または非有界になるためです。
格差回避度が1の場合はどうなりますか?
均等分配等価所得は幾何平均となり、安定性のため自然対数で評価します。
調査ウェイトに対応していますか?
対応していません。各要素は同じ重みですので、適切な統計手法で加重データを事前処理してください。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/stat/atkinson-index \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"incomes":[20,30,50,100],"inequality_aversion":1}'const res = await fetch("https://api.kit.forhosting.com/stat/atkinson-index", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"incomes": [
20,
30,
50,
100
],
"inequality_aversion": 1
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/stat/atkinson-index",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"incomes": [
20,
30,
50,
100
],
"inequality_aversion": 1
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/stat/atkinson-index", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"incomes":[20,30,50,100],"inequality_aversion":1}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"incomes":[20,30,50,100],"inequality_aversion":1}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/stat/atkinson-index", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"incomes": [
20,
30,
50,
100
],
"inequality_aversion": 1
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "stat.atkinson_index",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |