Let’s set up the library packages we might be using for our analysis

library(tidyverse)
library(haven)
library(janitor)
library(descriptio)
library(weights)
library(kableExtra)
library(totalcensus)
library(cdlTools)
library(expss)
library(openxlsx)
library(survey)

We will now read in and select the variables we will be using for this analysis for both 2016 and 2023

df_2016 <- read_xpt("./LLCP2016.XPT") %>% select(`_STATE`,`_PSU`,`_STSTR`,
                                                 `_LLCPWT`,`_HISPANC`,`_MRACE1`) %>% 
  filter(`_STATE` == 12 | `_STATE` == 36 | `_STATE` == 72)

df_2016$`_STATE` <- fips(df_2016$`_STATE`, to = 'Abbreviation')
#unzip("./LLCP2023XPT.zip")

df_2023 <- read_xpt("./LLCP2023.XPT") %>% select(`_STATE`,`_PSU`,`_STSTR`,
                                                 `_LLCPWT`,`_HISPANC`,`_MRACE1`) %>% 
  filter(`_STATE` == 12 | `_STATE` == 36 | `_STATE` == 72)

df_2023$`_STATE` <- fips(df_2023$`_STATE`, to = 'Abbreviation') 

Once we have read in our data we can clean some of the nomenclature to make reading the variables easier.

To clean the variable names we are using the clean_names function.

df_2016 <- clean_names(df_2016)
df_2016$state <- fips(df_2016$state, to = 'Abbreviation')
df_2023 <- clean_names(df_2023)
df_2023$state <- fips(df_2023$state, to = 'Abbreviation')

For the purposes of our analysis we are interested in knowing the relationship between race and ethnicity. Because no such variable exists in the data set we will create our own.

2016

df_2016$racexhisp <- NA
df_2016$racexhisp[df_2016$mrace1 == 1 & df_2016$hispanc == 1] <- 1
df_2016$racexhisp[df_2016$mrace1 == 2 & df_2016$hispanc == 1] <- 2
df_2016$racexhisp[df_2016$mrace1 == 3 & df_2016$hispanc == 1] <- 3
df_2016$racexhisp[df_2016$mrace1 == 4 & df_2016$hispanc == 1] <- 4
df_2016$racexhisp[df_2016$mrace1 == 5 & df_2016$hispanc == 1] <- 5
df_2016$racexhisp[df_2016$mrace1 == 6 & df_2016$hispanc == 1] <- 6
df_2016$racexhisp[df_2016$mrace1 == 7 & df_2016$hispanc == 1] <- 7
df_2016$racexhisp[df_2016$mrace1 == 77 & df_2016$hispanc == 1] <- 8
df_2016$racexhisp[df_2016$mrace1 == 99 & df_2016$hispanc == 1] <- 9
#Non Hispanic x race
df_2016$racexhisp[df_2016$mrace1 == 1 & df_2016$hispanc == 2] <- 10
df_2016$racexhisp[df_2016$mrace1 == 2 & df_2016$hispanc == 2] <- 11
df_2016$racexhisp[df_2016$mrace1 == 3 & df_2016$hispanc == 2] <- 12
df_2016$racexhisp[df_2016$mrace1 == 4 & df_2016$hispanc == 2] <- 13
df_2016$racexhisp[df_2016$mrace1 == 5 & df_2016$hispanc == 2] <- 14
df_2016$racexhisp[df_2016$mrace1 == 6 & df_2016$hispanc == 2] <- 15
df_2016$racexhisp[df_2016$mrace1 == 7 & df_2016$hispanc == 2] <- 16
df_2016$racexhisp[df_2016$mrace1 == 77 & df_2016$hispanc == 2] <- 17
df_2016$racexhisp[df_2016$mrace1 == 99 & df_2016$hispanc == 2] <- 18

2023

