Introduction

This is a protype forecast report. The goal is to assist users in assessing how an earth observation product can be used for making agricultural outlooks.

Four figures are shown:

  1. Mean Area, Production, and Yield over the years 1994 to 2014 -This provides context for interpreting the grain data
  2. Mean, Current Value, and Current Anomalie for the current month of whichever EO variable is being used for prediction (in this case CHIRPS) -
  3. Historical Out of Sample Forecast Error for the same product and statistical model in a similar set of months. In this case we look at what the past accuracy of a yield forecast (using CHIRPS) was in March, April, and May. Note, this is averaged over the 2000-2014 period. I would also like to compare this with analog years.
  4. Yield Forecast, (based on March 2020 CHIRPS ) expressed as percent of mean yield over the period 1994 - 2014.

Summary Figures

Mean area, production, and yields for the years 1994 to 2014.



Mean, Current, and Anomalie for March 2020 CHIRPS

Mean and Anomalie are based on the years 1994 to 2020.



Out of Sample Forecast Error for CHIRPS March, April, and May Rainfall

Mean Absolute Percent Error (MAPE) calculated based on out of sample seasonfal forecasts conducted over 2001-2014. Lower scores indicate greater accuracy. Forecasts are based on model type MODSPEC1



Yield Forecast based on March 2020 CHIRPS

Forecast values expressed as percent of Mean Yields over the Years 1994 - 2014. Model forecasts are a generalized additive model (GAM)2. The figure shows predicted percent of mean (center) as well as lower (left) and higher (right) predicted percent of mean intervals.



This table shows the forecast percentage of mean values in the above table along with the mean yield values from the first figure3.


Table of Mean Yields and Predicted Percent of Mean Values
District Mean Yield % of mean (low) % of mean % of mean (high)
Baringo 1.8247619 1.00 1.07 1.14
Bugoma 2.7185714 1.07 1.15 1.24
Busia 1.3114286 1.19 1.42 1.65
Elgeyo-Marakwet 2.4880952 1.00 1.05 1.10
Embu 0.9961905 0.98 1.11 1.24
Isiolo 0.5152381 1.01 1.27 1.52
Kajiado 1.2823810 0.99 1.10 1.20
Kakamega 2.1857143 1.11 1.25 1.39
Kericho 2.6295238 1.02 1.08 1.13
Kiambu 1.0404762 1.00 1.13 1.25
Kilifi 0.8119048 0.99 1.15 1.31
Kirinyaga 1.1633333 0.98 1.09 1.20
Kisii 2.5090476 1.05 1.11 1.18
Kisumu 1.7838095 1.05 1.14 1.23
Kitui 0.4938095 1.00 1.26 1.53
Kwale 0.9357143 0.98 1.12 1.25
Laikipia 1.6352381 0.99 1.07 1.15
Lamu 1.0966667 1.02 1.13 1.25
Machakos 0.4890476 0.99 1.26 1.53
Marsabit 0.5940000 0.98 1.20 1.43
Meru 1.0830000 0.99 1.11 1.23
Mombasa 0.8385714 1.00 1.15 1.31
Muranga 0.9247619 0.99 1.14 1.29
Nakuru 2.0585714 0.99 1.06 1.12
Nandi 2.7947619 0.99 1.04 1.08
Narok 2.1376190 0.99 1.06 1.12
Nyandaura 1.6776190 0.99 1.07 1.15
Nyeri 1.0257143 0.99 1.12 1.24
Samburu 1.4385714 1.00 1.09 1.18
Siaya 1.3728571 1.02 1.13 1.24
South Nyanza 1.5338095 1.03 1.13 1.23
Taita Taveta 0.8733333 0.98 1.13 1.28
Tana River 1.0700000 1.01 1.14 1.26
Trans-Nzoia 3.5104762 1.00 1.04 1.08
Turkana 1.3123810 1.01 1.11 1.21
Uasin-Gishu 3.3176190 1.00 1.04 1.07
West-Pokot 1.9666667 1.00 1.07 1.14




  1. Model type(s) to be filled in dynamically

  2. To keep things simple I am using just one model. Future version will show mean/median results from an ensemble of models

  3. To keep these reports simple, printable, and portable I may exclude the tables and maybe just have a link to a zip file that contains the approatie shape file and/or csv values.

