Skip to contents

This function estimates the probability of nutrient inadequacy (PNI) for each individual using the probability approach, following Institute of Medicine (IOM) and Allen et al. (2006) guidelines. It combines EAR-based probability estimates for general nutrients with bioavailability-adjusted reference values for zinc and lookup-based probabilities for iron. Pregnant and lactating groups are not covered in Allen et al. (2006) because their requirement distributions are not represented by the same model.

Usage

compute_pni(
  data,
  age_col,
  life_group,
  nutrients,
  bioavailability = "moderate",
  cv = 0.1,
  include_ear_values = TRUE
)

Arguments

data

A data frame or tibble containing age and nutrient intake data.

age_col

Character string. Column name for age (years for adults, months for children).

life_group

Character string specifying the life-stage group. Must be one of "Female", "Male", "Child", "Pregnant", or "Lactating".

nutrients

A named character vector, where names are nutrient names (e.g. "Protein") and values are corresponding column names in the dataset.

bioavailability

Character string specifying dietary bioavailability for zinc and iron: one of "low", "moderate", or "high". Defaults to "moderate".

cv

Numeric. Coefficient of variation (CV) used to approximate the standard deviation of the requirement distribution as a proportion of the EAR (i.e., SD = cv × EAR). Defaults to 0.1, following the convention applied by Allen et al. (2006) and IOM probability method assumptions. A smaller CV assumes less variability in nutrient requirements, while a larger CV increases the spread and thus changes the computed inadequacy probabilities.

include_ear_values

Logical. If TRUE, includes nutrient EAR columns in the output.

Value

A tibble containing the original data plus the computed PNI and optionally the EAR values for each nutrient.

Details

For each nutrient:

  • General nutrients use the normal probability approach: $$PNI = 1 - Phi((intake - EAR) / (0.1 × EAR))$$ - Zinc uses EAR values adjusted for bioavailability (FAO/WHO 2002).

  • Iron uses skewed, lookup-based probability tables from Allen et al. (2006).

The function currently supports these nutrients: Calcium, CHO, Protein, Vitamin A, Vitamin C, Vitamin D, Vitamin E, Thiamin, Riboflavin, Niacin, Vitamin B6, Folate, Vitamin B12, Copper, Iodine, Iron (bioavailability must be selected), Magnesium, Molybdenum, Phosphorus, Selenium, Zinc (bioavailability must be selected).

Each nutrient produces two columns: one for EAR values and one for PNI, each prefixed with the life group (e.g., Female_Protein_g_ear, Female_Protein_g_pni).

References

Institute of Medicine (US). Dietary Reference Intakes Tables. 2006. Allen, L. et al. (2006). An interactive 24-hour recall for assessing the adequacy of iron and zinc intakes in developing countries. HarvestPlus Technical Monograph 8.

Examples

df <- tibble::tibble(age = c(25, 10, 30), Protein_g = c(0.7, 0.6, 0.8))
nutrients <- c("Protein" = "Protein_g")
compute_pni(df, "age", "Female", nutrients)
#> # A tibble: 3 × 4
#>     age Protein_g Female_Protein_g_ear Female_Protein_g_pni
#>   <dbl>     <dbl>                <dbl>                <dbl>
#> 1    25       0.7                 0.66               0.272 
#> 2    10       0.6                 0.76               0.982 
#> 3    30       0.8                 0.66               0.0170