df_2023$racexhisp <- NA
df_2023$racexhisp[df_2023$mrace1 == 1 & df_2023$hispanc == 1] <- 1
df_2023$racexhisp[df_2023$mrace1 == 2 & df_2023$hispanc == 1] <- 2
df_2023$racexhisp[df_2023$mrace1 == 3 & df_2023$hispanc == 1] <- 3
df_2023$racexhisp[df_2023$mrace1 == 4 & df_2023$hispanc == 1] <- 4
df_2023$racexhisp[df_2023$mrace1 == 5 & df_2023$hispanc == 1] <- 5
df_2023$racexhisp[df_2023$mrace1 == 6 & df_2023$hispanc == 1] <- 6
df_2023$racexhisp[df_2023$mrace1 == 7 & df_2023$hispanc == 1] <- 7
df_2023$racexhisp[df_2023$mrace1 == 77 & df_2023$hispanc == 1] <- 8
df_2023$racexhisp[df_2023$mrace1 == 99 & df_2023$hispanc == 1] <- 9
#Non Hispanic x race
df_2023$racexhisp[df_2023$mrace1 == 1 & df_2023$hispanc == 2] <- 10
df_2023$racexhisp[df_2023$mrace1 == 2 & df_2023$hispanc == 2] <- 11
df_2023$racexhisp[df_2023$mrace1 == 3 & df_2023$hispanc == 2] <- 12
df_2023$racexhisp[df_2023$mrace1 == 4 & df_2023$hispanc == 2] <- 13
df_2023$racexhisp[df_2023$mrace1 == 5 & df_2023$hispanc == 2] <- 14
df_2023$racexhisp[df_2023$mrace1 == 6 & df_2023$hispanc == 2] <- 15
df_2023$racexhisp[df_2023$mrace1 == 7 & df_2023$hispanc == 2] <- 16
df_2023$racexhisp[df_2023$mrace1 == 77 & df_2023$hispanc == 2] <- 17
df_2023$racexhisp[df_2023$mrace1 == 99 & df_2023$hispanc == 2] <- 18

Let’s give our new variable labels and convert it to factor so that we can perform statistical analysis on it.

2016

df_2016 = apply_labels(df_2016,
                        racexhisp = "Hispanic by Race",
                        racexhisp = c("Hispanic White" = 1,
                                     "Hispanic Black" = 2,
                                     "Hispanic AIAN" = 3,
                                     "Hispanic Asian" = 4,
                                     "Hispanic NHPI" = 5,
                                     "Hispanic Other" = 6,
                                     "Hispanic Multirracial" = 7,
                                     "Hispanic Not sure" = 8,
                                     "Hispanic Refused" = 9,
                                     "Non Hispanic White" = 10,
                                     "Non Hispanic Black" = 11,
                                     "Non Hispanic AIAN" = 12,
                                     "Non Hispanic Asian" = 13,
                                     "Non Hispanic NHPI" = 14,
                                     "Non Hispanic Other" = 15,
                                     "Non Hispanic Multirracial" = 16,
                                     "Non Hispanic Not sure" = 17,
                                     "Non HispanicRefused" = 18))

df_2016$racexhisp <- as.factor(df_2016$racexhisp)

2023

df_2023 = apply_labels(df_2023,
                        racexhisp = "Hispanic by Race",
                        racexhisp = c("Hispanic White" = 1,
                                     "Hispanic Black" = 2,
                                     "Hispanic AIAN" = 3,
                                     "Hispanic Asian" = 4,
                                     "Hispanic NHPI" = 5,
                                     "Hispanic Other" = 6,
                                     "Hispanic Multirracial" = 7,
                                     "Hispanic Not sure" = 8,
                                     "Hispanic Refused" = 9,
                                     "Non Hispanic White" = 10,
                                     "Non Hispanic Black" = 11,
                                     "Non Hispanic AIAN" = 12,
                                     "Non Hispanic Asian" = 13,
                                     "Non Hispanic NHPI" = 14,
                                     "Non Hispanic Other" = 15,
                                     "Non Hispanic Multirracial" = 16,
                                     "Non Hispanic Not sure" = 17,
                                     "Non HispanicRefused" = 18))

df_2023$racexhisp <- as.factor(df_2023$racexhisp)

To perform statistical analysis we will use the functions within the survey package.

For this we first need to create “Designs” containing the key survey elements.

2016

dsgn_2016 <- svydesign(id = ~ psu,
                     weights = ~llcpwt,
                     strata = ~ ststr,
                     nest = TRUE,
                     survey.lonely.psu = "adjust",
                     data = df_2016)

2023

dsgn_2023 <- svydesign(id = ~ psu,
                     weights = ~llcpwt,
                     strata = ~ ststr,
                     nest = TRUE,
                     survey.lonely.psu = "adjust",
                     data = df_2023)