LS0tCnRpdGxlOiAiRm9yZWNhc3QgUHJvdG90eXBlIgpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sKZmlnX3dpZHRoOiA3CmZpZ19oZWlnaHQ6IDYKZmlnX2NhcHRpb246IHRydWUKLS0tCgpgYGB7cixldmFsPVRSVUUsZWNobz1GYWxzZSx3YXJuaW5nPUZBTFNFLG1lc3NhZ2U9RkFMU0V9CiMtLS1TZXQgUHJvamVjdCBEaXJlY3RvcmllcwpkaXJCYXNlPC0nL1ZvbHVtZXMvR29vZ2xlRHJpdmUvTXkgRHJpdmUvJwoKIy1Qcm9qZWN0IERpcmVjdG9yaWVzCmRpclByb2o8LXBhc3RlMChkaXJCYXNlLCdtYWl6ZV9mb3JlY2FzdC8nKSAjcHJvamVjdCBkaXJlY3RvcnkKZGlyUHJvajI8LXBhc3RlMChkaXJCYXNlLCdtYWl6ZV9mb3JlY2FzdF9yZXBvcnRpbmcvJykKZGlyUmRhdDwtcGFzdGUwKGRpclByb2osJ21haXplX2ZvcmVjYXN0X3JkYXRhLycpCmRpclJkYXQyPC1wYXN0ZTAoZGlyUHJvajIsJ2ZvcmVjYXN0X3JlcG9ydGluZ19yZGF0YS8nKQpkaXJEYXRfcmF3PC1wYXN0ZTAoZGlyUHJvaiwnbWFpemVfZm9yZWNhc3RfcmF3ZGF0YS8nKQpkaXJTaGFwZUZpbGVzPC1wYXN0ZTAoZGlyUHJvaiwnbWFpemVfZm9yZWNhc3Rfc2hhcGVmaWxlcy8nKQpkaXJTcGRhdDwtcGFzdGUwKGRpckJhc2UsJ1NwYXRpYWwvJykKZGlyTWFzazwtcGFzdGUwKGRpclByb2osJ21haXplX2ZvcmVjYXN0X2Nyb3BtYXNrLycpCgoKbGlicmFyeShyZXNoYXBlMikKbGlicmFyeShzdHJpbmdyKQpsaWJyYXJ5KGdncGxvdDIpCmxpYnJhcnkoZHBseXIpCmxpYnJhcnkocmFzdGVyKQpsaWJyYXJ5KHJnZGFsKQpsaWJyYXJ5KHNmKQpsaWJyYXJ5KGNhcikKbGlicmFyeShzY2FsZXMpCmxpYnJhcnkoa2FibGVFeHRyYSkKCmxpYnJhcnkoY293cGxvdCkgI21hc2tzIGdnc2F2ZQpsaWJyYXJ5KHZpcmlkaXMpCgoKIy0tTG9hZCBFeGlzdGluZyBQbG90cwpzZXR3ZChkaXJSZGF0MikKbG9hZCgnMjBfbWFpemVfZm9yZWNhc3RfcmVwb3J0aW5nX21haW5fcGxvdHMuUmRhdGEnKQpgYGAKIyBJbnRyb2R1Y3Rpb24KVGhpcyBpcyBhIHByb3R5cGUgZm9yZWNhc3QgcmVwb3J0LiAqKlRoZSBnb2FsIGlzIHRvIGFzc2lzdCB1c2VycyBpbiBhc3Nlc3NpbmcgaG93IGFuIGVhcnRoIG9ic2VydmF0aW9uIHByb2R1Y3QgY2FuIGJlIHVzZWQgZm9yIG1ha2luZyBhZ3JpY3VsdHVyYWwgb3V0bG9va3MuKioKCkZvdXIgZmlndXJlcyBhcmUgc2hvd246CgoxLiAqKipNZWFuIEFyZWEsIFByb2R1Y3Rpb24sIGFuZCBZaWVsZCBvdmVyIHRoZSB5ZWFycyBgciBsaXNfdmFyc19yZXBvcnQkbWluX2FnYCB0byBgciBsaXNfdmFyc19yZXBvcnQkbWF4X2FnYCoqKiAtVGhpcyBwcm92aWRlcyBjb250ZXh0IGZvciBpbnRlcnByZXRpbmcgdGhlIGdyYWluIGRhdGEKMi4gKioqTWVhbiwgQ3VycmVudCBWYWx1ZSwgYW5kIEN1cnJlbnQgQW5vbWFsaWUqKiogZm9yIHRoZSBjdXJyZW50IG1vbnRoIG9mIHdoaWNoZXZlciBFTyB2YXJpYWJsZSBpcyBiZWluZyB1c2VkIGZvciBwcmVkaWN0aW9uIChpbiB0aGlzIGNhc2UgYHIgbGlzX3ZhcnNfcmVwb3J0JHZhcl9uYW1lYCkgLSAKMy4gKioqSGlzdG9yaWNhbCBPdXQgb2YgU2FtcGxlIEZvcmVjYXN0IEVycm9yKioqIGZvciB0aGUgc2FtZSBwcm9kdWN0IGFuZCBzdGF0aXN0aWNhbCBtb2RlbCBpbiBhIHNpbWlsYXIgc2V0IG9mIG1vbnRocy4gSW4gdGhpcyBjYXNlIHdlIGxvb2sgYXQgd2hhdCB0aGUgcGFzdCBhY2N1cmFjeSBvZiBhIHlpZWxkIGZvcmVjYXN0ICh1c2luZyBgciBsaXNfdmFyc19yZXBvcnQkdmFyX25hbWVgKSB3YXMgaW4gTWFyY2gsIEFwcmlsLCBhbmQgTWF5LiAgTm90ZSwgdGhpcyBpcyBhdmVyYWdlZCBvdmVyIHRoZSAyMDAwLTIwMTQgcGVyaW9kLiBJIHdvdWxkIGFsc28gbGlrZSB0byBjb21wYXJlIHRoaXMgd2l0aCBhbmFsb2cgeWVhcnMuIAo0LiAqKipZaWVsZCBGb3JlY2FzdCoqKiwgKGJhc2VkIG9uIGByIGxpc192YXJzX3JlcG9ydCRtb250aF9uYW1lYCBgciBsaXNfdmFyc19yZXBvcnQkbWF4X2V2YXJfeWVhcmAgYHIgbGlzX3ZhcnNfcmVwb3J0JHZhcl9uYW1lYCApIGV4cHJlc3NlZCBhcyAqKnBlcmNlbnQgb2YgbWVhbiB5aWVsZCoqIG92ZXIgdGhlIHBlcmlvZCBgciBsaXNfdmFyc19yZXBvcnQkbWluX2FnYCAtIGByIGxpc192YXJzX3JlcG9ydCRtYXhfYWdgLgo8IS0tIDUuICoqKkJlc3QgUHJvZHVjdCBmb3IgYSBHaXZlbiBNb250aCoqKi5UaGlzIHNob3dzIGhpc3RvcmljYWxseSB3aGF0IHRoZSAnYmVzdCcgcHJvZHVjdCBpcyBmb3IgYSBnaXZlbiBtb250aCBvciB5ZWFyLiAtLT4KCiMgU3VtbWFyeSBGaWd1cmVzCgojIyMjIE1lYW4gYXJlYSwgcHJvZHVjdGlvbiwgYW5kIHlpZWxkcyBmb3IgdGhlIHllYXJzIGByIGxpc192YXJzX3JlcG9ydCRtaW5fYWdgIHRvIGByIGxpc192YXJzX3JlcG9ydCRtYXhfYWdgLgoKKioqCmBgYHtyLGVjaG89ZmFsc2Usd2FybmluZz1GQUxTRSxtZXNzYWdlPUZBTFNFfQpwMWFsbApgYGAKKioqCgojIyMjIE1lYW4sIEN1cnJlbnQsIGFuZCBBbm9tYWxpZSBmb3IgYHIgbGlzX3ZhcnNfcmVwb3J0JG1vbnRoX25hbWVgIGByIGxpc192YXJzX3JlcG9ydCRtYXhfZXZhcl95ZWFyYCBgciBsaXNfdmFyc19yZXBvcnQkdmFyX25hbWVgIAoKTWVhbiBhbmQgQW5vbWFsaWUgYXJlIGJhc2VkIG9uIHRoZSB5ZWFycyBgciBsaXNfdmFyc19yZXBvcnQkbWluX2FnYCB0byBgciBsaXNfdmFyc19yZXBvcnQkbWF4X2V2YXJfeWVhcmAuCgoqKioKYGBge3IsZWNobz1mYWxzZSx3YXJuaW5nPUZBTFNFLG1lc3NhZ2U9RkFMU0V9CnAyYWxsCmBgYAoqKioKCiMjIyMgT3V0IG9mIFNhbXBsZSBGb3JlY2FzdCBFcnJvciBmb3IgQ0hJUlBTIE1hcmNoLCBBcHJpbCwgYW5kIE1heSBSYWluZmFsbApNZWFuIEFic29sdXRlIFBlcmNlbnQgRXJyb3IgKE1BUEUpIGNhbGN1bGF0ZWQgYmFzZWQgb24gb3V0IG9mIHNhbXBsZSBzZWFzb25mYWwgZm9yZWNhc3RzIGNvbmR1Y3RlZCBvdmVyIDIwMDEtMjAxNC4gKipMb3dlciBzY29yZXMgaW5kaWNhdGUgZ3JlYXRlciBhY2N1cmFjeSoqLiBGb3JlY2FzdHMgYXJlIGJhc2VkIG9uIG1vZGVsIHR5cGUgTU9EU1BFQ15bTW9kZWwgdHlwZShzKSB0byBiZSBmaWxsZWQgaW4gZHluYW1pY2FsbHldIAoKKioqCmBgYHtyLGVjaG89ZmFsc2Usd2FybmluZz1GQUxTRSxtZXNzYWdlPUZBTFNFfQpwNApgYGAKKioqCgoKIyBZaWVsZCBGb3JlY2FzdCBiYXNlZCBvbiBgciBsaXNfdmFyc19yZXBvcnQkbW9udGhfbmFtZWAgYHIgbGlzX3ZhcnNfcmVwb3J0JG1heF9ldmFyX3llYXJgIGByIGxpc192YXJzX3JlcG9ydCR2YXJfbmFtZWAgCkZvcmVjYXN0IHZhbHVlcyBleHByZXNzZWQgYXMgcGVyY2VudCBvZiBNZWFuIFlpZWxkcyBvdmVyIHRoZSBZZWFycyBgciBsaXNfdmFyc19yZXBvcnQkbWluX2FnYCAtIGByIGxpc192YXJzX3JlcG9ydCRtYXhfYWdgLiAKTW9kZWwgZm9yZWNhc3RzIGFyZSBhIGdlbmVyYWxpemVkIGFkZGl0aXZlIG1vZGVsIChHQU0pXltUbyBrZWVwIHRoaW5ncyBzaW1wbGUgSSBhbSB1c2luZyBqdXN0IG9uZSBtb2RlbC4gRnV0dXJlIHZlcnNpb24gd2lsbCBzaG93IG1lYW4vbWVkaWFuIHJlc3VsdHMgZnJvbSBhbiBlbnNlbWJsZSBvZiBtb2RlbHNdLiBUaGUgZmlndXJlIHNob3dzICoqKnByZWRpY3RlZCBwZXJjZW50IG9mIG1lYW4qKiogKGNlbnRlcikgYXMgd2VsbCBhcyBsb3dlciAobGVmdCkgYW5kIGhpZ2hlciAocmlnaHQpICoqKnByZWRpY3RlZCBwZXJjZW50IG9mIG1lYW4qKiogaW50ZXJ2YWxzLgoKKioqCmBgYHtyLGVjaG89ZmFsc2Usd2FybmluZz1GQUxTRSxtZXNzYWdlPUZBTFNFfQpwMwpgYGAKKioqCiMjIyMgVGhpcyB0YWJsZSBzaG93cyB0aGUgZm9yZWNhc3QgcGVyY2VudGFnZSBvZiBtZWFuIHZhbHVlcyBpbiB0aGUgYWJvdmUgdGFibGUgYWxvbmcgd2l0aCB0aGUgbWVhbiB5aWVsZCB2YWx1ZXMgZnJvbSB0aGUgZmlyc3QgZmlndXJlXltUbyBrZWVwIHRoZXNlIHJlcG9ydHMgc2ltcGxlLCBwcmludGFibGUsIGFuZCBwb3J0YWJsZSBJIG1heSBleGNsdWRlIHRoZSB0YWJsZXMgYW5kIG1heWJlIGp1c3QgaGF2ZSBhIGxpbmsgdG8gYSB6aXAgZmlsZSB0aGF0IGNvbnRhaW5zIHRoZSBhcHByb2F0aWUgc2hhcGUgZmlsZSBhbmQvb3IgY3N2IHZhbHVlcy5dLiAKKioqCmBgYHtyLGVjaG89ZmFsc2Usd2FybmluZz1GQUxTRSxtZXNzYWdlPUZBTFNFfQp0MTwta25pdHI6OmthYmxlKGR0YWIsIGNhcHRpb24gPSAnVGFibGUgb2YgTWVhbiBZaWVsZHMgYW5kIFByZWRpY3RlZCBQZXJjZW50IG9mIE1lYW4gVmFsdWVzJykKdDE8LWthYmxlX3N0eWxpbmcodDEsYm9vdHN0cmFwX29wdGlvbnMgPSBjKCJzdHJpcGVkIiwgImhvdmVyIiwiY29uZGVuc2VkIikpCnNjcm9sbF9ib3godDEsIGhlaWdodCA9ICczMDBweCcsIHdpZHRoID0gJzEwMCUnLAogIGJveF9jc3MgPSAiYm9yZGVyOiAxcHggc29saWQgI2RkZDsgcGFkZGluZzogMXB4OyAiLCBleHRyYV9jc3MgPSBOVUxMLAogIGZpeGVkX3RoZWFkID0gVFJVRSkKCgpgYGAKKioqCgo8IS0tICMgQmVzdCBQcm9kdWN0IGZvciBFYWNoIE1vbnRoClRoaXMgbWFwIHNob3dzIHRoZSB3aGljaCBwcm9kdWN0IGNhbiBwcm92aWRlIHRoZSBtb3N0IGFjY3VyYXRlIGZvcmVjYXN0IChhbW9uZyBhIHJhbmdlIG9mIHN0YXRpc3RpY2FsIG1vZGVscykgZm9yIGEgZ2l2ZW4gbW9udGggYW5kIHJlZ2lvbi4gQXJlYXMgbWFya2VkIGFzICdub25lJyBpbmRpY2F0IHRoYXQgZWl0aGVyIHRoZSBwcmVkaWN0aW9uIGVycm9yIHdhcyBncmVhdGVyIHRoYW4gNTAlIG9yIGNvdWxkIG5vdCBvdXRwZXJmb3JtIGEgYmFzZWxpbmUgbW92aW5nIGF2ZXJhZ2UgbW9kZWxeW1RoaXMgbWF5IG5vdCBiZSBpbiB1cGNvbWluZyByZXBvcnRzIGFzIEkgbWF5IHVwZGF0ZSBpdF0uIC0tPgoKKioqCmBgYHtyLGVjaG89ZmFsc2Usd2FybmluZz1GQUxTRSxtZXNzYWdlPUZBTFNFfQojcDUKYGBgCioqKg==