| Milling dry maize is cheaper than buying packaged flour | ||||
| Even after adding milling costs, households save about Ksh40 at wholesale and Ksh39 at retail. | ||||
|
|
Average
|
Average Effective
|
||
|---|---|---|---|---|
| Commodity | Wholesale Price | Retail Price | Wholesale Cost1 | Retail Cost1 |
| Dry Maize | Ksh100.00 | Ksh120.00 | Ksh110.002 | Ksh130.002 |
| Maize Flour | Ksh150.00 | Ksh169.00 | Ksh150.002 | Ksh169.002 |
| 1 The average effective cost includes added milling costs of Ksh10 per 2kg both at wholesale and retail. | ||||
| 2 Households save an average of Ksh40 when purchasing in bulk compared to Ksh39 saved at retail purchases. | ||||
| Source: Ministry of Agriculture & Livestock Development | ||||
1 Introduction
In July 2025, Kenya experienced sharp price hikes in key subsistence foods such as cooking oil, sugar, and maize flour — staples consumed daily by nearly the entire population. During such spikes, many households cut back from three meals a day, a coping strategy that risks malnutrition or even death. Among these staples, maize flour is a major driver of the kitchen budget. While some households opt for packaged flour for its convenience, others buy dry maize and mill it themselves in search of savings. Identifying which option is more affordable is critical for households trying to stretch their budgets during price hikes.
2 Methods
For this case study, I analyzed a decade of market price data on dry maize and packaged maize flour across Kenya, obtained through a daily updating pipeline that I built to scrape data from the Ministry of Agriculture & Livestock Development’s Kenya Market Information System (KAMIS). I developed a Python script to collect commodity prices directly from KAMIS, clean them with pandas and pyjanitor, and load the data into a Google BigQuery warehouse.
To ensure consistency, I removed duplicates, standardized data types, and defined schemas for structured storage. I then retrieved the curated dataset from BigQuery into R for exploratory and statistical analysis. I examined central tendencies using the median, measured price variability through the median absolute deviation (MAD), and tested for statistical significance with the Wilcoxon rank-sum test. To quantify the strength of these differences, I calculated Wilcoxon effect sizes. This automated, multi-step workflow allowed me to combine rigorous statistical testing with practical interpretation of household-level cost differences.
3 Results
3.1 Ignore Milling Loss
Milling 1kg of dry maize typically yields only about 0.75kg of flour. However, for households that focus purely on cost and ignore yield loss, the key question is whether buying and milling dry maize is cheaper than purchasing packaged maize flour.
Dry maize consistently sells at a lower price than packaged flour at both wholesale and retail levels. After factoring in milling costs (Ksh10 per 2kg), the effective retail cost of milling dry maize averages Ksh130, compared to Ksh167 for packaged flour. At wholesale, the gap is even wider: Ksh110 versus Ksh150. This translates to savings of Ksh39 at retail and Ksh40 at wholesale.
| Milling maize offers stability in household budgets | ||||
| Packaged flour shows higher price swings at retail, but wholesale flour remains fixed. | ||||
|
|
Effective Wholesale Cost
|
Effective Retail Cost
|
||
|---|---|---|---|---|
| Commodity | Deviation | Range | Deviation | Range |
| Dry Maize | Ksh15.00 | Ksh95 - Ksh125 | Ksh15.001 | Ksh115 - Ksh145 |
| Maize Flour | Ksh0.00 | Ksh150 - Ksh1502 | Ksh24.00 | Ksh145 - Ksh193 |
| 1 Dry Maize’s low deviation implies the pricing is more stable and consistent. | ||||
| 2 Maize flour is much cheaper at fixed wholesale price making bulk purchases cost effective. | ||||
| Source: Ministry of Agriculture & Livestock Development | ||||
Price variation adds another dimension to household budgeting. Dry maize shows a retail deviation of Ksh15, with a narrower range (Ksh115–145), while packaged flour fluctuates more, with a deviation of Ksh24 and a wider range (Ksh145–193). Wholesale flour remains fixed at Ksh150, but wholesale maize still proves cheaper on average.
| Households cut costs by milling their own maize | |||
| The savings are statistically significant, showing a real—not random—price difference. | |||
|
|
Test Results
|
||
|---|---|---|---|
| method | statistic | p.value | alternative |
| Wilcoxon rank sum test with continuity correction | 93595076 | 01 | two.sided |
| 1 Since the p-value is very small, it’s very unlikely the average price difference between both commodities is due to random chance. | |||
| Source: Ministry of Agriculture & Livestock Development | |||
To test whether these observed differences could be due to chance, I applied the Wilcoxon rank-sum test. The test statistic was 87,107,114 with a p-value < 0.001, confirming that the lower effective cost of dry maize is statistically significant.
| Families feel the squeeze from maize price differences | ||||||
| With a moderate effect size, the gap matters for everyday budgeting decisions. | ||||||
|
|
Group
|
Sample
|
Test Results
|
|||
|---|---|---|---|---|---|---|
| variable | group1 | group2 | n1 | n2 | effsize | magnitude |
| effective_retail_cost | Dry Maize | Maize Flour | 21616 | 15831 | 0.38783551 | moderate1 |
| 1 The average retail price difference between dry maize and maize flour is moderate. | ||||||
| Source: Ministry of Agriculture & Livestock Development | ||||||
Beyond significance, households need to know whether the difference is large enough to matter in practice. The Wilcoxon effect size was 0.38 (moderate), indicating that the cost gap is not only real but meaningful enough to impact kitchen budgeting decisions.
3.2 Account Milling Losses
When households account for the 25% yield loss during milling, the cost balance shifts.
| Milling losses erase the cost advantage of dry maize | ||||
| At retail, packaged flour is cheaper, while wholesale savings shrink to just Ksh3. | ||||
|
|
Average
|
Average Effective
|
||
|---|---|---|---|---|
| Commodity | Wholesale Price | Retail Price | Wholesale Cost1 | Retail Cost1 |
| Dry Maize | Ksh100.00 | Ksh120.00 | Ksh147.00 | Ksh174.00 |
| Maize Flour | Ksh150.00 | Ksh169.00 | Ksh150.00 | Ksh169.002 |
| 1 The average effective cost includes added milling costs of Ksh10 per 2kg both at wholesale and retail. | ||||
| 2 At retail, milling dry maize becomes Ksh5 more expensive than packaged flour (Ksh174 vs. Ksh169). | ||||
| Source: Ministry of Agriculture & Livestock Development | ||||
At retail, milling dry maize becomes Ksh5 more expensive than packaged flour (Ksh174 vs. Ksh169). At wholesale, milling still saves money, but only marginally — about Ksh3 (Ksh147 vs. Ksh150).
| Packaged maize flour shows greater price stability | ||||
| Wholesale prices stay fixed, while dry maize fluctuates more despite slightly lower deviation. | ||||
|
|
Wholesale Price
|
Retail Price
|
||
|---|---|---|---|---|
| Commodity | Deviation | Range | Deviation | Range |
| Dry Maize | Ksh20.00 | Ksh127 - Ksh167 | Ksh21.001 | Ksh153 - Ksh195 |
| Maize Flour | Ksh0.00 | Ksh150 - Ksh1502 | Ksh24.00 | Ksh145 - Ksh193 |
| 1 Although dry maize has a lower deviation compared to maize flour, its retail price range is much wider. | ||||
| 2 Maize flour is much cheaper at fixed wholesale price making bulk purchases cost effective. | ||||
| Source: Ministry of Agriculture & Livestock Development | ||||
Dry maize shows a slightly lower deviation at retail (Ksh21) but a much wider range (Ksh153–195) compared to packaged flour (Ksh145–193). At wholesale, maize again fluctuates more (deviation Ksh20), while flour stays constant at Ksh150. This makes packaged flour at wholesale more predictable for budgeting.
| Milling isn’t always the cheaper option | |||
| Once yield loss is factored in, packaged flour edges out dry maize at retail. | |||
|
|
Test Results
|
||
|---|---|---|---|
| method | statistic | p.value | alternative |
| Wilcoxon rank sum test with continuity correction | 166987199 | 0.0097151981 | two.sided |
| 1 Since the p-value is very small, it’s very unlikely the average effective maize flour cost is due to random chance. | |||
| Source: Ministry of Agriculture & Livestock Development | |||
The Wilcoxon rank-sum test produced a statistic of 155,258,855 with a p-value ≈ 0.03, confirming that the small cost difference is unlikely to be random.
| The extra cost of milling is barely felt | ||||||
| Although retail flour is marginally cheaper, the difference is too small to matter in practice. | ||||||
|
|
Group
|
Sample
|
Test Results
|
|||
|---|---|---|---|---|---|---|
| variable | group1 | group2 | n1 | n2 | effsize | magnitude |
| effective_retail_cost | Dry Maize | Maize Flour | 21380 | 15869 | 0.013397951 | small |
| 1 The average effective maize flour cost is small enough to matter when making budgetary concerns. | ||||||
| Source: Ministry of Agriculture & Livestock Development | ||||||
The effect size, however, was 0.01 (small), meaning that while dry maize can cost slightly more at retail, the difference is so small that many households may not notice it in practice.
4 Discussion
The findings highlight how household savings depend heavily on whether milling losses are considered.
When milling losses are ignored, dry maize clearly offers households a cost advantage. Families save between Ksh39 and Ksh40 per 2kg equivalent compared to packaged flour, and dry maize prices show narrower deviations and more stability over time. This means households not concerned with yield efficiency can reliably cut costs by milling their own maize. The Wilcoxon test results confirm these differences are statistically significant, with a moderate effect size, indicating that the cost savings are both real and meaningful.
However, once the 25% milling loss is factored in, the equation changes. At the retail level, dry maize becomes Ksh5 more expensive than packaged flour, while wholesale savings shrink to just Ksh3. In this scenario, the advantage shifts toward packaged maize flour, which offers consistent pricing at wholesale and predictable costs for households. Here, the effect size is small, suggesting that while the difference is statistically significant, its impact on budgeting decisions is marginal.
It is also important to note that household choices extend beyond direct prices. Time, convenience, accessibility of local mills, transport costs, and storage risks (such as spoilage or pests) all influence the decision. Urban households, where milling is less convenient, may prioritize packaged flour even if it costs slightly more. Rural households with easier mill access may find bulk dry maize still advantageous, especially when buying wholesale.
5 Conclusion
This study shows that the better option depends on context.
Ignoring milling losses, households can achieve meaningful savings — up to Ksh40 per 2kg — by buying dry maize and milling it themselves. For bulk purchases, this remains a cost-effective and stable budgeting strategy.
Accounting for milling losses, packaged maize flour emerges as slightly cheaper at retail and nearly equal at wholesale, making it a more convenient option with minimal financial trade-off.
In practice, families should remain flexible and adjust strategies depending on market conditions and household circumstances. Rural or bulk-buying households may lean toward dry maize for savings, while urban families may prefer packaged flour for its convenience and predictable pricing.
Ultimately, both options have trade-offs. The key for households during maize price hikes is to stay responsive to price changes, weigh hidden costs like time and transport, and choose the strategy that balances savings, convenience, and accessibility.