options(survey.lonely.psu="adjust")

Now we can calculate the mean by state and the confidence intervals

#Remove scientific notation
options(scipen = 999)

2016

grouped_means_2016 <- svyby(~racexhisp,~state,dsgn_2016,svymean,na.rm = TRUE)
print(grouped_means_2016)
##    state racexhispHispanic White racexhispHispanic Black racexhispHispanic AIAN
## FL    FL               0.1365516              0.01266810           0.0032641049
## NY    NY               0.0852210              0.01828297           0.0139072906
## PR    PR               0.5241950              0.07958222           0.0005497857
##    racexhispHispanic Asian racexhispHispanic NHPI racexhispHispanic Other
## FL             0.001176365            0.001128852            0.0514772714
## NY             0.001297280            0.005425880            0.0009545119
## PR             0.000000000            0.000000000            0.3703728049
##    racexhispHispanic Multirracial racexhispHispanic Not sure
## FL                    0.003439138                0.016814873
## NY                    0.002709432                0.020997822
## PR                    0.005030424                0.009412731
##    racexhispHispanic Refused racexhispNon Hispanic White
## FL               0.007638444                 0.567058565
## NY               0.026223900                 0.558889131
## PR               0.002316281                 0.004261472
##    racexhispNon Hispanic Black racexhispNon Hispanic AIAN
## FL                 0.141348147                0.002561408
## NY                 0.140462138                0.002587274
## PR                 0.001811949                0.000000000
##    racexhispNon Hispanic Asian racexhispNon Hispanic NHPI
## FL               0.02779382595                0.002264212
## NY               0.08789942126                0.004928332
## PR               0.00001511105                0.000000000
##    racexhispNon Hispanic Other racexhispNon Hispanic Multirracial
## FL                0.0039028388                        0.009291118
## NY                0.0004348652                        0.013970119
## PR                0.0021670314                        0.000285169
##    racexhispNon Hispanic Not sure racexhispNon HispanicRefused
## FL                    0.003334038                  0.008287114
## NY                    0.003143499                  0.012665125
## PR                    0.000000000                  0.000000000
##    se.racexhispHispanic White se.racexhispHispanic Black
## FL                0.004245991                0.001514293
## NY                0.003302016                0.001575813
## PR                0.009345580                0.005013087
##    se.racexhispHispanic AIAN se.racexhispHispanic Asian
## FL              0.0006650739               0.0004853961
## NY              0.0015273208               0.0003853599
## PR              0.0005496155               0.0000000000
##    se.racexhispHispanic NHPI se.racexhispHispanic Other
## FL              0.0002816436                0.002788730
## NY              0.0010121179                0.000367740
## PR              0.0000000000                0.009282129
##    se.racexhispHispanic Multirracial se.racexhispHispanic Not sure
## FL                      0.0007769581                   0.001630460
## NY                      0.0005298101                   0.001696234
## PR                      0.0013411698                   0.002144947
##    se.racexhispHispanic Refused se.racexhispNon Hispanic White
## FL                 0.0013087316                    0.005303885
## NY                 0.0018480401                    0.005497918
## PR                 0.0009732361                    0.000929032
##    se.racexhispNon Hispanic Black se.racexhispNon Hispanic AIAN
## FL                   0.0044883752                  0.0002847301
## NY                   0.0043888830                  0.0003189251
## PR                   0.0007327994                  0.0000000000
##    se.racexhispNon Hispanic Asian se.racexhispNon Hispanic NHPI
## FL                  0.00221479883                  0.0004499372
## NY                  0.00441544031                  0.0010188252
## PR                  0.00001511445                  0.0000000000
##    se.racexhispNon Hispanic Other se.racexhispNon Hispanic Multirracial
## FL                   0.0006065812                          0.0009382158
## NY                   0.0002469593                          0.0014484212
## PR                   0.0007853963                          0.0002851562
##    se.racexhispNon Hispanic Not sure se.racexhispNon HispanicRefused
## FL                      0.0007541037                     0.000888333
## NY                      0.0006509251                     0.001188349
## PR                      0.0000000000                     0.000000000
conf_intervals_2016 <- as.data.frame(confint(grouped_means_2016, level = 0.95))
print(conf_intervals_2016)
##                                                2.5 %        97.5 %
## FL:racexhispHispanic White             0.12822959028 0.14487357105
## NY:racexhispHispanic White             0.07874917215 0.09169283752
## PR:racexhispHispanic White             0.50587802193 0.54251202361
## FL:racexhispHispanic Black             0.00970014299 0.01563606232
## NY:racexhispHispanic Black             0.01519443686 0.02137151020
## PR:racexhispHispanic Black             0.06975674732 0.08940768777
## FL:racexhispHispanic AIAN              0.00196058390 0.00456762582
## NY:racexhispHispanic AIAN              0.01091379689 0.01690078426
## PR:racexhispHispanic AIAN             -0.00052744077 0.00162701220
## FL:racexhispHispanic Asian             0.00022500618 0.00212772380
## NY:racexhispHispanic Asian             0.00054198866 0.00205257153
## PR:racexhispHispanic Asian             0.00000000000 0.00000000000
## FL:racexhispHispanic NHPI              0.00057684020 0.00168086299
## NY:racexhispHispanic NHPI              0.00344216570 0.00740959495
## PR:racexhispHispanic NHPI              0.00000000000 0.00000000000
## FL:racexhispHispanic Other             0.04601146073 0.05694308200
## NY:racexhispHispanic Other             0.00023375485 0.00167526904
## PR:racexhispHispanic Other             0.35218016650 0.38856544331
## FL:racexhispHispanic Multirracial      0.00191632851 0.00496194828
## NY:racexhispHispanic Multirracial      0.00167102343 0.00374784100
## PR:racexhispHispanic Multirracial      0.00240177934 0.00765906832
## FL:racexhispHispanic Not sure          0.01361923107 0.02001051577
## NY:racexhispHispanic Not sure          0.01767326504 0.02432237825
## PR:racexhispHispanic Not sure          0.00520871293 0.01361674909
## FL:racexhispHispanic Refused           0.00507337738 0.01020351095
## NY:racexhispHispanic Refused           0.02260180815 0.02984599222
## PR:racexhispHispanic Refused           0.00040877352 0.00422378884
## FL:racexhispNon Hispanic White         0.55666314196 0.57745398870
## NY:racexhispNon Hispanic White         0.54811341075 0.56966485200
## PR:racexhispNon Hispanic White         0.00244060295 0.00608234135
## FL:racexhispNon Hispanic Black         0.13255109360 0.15014520120
## NY:racexhispNon Hispanic Black         0.13186008505 0.14906419024
## PR:racexhispNon Hispanic Black         0.00037568900 0.00324820987
## FL:racexhispNon Hispanic AIAN          0.00200334737 0.00311946901
## NY:racexhispNon Hispanic AIAN          0.00196219272 0.00321235625
## PR:racexhispNon Hispanic AIAN          0.00000000000 0.00000000000
## FL:racexhispNon Hispanic Asian         0.02345290001 0.03213475189
## NY:racexhispNon Hispanic Asian         0.07924531728 0.09655352524
## PR:racexhispNon Hispanic Asian        -0.00001451273 0.00004473484
## FL:racexhispNon Hispanic NHPI          0.00138235102 0.00314607259
## NY:racexhispNon Hispanic NHPI          0.00293147102 0.00692519223
## PR:racexhispNon Hispanic NHPI          0.00000000000 0.00000000000
## FL:racexhispNon Hispanic Other         0.00271396141 0.00509171619
## NY:racexhispNon Hispanic Other        -0.00004916609 0.00091889650
## PR:racexhispNon Hispanic Other         0.00062768293 0.00370637990
## FL:racexhispNon Hispanic Multirracial  0.00745224855 0.01112998674
## NY:racexhispNon Hispanic Multirracial  0.01113126580 0.01680897275
## PR:racexhispNon Hispanic Multirracial -0.00027372685 0.00084406484
## FL:racexhispNon Hispanic Not sure      0.00185602245 0.00481205452
## NY:racexhispNon Hispanic Not sure      0.00186770905 0.00441928874
## PR:racexhispNon Hispanic Not sure      0.00000000000 0.00000000000
## FL:racexhispNon HispanicRefused        0.00654601358 0.01002821501
## NY:racexhispNon HispanicRefused        0.01033600434 0.01499424544
## PR:racexhispNon HispanicRefused        0.00000000000 0.00000000000

