気候データの移動平均平滑化計算ツール
気候記録には、長期的な信号と年ごと・月ごとの短期的な変動が共存しています。この計算ツールは中央移動平均を用い、計算可能な各中心点について前後から同数の観測値を含めます。時系列順の数値列と奇数の窓幅を入力すると、完全な窓の平均値と対応位置を示すインデックスを返します。計算は決定的でネットワークを使用せず、データ列より長い窓はエラーとして扱います。
無料で実行
気候上の目的に合う窓幅を選択してください
移動平均が有効なのは、窓幅が調べたい時間尺度に対応している場合です。年次観測では、3年の窓は単発の高温年や低温年を和らげながら比較的短い変化を残し、11年の窓はより広い変動を強調して年々のノイズを大きく抑えます。月次観測では、13点を使うと固有の中心月を保ったまま約1年を対象にできます。本ツールが奇数幅を必須とするのは、各結果を窓の中央にある実際の観測値へ対応付けるためです。観測値は時系列順に入力し、標本間隔を一定にしてください。あらかじめ規則的な時間軸へ再標本化していない限り、月次値と年次値を混在させたり、不規則な日付の値を挿入したりしないでください。すべての位置は等間隔かつ等しい重みとして扱われます。数値が気温、降水量、海面、偏差、その他の気候指標のどれであるかは判定しませんので、出力時には元の単位も記録してください。窓を大きくすると曲線は滑らかになりますが、短期構造が多く失われ、出力数も減ります。見た目だけではなく、科学的な目的に基づいて選択してください。
中央揃え、端部、返却インデックスを理解してください
幅wの奇数窓では、各平均に中央の観測値と、その前後に同数の観測値が含まれます。したがって、入力インデックス6を中心とする5点計算では、インデックス4から8までを平均します。系列の先頭と末尾では片側の観測値が不足するため、完全な中央窓を作れません。本ツールは端を埋めたり、端点を繰り返したり、通知せずに小さな窓へ切り替えたりせず、不完全な位置を除外します。応答にはhalf_window、first_center_index、last_center_indexが含まれ、各平均を元記録の正しい位置へ対応付けられます。インデックスはすべて0から始まります。smoothed_valuesの最初の項目はfirst_center_indexに対応し、以後は1位置ずつ進み、最後はlast_center_indexに対応します。結果数は入力長から窓幅を引いて1を加えた値です。窓幅が系列長と等しい場合は中央の結果を1件だけ返します。窓幅が1なら入力値はそのままです。窓幅が観測数を超える場合は、曖昧または部分的な値を返さず、要求をエラーにします。
平滑化した系列を適切に解釈してください
平滑化は構造の把握に役立ちますが、新しい証拠を生み出すものでも、それだけで傾向を立証するものでもありません。中央平均は隣接観測を混合し、孤立した極値の見かけ上の大きさを抑えます。また、窓が重なるため、隣接する出力値は統計的に独立ではありません。結果を報告する際は未平滑化の系列も保存し、窓幅と標本間隔を明記してください。異なる窓で得た曲線を同等の測定値として比較しないことも重要です。欠測値は計算前に扱う必要があります。入力は有限数だけを受け付けるため、欠測をnull、NaN、無限大で表せません。補間するのか、切れ目として残すのか、不完全記録向けの手法を使うのかを決め、その判断を本ツールとは別に記録してください。等しい重みが適切かどうかも検討が必要です。この機能は単純算術平均を計算し、ガウス重み、季節調整、面積加重、不確実性伝播、外れ値へのロバスト処理は行いません。探索的グラフ、再現可能な前処理、定間隔観測の透明な要約に適しています。正式な気候要因分析や推論では、元記録、メタデータ、不確実性、専門的な統計解析も維持してください。
活用例
年次気温偏差を平滑化する
年ごとの孤立した変動を抑え、各平均を中心年へ正確に対応付けます。
気候ダッシュボード用系列を作る
再現可能な平滑系列と明示的な位置情報を生成し、元観測値と並べて描画します。
複数の平滑化窓を比較する
複数の奇数窓を個別に計算し、記録に残る時間尺度を確認します。
よくある質問
なぜ窓幅は奇数でなければならないのですか?
奇数幅なら中央の観測値が1つに定まり、その前後に同数の値を配置できるためです。
系列の両端はどのように処理されますか?
完全な中央窓を作れない位置は除外します。返却インデックスで結果の対応位置を確認できます。
窓幅が系列より長い場合はどうなりますか?
完全な窓を作れないため、計算ツールは無効入力エラーを返します。
系列に欠測値を含められますか?
含められません。すべての観測値は有限数である必要があります。計算前に欠測を処理または記録してください。
加重移動平均を計算しますか?
計算しません。単純算術平均として、窓内のすべての観測値に同じ重みを与えます。
APIリクエストの料金はいくらですか?
APIの料金は1リクエスト当たり$0.002です。ブラウザー内の計算にはネットワーク処理が不要です。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果は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"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
max_items | 100000 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |