Skip to content

Latest commit

 

History

History
142 lines (116 loc) · 7.21 KB

nutritional_adequacy.org

File metadata and controls

142 lines (116 loc) · 7.21 KB

Preface

import cfe
import matplotlib.pyplot as plt

r = cfe.result.from_dataset('Indian ICRISAT.ds')
UseNutrients=['Protein','Calories','Iron']

Nutritional requirements

Individuals have nutritional requirements established by nutrition scientists. Here are some standards established by the Indian National Institute of Nutrition:

Nutritional needs of individuals

Recommended Daily Allowances: India

Sex-AgeCaloriesProteinFatCalciumIronBetacaroteneThiamineRiboflavinNiacinAscorbic Acid
C 0-0.5500.2.325
C 0.5-11950052800.3.425
C 1-3106016.72760093200.5.6840
C 4-6135020.125600133200.7.81140
C 7-9169029.530600164800.81.1340
B 10-12219039.9358002148001.11.31540
G 10-12201040.4358002748001.1.21340
B 13-15275054.3458003248001.41.61640
G 13-15233051.9408002748001.21.41440
B 16-17302061.5508002848001.51.81740
G 16-17244055.5358002648001.1.21440
M273060306001748001.41.41840
W2230552512002148001.11.31440

Recommended Daily Allowances: Tanzania

Sex-AgeCaloriesProteinVitamin AVitamin B6Vitamin B12Vitamin CVitamin DVitamin ECalciumIronMagnesiumZinc
C 0-268013.053958330.350.72528.7553850437.54.32551.253.775
C 2-590013.84000000.551.0530550005505.05684.45
C 6-9126019.5818754000000.91.6533.75565006756.875945.4
C 10-14165031.47124000001.352.4338.5584008409.221286.65
C 15-17202042.1264000001.67341.6759670966.6710.867153.337.6
Men280045.83446000001.52.445510000115092607
Women229045.83445000001.42.445550001150202204.9

Nutritional Needs of Households

Our data on demand and nutrients is at the household level; we can’t directly compare household level nutrition with individual level requirements. What we can do is add up minimum individual requirements, and see whether household total exceed these. This isn’t a guarantee that all individuals have adequate nutrition (since the way food is allocated in the household might be quite unequal, or unrelated to individual requirements), but it is necessary if all individuals are to have adequate nutrition.

For the average household in the ICRISAT villages, the number of different kinds of people can be computed by averaging over households:

# In first round, averaged over households and villages

zbar = r.z.sel(t=r.firstround,drop=True).mean(['j','m'])[:-1].squeeze() # Leave out log HSize

zbar = zbar.to_dataframe().squeeze()

Now, the inner/dot/matrix product between zbar and the rda DataFrame of requirements will give us minimum requirements for the average household:

rda = pd.read_pickle('indian_rda.df').T

# May need to tweak types to match RDA and zbar types:
zbar['C 0-3'] = zbar['M 0-3'] + zbar['F 0-3']
zbar['C 4-8'] = zbar['M 4-8'] + zbar['F 4-8']
zbar['M'] = zbar['M 19-30'] + zbar['M 31-50'] + zbar['M 51+']
zbar['F'] = zbar['F 19-30'] + zbar['F 31-50'] + zbar['F 51+']
zbar = zbar[['C 0-3','C 4-8','M 9-13','F 9-13','M 14-18','F 14-18','M','F']]

rda['C 0-3'] = rda['C 0-0.5'] + rda['C 0.5-1'] + rda['C 1-3']
rda['C 4-8'] = rda['C 4-6'] + rda['C 7-9']
rda['M 9-13'] = rda['B 10-12']
rda['F 9-13'] = rda['G 10-12']
rda['M 14-18'] = rda['B 13-15'] + rda['B 16-17']
rda['F 14-18'] = rda['G 13-15'] + rda['G 16-17']
rda['F'] = rda['W']

rda = rda[['C 0-3','C 4-8','M 9-13','F 9-13','M 14-18','F 14-18','M','F']]

# This matrix product gives minimum nutrient requirements for average
# household in 1975
hh_rda = rda.replace('',0).T@zbar
hh_rda

Nutritional Adequacy of Food Demands

Since we can trace out demands for nutrients as a function of $(x,p)$, and we’ve computed minimum nutritional requirements for the average household, we can normalize nutritional intake to check the adequacy of diet.

def nutrient_adequacy_ratio(x,pscale=None):
    return nutrient_demand(x,pscale=pscale)/hh_rda

In terms of normalized nutrients, any household with more than one unit of any given nutrient (or zero in logs) will be consuming a minimally adequate level of the nutrient; below this level there’s clearly nutritional inadequacy. For this reason the ratio of actual nutrients to required nutrients is termed the “nutrient adequacy ratio,” or NAR.

plt.plot(X,pd.concat({x:np.log(nutrient_adequacy_ratio(x,p))[UseNutrients] for x in X},axis=1).T)
plt.legend(UseNutrients)
plt.xlabel('log budget')
plt.ylabel('log nutrient adequacy ratio')
plt.axhline(0)

As before, we can also vary relative prices. Here we trace out nutritional adequacy varying the price of a single good:

poorer_x = x/2

plt.plot(pd.concat({p0:np.log(nutrient_adequacy_ratio(poorer_x,my_prices(p0,i=USE_GOOD)))[UseNutrients] for p0 in P},axis=1).T,P)
plt.legend(UseNutrients)
plt.ylabel('Price')
plt.xlabel('log nutrient adequacy ratio')
plt.axvline(0)
plt.axhline(p.sel(i=USE_GOOD).values)