生命表の年齢別生存率計算ツール
生命表生存率計算ツールは、同じコホートを連続する年齢階級で追跡した生存数を、標準化された生存率に変換します。最初のコホート数と、その後の年齢で確認された生存数を順番に入力してください。各値を初期コホート数で割り、年齢、生存数、割合としての生存率、百分率としての生存率を表示します。開始時の規模が異なるコホート同士でも、元の観測値を変えずに比較しやすくなります。
無料で実行
生存数を年齢順に準備します
同じ構成員を連続する年齢階級で追跡したコホートをご用意ください。最初の階級で生存している個体数を先頭に入力し、続いて各年齢階級の生存数を時間順に追加します。最初の値はすべての生存率の分母になるため、0より大きい必要があります。生存数には0以上の整数を使用し、年齢が進むにつれて同じ値を保つか、減少しなければなりません。コホート生命表は当初の同一集団を追跡するものです。そのため、数が増えた場合は、別のコホートの観測を混ぜた、年齢階級の順序を誤った、または生存数以外の値を入力した可能性があります。同じ値が連続しても問題はなく、その区間で死亡が記録されなかったことを示します。最後の値を0にすることもできます。開始年齢には最初の観測に対応する年齢を、年齢間隔には1年、5年、半年など、等間隔の階級幅を指定してください。出力は日、月、年のいずれかを自動判定しませんので、分析全体で同じ年齢単位を使い、その単位を明記することが重要です。
生存率の計算方法を確認します
年齢階級xの年齢別生存率は l_x = n_x / n_0 で計算します。n_xはその年齢で生存しているコホート構成員数、n_0は初期コホート数です。したがって最初の行の生存率は必ず1、すなわち100パーセントになります。閉鎖コホートでは構成員が増えないため、その後の値はすべて0から1の範囲です。たとえば当初1,000個体のうち760個体が残っていれば、生存率は0.76、表示される百分率は76です。これは元のコホートに対する割合であり、直前の区間だけを生き延びる条件付き確率ではありません。区間生存率なら各階級の数を直前の階級の数で割りますが、この計算ツールは常に初期値を分母にします。丸めは浮動小数点の微小な誤差を取り除く目的に限られます。元の生存数も標準化値と並べて残るため、分母を確認し、標本規模の違いを把握し、各計算を直接再現できます。
生命表を読み取り比較します
生命表を上から下へ読むと、元のコホートが各年齢でどの程度残っているかを確認できます。緩やかな低下は損失が多くの階級に分散していることを示し、大きな段差は、その直前の区間までにコホートの相当部分が失われたことを示します。平らな部分は、記録された生存数が変化しなかった区間です。生存率は初期コホート数で標準化されるため、開始規模が異なる2つのコホートも同じ比例尺度で比較できます。ただし、開始年齢、年齢間隔、対象の選定基準、観測方法が一致している場合に、より適切な比較となります。この計算は、移出入、観測漏れ、打ち切り、標本誤差、追跡開始後の個体追加を補正しません。また、死亡ハザードや平均余命も推定しません。これらには追加の仮定や、区間内の死亡数または人年などの情報が必要です。この表は推測モデルではなく、入力した生存数を透明に変換した結果としてお使いください。公開前には不自然な増加や0の妥当性を確認し、初期コホート数を残し、年齢の単位を明記してください。
活用例
生態学的な生存曲線を作成
標識した生物の各年齢における生存数を標準化し、年齢と生存率の関係を描画できます。
実験コホートを比較
開始時の個体数が異なる処置群と対照群を、共通の比例生存尺度で比較できます。
人口学的生命表を検算
公表された生存数から l_x を再計算し、検証可能な比較のために元の数と割合を並べて保持できます。
よくある質問
利用料金はいくらですか?
ブラウザーでは無料で実行できます。API の1回のリクエスト料金は $0.002 です。
年齢別生存率とは何ですか?
ある年齢で生存している初期コホートの割合です。その年齢の生存数を初期生存数で割って求めます。
生存数が増えてはいけないのはなぜですか?
コホート生命表は1つの初期集団を追跡します。後から個体が加わらなければ、生存数は同じか減少し、増加することはありません。
1年より長い年齢間隔も使用できますか?
はい。age_interval に正の有限値を指定し、日、月、年など一貫した単位で解釈してください。
生存率と区間内の生存確率は同じですか?
異なります。生存率は初期コホートを分母にします。条件付き区間生存率は、その区間の開始時点の生存数を分母にします。
最後の生存数を0にできますか?
はい。生存率は0となり、その年齢階級では初期コホートの構成員が1個体も残っていないことを示します。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/bio/life-table-survivorship \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"survivors":[1000,920,760,410,0]}'const res = await fetch("https://api.kit.forhosting.com/bio/life-table-survivorship", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"survivors": [
1000,
920,
760,
410,
0
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/bio/life-table-survivorship",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"survivors": [
1000,
920,
760,
410,
0
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/bio/life-table-survivorship", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"survivors":[1000,920,760,410,0]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"survivors":[1000,920,760,410,0]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/bio/life-table-survivorship", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"survivors": [
1000,
920,
760,
410,
0
]
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "bio.life_table_survivorship",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
max_items | 1000 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |