Skip to contents

Implements the Laniyonu (2018) operationalisation:

Usage

mrm_gentrification_panel(
  df,
  baseline_income_col,
  baseline_rent_col,
  growth_college_col,
  growth_rent_col,
  baseline_marginalisation_quantile = 0.5,
  gentrification_growth_quantile = 0.667
)

Arguments

df

A data.frame with one row per tract; must contain the four named columns.

baseline_income_col

Character. Column carrying baseline (period t=0) income.

baseline_rent_col

Character. Column carrying baseline rent.

growth_college_col

Character. Column carrying college / BA-share growth between baseline and follow-up.

growth_rent_col

Character. Column carrying median-rent growth between baseline and follow-up.

baseline_marginalisation_quantile

Numeric in (0, 1); default 0.5. Tract is eligible if baseline income AND rent are \(\le\) this quantile.

gentrification_growth_quantile

Numeric in (0, 1); default 0.667. Tract gentrifies if college growth AND rent growth are \(\ge\) this quantile.

Value

A named list with classes morie_mrm_result, morie_rich_result, list. Carries labels (character vector of length nrow(df)), thresholds (list of four cut-points), counts (table of label levels), plus interpretation + warnings.

Details

  1. Tract is eligible to gentrify iff baseline income AND baseline rent are at or below baseline_marginalisation_quantile of the panel.

  2. Among the eligible, the tract is gentrified iff growth-in-college-share AND growth-in-rent are at or above gentrification_growth_quantile.

  3. Everything above the baseline cut is ineligible.

Examples

set.seed(1)
df <- data.frame(
  inc0  = runif(50, 20000, 80000),
  rent0 = runif(50, 500, 2000),
  coll_g = rnorm(50),
  rent_g = rnorm(50)
)
res <- mrm_gentrification_panel(
  df,
  baseline_income_col = "inc0",
  baseline_rent_col   = "rent0",
  growth_college_col  = "coll_g",
  growth_rent_col     = "rent_g"
)
table(res$labels)
#> 
#>   eligible gentrified ineligible 
#>         14          1         35