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))

Prepare variables

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