حاسبة البقاء حسب العمر من جدول الحياة
تحوّل حاسبة البقاء في جدول الحياة العدد المرصود للأفراد الأحياء من الجماعة نفسها في كل فئة عمرية متتابعة إلى قيم بقاء معيارية.
شغّل الأداة مجانًا
أدخلوا عدد الجماعة في البداية ثم أعداد الناجين المسجلة في الأعمار اللاحقة، فتقسم الحاسبة كل عدد على حجم الجماعة الأصلي. تتضمن النتيجة العمر وعدد الناجين والبقاء في صورة نسبة وفي صورة نسبة مئوية، مما يسهّل مقارنة جماعات اختلفت أحجامها عند البداية من دون تغيير المشاهدات الأصلية.
رتّبوا أعداد الناجين بحسب العمر
ابدؤوا بجماعة جرى تتبع أفرادها عبر فئات عمرية متعاقبة. أدخلوا أولاً عدد الأحياء في الفئة الأولى، ثم أضيفوا عدد الأحياء في كل فئة لاحقة وفق الترتيب الزمني. يجب أن تكون القيمة الأولى أكبر من صفر لأنها مقام جميع حسابات البقاء. ويجب أن تكون الأعداد صحيحة وغير سالبة، وأن تبقى ثابتة أو تنخفض مع تقدم العمر. يتتبع جدول حياة الجماعة المجموعة الأصلية نفسها، ولذلك تشير أي زيادة عادةً إلى إضافة مشاهدات من جماعة أخرى، أو إدخال فئة عمرية في غير موضعها، أو استعمال قيم لا تمثل أعداد الناجين. تكرار العدد صحيح ويعني عدم تسجيل وفيات خلال ذلك الفاصل، كما يجوز أن يكون العدد الأخير صفراً. استعملوا عمر البداية لتحديد العمر المقابل للمشاهدة الأولى، واستعملوا الفاصل العمري لوصف فئات متساوية التباعد، مثل الفئات السنوية أو الخمسية أو نصف السنوية. حافظوا على وحدة عمر واحدة في التحليل ووثّقوها بوضوح، لأن المخرجات تعرض أعماراً رقمية ولا تفترض تلقائياً أنها مقيسة بالأيام أو الأشهر أو السنوات.
افهموا طريقة حساب البقاء
يُحسب البقاء الخاص بكل فئة عمرية x وفق الصيغة l_x = n_x / n_0، حيث تمثل n_x عدد أفراد الجماعة الأحياء عند ذلك العمر، وتمثل n_0 حجم الجماعة عند البداية. لذلك تكون قيمة البقاء في الصف الأول دائماً 1، أي 100 في المئة. وتقع كل النتائج اللاحقة بين صفر وواحد لأن الجماعة المغلقة لا تكتسب أفراداً جدداً. فإذا بقي 760 فرداً من أصل 1,000، كانت قيمة البقاء 0.76 وكانت النسبة المئوية المعروضة 76. هذه القيمة هي نسبة إلى الجماعة الأصلية، وليست احتمالاً شرطياً للبقاء خلال الفاصل السابق وحده. وهذا الفرق مهم، لأن بقاء الفاصل يُحسب بقسمة عدد فئة عمرية على عدد الفئة السابقة مباشرة، بينما تستعمل هذه الحاسبة العدد الأول مقاماً في جميع الصفوف. لا يجري التقريب إلا لإزالة الضجيج الطفيف الناتج عن حسابات الفاصلة العائمة. وتبقى أعداد الناجين الأصلية ظاهرة بجوار القيم المعيارية، حتى تتمكنوا من مراجعة المقام والتمييز بين العينات الصغيرة والكبيرة وإعادة كل عملية حسابية مباشرة.
فسّروا جدول الحياة وقارنوا النتائج
اقرؤوا جدول الحياة من أعلى إلى أسفل لمعرفة الجزء المتبقي من الجماعة الأصلية في كل عمر. يدل الانخفاض التدريجي على توزع الفقد على فئات عديدة، بينما تكشف القفزة الحادة عن فاصل اختفى قبله جزء كبير من الجماعة. ويعني الجزء الأفقي أن عدد الناجين المسجل لم يتغير. ولأن البقاء معياري بالنسبة إلى الحجم الأول، يمكن مقارنة جماعتين مختلفتين في حجم البداية على المقياس النسبي نفسه. تكون المقارنة أدق عندما يتطابق عمر البداية والفاصل العمري وقواعد الإدراج وطرائق الرصد. لا يصحح الحساب أثر الهجرة أو المشاهدات المفقودة أو الرقابة الإحصائية أو خطأ المعاينة أو دخول أفراد بعد بدء التتبع. كما أنه لا يقدّر مخاطر الوفاة أو متوسط العمر المتوقع؛ إذ تتطلب هذه المقاييس افتراضات إضافية، وكثيراً ما تتطلب معلومات عن الوفيات أو زمن التعرض داخل الفواصل. تعاملوا مع الجدول بوصفه تحويلاً شفافاً للأعداد المدخلة، لا نموذجاً استدلالياً. وقبل نشر المقارنة، راجعوا أي زيادة غير متوقعة، وتأكدوا من صحة القيم الصفرية، واحتفظوا بحجم الجماعة، واذكروا وحدة العمر حتى يفهم القارئ مدلول كل صف بدقة.
حالات الاستخدام
إنشاء منحنى بقاء بيئي
وحّدوا أعداد الكائنات الموسومة التي ظلت حية في أعمار متتابعة قبل رسم البقاء مقابل العمر.
مقارنة الجماعات التجريبية
قارنوا بين جماعات المعالجة والشواهد ذات الأحجام الأولية المختلفة على مقياس نسبي موحد للبقاء.
مراجعة جدول حياة سكاني
أعيدوا حساب قيم l_x من أعداد منشورة، واحتفظوا بكل عدد إلى جانب نسبته لإتاحة مقارنة قابلة للتدقيق.
الأسئلة الشائعة
ما تكلفة استعمال الحاسبة؟
يمكنكم تشغيلها مجاناً في المتصفح. وتبلغ تكلفة الطلب الواحد عبر API مقدار $0.002.
ما البقاء الخاص بالعمر؟
هو نسبة من ظلوا أحياء عند عمر معين من الجماعة الأصلية، ويُحسب بقسمة عدد الناجين عند ذلك العمر على العدد الأولي.
لماذا لا يجوز أن تزداد أعداد الناجين؟
يتتبع جدول الجماعة مجموعة أولية واحدة. وإذا لم يدخل أفراد لاحقاً، يمكن أن يبقى عدد الناجين ثابتاً أو ينخفض، لكنه لا يزداد.
هل يمكن أن تتجاوز الفئات العمرية سنة واحدة؟
نعم. اضبطوا age_interval على أي قيمة موجبة ومحدودة، وفسروها بوحدة ثابتة مثل الأيام أو الأشهر أو السنوات.
هل البقاء هو نفسه النجاة خلال فاصل واحد؟
لا. يستعمل البقاء حجم الجماعة الأولية مقاماً، بينما يستعمل البقاء الشرطي في الفاصل عدد الأحياء عند بداية ذلك الفاصل.
هل يجوز أن يكون العدد الأخير صفراً؟
نعم. ينتج عن الصفر بقاء مقداره 0، ويعني أنه لم يبق أي فرد من الجماعة الأصلية حياً في تلك الفئة العمرية.
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر 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"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الحدود
max_items | 1000 |
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |