library(survey)
library(dplyr)
library(car)
library(ggplot2)
library(tigris)
library(classInt)
library(tmap)
library(ipumsr)
## Warning: package 'ipumsr' was built under R version 4.0.5
ddi <- read_ipums_ddi("C:/Users/canda/Documents/DEM7093 gis_class/usa_00024.xml")
data1900<- read_ipums_micro(ddi)
## Use of data from IPUMS USA is subject to conditions including that users should
## cite the data appropriately. Use command `ipums_conditions()` for more details.
data1900<-haven::zap_labels(data1900) #necessary to avoid problems with "labeled" data
names(data1900)<-tolower(names(data1900))
Here I recode several demographic variables
#race
data1900$race <- Recode (data1900$race, recodes = "1='White'; 2='Black'; 3='Other'; 4:6='Asian'; 7:9='Other'")
#homeownership
data1900$owned <- Recode(data1900$ownershp, recodes = "1=1;2=0; else=NA")
#urban or rural status
data1900$rural <- Recode(data1900$urban, recodes = "1='rural'; 2='urban'; else=NA")
#age in 10 year intervals
data1900$agecat<-cut(data1900$age, breaks = c(0, 18, 20, 30, 40, 50, 60, 70, 80, 90, 120), include.lowest = T)
mets<-core_based_statistical_areas(cb = T, year = 2019)
mets<-mets[grep(mets$NAME,pattern = "TX"),]
plot(mets["NAME"])
sts<-states(cb=T, year=2019)
sts<-sts%>%
filter(GEOID==48)
des<-svydesign(ids = ~1,
weights = ~perwt,
data = data1900)
blk_owned<-svyby(formula = ~owned,
by = ~race,
design = subset(des, age%in%18:120),
FUN=svymean,
na.rm = TRUE )
head(blk_owned)
## race owned se
## Asian Asian 0.1047745 0.0111534310
## Black Black 0.3488598 0.0008625715
## Other Other 0.7788018 0.0281756823
## White White 0.5356618 0.0004469163
blk_ruralown<-svyby(formula = ~race,
by = ~rural,
design=subset(des, owned==1),
FUN=svymean,
na.rm = TRUE )
head(blk_ruralown)
## rural raceAsian raceBlack raceOther raceWhite se.raceAsian
## rural rural 2.214358e-05 0.1317258 0.0002514878 0.8680006 4.184697e-06
## urban urban 2.732253e-04 0.1868323 0.0001433313 0.8127511 3.497814e-05
## se.raceBlack se.raceOther se.raceWhite
## rural 0.0003007522 1.410096e-05 0.0003010170
## urban 0.0008249197 2.533582e-05 0.0008256272
blk_age<-svyby(formula = ~agecat,
by = ~race,
design = subset(des, owned==1),
FUN = svymean,
na.rm = TRUE )
head(blk_age)
## race agecat[0,18] agecat(18,20] agecat(20,30] agecat(30,40]
## Asian Asian 0.1123596 0.01123596 0.1348315 0.22471910
## Black Black 0.5144785 0.04565118 0.1573112 0.10125555
## Other Other 0.5400000 0.04857143 0.1314286 0.08857143
## White White 0.5014660 0.04134428 0.1493586 0.10542010
## agecat(40,50] agecat(50,60] agecat(60,70] agecat(70,80] agecat(80,90]
## Asian 0.25842697 0.23595506 0.01123596 0.011235955 0.000000000
## Black 0.08452287 0.05108150 0.02941304 0.011038291 0.003317729
## Other 0.09714286 0.04571429 0.04000000 0.005714286 0.002857143
## White 0.09526308 0.06025101 0.03187059 0.012279753 0.002392464
## agecat(90,120] se.agecat[0,18] se.agecat(18,20] se.agecat(20,30]
## Asian 0.0000000000 0.0334756183 0.0111726552 0.0362035407
## Black 0.0019301404 0.0010951393 0.0004573631 0.0007978018
## Other 0.0000000000 0.0266404677 0.0114906496 0.0180598323
## White 0.0003541785 0.0004421099 0.0001760359 0.0003151740
## se.agecat(30,40] se.agecat(40,50] se.agecat(50,60] se.agecat(60,70]
## Asian 0.0442440225 0.0464035222 0.0450069067 0.0111726552
## Black 0.0006610115 0.0006095262 0.0004824228 0.0003702275
## Other 0.0151870769 0.0158300033 0.0111642931 0.0104744604
## White 0.0002715397 0.0002595886 0.0002104021 0.0001553187
## se.agecat(70,80] se.agecat(80,90] se.agecat(90,120]
## Asian 1.117266e-02 0.0000000000 0.000000e+00
## Black 2.289402e-04 0.0001260028 9.617372e-05
## Other 4.029050e-03 0.0028530588 0.000000e+00
## White 9.738092e-05 0.0000431981 1.663781e-05
library(reldist)
## Warning: package 'reldist' was built under R version 4.0.5
## reldist: Relative Distribution Methods
## Version 1.6-6 created on 2016-10-07.
## copyright (c) 2003, Mark S. Handcock, University of California-Los Angeles
## For citation information, type citation("reldist").
## Type help(package="reldist") to get started.
met_blkowned<-svyby(formula = ~owned,
by = ~metarea,
design=subset(des, age%in%18:120),
FUN=svymean,
na.rm=T )
head(blk_owned)
## race owned se
## Asian Asian 0.1047745 0.0111534310
## Black Black 0.3488598 0.0008625715
## Other Other 0.7788018 0.0281756823
## White White 0.5356618 0.0004469163
mets$metarea<-as.numeric(mets$GEOID)
geo1<-geo_join(mets, met_blkowned,by_sp= "metarea",by_df= "metarea")
## Warning: `group_by_()` is deprecated as of dplyr 0.7.0.
## Please use `group_by()` instead.
## See vignette('programming') for more help
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_warnings()` to see where this warning was generated.
tmap_mode("view")
## tmap mode set to interactive viewing
tm_basemap("OpenStreetMap.Mapnik")+
tm_shape(geo1)+
tm_polygons("owned",
style="kmeans",
n=8,
legend.hist = TRUE) +
tm_layout(legend.outside = TRUE,
title = "Percent of population who owned dwelling in Metro Areas 1900")
## Linking to GEOS 3.8.0, GDAL 3.0.4, PROJ 6.3.1