これは2024年をホールドアウトして検証した実験的なトウモロコシ積算温度予報であり、農業上の助言ではありません。 CFSの1格子点で積算した熱量に生育が従うと仮定し、州全体の各段階が50%に達する時期を推定します。
このダッシュボードは、約215日先まで6時間ごとの出力を提供するNOAAのCFS FLXFと、USDA作況進度報告を基に較正・検証した修正版Growing Degree Days(GDD)モデルを組み合わせています。仮定としきい値を検証できる形で、作期全体の積算温度予報を作成します。
表示例は2024年7月1日00 UTCで固定しています。それ以前はリードタイムが正確に6時間のCFS履歴、それ以後は1つのアーカイブ予報サイクルです。履歴も観測ではなくモデルガイダンスで、後続サイクルは継ぎ足しません。
CFSは粗い解像度なので、都市や州平均ではなく、ガウス格子上のネイティブ座標を使います。
| 州 | 緯度 | 経度 |
|---|---|---|
| Iowa | 42.047066 | -93.750371 |
| Nebraska | 41.102190 | -99.375363 |
| Kansas | 38.267561 | -100.312862 |
| Indiana | 40.157314 | -86.250381 |
| Missouri | 39.212437 | -92.812872 |
| Ohio | 40.157314 | -82.500386 |
| North Dakota | 46.771444 | -98.437864 |
各区間でTMAXとTMINを華氏に変換し、50–86 °Fに制限して平均し、50 °Fを引いて1日の4分の1を掛けます。
Tmax_F = (TMAX_K - 273.15) × 9 / 5 + 32
Tmin_F = (TMIN_K - 273.15) × 9 / 5 + 32
GDD50_6h = (
(clamp(Tmax_F, 50, 86) + clamp(Tmin_F, 50, 86)) / 2 - 50
) × 6 / 24
50 °Fの基準と86 °Fの上限はIowa State University Extensionの修正版トウモロコシGDD法に従います。区間ごとの計算は日最高・最低気温を先に求める方法と完全には一致しないため、しきい値も同じ6時間指標で較正しました。
目標日はUSDA NASS Crop Progress and Conditionから得ます。州の週次割合が50%を超える時刻を線形補間します。播種50%から積算を始め、出芽、絹糸抽出、糊熟、デント、成熟を目標にします。
州・年・段階ごとの暗黙のしきい値は、その2時刻間の累積GDDです。2024年を自己較正に使わないよう、ダッシュボード定数は2020–2023年の中央値です。これは小規模な履歴較正であり、機械学習の訓練ではありません。
| 州 | 出芽 | 絹糸抽出 | 糊熟 | デント | 成熟 |
|---|---|---|---|---|---|
| Iowa | 113.475 | 1332.409 | 1739.139 | 2163.247 | 2563.627 |
| Nebraska | 142.086 | 1388.037 | 1898.494 | 2357.720 | 2892.070 |
| Kansas | 166.002 | 1557.522 | 2111.445 | 2664.386 | 3290.921 |
| Indiana | 115.466 | 1275.090 | 1766.812 | 2228.159 | 2632.039 |
| Missouri | 72.729 | 1389.516 | 1874.276 | 2365.314 | 2910.735 |
| Ohio | 127.756 | 1277.139 | 1677.836 | 2173.649 | 2538.914 |
| North Dakota | 177.123 | 1116.568 | 1623.371 | 1963.759 | 2248.754 |
州ごとの差は意図的です。全国一律の成熟しきい値はうまく適合しませんでした。品種構成、相対熟期、播種時期、1格子点と州全体の差が定数に含まれます。
2020–2024年についてleave-one-year-out検証を行いました。7月1日で履歴と予報を分けた場合のホールドアウト結果は次のとおりです。
| 段階 | 予測数 / 対象数 | カバレッジ | バイアス | 平均絶対誤差 | 絶対誤差中央値 |
|---|---|---|---|---|---|
| 絹糸抽出 | 35 / 35 | 100% | -0.9 日 | 2.5 日 | 1.7 日 |
| 糊熟 | 35 / 35 | 100% | -0.9 日 | 3.3 日 | 1.9 日 |
| デント | 34 / 35 | 97% | +0.8 日 | 4.7 日 | 3.6 日 |
| 成熟 | 32 / 35 | 91% | +2.9 日 | 6.5 日 | 4.2 日 |
カバレッジは予報終了までに段階へ達した対象作期の割合です。バイアスは予報日からUSDA日を引いた値です。この結果は7月時点で成熟日を約1週間の誤差で示すデモとしては妥当ですが、特定圃場や次回予報の精度を保証しません。
実際のダッシュボードは7地点をまとめます。以下のIowa向け最小リクエスト2本で計算全体を確認できます。Grafanaは寄与量を連結し、播種前GDDを差し引いて累積和を計算します。
curl -X POST 'https://gribstream.com/api/v2/cfsflxf/timeseries' \
-H "Content-Type: application/json" \
-H "Accept: text/csv" \
-H "Authorization: Bearer [API_TOKEN]" \
-d '{
"fromTime": "2024-04-15T06:00:00Z",
"untilTime": "2024-07-01T06:00:00Z",
"asOf": "2024-11-02T00:00:00Z",
"minLeadTime": "6h",
"maxLeadTime": "6h",
"coordinates": [
{"name": "Iowa", "lat": 42.047066, "lon": -93.750371}
],
"variables": [
{"name": "TMAX", "level": "2 m above ground", "info": "", "alias": "temperature_max_k", "hidden": true},
{"name": "TMIN", "level": "2 m above ground", "info": "", "alias": "temperature_min_k", "hidden": true}
],
"expressions": [
{"expression": "(temperature_max_k - 273.15) * 9 / 5 + 32", "alias": "temperature_max_f"},
{"expression": "(temperature_min_k - 273.15) * 9 / 5 + 32", "alias": "temperature_min_f"},
{"expression": "((func.Min(86.0, func.Max(50.0, temperature_max_f)) + func.Min(86.0, func.Max(50.0, temperature_min_f))) / 2 - 50.0) * 0.25", "alias": "gdd50_f_degree_days_6h"}
]
}'
curl -X POST 'https://gribstream.com/api/v2/cfsflxf/runs' \
-H "Content-Type: application/json" \
-H "Accept: text/csv" \
-H "Authorization: Bearer [API_TOKEN]" \
-d '{
"forecastedFrom": "2024-07-01T00:00:00Z",
"forecastedUntil": "2024-07-01T00:00:00Z",
"minLeadTime": "6h",
"maxLeadTime": "2952h",
"coordinates": [
{"name": "Iowa", "lat": 42.047066, "lon": -93.750371}
],
"variables": [
{"name": "TMAX", "level": "2 m above ground", "info": "", "alias": "temperature_max_k", "hidden": true},
{"name": "TMIN", "level": "2 m above ground", "info": "", "alias": "temperature_min_k", "hidden": true}
],
"expressions": [
{"expression": "(temperature_max_k - 273.15) * 9 / 5 + 32", "alias": "temperature_max_f"},
{"expression": "(temperature_min_k - 273.15) * 9 / 5 + 32", "alias": "temperature_min_f"},
{"expression": "((func.Min(86.0, func.Max(50.0, temperature_max_f)) + func.Min(86.0, func.Max(50.0, temperature_min_f))) / 2 - 50.0) * 0.25", "alias": "gdd50_f_degree_days_6h"}
]
}'
履歴と予報の接続部の応答例:
forecasted_at,forecasted_time,lat,lon,name,member,gdd50_f_degree_days_6h,temperature_max_f,temperature_min_f
2024-06-30T18:00:00Z,2024-07-01T00:00:00Z,42.0471,-93.7504,Iowa,0,4.7475,70.2500,67.7300
2024-07-01T00:00:00Z,2024-07-01T06:00:00Z,42.0471,-93.7504,Iowa,0,3.3300,69.5300,57.1100
一次資料: NOAA CFSv2資料 · CFS FLXFモデルとインベントリ · USDA NASS調査方法 · Crop Progress公式アーカイブ · Iowa State GDD法。