This short report uses 2020 CDC Behavioral Risk Factor Surveillance System (BRFSS) data Link for fitting an multinomial logit model that examines the research question: How do demographic factors such as race/ethnicity, education level, and marital status influence choice of home ownership?
The outcome variable “renthom1” measures whether respondents own or rent their home? This variable is recoded as “home” by the following levels:
“Own” = 1 “Rent” = 2 “Other arrangement” = 3
All other cases, including missing, were excluded.
### Load BRFSS data
brfss20 = readRDS(url("https://github.com/coreysparks/DEM7283/blob/master/data/brfss20sm.rds?raw=true"))
### Fix variable names
names(brfss20) = tolower(gsub(pattern = "_",replacement = "",x = names(brfss20)))
#impact of confusion or memory loss on daily household activities
brfss20$home = Recode(brfss20$renthom1,
recodes="1=1; 2=2; 3=3; else=NA",
as.factor = T)
#race/ethnicity
brfss20$black = Recode(brfss20$racegr3, recodes="2=1; 9=NA; else=0")
brfss20$white = Recode(brfss20$racegr3, recodes="1=1; 9=NA; else=0")
brfss20$other = Recode(brfss20$racegr3, recodes="3:4=1; 9=NA; else=0")
brfss20$hispanic = Recode(brfss20$racegr3, recodes="5=1; 9=NA; else=0")
brfss20$race_eth = Recode(brfss20$racegr3, recodes="1='nhwhite'; 2='nh black'; 3='nh other';4='nh multirace'; 5='hispanic'; else=NA", as.factor = T)
#income grouping
brfss20$inc = ifelse(brfss20$incomg==9, NA, brfss20$incomg)
#education level
brfss20$educ = Recode(brfss20$educa,
recodes="1:2='0Prim'; 3='1somehs'; 4='2hsgrad'; 5='3somecol'; 6='4colgrad';9=NA", as.factor=T)
brfss20$educ = relevel(brfss20$educ, ref='2hsgrad')
#marital status
brfss20$marriage = Recode(brfss20$marital,
recodes="1='married'; 2='divorced'; 3='widowed'; 4='separated'; 5='nm';6='cohab'; else=NA", as.factor=T)
brfss20$marriage = relevel(brfss20$marriage, ref='married')
brfss20_sub = brfss20 %>%
select(home, race_eth, educ, marriage, mmsawt, mmsaname, ststr) %>%
na.omit()
In R, there is no multinomial survey design model, so this analysis uses VGAM to feed the function normalized weights.
The results of this regression demonstrate odds ratio based on transition from one category to the next. For example, race_ethnh black:1 corresponds to the odds ratio for NH Black respondents renting versus owning their home compared to Latinos/Hispanics. And the race_ethnh black:2 represents the odds ratio for nh black respondents having another arrangement versus owning their home, compared to Latinos/Hispanics. Based on this regression model, race/ethnicity is not a significant factor to predict home ownership. However, whites are 69% less likely than Latinos to report renting rather than owning their home.
In terms of education, those with primary school and some high school are significantly more likely to report renting or another arrangement rather than owning their home, compared to those with a high school education. However, those with some college education or college degree are less likely to report renting or another arrangement versus owning their home, compared to those with high school education. Respondents with a college degree were 57% less likely to rent and 1.2 times less likely to have another arrangement, compared to owning their own home.
When examining the relationship between marital status and home ownership of respondents, across all levels of marital status (excluding widows who were only 15% more likely to rent versus own their home) cohabitating, divorced, not married, and widowed, respondents were significantly more likely to report renting or another arrangement than owning their home.
options(survey.lonely.psu = "adjust")
des = svydesign(ids = ~1,
strata = ~ststr,
weights = ~mmsawt,
data = brfss20_sub)
mfit = svy_vglm(home~race_eth+educ+marriage,
family = multinomial(refLevel = 1),
design = des)
mfit%>%
tbl_regression()
## ! `broom::tidy()` failed to tidy the model.
## x No tidy method for objects of class svy_vglm
## v `tidy_parameters()` used instead.
## i Add `tidy_fun = broom.helpers::tidy_parameters` to quiet these messages.
## x Unable to identify the list of variables.
##
## This is usually due to an error calling `stats::model.frame(x)`or `stats::model.matrix(x)`.
## It could be the case if that type of model does not implement these methods.
## Rarely, this error may occur if the model object was created within
## a functional programming framework (e.g. using `lappy()`, `purrr::map()`, etc.).
| Characteristic | Beta | 95% CI1 | p-value |
|---|---|---|---|
| (Intercept):1 | -1.0 | -1.1, -0.88 | <0.001 |
| (Intercept):2 | -3.8 | -4.0, -3.6 | <0.001 |
| race_ethnh black:1 | -0.04 | -0.15, 0.06 | 0.4 |
| race_ethnh black:2 | -0.16 | -0.35, 0.03 | 0.10 |
| race_ethnh multirace:1 | -0.41 | -0.58, -0.24 | <0.001 |
| race_ethnh multirace:2 | 0.13 | -0.18, 0.44 | 0.4 |
| race_ethnh other:1 | -0.23 | -0.37, -0.10 | <0.001 |
| race_ethnh other:2 | 0.34 | 0.11, 0.57 | 0.003 |
| race_ethnhwhite:1 | -1.0 | -1.0, -0.87 | <0.001 |
| race_ethnhwhite:2 | -0.34 | -0.49, -0.19 | <0.001 |
| educ0Prim:1 | 0.80 | 0.60, 1.0 | <0.001 |
| educ0Prim:2 | 0.53 | 0.18, 0.88 | 0.003 |
| educ1somehs:1 | 0.62 | 0.50, 0.74 | <0.001 |
| educ1somehs:2 | 0.41 | 0.22, 0.60 | <0.001 |
| educ3somecol:1 | -0.22 | -0.29, -0.14 | <0.001 |
| educ3somecol:2 | -0.27 | -0.39, -0.16 | <0.001 |
| educ4colgrad:1 | -0.57 | -0.63, -0.50 | <0.001 |
| educ4colgrad:2 | -1.2 | -1.3, -1.1 | <0.001 |
| marriagecohab:1 | 1.8 | 1.7, 2.0 | <0.001 |
| marriagecohab:2 | 2.5 | 2.3, 2.7 | <0.001 |
| marriagedivorced:1 | 1.1 | 1.0, 1.1 | <0.001 |
| marriagedivorced:2 | 1.7 | 1.5, 1.9 | <0.001 |
| marriagenm:1 | 2.0 | 1.9, 2.0 | <0.001 |
| marriagenm:2 | 3.6 | 3.4, 3.7 | <0.001 |
| marriageseparated:1 | 1.6 | 1.5, 1.8 | <0.001 |
| marriageseparated:2 | 2.2 | 2.0, 2.5 | <0.001 |
| marriagewidowed:1 | 0.15 | 0.03, 0.26 | 0.012 |
| marriagewidowed:2 | 1.2 | 1.0, 1.5 | <0.001 |
|
1
CI = Confidence Interval
|
|||