Introduction

Using data from the 5-year American Community Survey (ACS) for 2021, this Census Analysis scans the City of Chicago at the community level to identify key areas of opportunity for the development and targeting of The Roommates Project. The analyzed variables in this report are the following:

  1. Median household income in the past 12 months (Mean in 2021 inflation-adjusted dollars)
  2. Per capita income in the past 12 months (in 2021 inflation-adjusted dollars)
  3. Total Vacant Household Units for Rent
  4. Total Owner Occupied (65 years and over)
  5. Total Renter Occupied (65 years and over)
  6. Non-Family Household: Householder living alone (65 years and over)
  7. Non-Family Household: Householder NOT living alone (65 years and over)
  8. Non-Family Household: Renter living alone (65 years and over)
  9. Non-Family Household: Renter NOT living alone (65 years and over)
  10. Owner occupied: 1.01 to 1.50 occupants per room (65 years and over
  11. Owner occupied: 1.51 or more occupants per room (65 years and over)
  12. Owner occupied: 1.00 or less occupants per room (65 years and over)
  13. Renter occupied: 1.00 or less occupants per room (65 years and over)
  14. Renter occupied: 1.01 to 1.50 occupants per room (65 years and over)
  15. Renter occupied: 1.51 or more occupants per room (65 years and over)
  16. Household Units with 2 Rooms
  17. Housing units with a mortgage (65 to 74 years)
  18. Median gross rent for 2 bedrooms (mean)
  19. Owner occupied tenure with 2 bedrooms
  20. Renter occupied tenure with 2 bedrooms
  21. Rent-Burdened Householder: 35.0 percent or more of gross rent as a percentage of Household income (65 years and over)
  22. Non-Rent Cost-Burden of Householders: 35.0 percent or more of selected monthly owner costs as a percentage of Household income (65 years and over)

Summary statistics and community level maps per variable are provided. Overall, this report aims to inform the decision making to target the communities that are in most need of The Roommates program and select at the street-level the blocks that could potentially provide affordable housing for low-income older adults.

Installments

setwd("C:/Users/52222/OneDrive - The University of Chicago/Documents/Autumn 23/Health Policy Lab") # set working directory
census_api_key("803708789b76c54ce13110992d660e5ef32cf712") # connect API key
lv <- load_variables(2021, "acs5", cache = TRUE) # load variables

Get variables’ data

# Get data for variables of interest and convert it to table
tractsShp <- get_acs(geography = 'tract', variables = c(medinc = "B19013_001", 
                                                        percap = "B19301_001",
                                                        hh_for_rent = "B25004_002",
                                                        hh_owners = "B25015_011",
                                                        hh_renters = "B25015_024",
                                                        hh_alone = "B25011_021",
                                                        hh_not_alone = "B25011_025",
                                                        renter_alone = "B25011_045",
                                                        renter_not_alone = "B25011_049",
                                                        less_one_own = "B25015_012",
                                                        one_half_own = "B25015_013",
                                                        more_half_own = "B25015_014",
                                                        less_one_ren = "B25015_025",
                                                        one_half_ren = "B25015_026",
                                                        more_half_ren = "B25015_027",
                                                        two_bd = "B25017_003",
                                                        hh_mortgage = "B25027_008",
                                                        hh_no_mortgage = "B25027_016",
                                                        med_gross_rent = "B25031_004",
                                                        own_2bd = "B25042_005",
                                                        ren_2bd = "B25042_012",
                                                        rent_burden = "B25072_028",
                                                        cost_burden = "B25093_028"
                                                        ),
                     year = 2021, state  = 'IL', geometry = TRUE) %>%
  select(GEOID, NAME, variable, estimate) %>% 
  spread(variable, estimate)
summary(tractsShp)
##     GEOID               NAME            cost_burden       hh_alone   
##  Length:3265        Length:3265        Min.   :  0.0   Min.   :   0  
##  Class :character   Class :character   1st Qu.: 24.0   1st Qu.:  50  
##  Mode  :character   Mode  :character   Median : 51.0   Median :  98  
##                                        Mean   : 66.2   Mean   : 118  
##                                        3rd Qu.: 89.0   3rd Qu.: 160  
##                                        Max.   :800.0   Max.   :1488  
##                                                                      
##   hh_for_rent      hh_mortgage     hh_no_mortgage   hh_not_alone   
##  Min.   :  0.00   Min.   :  0.00   Min.   :  0.0   Min.   :  0.00  
##  1st Qu.:  0.00   1st Qu.: 33.00   1st Qu.: 44.0   1st Qu.:  0.00  
##  Median : 16.00   Median : 66.00   Median : 88.0   Median :  0.00  
##  Mean   : 32.32   Mean   : 79.25   Mean   :100.2   Mean   :  6.94  
##  3rd Qu.: 46.00   3rd Qu.:112.00   3rd Qu.:141.0   3rd Qu.: 10.00  
##  Max.   :587.00   Max.   :533.00   Max.   :607.0   Max.   :164.00  
##                                                                    
##    hh_owners        hh_renters      less_one_own     less_one_ren   
##  Min.   :   0.0   Min.   :  0.00   Min.   :   0.0   Min.   :  0.00  
##  1st Qu.: 156.0   1st Qu.: 21.00   1st Qu.: 154.0   1st Qu.: 21.00  
##  Median : 285.0   Median : 52.00   Median : 283.0   Median : 51.00  
##  Mean   : 305.1   Mean   : 83.33   Mean   : 303.8   Mean   : 82.53  
##  3rd Qu.: 415.0   3rd Qu.:112.00   3rd Qu.: 414.0   3rd Qu.:110.00  
##  Max.   :2699.0   Max.   :826.00   Max.   :2699.0   Max.   :795.00  
##                                                                     
##  med_gross_rent       medinc       more_half_own      more_half_ren    
##  Min.   : 266.0   Min.   :  3416   Min.   :  0.0000   Min.   :  0.000  
##  1st Qu.: 811.5   1st Qu.: 51827   1st Qu.:  0.0000   1st Qu.:  0.000  
##  Median :1023.0   Median : 68500   Median :  0.0000   Median :  0.000  
##  Mean   :1126.2   Mean   : 76350   Mean   :  0.3979   Mean   :  0.461  
##  3rd Qu.:1317.0   3rd Qu.: 93693   3rd Qu.:  0.0000   3rd Qu.:  0.000  
##  Max.   :3501.0   Max.   :250001   Max.   :111.0000   Max.   :109.000  
##  NA's   :554      NA's   :28                                           
##   one_half_own      one_half_ren        own_2bd           percap      
##  Min.   : 0.0000   Min.   : 0.0000   Min.   :   0.0   Min.   :   826  
##  1st Qu.: 0.0000   1st Qu.: 0.0000   1st Qu.:  99.0   1st Qu.: 25857  
##  Median : 0.0000   Median : 0.0000   Median : 182.0   Median : 33863  
##  Mean   : 0.9406   Mean   : 0.3308   Mean   : 214.4   Mean   : 38511  
##  3rd Qu.: 0.0000   3rd Qu.: 0.0000   3rd Qu.: 284.0   3rd Qu.: 45047  
##  Max.   :66.0000   Max.   :66.0000   Max.   :2146.0   Max.   :173092  
##                                                       NA's   :8       
##     ren_2bd        rent_burden      renter_alone    renter_not_alone 
##  Min.   :   0.0   Min.   :  0.00   Min.   :  0.00   Min.   :  0.000  
##  1st Qu.:  67.0   1st Qu.:  0.00   1st Qu.:  9.00   1st Qu.:  0.000  
##  Median : 151.0   Median : 17.00   Median : 31.00   Median :  0.000  
##  Mean   : 197.7   Mean   : 37.48   Mean   : 59.98   Mean   :  2.231  
##  3rd Qu.: 278.0   3rd Qu.: 50.00   3rd Qu.: 79.00   3rd Qu.:  0.000  
##  Max.   :1171.0   Max.   :601.00   Max.   :795.00   Max.   :236.000  
##                                                                      
##      two_bd                 geometry   
##  Min.   :   0.00   MULTIPOLYGON :3265  
##  1st Qu.:   0.00   epsg:4269    :   0  
##  Median :  14.00   +proj=long...:   0  
##  Mean   :  43.29                       
##  3rd Qu.:  47.00                       
##  Max.   :1729.00                       
## 

Data cleaning and boundary merging

# Load chicago boundaries shapefile
chicago_bound <- st_read("Boundaries - City")
## Reading layer `geo_export_c6730356-d5a0-4e1e-80f6-64462990cd9c' from data source `C:\Users\52222\OneDrive - The University of Chicago\Documents\Autumn 23\Health Policy Lab\Boundaries - City' 
##   using driver `ESRI Shapefile'
## Simple feature collection with 1 feature and 4 fields
## Geometry type: MULTIPOLYGON
## Dimension:     XY
## Bounding box:  xmin: -87.94011 ymin: 41.64454 xmax: -87.52414 ymax: 42.02304
## Geodetic CRS:  WGS84(DD)
# Transform to same CRS format
chicago_bound <- st_transform(chicago_bound, 4326)
tractsShp <- st_transform(tractsShp, 4326)

# Join census tracts with chicago boundaries
tract_acs_shp <- st_intersection(tractsShp, chicago_bound)

# Extract file of census tract by community area
chi_tracts_comm <-read.csv(file = "Census_Tracts_in_Chicago_Community_Areas.csv")

# Merge Chicago ACS Tracts Income Data with the Census Tracts in Chicago Community Areas Data
chi_tracts_merge <- merge(tract_acs_shp, chi_tracts_comm, by.x = "GEOID", by.y = "Tract")

# Group Census Tracts by Chicago Community Area
acs_est <- chi_tracts_merge %>%
  group_by(CommunityAreaName) %>%
  summarize(mean_medinc=mean(medinc,na.rm=TRUE),mean_percap=mean(percap,na.rm=TRUE),
            hh_for_rent_tot=sum(hh_for_rent,na.rm=TRUE),hh_owners_tot=sum(hh_owners,na.rm=TRUE),
            hh_alone_tot=sum(hh_alone,na.rm=TRUE),hh_renters_tot=sum(hh_renters,na.rm=TRUE),
            hh_not_alone_tot=sum(hh_not_alone,na.rm=TRUE),renter_alone_tot=sum(renter_alone,na.rm=TRUE),
            renter_not_alone_tot=sum(renter_not_alone,na.rm=TRUE),less_one_ren_tot=sum(less_one_ren,na.rm=TRUE),
            one_half_ren_tot=sum(one_half_ren,na.rm=TRUE),more_half_ren_tot=sum(more_half_ren,na.rm=TRUE),
            less_one_own_tot=sum(less_one_own,na.rm=TRUE),one_half_own_tot=sum(one_half_own,na.rm=TRUE),
            more_half_own_tot=sum(more_half_own,na.rm=TRUE),two_bd_tot=sum(two_bd,na.rm=TRUE),
            hh_mortgage_tot=sum(hh_mortgage,na.rm=TRUE),hh_no_mortgage_tot=sum(hh_no_mortgage,na.rm=TRUE),
            med_gross_rent_tot=mean(med_gross_rent,na.rm=TRUE),own_2bd_tot=sum(own_2bd,na.rm=TRUE),
            ren_2bd_tot=sum(ren_2bd,na.rm=TRUE),rent_burden_tot=mean(rent_burden,na.rm=TRUE),
            cost_burden_tot=mean(cost_burden,na.rm=TRUE))

summary(acs_est)
##  CommunityAreaName   mean_medinc      mean_percap     hh_for_rent_tot 
##  Length:77          Min.   : 16248   Min.   : 12614   Min.   :   0.0  
##  Class :character   1st Qu.: 42530   1st Qu.: 22151   1st Qu.: 102.0  
##  Mode  :character   Median : 60177   Median : 29371   Median : 335.0  
##                     Mean   : 63856   Mean   : 35710   Mean   : 486.7  
##                     3rd Qu.: 75740   3rd Qu.: 43624   3rd Qu.: 674.0  
##                     Max.   :147982   Max.   :113109   Max.   :3267.0  
##  hh_owners_tot   hh_alone_tot    hh_renters_tot hh_not_alone_tot
##  Min.   : 105   Min.   :  28.0   Min.   : 128   Min.   :  0.00  
##  1st Qu.: 867   1st Qu.: 392.0   1st Qu.: 459   1st Qu.: 11.00  
##  Median :1613   Median : 601.0   Median : 928   Median : 33.00  
##  Mean   :1806   Mean   : 758.6   Mean   :1139   Mean   : 49.08  
##  3rd Qu.:2285   3rd Qu.:1010.0   3rd Qu.:1631   3rd Qu.: 76.00  
##  Max.   :7853   Max.   :4032.0   Max.   :4075   Max.   :202.00  
##  renter_alone_tot renter_not_alone_tot less_one_ren_tot one_half_ren_tot
##  Min.   :  15.0   Min.   :  0.00       Min.   : 128     Min.   : 0.000  
##  1st Qu.: 310.0   1st Qu.:  0.00       1st Qu.: 459     1st Qu.: 0.000  
##  Median : 629.0   Median : 26.00       Median : 928     Median : 0.000  
##  Mean   : 800.3   Mean   : 33.64       Mean   :1119     Mean   : 8.597  
##  3rd Qu.:1082.0   3rd Qu.: 49.00       3rd Qu.:1577     3rd Qu.:16.000  
##  Max.   :2572.0   Max.   :143.00       Max.   :3977     Max.   :86.000  
##  more_half_ren_tot less_one_own_tot one_half_own_tot more_half_own_tot
##  Min.   :  0.00    Min.   : 105     Min.   : 0.00    Min.   :  0.000  
##  1st Qu.:  0.00    1st Qu.: 867     1st Qu.: 0.00    1st Qu.:  0.000  
##  Median :  0.00    Median :1611     Median : 0.00    Median :  0.000  
##  Mean   : 11.44    Mean   :1789     Mean   :11.43    Mean   :  5.065  
##  3rd Qu.: 11.00    3rd Qu.:2285     3rd Qu.:18.00    3rd Qu.:  4.000  
##  Max.   :143.00    Max.   :7853     Max.   :98.00    Max.   :118.000  
##    two_bd_tot      hh_mortgage_tot  hh_no_mortgage_tot med_gross_rent_tot
##  Min.   :    0.0   Min.   :  19.0   Min.   :  13.0     Min.   : 442.5    
##  1st Qu.:  104.0   1st Qu.: 256.0   1st Qu.: 256.0     1st Qu.: 946.5    
##  Median :  265.0   Median : 444.0   Median : 481.0     Median :1088.0    
##  Mean   :  818.5   Mean   : 491.3   Mean   : 539.6     Mean   :1213.8    
##  3rd Qu.:  576.0   3rd Qu.: 652.0   3rd Qu.: 646.0     3rd Qu.:1351.6    
##  Max.   :12940.0   Max.   :2014.0   Max.   :2737.0     Max.   :2919.8    
##   own_2bd_tot     ren_2bd_tot    rent_burden_tot   cost_burden_tot 
##  Min.   :   23   Min.   :  134   Min.   :  5.333   Min.   : 10.64  
##  1st Qu.:  719   1st Qu.:  961   1st Qu.: 36.917   1st Qu.: 34.18  
##  Median : 1198   Median : 2010   Median : 53.000   Median : 52.50  
##  Mean   : 1943   Mean   : 2766   Mean   : 58.047   Mean   : 61.89  
##  3rd Qu.: 2530   3rd Qu.: 4168   3rd Qu.: 73.500   3rd Qu.: 75.71  
##  Max.   :10180   Max.   :11204   Max.   :206.000   Max.   :199.50  
##           geometry 
##  MULTIPOLYGON : 2  
##  POLYGON      :75  
##  epsg:4326    : 0  
##  +proj=long...: 0  
##                    
## 

Mapping

1. Median household income in the past 12 months (Mean in 2021 inflation-adjusted dollars)

tmap_mode("view")
tm_shape(acs_est) + 
  tm_polygons(col="mean_medinc", n=5, style="quantile", palette="YlOrBr" ) 

2. Per capita income in the past 12 months (in 2021 inflation-adjusted dollars)

tmap_mode("view")
tm_shape(acs_est) + 
  tm_polygons(col="mean_percap", n=5, style="quantile", palette="YlOrBr" ) 

3. Total Vacant Household Units for Rent

tmap_mode("view")
tm_shape(acs_est) + 
  tm_polygons(col="hh_for_rent_tot", n=5, style="quantile", palette="YlOrBr" ) 

4. Total Owner Occupied (65 years and over)

tmap_mode("view")
tm_shape(acs_est) + 
  tm_polygons(col="hh_owners_tot", n=5, style="quantile", palette="YlOrBr" ) 

5. Total Renter Occupied (65 years and over)

tmap_mode("view")
tm_shape(acs_est) + 
  tm_polygons(col="hh_renters_tot", n=5, style="quantile", palette="YlOrBr" ) 

6. Non-Family Household: Householder living alone (65 years and over)

tmap_mode("view")
tm_shape(acs_est) + 
  tm_polygons(col="hh_alone_tot", n=5, style="quantile", palette="YlOrBr" ) 

7. Non-Family Household: Householder NOT living alone (65 years and over)

tmap_mode("view")
tm_shape(acs_est) + 
  tm_polygons(col="hh_not_alone_tot", n=5, style="quantile", palette="YlOrBr" ) 

8. Non-Family Household: Renter living alone (65 years and over)

tmap_mode("view")
tm_shape(acs_est) + 
  tm_polygons(col="renter_alone_tot", n=5, style="quantile", palette="YlOrBr" ) 

9. Non-Family Household: Renter NOT living alone (65 years and over)

tmap_mode("view")
tm_shape(acs_est) + 
  tm_polygons(col="renter_not_alone_tot", n=5, style="quantile", palette="YlOrBr" ) 

10. Owner occupied: 1.01 to 1.50 occupants per room (65 years and over)

tmap_mode("view")
tm_shape(acs_est) + 
  tm_polygons(col="one_half_own_tot", n=5, style="quantile", palette="YlOrBr" ) 

11. Owner occupied: 1.51 or more occupants per room (65 years and over)

tmap_mode("view")
tm_shape(acs_est) + 
  tm_polygons(col="more_half_own_tot", n=5, style="quantile", palette="YlOrBr" ) 

12. Owner occupied: 1.00 or less occupants per room (65 years and over)

tmap_mode("view")
tm_shape(acs_est) + 
  tm_polygons(col="less_one_own_tot", n=5, style="quantile", palette="YlOrBr" ) 

13. Renter occupied: 1.00 or less occupants per room (65 years and over)

tmap_mode("view")
tm_shape(acs_est) + 
  tm_polygons(col="less_one_ren_tot", n=5, style="quantile", palette="YlOrBr" ) 

14. Renter occupied: 1.01 to 1.50 occupants per room (65 years and over)

tmap_mode("view")
tm_shape(acs_est) + 
  tm_polygons(col="one_half_ren_tot", n=5, style="quantile", palette="YlOrBr" ) 

15. Renter occupied: 1.51 or more occupants per room (65 years and over)

tmap_mode("view")
tm_shape(acs_est) + 
  tm_polygons(col="more_half_ren_tot", n=5, style="quantile", palette="YlOrBr" ) 

16. Household Units with 2 Rooms

tmap_mode("view")
tm_shape(acs_est) + 
  tm_polygons(col="two_bd_tot", n=5, style="quantile", palette="YlOrBr" ) 

17. Housing units with a mortgage (65 to 74 years)

tmap_mode("view")
tm_shape(acs_est) + 
  tm_polygons(col="hh_mortgage_tot", n=5, style="quantile", palette="YlOrBr" ) 

18. Median gross rent for 2 bedrooms (mean)

tmap_mode("view")
tm_shape(acs_est) + 
  tm_polygons(col="med_gross_rent_tot", n=5, style="quantile", palette="YlOrBr" ) 

19. Owner occupied tenure with 2 bedrooms

tmap_mode("view")
tm_shape(acs_est) + 
  tm_polygons(col="own_2bd_tot", n=5, style="quantile", palette="YlOrBr" ) 

20. Renter occupied tenure with 2 bedrooms

tmap_mode("view")
tm_shape(acs_est) + 
  tm_polygons(col="ren_2bd_tot", n=5, style="quantile", palette="YlOrBr" ) 

21. Rent-Burdened Householder: 35.0 percent or more of gross rent as a percentage of Household income (65 years and over)

tmap_mode("view")
tm_shape(acs_est) + 
  tm_polygons(col="rent_burden_tot", n=5, style="quantile", palette="YlOrBr" ) 

22. Non-Rent Cost-Burden of Householders: 35.0 percent or more of selected monthly owner costs as a percentage of Household income (65 years and over)

tmap_mode("view")
tm_shape(acs_est) + 
  tm_polygons(col="cost_burden_tot", n=5, style="quantile", palette="YlOrBr" ) 

References and Data Sources