This preview requires a token in the URL.
?token=<your token>
We need training data to build a working model. Simple EVI / climate thresholds alone are not accurate enough for a parametric trigger; they catch drought years at the dept-aggregate level but cannot resolve parcel-level loss without supervised calibration. What we need from Covermetrics / Limagrain: per-parcel yield history (3+ years) and the Coop 63 contracted parcel IDs so we can lock the feature pipeline to real yield outcomes.
We evaluate candidate signals against real Agreste yields. Higher |r| means a stronger relationship; sign matters for interpretation.
With the peak_doy outlier filter + top-50% Peak×Integral coupling pipeline applied, Peak EVI, EVI Integral and Ascending Slope together give the best predictive lift for seed-maize yield in Coop 63. Combining these three EVI features with ERA5 climate (heat-day count, GDD, precip) is the multi-signal design we'd use for a production trigger — once Limagrain supplies parcel-level yield ground truth so the model can be supervised.
Growing-season aggregates (Apr-Sep) from ERA5-Land via the ARCO point-query endpoint, at the centroid of Puy-de-Dôme. Combining ERA5 + EVI captures more of the yield signal than either alone — heat-day count flags drought years cleanly (no satellite cloud dependency), while EVI Peak / Integral pick up parcel-level crop health. In the production model we'd stack both feature families plus their interactions (heat-day × EVI integral, precip-anomaly × ascending slope).
2022 dropped — no vegetation-class Sentinel-2 observations (Massif Central cloud cover).
2,000 dept-32 maize centroids matched across RPG vintages 2019–2024 → 189,063 Sentinel-2 observations × 6 EVI years. Filter chain identical to Coop 63 (peak ± 30 d EVI Integral × top-75 % yield-coupling). Both in-sample and leave-one-year-out cross-validated correlations are reported; LOYO is the defensible number.
Pearson r vs Agreste dept-32 seed-maize yield (n = 6 years 2019–2024). Bold = |r| ≥ 0.70.
2022 (drought) correctly flagged as full loss. 2020 and 2023 over-calls reflect department-level basis risk; resolves at v1.0 with parcel-level Limagrain truth.
Year-pooled (no persistent panel — TRN/SOJ rotates: 0 dept-32 parcels appear as soy/sunflower in all six RPG vintages). Per-crop phenology window and quality filter are tuned separately. LOYO is the honest cross-validation number.
Late-year sample size shrinks sharply (53 SOJ parcels in 2024) — partly real area decline driven by the 2022 drought, partly an upstream RPG dept-code derivation issue tracked for v1.x. Numbers above are after a Gers bbox safety filter.
Only SCL=4 (vegetation-classified) pixels shown; sparse points in some years reflect persistent cloud cover over the Massif Central. The visible EVI decline in early-season DOYs reflects that pre-maize-emergence vegetation (cover crops, winter greens) is being terminated before maize sowing — not maize greenup. Real maize greenup starts from the minimum (≈ DOY 160–180) and rises to peak around DOY 200–230.
Draft — needs ground-truth yield data. The numbers below are derived from Agreste département-level seed maize yields and don't reflect per-parcel outcomes. Thresholds will change materially once Limagrain shares per-parcel yield history. The right-column optima are overfit to 8 dept-years and shouldn't be taken as production tier boundaries.
s3://digifarm-limagrain-yield/ ├── agreste/maize_yield_dept.csv Yield data (91 depts × 15 years) ├── rpg/2023/maize_parcels.parquet 707K maize parcels + IDs ├── samples/centroids.parquet 240K sampled field centroids ├── evi/evi_timeseries.parquet 199K Sentinel-2 observations ├── outputs/ │ ├── features.parquet Aggregated dept × year × signal │ ├── model/yield_model.pkl Trained model │ └── reports/coop63_calibration.md This report └── client_docs/ Vivadour contracts + 2025 polygons
github.com/digifarmio/limagrain-yield (private)