2023

grouped_means_2023 <- svyby(~racexhisp,~state,dsgn_2023,svymean,na.rm = TRUE)
print(grouped_means_2023)
##    state racexhispHispanic White racexhispHispanic Black racexhispHispanic AIAN
## FL    FL              0.18136054              0.03062630           0.0074548472
## NY    NY              0.09510044              0.02536207           0.0136718469
## PR    PR              0.52736928              0.41331151           0.0003496982
##    racexhispHispanic Asian racexhispHispanic NHPI racexhispHispanic Other
## FL            0.0005481313          0.00467121345              0.01537421
## NY            0.0009315598          0.00486331567              0.02280307
## PR            0.0001580872          0.00006035944              0.04325074
##    racexhispHispanic Multirracial racexhispHispanic Not sure
## FL                    0.002868212                0.016321504
## NY                    0.003555463                0.024336684
## PR                    0.002227131                0.002458408
##    racexhispHispanic Refused racexhispNon Hispanic White
## FL               0.002583172                 0.518749020
## NY               0.003775015                 0.518235241
## PR               0.002469071                 0.004365068
##    racexhispNon Hispanic Black racexhispNon Hispanic AIAN
## FL                 0.136921585               0.0098904227
## NY                 0.135778475               0.0028997368
## PR                 0.002358022               0.0004464418
##    racexhispNon Hispanic Asian racexhispNon Hispanic NHPI
## FL                  0.02168703                0.003305805
## NY                  0.09863125                0.002435164
## PR                  0.00000000                0.000000000
##    racexhispNon Hispanic Other racexhispNon Hispanic Multirracial
## FL                 0.012936609                       0.0227309476
## NY                 0.017830300                       0.0194275617
## PR                 0.000274901                       0.0005905468
##    racexhispNon Hispanic Not sure racexhispNon HispanicRefused
## FL                  0.00254121310                 0.0094292339
## NY                  0.00272247409                 0.0076403314
## PR                  0.00008540719                 0.0002253259
##    se.racexhispHispanic White se.racexhispHispanic Black
## FL                0.008175811                0.004071894
## NY                0.003417395                0.001700300
## PR                0.010495529                0.010377164
##    se.racexhispHispanic AIAN se.racexhispHispanic Asian
## FL              0.0018594915               0.0003334369
## NY              0.0013450655               0.0002796211
## PR              0.0003121794               0.0001581129
##    se.racexhispHispanic NHPI se.racexhispHispanic Other
## FL             0.00139047348                0.002805216
## NY             0.00091711764                0.001561492
## PR             0.00006038748                0.004478001
##    se.racexhispHispanic Multirracial se.racexhispHispanic Not sure
## FL                      0.0008777170                  0.0025491038
## NY                      0.0006230595                  0.0014950298
## PR                      0.0008753322                  0.0008461937
##    se.racexhispHispanic Refused se.racexhispNon Hispanic White
## FL                 0.0011212046                    0.008591443
## NY                 0.0006524453                    0.005653249
## PR                 0.0009380958                    0.001055866
##    se.racexhispNon Hispanic Black se.racexhispNon Hispanic AIAN
## FL                   0.0070429824                  0.0018704392
## NY                   0.0043781527                  0.0004057442
## PR                   0.0008378257                  0.0004463857
##    se.racexhispNon Hispanic Asian se.racexhispNon Hispanic NHPI
## FL                    0.003176901                  0.0013524552
## NY                    0.004265500                  0.0005344294
## PR                    0.000000000                  0.0000000000
##    se.racexhispNon Hispanic Other se.racexhispNon Hispanic Multirracial
## FL                   0.0019125118                          0.0030584433
## NY                   0.0018457150                          0.0016120933
## PR                   0.0002749136                          0.0005904796
##    se.racexhispNon Hispanic Not sure se.racexhispNon HispanicRefused
## FL                      0.0007711810                    0.0021572743
## NY                      0.0005142536                    0.0009830116
## PR                      0.0000854273                    0.0001328675
conf_intervals_2023 <- as.data.frame(confint(grouped_means_2023, level = 0.95))
print(conf_intervals_2023)
##                                                2.5 %       97.5 %
## FL:racexhispHispanic White             0.16533624721 0.1973848379
## NY:racexhispHispanic White             0.08840246683 0.1017984107
## PR:racexhispHispanic White             0.50679842249 0.5479401403
## FL:racexhispHispanic Black             0.02264553228 0.0386070645
## NY:racexhispHispanic Black             0.02202954479 0.0286945972
## PR:racexhispHispanic Black             0.39297264371 0.4336503802
## FL:racexhispHispanic AIAN              0.00381031077 0.0110993837
## NY:racexhispHispanic AIAN              0.01103556690 0.0163081269
## PR:racexhispHispanic AIAN             -0.00026216223 0.0009615585
## FL:racexhispHispanic Asian            -0.00010539301 0.0012016557
## NY:racexhispHispanic Asian             0.00038351246 0.0014796071
## PR:racexhispHispanic Asian            -0.00015180842 0.0004679828
## FL:racexhispHispanic NHPI              0.00194593552 0.0073964914
## NY:racexhispHispanic NHPI              0.00306579812 0.0066608332
## PR:racexhispHispanic NHPI             -0.00005799785 0.0001787167
## FL:racexhispHispanic Other             0.00987608756 0.0208723336
## NY:racexhispHispanic Other             0.01974260540 0.0258635425
## PR:racexhispHispanic Other             0.03447401971 0.0520274599
## FL:racexhispHispanic Multirracial      0.00114791853 0.0045885059
## NY:racexhispHispanic Multirracial      0.00233428875 0.0047766370
## PR:racexhispHispanic Multirracial      0.00051151113 0.0039427502
## FL:racexhispHispanic Not sure          0.01132535257 0.0213176558
## NY:racexhispHispanic Not sure          0.02140647980 0.0272668889
## PR:racexhispHispanic Not sure          0.00079989913 0.0041169176
## FL:racexhispHispanic Refused           0.00038565177 0.0047806930
## NY:racexhispHispanic Refused           0.00249624580 0.0050537845
## PR:racexhispHispanic Refused           0.00063043672 0.0043077048
## FL:racexhispNon Hispanic White         0.50191010154 0.5355879377
## NY:racexhispNon Hispanic White         0.50715507590 0.5293154060
## PR:racexhispNon Hispanic White         0.00229560831 0.0064345274
## FL:racexhispNon Hispanic Black         0.12311759305 0.1507255769
## NY:racexhispNon Hispanic Black         0.12719745394 0.1443594970
## PR:racexhispNon Hispanic Black         0.00071591365 0.0040001299
## FL:racexhispNon Hispanic AIAN          0.00622442932 0.0135564162
## NY:racexhispNon Hispanic AIAN          0.00210449287 0.0036949808
## PR:racexhispNon Hispanic AIAN         -0.00042845813 0.0013213418
## FL:racexhispNon Hispanic Asian         0.01546042024 0.0279136446
## NY:racexhispNon Hispanic Asian         0.09027102097 0.1069914725
## PR:racexhispNon Hispanic Asian         0.00000000000 0.0000000000
## FL:racexhispNon Hispanic NHPI          0.00065504124 0.0059565683
## NY:racexhispNon Hispanic NHPI          0.00138770165 0.0034826263
## PR:racexhispNon Hispanic NHPI          0.00000000000 0.0000000000
## FL:racexhispNon Hispanic Other         0.00918815435 0.0166850629
## NY:racexhispNon Hispanic Other         0.01421276544 0.0214478353
## PR:racexhispNon Hispanic Other        -0.00026391978 0.0008137217
## FL:racexhispNon Hispanic Multirracial  0.01673650890 0.0287253863
## NY:racexhispNon Hispanic Multirracial  0.01626791698 0.0225872065
## PR:racexhispNon Hispanic Multirracial -0.00056677203 0.0017478656
## FL:racexhispNon Hispanic Not sure      0.00102972622 0.0040527000
## NY:racexhispNon Hispanic Not sure      0.00171455558 0.0037303926
## PR:racexhispNon Hispanic Not sure     -0.00008202724 0.0002528416
## FL:racexhispNon HispanicRefused        0.00520105400 0.0136574138
## NY:racexhispNon HispanicRefused        0.00571366395 0.0095669988
## PR:racexhispNon HispanicRefused       -0.00003508965 0.0004857414