coded_df <- readRDS(here("SRHS_coded.RDS"))
df <- coded_df %>% select(
ll_size,
bp_income_b,
bp_fair_b,
bp_dec_offer_b,
bp_any3,
bp_terminate_b,
bp_rent_raise_b,
zip_region,
ll_comm_unit,
ll_finrole)
df <- df %>% rename("Financial_role" = ll_finrole,
"Landlord_size_" = ll_size,
"Region" = zip_region,
"Offers_to_nonstandard" = bp_dec_offer_b,
"Fair_market_price" = bp_fair_b,
"Raised_rent" = bp_rent_raise_b,
"Rents_to_vulnerable" = bp_any3,
"Ever_terminated" = bp_terminate_b,
"Renter_income" = bp_income_b,
"Common_unit_size" = ll_comm_unit)
Outcome:
df %>%
tbl_summary(
by = Renter_income,
percent = "row",
missing = "no",
include = c(Landlord_size_, Common_unit_size, Region, Financial_role),
statistic = list(all_categorical() ~ "{n} ({p}%)")) %>%
add_p() %>%
bold_labels() %>%
modify_header(update = all_stat_cols() ~ "**{level}**") %>% # Remove the Ns from the header row
modify_spanning_header(starts_with("stat_") ~ "**Renter Income**")
| Characteristic | Renter Income | p-value1 | |
|---|---|---|---|
| 0 | 1 | ||
| Landlord_size_, n (%) | <0.001 | ||
| big | 340 (38%) | 550 (62%) | |
| small | 642 (22%) | 2,304 (78%) | |
| Common_unit_size, n (%) | <0.001 | ||
| Studio | 297 (33%) | 591 (67%) | |
| 1 bedroom | 318 (22%) | 1,124 (78%) | |
| 2 bedroom | 141 (17%) | 705 (83%) | |
| 3 bedroom | 82 (28%) | 216 (72%) | |
| 4+ bedroom | 84 (57%) | 64 (43%) | |
| Region, n (%) | <0.001 | ||
| central | 112 (16%) | 573 (84%) | |
| northcentral | 321 (29%) | 803 (71%) | |
| southcentral | 161 (32%) | 342 (68%) | |
| northwest | 81 (21%) | 303 (79%) | |
| southwest | 110 (25%) | 332 (75%) | |
| multiple | 197 (28%) | 501 (72%) | |
| Financial_role, n (%) | <0.001 | ||
| Investment Income | 516 (23%) | 1,726 (77%) | |
| Multiple Roles | 245 (26%) | 711 (74%) | |
| Primary Income | 160 (35%) | 297 (65%) | |
|
1
Pearson's Chi-squared test
|
|||
m1 <- glm(Renter_income ~1 + Landlord_size_,
family=binomial(link="logit"), data=df)
m2 <- glm(Renter_income ~1 + Landlord_size_ + Common_unit_size,
family=binomial(link="logit"), data=df)
m3 <- glm(Renter_income ~1 + Landlord_size_ + Common_unit_size + Region,
family=binomial(link="logit"), data=df)
m4 <- glm(Renter_income ~1 + Landlord_size_ + Common_unit_size + Region + Financial_role,
family=binomial(link="logit"), data=df)
m4_income <- glm(Renter_income ~1 + Landlord_size_ + Common_unit_size + Region + Financial_role,
family=binomial(link="logit"), data=df)
m1_t <- tbl_regression(m1, exponentiate=TRUE) %>% add_significance_stars(hide_se = T) %>%
add_glance_table(include = c(AIC, BIC))
m2_t <- tbl_regression(m2, exponentiate=TRUE) %>% add_significance_stars(hide_se=T) %>%
add_glance_table(include = c(AIC, BIC))
m3_t <- tbl_regression(m3, exponentiate=TRUE) %>% add_significance_stars(hide_se=T) %>%
add_glance_table(include = c(AIC, BIC))
m4_t <- tbl_regression(m4, exponentiate=TRUE) %>% add_significance_stars(hide_se=T) %>%
add_glance_table(include = c(AIC, BIC))
tbl_merge (
tbls = list(m1_t, m2_t, m3_t, m4_t),
tab_spanner = c("**M1**", "**M2**", "**M3**", "**M4**")) %>%
modify_table_body(~.x %>% arrange(row_type == "glance_statistic"))
| Characteristic | M1 | M2 | M3 | M4 |
|---|---|---|---|---|
| OR (95% CI)1,2 | OR (95% CI)1,2 | OR (95% CI)1,2 | OR (95% CI)1,2 | |
| Landlord_size_ | ||||
| big | — | — | — | — |
| small | 2.22*** | 1.88*** | 1.97*** | 1.86*** |
| Common_unit_size | ||||
| Studio | — | — | — | |
| 1 bedroom | 1.59*** | 1.76*** | 1.76*** | |
| 2 bedroom | 1.99*** | 2.38*** | 2.47*** | |
| 3 bedroom | 1.06 | 1.27 | 1.32 | |
| 4+ bedroom | 0.39*** | 0.38*** | 0.39*** | |
| Region | ||||
| central | — | — | ||
| northcentral | 0.37*** | 0.37*** | ||
| southcentral | 0.33*** | 0.34*** | ||
| northwest | 0.58** | 0.57** | ||
| southwest | 0.44*** | 0.42*** | ||
| multiple | 0.58*** | 0.58*** | ||
| Financial_role | ||||
| Investment Income | — | |||
| Multiple Roles | 0.88 | |||
| Primary Income | 0.86 | |||
| AIC | 4,277 | 3,933 | 3,864 | 3,668 |
| BIC | 4,289 | 3,970 | 3,932 | 3,748 |
|
1
*p<0.05; **p<0.01; ***p<0.001
2
OR = Odds Ratio, CI = Confidence Interval
|
||||
Outcome: how often offer tenancy to low-resource applicants who do not meet standard requirements
df %>%
tbl_summary(
by = Offers_to_nonstandard,
percent = "row",
missing = "no",
include = c(Landlord_size_, Common_unit_size, Region, Financial_role),
statistic = list(all_categorical() ~ "{n} ({p}%)")) %>%
add_p() %>%
bold_labels() %>%
modify_header(update = all_stat_cols() ~ "**{level}**") %>% # Remove the Ns from the header row
modify_spanning_header(starts_with("stat_") ~ "**Offers to nonstandard**")
| Characteristic | Offers to nonstandard | p-value1 | |
|---|---|---|---|
| 0 | 1 | ||
| Landlord_size_, n (%) | <0.001 | ||
| big | 773 (88%) | 105 (12%) | |
| small | 2,619 (92%) | 236 (8.3%) | |
| Common_unit_size, n (%) | <0.001 | ||
| Studio | 786 (90%) | 84 (9.7%) | |
| 1 bedroom | 1,295 (92%) | 113 (8.0%) | |
| 2 bedroom | 749 (92%) | 66 (8.1%) | |
| 3 bedroom | 261 (89%) | 32 (11%) | |
| 4+ bedroom | 117 (80%) | 30 (20%) | |
| Region, n (%) | 0.011 | ||
| central | 609 (91%) | 61 (9.1%) | |
| northcentral | 996 (92%) | 83 (7.7%) | |
| southcentral | 449 (91%) | 45 (9.1%) | |
| northwest | 346 (93%) | 26 (7.0%) | |
| southwest | 390 (91%) | 39 (9.1%) | |
| multiple | 602 (87%) | 87 (13%) | |
| Financial_role, n (%) | <0.001 | ||
| Investment Income | 2,014 (92%) | 169 (7.7%) | |
| Multiple Roles | 851 (91%) | 81 (8.7%) | |
| Primary Income | 379 (84%) | 71 (16%) | |
|
1
Pearson's Chi-squared test
|
|||
m1 <- glm(Offers_to_nonstandard ~1 + Landlord_size_,
family=binomial(link="logit"), data=df)
m2 <- glm(Offers_to_nonstandard ~1 + Landlord_size_ + Common_unit_size,
family=binomial(link="logit"), data=df)
m3 <- glm(Offers_to_nonstandard ~1 + Landlord_size_ + Common_unit_size + Region,
family=binomial(link="logit"), data=df)
m4 <- glm(Offers_to_nonstandard ~1 + Landlord_size_ + Common_unit_size + Region + Financial_role,
family=binomial(link="logit"), data=df)
m4_offer <- glm(Offers_to_nonstandard ~1 + Landlord_size_ + Common_unit_size + Region + Financial_role,
family=binomial(link="logit"), data=df)
m1_t <- tbl_regression(m1, exponentiate=TRUE) %>% add_significance_stars(hide_se = T) %>%
add_glance_table(include = c(AIC, BIC))
m2_t <- tbl_regression(m2, exponentiate=TRUE) %>% add_significance_stars(hide_se=T) %>%
add_glance_table(include = c(AIC, BIC))
m3_t <- tbl_regression(m3, exponentiate=TRUE) %>% add_significance_stars(hide_se=T) %>%
add_glance_table(include = c(AIC, BIC))
m4_t <- tbl_regression(m4, exponentiate=TRUE) %>% add_significance_stars(hide_se=T) %>%
add_glance_table(include = c(AIC, BIC))
tbl_merge (
tbls = list(m1_t, m2_t, m3_t, m4_t),
tab_spanner = c("**M1**", "**M2**", "**M3**", "**M4**")) %>%
modify_table_body(~.x %>% arrange(row_type == "glance_statistic"))
| Characteristic | M1 | M2 | M3 | M4 |
|---|---|---|---|---|
| OR (95% CI)1,2 | OR (95% CI)1,2 | OR (95% CI)1,2 | OR (95% CI)1,2 | |
| Landlord_size_ | ||||
| big | — | — | — | — |
| small | 0.66*** | 0.69** | 0.80 | 0.98 |
| Common_unit_size | ||||
| Studio | — | — | — | |
| 1 bedroom | 0.88 | 0.88 | 0.92 | |
| 2 bedroom | 0.95 | 0.96 | 1.07 | |
| 3 bedroom | 1.31 | 1.36 | 1.51 | |
| 4+ bedroom | 2.34*** | 2.40*** | 2.18** | |
| Region | ||||
| central | — | — | ||
| northcentral | 0.83 | 0.75 | ||
| southcentral | 1.04 | 1.04 | ||
| northwest | 0.83 | 0.68 | ||
| southwest | 1.05 | 0.99 | ||
| multiple | 1.36 | 1.21 | ||
| Financial_role | ||||
| Investment Income | — | |||
| Multiple Roles | 1.09 | |||
| Primary Income | 1.99*** | |||
| AIC | 2,276 | 2,153 | 2,154 | 2,034 |
| BIC | 2,288 | 2,190 | 2,222 | 2,113 |
|
1
*p<0.05; **p<0.01; ***p<0.001
2
OR = Odds Ratio, CI = Confidence Interval
|
||||
Outomce: ever rented to tenant using vouchers, criminal history, or had disability requests
df %>%
tbl_summary(
by = Rents_to_vulnerable,
percent = "row",
missing = "no",
include = c(Landlord_size_, Common_unit_size, Region, Financial_role),
statistic = list(all_categorical() ~ "{n} ({p}%)")) %>%
add_p() %>%
bold_labels() %>%
modify_header(update = all_stat_cols() ~ "**{level}**") %>% # Remove the Ns from the header row
modify_spanning_header(starts_with("stat_") ~ "**Rent to vulnerable**")
| Characteristic | Rent to vulnerable | p-value1 | |
|---|---|---|---|
| 0 | 1 | ||
| Landlord_size_, n (%) | <0.001 | ||
| big | 286 (32%) | 604 (68%) | |
| small | 2,344 (80%) | 602 (20%) | |
| Common_unit_size, n (%) | <0.001 | ||
| Studio | 522 (59%) | 366 (41%) | |
| 1 bedroom | 994 (69%) | 448 (31%) | |
| 2 bedroom | 638 (75%) | 208 (25%) | |
| 3 bedroom | 225 (76%) | 73 (24%) | |
| 4+ bedroom | 79 (53%) | 69 (47%) | |
| Region, n (%) | <0.001 | ||
| central | 535 (78%) | 150 (22%) | |
| northcentral | 865 (77%) | 259 (23%) | |
| southcentral | 325 (65%) | 178 (35%) | |
| northwest | 292 (76%) | 92 (24%) | |
| southwest | 296 (67%) | 146 (33%) | |
| multiple | 317 (45%) | 381 (55%) | |
| Financial_role, n (%) | <0.001 | ||
| Investment Income | 1,674 (75%) | 568 (25%) | |
| Multiple Roles | 652 (68%) | 304 (32%) | |
| Primary Income | 173 (38%) | 284 (62%) | |
|
1
Pearson's Chi-squared test
|
|||
m1 <- glm(Rents_to_vulnerable ~1 + Landlord_size_,
family=binomial(link="logit"), data=df)
m2 <- glm(Rents_to_vulnerable ~1 + Landlord_size_ + Common_unit_size,
family=binomial(link="logit"), data=df)
m3 <- glm(Rents_to_vulnerable ~1 + Landlord_size_ + Common_unit_size + Region,
family=binomial(link="logit"), data=df)
m4 <- glm(Rents_to_vulnerable ~1 + Landlord_size_ + Common_unit_size + Region + Financial_role,
family=binomial(link="logit"), data=df)
m4_any3 <- glm(Rents_to_vulnerable ~1 + Landlord_size_ + Common_unit_size + Region + Financial_role,
family=binomial(link="logit"), data=df)
m1_t <- tbl_regression(m1, exponentiate=TRUE) %>% add_significance_stars(hide_se = T) %>%
add_glance_table(include = c(AIC, BIC))
m2_t <- tbl_regression(m2, exponentiate=TRUE) %>% add_significance_stars(hide_se=T) %>%
add_glance_table(include = c(AIC, BIC))
m3_t <- tbl_regression(m3, exponentiate=TRUE) %>% add_significance_stars(hide_se=T) %>%
add_glance_table(include = c(AIC, BIC))
m4_t <- tbl_regression(m4, exponentiate=TRUE) %>% add_significance_stars(hide_se=T) %>%
add_glance_table(include = c(AIC, BIC))
tbl_merge (
tbls = list(m1_t, m2_t, m3_t, m4_t),
tab_spanner = c("**M1**", "**M2**", "**M3**", "**M4**")) %>%
modify_table_body(~.x %>% arrange(row_type == "glance_statistic"))
| Characteristic | M1 | M2 | M3 | M4 |
|---|---|---|---|---|
| OR (95% CI)1,2 | OR (95% CI)1,2 | OR (95% CI)1,2 | OR (95% CI)1,2 | |
| Landlord_size_ | ||||
| big | — | — | — | — |
| small | 0.12*** | 0.12*** | 0.14*** | 0.17*** |
| Common_unit_size | ||||
| Studio | — | — | — | |
| 1 bedroom | 0.92 | 0.86 | 0.89 | |
| 2 bedroom | 1.02 | 0.93 | 0.94 | |
| 3 bedroom | 0.98 | 0.94 | 0.98 | |
| 4+ bedroom | 1.10 | 1.16 | 1.12 | |
| Region | ||||
| central | — | — | ||
| northcentral | 1.27 | 1.18 | ||
| southcentral | 2.39*** | 2.24*** | ||
| northwest | 1.42* | 1.25 | ||
| southwest | 2.29*** | 2.17*** | ||
| multiple | 2.49*** | 2.21*** | ||
| Financial_role | ||||
| Investment Income | — | |||
| Multiple Roles | 1.16 | |||
| Primary Income | 2.19*** | |||
| AIC | 4,105 | 3,906 | 3,837 | 3,654 |
| BIC | 4,118 | 3,943 | 3,905 | 3,734 |
|
1
*p<0.05; **p<0.01; ***p<0.001
2
OR = Odds Ratio, CI = Confidence Interval
|
||||
Outcome: average monthly rent for most common unit size above or below fair market price
df %>%
tbl_summary(
by = Fair_market_price,
percent = "row",
missing = "no",
include = c(Landlord_size_, Common_unit_size, Region, Financial_role),
statistic = list(all_categorical() ~ "{n} ({p}%)")) %>%
add_p() %>%
bold_labels() %>%
modify_header(update = all_stat_cols() ~ "**{level}**") %>% # Remove the Ns from the header row
modify_spanning_header(starts_with("stat_") ~ "**Fair market price**")
| Characteristic | Fair market price | p-value1 | |
|---|---|---|---|
| 0 | 1 | ||
| Landlord_size_, n (%) | <0.001 | ||
| big | 148 (17%) | 742 (83%) | |
| small | 797 (27%) | 2,149 (73%) | |
| Common_unit_size, n (%) | <0.001 | ||
| Studio | 0 (0%) | 888 (100%) | |
| 1 bedroom | 369 (26%) | 1,073 (74%) | |
| 2 bedroom | 488 (58%) | 358 (42%) | |
| 3 bedroom | 88 (30%) | 210 (70%) | |
| 4+ bedroom | 0 (0%) | 148 (100%) | |
| Region, n (%) | <0.001 | ||
| central | 57 (8.3%) | 628 (92%) | |
| northcentral | 327 (29%) | 797 (71%) | |
| southcentral | 153 (30%) | 350 (70%) | |
| northwest | 105 (27%) | 279 (73%) | |
| southwest | 160 (36%) | 282 (64%) | |
| multiple | 143 (20%) | 555 (80%) | |
| Financial_role, n (%) | <0.001 | ||
| Investment Income | 585 (26%) | 1,657 (74%) | |
| Multiple Roles | 241 (25%) | 715 (75%) | |
| Primary Income | 73 (16%) | 384 (84%) | |
|
1
Pearson's Chi-squared test
|
|||
m1 <- glm(Fair_market_price ~1 + Landlord_size_,
family=binomial(link="logit"), data=df)
m2 <- glm(Fair_market_price ~1 + Landlord_size_ + Common_unit_size,
family=binomial(link="logit"), data=df)
m3 <- glm(Fair_market_price ~1 + Landlord_size_ + Common_unit_size + Region,
family=binomial(link="logit"), data=df)
m4 <- glm(Fair_market_price ~1 + Landlord_size_ + Common_unit_size + Region + Financial_role,
family=binomial(link="logit"), data=df)
m4_fair <- glm(Fair_market_price ~1 + Landlord_size_ + Common_unit_size + Region + Financial_role,
family=binomial(link="logit"), data=df)
m1_t <- tbl_regression(m1, exponentiate=TRUE) %>% add_significance_stars(hide_se = T) %>%
add_glance_table(include = c(AIC, BIC))
m2_t <- tbl_regression(m2, exponentiate=TRUE) %>% add_significance_stars(hide_se=T) %>%
add_glance_table(include = c(AIC, BIC))
m3_t <- tbl_regression(m3, exponentiate=TRUE) %>% add_significance_stars(hide_se=T) %>%
add_glance_table(include = c(AIC, BIC))
m4_t <- tbl_regression(m4, exponentiate=TRUE) %>% add_significance_stars(hide_se=T) %>%
add_glance_table(include = c(AIC, BIC))
tbl_merge (
tbls = list(m1_t, m2_t, m3_t, m4_t),
tab_spanner = c("**M1**", "**M2**", "**M3**", "**M4**")) %>%
modify_table_body(~.x %>% arrange(row_type == "glance_statistic"))
| Characteristic | M1 | M2 | M3 | M4 |
|---|---|---|---|---|
| OR (95% CI)1,2 | OR (95% CI)1,2 | OR (95% CI)1,2 | OR (95% CI)1,2 | |
| Landlord_size_ | ||||
| big | — | — | — | — |
| small | 0.54*** | 1.30* | 1.41** | 1.52** |
| Common_unit_size | ||||
| Studio | — | — | — | |
| 1 bedroom | 0.00 | 0.00 | 0.00 | |
| 2 bedroom | 0.00 | 0.00 | 0.00 | |
| 3 bedroom | 0.00 | 0.00 | 0.00 | |
| 4+ bedroom | 1.02 | 1.00 | 0.96 | |
| Region | ||||
| central | — | — | ||
| northcentral | 0.32*** | 0.34*** | ||
| southcentral | 0.25*** | 0.27*** | ||
| northwest | 0.36*** | 0.37*** | ||
| southwest | 0.19*** | 0.21*** | ||
| multiple | 0.42*** | 0.44*** | ||
| Financial_role | ||||
| Investment Income | — | |||
| Multiple Roles | 1.01 | |||
| Primary Income | 1.34 | |||
| AIC | 4,245 | 3,162 | 3,073 | 2,945 |
| BIC | 4,257 | 3,199 | 3,141 | 3,025 |
|
1
*p<0.05; **p<0.01; ***p<0.001
2
OR = Odds Ratio, CI = Confidence Interval
|
||||
Outcome: raised rent in past year
df %>%
tbl_summary(
by = Raised_rent,
percent = "row",
missing = "no",
include = c(Landlord_size_, Common_unit_size, Region, Financial_role),
statistic = list(all_categorical() ~ "{n} ({p}%)")) %>%
add_p() %>%
bold_labels() %>%
modify_header(update = all_stat_cols() ~ "**{level}**") %>% # Remove the Ns from the header row
modify_spanning_header(starts_with("stat_") ~ "**Raised rent**")
| Characteristic | Raised rent | p-value1 | |
|---|---|---|---|
| 0 | 1 | ||
| Landlord_size_, n (%) | <0.001 | ||
| big | 122 (14%) | 755 (86%) | |
| small | 1,236 (43%) | 1,666 (57%) | |
| Common_unit_size, n (%) | <0.001 | ||
| Studio | 271 (31%) | 608 (69%) | |
| 1 bedroom | 496 (35%) | 932 (65%) | |
| 2 bedroom | 343 (41%) | 495 (59%) | |
| 3 bedroom | 119 (40%) | 178 (60%) | |
| 4+ bedroom | 35 (24%) | 111 (76%) | |
| Region, n (%) | <0.001 | ||
| central | 246 (37%) | 427 (63%) | |
| northcentral | 427 (39%) | 680 (61%) | |
| southcentral | 190 (38%) | 310 (62%) | |
| northwest | 149 (40%) | 226 (60%) | |
| southwest | 184 (42%) | 251 (58%) | |
| multiple | 162 (24%) | 527 (76%) | |
| Financial_role, n (%) | <0.001 | ||
| Investment Income | 888 (40%) | 1,325 (60%) | |
| Multiple Roles | 311 (33%) | 629 (67%) | |
| Primary Income | 82 (18%) | 369 (82%) | |
|
1
Pearson's Chi-squared test
|
|||
m1 <- glm(Raised_rent ~1 + Landlord_size_,
family=binomial(link="logit"), data=df)
m2 <- glm(Raised_rent ~1 + Landlord_size_ + Common_unit_size,
family=binomial(link="logit"), data=df)
m3 <- glm(Raised_rent ~1 + Landlord_size_ + Common_unit_size + Region,
family=binomial(link="logit"), data=df)
m4 <- glm(Raised_rent ~1 + Landlord_size_ + Common_unit_size + Region + Financial_role,
family=binomial(link="logit"), data=df)
m4_raise <- glm(Raised_rent ~1 + Landlord_size_ + Common_unit_size + Region + Financial_role,
family=binomial(link="logit"), data=df)
m1_t <- tbl_regression(m1, exponentiate=TRUE) %>% add_significance_stars(hide_se = T) %>%
add_glance_table(include = c(AIC, BIC))
m2_t <- tbl_regression(m2, exponentiate=TRUE) %>% add_significance_stars(hide_se=T) %>%
add_glance_table(include = c(AIC, BIC))
m3_t <- tbl_regression(m3, exponentiate=TRUE) %>% add_significance_stars(hide_se=T) %>%
add_glance_table(include = c(AIC, BIC))
m4_t <- tbl_regression(m4, exponentiate=TRUE) %>% add_significance_stars(hide_se=T) %>%
add_glance_table(include = c(AIC, BIC))
tbl_merge (
tbls = list(m1_t, m2_t, m3_t, m4_t),
tab_spanner = c("**M1**", "**M2**", "**M3**", "**M4**")) %>%
modify_table_body(~.x %>% arrange(row_type == "glance_statistic"))
| Characteristic | M1 | M2 | M3 | M4 |
|---|---|---|---|---|
| OR (95% CI)1,2 | OR (95% CI)1,2 | OR (95% CI)1,2 | OR (95% CI)1,2 | |
| Landlord_size_ | ||||
| big | — | — | — | — |
| small | 0.22*** | 0.22*** | 0.23*** | 0.26*** |
| Common_unit_size | ||||
| Studio | — | — | — | |
| 1 bedroom | 1.06 | 1.08 | 1.09 | |
| 2 bedroom | 1.00 | 1.03 | 1.06 | |
| 3 bedroom | 1.03 | 1.04 | 1.05 | |
| 4+ bedroom | 1.29 | 1.29 | 1.20 | |
| Region | ||||
| central | — | — | ||
| northcentral | 0.93 | 0.96 | ||
| southcentral | 0.97 | 0.95 | ||
| northwest | 0.90 | 0.93 | ||
| southwest | 0.77 | 0.77 | ||
| multiple | 1.12 | 1.05 | ||
| Financial_role | ||||
| Investment Income | — | |||
| Multiple Roles | 1.26** | |||
| Primary Income | 1.77*** | |||
| AIC | 4,671 | 4,405 | 4,408 | 4,179 |
| BIC | 4,683 | 4,443 | 4,476 | 4,259 |
|
1
*p<0.05; **p<0.01; ***p<0.001
2
OR = Odds Ratio, CI = Confidence Interval
|
||||
Outcome: in 2017, did you terminate tenancies
df %>%
tbl_summary(
by = Ever_terminated,
percent = "row",
missing = "no",
include = c(Landlord_size_, Common_unit_size, Region, Financial_role),
statistic = list(all_categorical() ~ "{n} ({p}%)")) %>%
add_p() %>%
bold_labels() %>%
modify_header(update = all_stat_cols() ~ "**{level}**") %>% # Remove the Ns from the header row
modify_spanning_header(starts_with("stat_") ~ "**Ever terminated**")
| Characteristic | Ever terminated | p-value1 | |
|---|---|---|---|
| 0 | 1 | ||
| Landlord_size_, n (%) | <0.001 | ||
| big | 648 (73%) | 236 (27%) | |
| small | 2,705 (92%) | 220 (7.5%) | |
| Common_unit_size, n (%) | <0.001 | ||
| Studio | 753 (85%) | 130 (15%) | |
| 1 bedroom | 1,267 (88%) | 173 (12%) | |
| 2 bedroom | 785 (93%) | 58 (6.9%) | |
| 3 bedroom | 262 (88%) | 36 (12%) | |
| 4+ bedroom | 107 (73%) | 40 (27%) | |
| Region, n (%) | <0.001 | ||
| central | 613 (91%) | 64 (9.5%) | |
| northcentral | 1,015 (91%) | 102 (9.1%) | |
| southcentral | 449 (90%) | 51 (10%) | |
| northwest | 352 (92%) | 30 (7.9%) | |
| southwest | 385 (88%) | 53 (12%) | |
| multiple | 539 (78%) | 156 (22%) | |
| Financial_role, n (%) | <0.001 | ||
| Investment Income | 2,007 (90%) | 221 (9.9%) | |
| Multiple Roles | 846 (89%) | 103 (11%) | |
| Primary Income | 342 (75%) | 114 (25%) | |
|
1
Pearson's Chi-squared test
|
|||
m1 <- glm(Ever_terminated ~1 + Landlord_size_,
family=binomial(link="logit"), data=df)
m2 <- glm(Ever_terminated ~1 + Landlord_size_ + Common_unit_size,
family=binomial(link="logit"), data=df)
m3 <- glm(Ever_terminated ~1 + Landlord_size_ + Common_unit_size + Region,
family=binomial(link="logit"), data=df)
m4 <- glm(Ever_terminated ~1 + Landlord_size_ + Common_unit_size + Region + Financial_role,
family=binomial(link="logit"), data=df)
m4_terminate <- glm(Ever_terminated ~1 + Landlord_size_ + Common_unit_size + Region + Financial_role,
family=binomial(link="logit"), data=df)
m1_t <- tbl_regression(m1, exponentiate=TRUE) %>% add_significance_stars(hide_se = T) %>%
add_glance_table(include = c(AIC, BIC))
m2_t <- tbl_regression(m2, exponentiate=TRUE) %>% add_significance_stars(hide_se=T) %>%
add_glance_table(include = c(AIC, BIC))
m3_t <- tbl_regression(m3, exponentiate=TRUE) %>% add_significance_stars(hide_se=T) %>%
add_glance_table(include = c(AIC, BIC))
m4_t <- tbl_regression(m4, exponentiate=TRUE) %>% add_significance_stars(hide_se=T) %>%
add_glance_table(include = c(AIC, BIC))
tbl_merge (
tbls = list(m1_t, m2_t, m3_t, m4_t),
tab_spanner = c("**M1**", "**M2**", "**M3**", "**M4**")) %>%
modify_table_body(~.x %>% arrange(row_type == "glance_statistic"))
| Characteristic | M1 | M2 | M3 | M4 |
|---|---|---|---|---|
| OR (95% CI)1,2 | OR (95% CI)1,2 | OR (95% CI)1,2 | OR (95% CI)1,2 | |
| Landlord_size_ | ||||
| big | — | — | — | — |
| small | 0.22*** | 0.23*** | 0.27*** | 0.31*** |
| Common_unit_size | ||||
| Studio | — | — | — | |
| 1 bedroom | 1.06 | 1.03 | 1.10 | |
| 2 bedroom | 0.81 | 0.77 | 0.81 | |
| 3 bedroom | 1.49 | 1.46 | 1.56* | |
| 4+ bedroom | 2.05*** | 2.13*** | 2.19*** | |
| Region | ||||
| central | — | — | ||
| northcentral | 1.07 | 1.05 | ||
| southcentral | 1.21 | 1.25 | ||
| northwest | 1.02 | 1.01 | ||
| southwest | 1.60* | 1.59* | ||
| multiple | 1.77** | 1.74** | ||
| Financial_role | ||||
| Investment Income | — | |||
| Multiple Roles | 0.93 | |||
| Primary Income | 1.50** | |||
| AIC | 2,591 | 2,455 | 2,447 | 2,353 |
| BIC | 2,604 | 2,493 | 2,515 | 2,433 |
|
1
*p<0.05; **p<0.01; ***p<0.001
2
OR = Odds Ratio, CI = Confidence Interval
|
||||
m4_t_offer <- tbl_regression(m4_offer, exponentiate=TRUE) %>% add_significance_stars(hide_se=T) %>%
add_glance_table(include = c(AIC, BIC))
m4_t_income <- tbl_regression(m4_income, exponentiate=TRUE) %>% add_significance_stars(hide_se=T) %>%
add_glance_table(include = c(AIC, BIC))
m4_t_any3 <- tbl_regression(m4_any3, exponentiate=TRUE) %>% add_significance_stars(hide_se=T) %>%
add_glance_table(include = c(AIC, BIC))
m4_t_fair <- tbl_regression(m4_fair, exponentiate=TRUE) %>% add_significance_stars(hide_se=T) %>%
add_glance_table(include = c(AIC, BIC))
m4_t_raise <- tbl_regression(m4_raise, exponentiate=TRUE) %>% add_significance_stars(hide_se=T) %>%
add_glance_table(include = c(AIC, BIC))
m4_t_terminate <- tbl_regression(m4_terminate, exponentiate=TRUE) %>% add_significance_stars(hide_se=T) %>%
add_glance_table(include = c(AIC, BIC))
tbl_merge (
tbls = list(m4_t_income, m4_t_offer, m4_t_any3, m4_t_fair, m4_t_raise, m4_t_terminate),
tab_spanner = c("**Renter income**", "**Offers to nonstandard**", "**Rents to vulnerable**", "**Fair market price**", "**Raised rent**", "**Terminated lease**")) %>%
modify_table_body(~.x %>% arrange(row_type == "glance_statistic"))
| Characteristic | Renter income | Offers to nonstandard | Rents to vulnerable | Fair market price | Raised rent | Terminated lease |
|---|---|---|---|---|---|---|
| OR (95% CI)1,2 | OR (95% CI)1,2 | OR (95% CI)1,2 | OR (95% CI)1,2 | OR (95% CI)1,2 | OR (95% CI)1,2 | |
| Landlord_size_ | ||||||
| big | — | — | — | — | — | — |
| small | 1.86*** | 0.98 | 0.17*** | 1.52** | 0.26*** | 0.31*** |
| Common_unit_size | ||||||
| Studio | — | — | — | — | — | — |
| 1 bedroom | 1.76*** | 0.92 | 0.89 | 0.00 | 1.09 | 1.10 |
| 2 bedroom | 2.47*** | 1.07 | 0.94 | 0.00 | 1.06 | 0.81 |
| 3 bedroom | 1.32 | 1.51 | 0.98 | 0.00 | 1.05 | 1.56* |
| 4+ bedroom | 0.39*** | 2.18** | 1.12 | 0.96 | 1.20 | 2.19*** |
| Region | ||||||
| central | — | — | — | — | — | — |
| northcentral | 0.37*** | 0.75 | 1.18 | 0.34*** | 0.96 | 1.05 |
| southcentral | 0.34*** | 1.04 | 2.24*** | 0.27*** | 0.95 | 1.25 |
| northwest | 0.57** | 0.68 | 1.25 | 0.37*** | 0.93 | 1.01 |
| southwest | 0.42*** | 0.99 | 2.17*** | 0.21*** | 0.77 | 1.59* |
| multiple | 0.58*** | 1.21 | 2.21*** | 0.44*** | 1.05 | 1.74** |
| Financial_role | ||||||
| Investment Income | — | — | — | — | — | — |
| Multiple Roles | 0.88 | 1.09 | 1.16 | 1.01 | 1.26** | 0.93 |
| Primary Income | 0.86 | 1.99*** | 2.19*** | 1.34 | 1.77*** | 1.50** |
| AIC | 3,668 | 2,034 | 3,654 | 2,945 | 4,179 | 2,353 |
| BIC | 3,748 | 2,113 | 3,734 | 3,025 | 4,259 | 2,433 |
|
1
*p<0.05; **p<0.01; ***p<0.001
2
OR = Odds Ratio, CI = Confidence Interval
|
||||||