حاسبة المتوسط المتحرك للبيانات المناخية
يجمع السجل المناخي غالباً بين إشارة طويلة الأمد وتباين صاخب من سنة إلى أخرى أو من شهر إلى آخر.
شغّل الأداة مجانًا
تطبق هذه الحاسبة متوسطاً متحركاً مركزياً، بحيث تمثل كل قيمة صالحة عدداً متساوياً من المشاهدات قبل المركز وبعده. أدخلوا سلسلة رقمية مرتبة وطول نافذة فردياً، فتحصلون على متوسطات النوافذ المكتملة وفهارس واضحة للمحاذاة. الحساب حتمي ولا يستخدم الشبكة، ويرفض أي نافذة أطول من سلسلة البيانات.
اختاروا نافذة تناسب السؤال المناخي
لا يفيد المتوسط المتحرك إلا عندما تعكس نافذته المقياس الزمني الذي تريدون دراسته. في المشاهدات السنوية، تخفف نافذة من ثلاث سنوات أثر سنة حارة أو باردة منفردة مع إبقاء التغيرات القصيرة نسبياً؛ أما نافذة من إحدى عشرة سنة فتبرز التباين الأوسع وتحد بدرجة أكبر من الضوضاء بين السنوات. وفي المشاهدات الشهرية، تغطي ثلاث عشرة نقطة نحو سنة مع الحفاظ على شهر مركزي واحد. تشترط الحاسبة نافذة فردية لأن كل ناتج يجب أن يحاذي مشاهدة فعلية في منتصف النافذة. أدخلوا المشاهدات بترتيب زمني وحافظوا على ثبات الفاصل بين العينات. لا تخلطوا القيم الشهرية والسنوية، ولا تضيفوا قيماً من تواريخ غير منتظمة، إلا بعد إعادة أخذ عينات السجل على خط زمني منتظم. تعامل الأداة كل المواضع على أنها متساوية التباعد والوزن. وهي لا تعرف ما إذا كان الرقم يمثل درجة حرارة أو هطولاً أو مستوى البحر أو شذوذاً أو مؤشراً مناخياً آخر؛ لذلك احتفظوا بالوحدة الأصلية مع أي نتيجة مصدرة. تنتج النافذة الأكبر منحنى أنعم، لكنها تزيل قدراً أكبر من البنية القصيرة الأمد وتنتج قيماً أقل. اختاروها وفق الغرض العلمي، لا لمجرد شكل المنحنى.
افهموا التمركز والحواف والفهارس المعادة
في نافذة فردية عرضها w، يستخدم كل متوسط المشاهدة المركزية والعدد نفسه من المشاهدات على جانبيها. ولذلك يحسب تطبيق من خمس نقاط عند فهرس الإدخال 6 متوسط الفهارس من 4 إلى 8. لا تستطيع بداية السلسلة ونهايتها استيعاب نافذة مركزية مكتملة لأن مشاهدات أحد الجانبين تكون مفقودة. بدلاً من حشو الحواف أو تكرار قيم الأطراف أو الانتقال بصمت إلى نوافذ أصغر، تحذف الحاسبة المواضع غير المكتملة. تعرض الاستجابة half_window وfirst_center_index وlast_center_index كي تتمكنوا من محاذاة كل متوسط بدقة مع السجل الأصلي. تبدأ جميع الفهارس من الصفر. يقابل أول عنصر في smoothed_values الفهرس first_center_index، ثم يتقدم كل عنصر تالٍ موضعاً واحداً حتى last_center_index. يساوي عدد النتائج طول الإدخال ناقص طول النافذة زائد واحد. عندما يساوي طول النافذة طول السلسلة، تعاد نتيجة واحدة فقط في المركز. وعندما يكون طولها واحداً، تعاد كل قيم الإدخال بلا تغيير. إذا تجاوزت النافذة عدد المشاهدات المتاحة، يفشل الطلب بدلاً من إعادة حساب غامض أو جزئي.
فسروا السلسلة المنعمة بمسؤولية
يساعد التنعيم على إظهار البنية، لكنه لا ينشئ دليلاً جديداً ولا يثبت اتجاهاً بمفرده. يمزج المتوسط المركزي المشاهدات المتجاورة، ويقلل الحجم الظاهر للقيم المتطرفة المنفردة، ويجعل النواتج المتجاورة مترابطة إحصائياً بسبب تداخل نوافذها. احتفظوا بالسلسلة غير المنعمة عند عرض النتائج، واذكروا طول النافذة وفاصل أخذ العينات، ولا تقارنوا منحنيات ناتجة من نوافذ مختلفة كما لو كانت قياسات متكافئة. تتطلب البيانات المفقودة معالجة قبل الحساب. لا يقبل الإدخال إلا أعداداً محدودة، لذلك لا يمكن تمثيل الفجوات بالقيم null أو NaN أو اللانهاية. قرروا ما إذا كانت الفجوة تستلزم الاستيفاء أو الإبقاء عليها كانقطاع أو استخدام طريقة مصممة للسجلات الناقصة، ووثقوا القرار خارج هذه الأداة. كذلك تحققوا من ملاءمة الوزن المتساوي. تحسب هذه القدرة متوسطاً حسابياً بسيطاً؛ ولا تطبق أوزاناً غاوسية أو تصحيحاً موسمياً أو ترجيحاً مساحياً أو نشر عدم اليقين أو مقاومة متينة للقيم الشاذة. وهي مناسبة للرسوم الاستكشافية والمعالجة المسبقة القابلة للتكرار والملخصات الشفافة للرصد المنتظم. وللإسناد أو الاستدلال المناخي الرسمي، احتفظوا أيضاً بالسجل الأصلي وبياناته الوصفية وتقديرات عدم اليقين والتحليل الإحصائي المتخصص.
حالات الاستخدام
تنعيم شذوذ الحرارة السنوي
قللوا التباين المنفرد بين السنوات مع إبقاء كل متوسط محاذياً للسنة المركزية.
إعداد سلسلة للوحة معلومات مناخية
أنشئوا منحنى قابلاً للتكرار وفهارس محاذاة صريحة لرسمه بجانب المشاهدات الأصلية.
مقارنة نوافذ التنعيم
احسبوا عدة نوافذ فردية كل واحدة على حدة لمعرفة المقاييس الزمنية التي تظل ظاهرة.
الأسئلة الشائعة
لماذا يجب أن يكون طول النافذة فردياً؟
للنافذة الفردية مشاهدة مركزية واحدة واضحة وعدد متساوٍ من القيم قبلها وبعدها.
ماذا يحدث عند طرفي السلسلة؟
تحذف المواضع التي لا تتوافر لها نافذة مركزية مكتملة. وتوضح الفهارس المعادة موضع محاذاة النتائج.
ماذا يحدث إذا كانت النافذة أطول من السلسلة؟
تعيد الحاسبة خطأ إدخال غير صالح، لأنه يتعذر تكوين أي نافذة مكتملة.
هل يمكن أن تحتوي السلسلة على قيم مفقودة؟
لا. يجب أن تكون كل مشاهدة عدداً محدوداً. عالجوا البيانات المفقودة أو وثقوها قبل الحساب.
هل تحسب الأداة متوسطاً متحركاً مرجحاً؟
لا. تحصل جميع المشاهدات داخل النافذة على الوزن نفسه ضمن متوسط حسابي بسيط.
ما تكلفة طلب API؟
سعر API هو $0.002 لكل طلب. ولا يحتاج الحساب داخل المتصفح إلى معالجة عبر الشبكة.
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/earth/climate-moving-average \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"values":[12.1,12.8,11.9,13.2,14,13.7,14.5],"window":3}'const res = await fetch("https://api.kit.forhosting.com/earth/climate-moving-average", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"values": [
12.1,
12.8,
11.9,
13.2,
14,
13.7,
14.5
],
"window": 3
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/earth/climate-moving-average",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"values": [
12.1,
12.8,
11.9,
13.2,
14,
13.7,
14.5
],
"window": 3
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/earth/climate-moving-average", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"values":[12.1,12.8,11.9,13.2,14,13.7,14.5],"window":3}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"values":[12.1,12.8,11.9,13.2,14,13.7,14.5],"window":3}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/earth/climate-moving-average", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"values": [
12.1,
12.8,
11.9,
13.2,
14,
13.7,
14.5
],
"window": 3
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "earth.climate_moving_average",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الحدود
max_items | 100000 |
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |