food.dmnd.Rd
The Edmonds model divides food consumption into two categories, staples, which represent basic foodstuffs, and nonstaples, which represent higher-quality foods. Demand for staples increases at low income, but eventually peaks and begins to decline with higher income. Demand for nonstaples increases with income over all income ranges; however, total (staple + nonstaple) demand saturates asymptotically at high income.
food.dmnd(Ps, Pn, Y, params = vec2param(), rgn = NULL)
Ps | Vector of staple food prices. |
---|---|
Pn | Vector of nonstaple food prices. |
Y | Vector of per capita income. |
params | Model parameters structure (see details) |
rgn | Optional name for this calculation. If provided, the region will be included as an extra column in the output data frame. |
Ps and Pn are food prices (staple food price and nonstaple price) in international dollars per 1000 (dietary) calories. Y is per-capita GDP in international dollars. Ps, Pn, Y may be vectors but must all be the same length.
Params is a structure:
2x2 array of the xi elasticities
Leading coefficients in the quantity calculations
Length-2 list of functions giving Y^eta(Y) (see note below)
Price of ``materials''. Loosely speaking, this parameter controls how valuable food is relative to everything else in the economy.
Note that we don't need elasticity parameters for the materials component because we calculate Qm as a residual. That is, whatever portion of household budgets is not spent on food is by definition spent on materials.
The return value is a data frame with the following elements.
Quantity for staple foods (S)
Quantity for nonstaple foods (N)
Quantity for ``materials'' (M). This quantity represents an aggregate of everything else besides food that consumers buy.
Budget fraction for S
Budget fraction for N
Budget fraction for M
Demand for staple and nonstaple foods are given in thousands of dietary calories per person per day. Units for materials demand are unspecified.
For one of the functional forms used for the income behavior, eta(Y), eta blows up, but Y^(eta(Y)) is well behaved. Therefore, the eta functions need to be able to calculate not just eta(Y), but Y^(eta(Y)), so they can handle the limiting cases.