coded_df <- readRDS("C:/Users/court/Google Drive/Research/SRHS/SRHS_coded.RDS")
df <- coded_df %>% select(
ll_finrole2,
ll_size,
bp_advert_b,
bp_screen_b,
bp_dec_flex_b,
bp_dec_standard_b,
bp_dec_offer_b,
bp_vouch_b,
bp_crim_b,
bp_dis_b,
bp_keep_pct_num,
bp_keep_rsn,
bp_install_b,
bp_comm_unit_fee_app_b,
bp_comm_unit_fee_sec_b,
bp_comm_unit_fee_clean_b,
bp_comm_unit_fee_park_b,
bp_fair_b,
bp_comm_unit_fee_incl_b,
bp_comm_unit_deposit_b,
bp_rent_raise_b,
bp_rent_raise_num,
bp_rent_raise_rising,
bp_rent_raise_regulation,
bp_rent_raise_market,
bp_terminate_b,
bp_terminate_num,
bp_terminate_paylate,
bp_terminate_pay,
bp_court_b,
bp_income_b,
bp_income_num,
ll_remain_1or5yr_b,
ll_remain_reg
)
df <- df %>% mutate(
ll_size = relevel(as.factor(ll_size), ref="small"),
ll_finrole2 = as.factor(ll_finrole2)
)
df <- df %>% rename(
"Landlord_size_" = ll_size,
"Financial_role_" = ll_finrole2,
"Advertising" = bp_advert_b,
"Screening" = bp_screen_b,
"Flexible_decision" = bp_dec_flex_b,
"Standard_criteria" = bp_dec_standard_b,
"Offers_to_nonstandard" = bp_dec_offer_b,
"Rent_to_vouchers" = bp_vouch_b,
"Rent_to_criminal" = bp_crim_b,
"Disability_accom." = bp_dis_b,
"Deposit_pct_kept" = bp_keep_pct_num,
"Deposit_kept_reason" = bp_keep_rsn,
"Allow_installments" = bp_install_b,
"Fair_market_price" = bp_fair_b,
"App_fee" = bp_comm_unit_fee_app_b,
"Security_deposit" = bp_comm_unit_fee_sec_b,
"Cleaning_fee" = bp_comm_unit_fee_clean_b,
"Parking_fee" = bp_comm_unit_fee_park_b,
"Utilities_included" = bp_comm_unit_fee_incl_b,
"Last_month_required" = bp_comm_unit_deposit_b,
"Raised_rent" = bp_rent_raise_b,
"Raised_rent_pct" = bp_rent_raise_num,
"Raised_rent_rising_costs" = bp_rent_raise_rising,
"Raised_rent_regulations" = bp_rent_raise_regulation,
"Raised_rent_market" = bp_rent_raise_market,
"Ever_terminated" = bp_terminate_b,
"Num_of_terminations" = bp_terminate_num,
"Terminated_paid_late" = bp_terminate_paylate,
"Terminated_non_payment" = bp_terminate_pay,
"Terminated_use_courts" = bp_court_b,
"Renterincome_above_avg_Seattle" = bp_income_b,
"Renter_income_estimate" = bp_income_num,
"Still_mngr_1_5yrs" = ll_remain_1or5yr_b,
"Stop_mngr_burdensome_regs" = ll_remain_reg)
# --------------------------
# # Variable groups
#
#
# # group A
# "Advertising",
# "Screening",
# "Flexible decision",
# "Standard criteria",
# "Offers to nonstandard",
# "Rent to vouchers",
# "Rent to criminal",
# "Disability accom.",
#
# # group B
# "Deposit pct. kept",
# "Depsoit kept reason",
# "Allow installments",
# "Utilities included",
# "App fee",
# "Security deposit",
# "Cleaning fee",
# "Parking fee",
# # group C
#
#
# "Fair market price",
# "Last month required",
# "Raised rent",
# "Raised rent pct.",
# "Raised rent - rising costs",
# "Raised rent - regulations",
# "Raised rent - market",
#
# # group D
# "Ever terminated",
# "Num of terminations",
# "Terminated - paid late",
# "Terminated - non payment",
# "Terminated - use courts",
#
# # group E
# "Renter income - above avg. Seattle",
# "Renter income estimate",
# "Still be prop mngr in 1, 5 yrs",
# "Stop being prop mngr burdensome regs"
This document shows simple crosstabs and models for:
Most variables were forced into a binary (likert scale included) and odds ratios are presented. Where possible, numbers were left numeric.
Cross tab of interaction variables:
df %>%
tbl_summary(
by = Landlord_size_,
percent = "row",
missing = "no",
include = c(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_") ~ "**Landlord size & financial role**")
| Characteristic | Landlord size & financial role | p-value1 | |
|---|---|---|---|
| small | big | ||
| Financial_role_, n (%) | <0.001 | ||
| Other | 2,767 (82%) | 594 (18%) | |
| Primary Income | 169 (37%) | 288 (63%) | |
|
1
Pearson's Chi-squared test
|
|||
Outcome:
Crosstabs:
df %>%
tbl_summary(
by = Advertising,
percent = "row",
missing = "no",
include = c(Landlord_size_, 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_") ~ "**Advertising**")
| Characteristic | Advertising | p-value1 | |
|---|---|---|---|
| 0 | 1 | ||
| Landlord_size_, n (%) | <0.001 | ||
| small | 2,603 (88%) | 343 (12%) | |
| big | 856 (96%) | 34 (3.8%) | |
| Financial_role_, n (%) | <0.001 | ||
| Other | 2,997 (89%) | 364 (11%) | |
| Primary Income | 445 (97%) | 12 (2.6%) | |
|
1
Pearson's Chi-squared test
|
|||
Models:
m1 <- glm(Advertising~1 + Landlord_size_,
family=binomial(link="logit"), data=df)
m2 <- glm(Advertising~1 + Landlord_size_ + Financial_role_ +
(Landlord_size_ * Financial_role_),
family=binomial(link="logit"), data=df)
tbl_regression(m1, exponentiate=TRUE)
| Characteristic | OR (95% CI)1 | p-value |
|---|---|---|
| Landlord_size_ | ||
| small | — | |
| big | 0.30 (0.21 to 0.43) | <0.001 |
|
1
OR = Odds Ratio, CI = Confidence Interval
|
||
tbl_regression(m2, exponentiate = TRUE)
| Characteristic | OR (95% CI)1 | p-value |
|---|---|---|
| Landlord_size_ | ||
| small | — | |
| big | 0.39 (0.26 to 0.56) | <0.001 |
| Financial_role_ | ||
| Other | — | |
| Primary Income | 0.36 (0.16 to 0.70) | 0.006 |
| Landlord_size_ * Financial_role_ | ||
| big * Primary Income | 0.73 (0.18 to 2.52) | 0.63 |
|
1
OR = Odds Ratio, CI = Confidence Interval
|
||
Outcome: use of third party screening service
Crosstabs:
df %>%
tbl_summary(
by = Screening,
percent = "row",
missing = "no",
include = c(Landlord_size_, 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_") ~ "**Screening**")
| Characteristic | Screening | p-value1 | |
|---|---|---|---|
| 0 | 1 | ||
| Landlord_size_, n (%) | <0.001 | ||
| small | 1,810 (61%) | 1,136 (39%) | |
| big | 433 (49%) | 457 (51%) | |
| Financial_role_, n (%) | <0.001 | ||
| Other | 2,001 (60%) | 1,360 (40%) | |
| Primary Income | 230 (50%) | 227 (50%) | |
|
1
Pearson's Chi-squared test
|
|||
Models:
m1 <- glm(Screening~1 + Landlord_size_,
family=binomial(link="logit"), data=df)
m2 <- glm(Screening~1 + Landlord_size_ + Financial_role_ +
(Landlord_size_ * Financial_role_),
family=binomial(link="logit"), data=df)
tbl_regression(m1, exponentiate=TRUE)
| Characteristic | OR (95% CI)1 | p-value |
|---|---|---|
| Landlord_size_ | ||
| small | — | |
| big | 1.68 (1.45 to 1.96) | <0.001 |
|
1
OR = Odds Ratio, CI = Confidence Interval
|
||
tbl_regression(m2, exponentiate=TRUE)
| Characteristic | OR (95% CI)1 | p-value |
|---|---|---|
| Landlord_size_ | ||
| small | — | |
| big | 1.60 (1.34 to 1.92) | <0.001 |
| Financial_role_ | ||
| Other | — | |
| Primary Income | 1.13 (0.82 to 1.55) | 0.44 |
| Landlord_size_ * Financial_role_ | ||
| big * Primary Income | 1.06 (0.69 to 1.62) | 0.80 |
|
1
OR = Odds Ratio, CI = Confidence Interval
|
||
Outcome: criteria used to make leasing decisions is flexible
Crosstabs:
df %>%
tbl_summary(
by = Flexible_decision,
percent = "row",
missing = "no",
include = c(Landlord_size_, 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_") ~ "**Flexible decision**")
| Characteristic | Flexible decision | p-value1 | |
|---|---|---|---|
| 0 | 1 | ||
| Landlord_size_, n (%) | 0.40 | ||
| small | 1,150 (43%) | 1,551 (57%) | |
| big | 316 (41%) | 457 (59%) | |
| Financial_role_, n (%) | 0.16 | ||
| Other | 1,311 (43%) | 1,762 (57%) | |
| Primary Income | 149 (39%) | 234 (61%) | |
|
1
Pearson's Chi-squared test
|
|||
Models:
m1 <- glm(Flexible_decision~1 + Landlord_size_,
family=binomial(link="logit"), data=df)
m2 <- glm(Flexible_decision~1 + Landlord_size_ + Financial_role_ +
(Landlord_size_ * Financial_role_),
family=binomial(link="logit"), data=df)
tbl_regression(m1, exponentiate=TRUE)
| Characteristic | OR (95% CI)1 | p-value |
|---|---|---|
| Landlord_size_ | ||
| small | — | |
| big | 1.07 (0.91 to 1.26) | 0.40 |
|
1
OR = Odds Ratio, CI = Confidence Interval
|
||
tbl_regression(m2, exponentiate=TRUE)
| Characteristic | OR (95% CI)1 | p-value |
|---|---|---|
| Landlord_size_ | ||
| small | — | |
| big | 1.11 (0.91 to 1.34) | 0.30 |
| Financial_role_ | ||
| Other | — | |
| Primary Income | 1.42 (1.01 to 2.03) | 0.047 |
| Landlord_size_ * Financial_role_ | ||
| big * Primary Income | 0.68 (0.42 to 1.08) | 0.10 |
|
1
OR = Odds Ratio, CI = Confidence Interval
|
||
Outcome: decisions based on a standard set of criteria
Crosstabs:
df %>%
tbl_summary(
by = Standard_criteria,
percent = "row",
missing = "no",
include = c(Landlord_size_, 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_") ~ "**Standard criteria**")
| Characteristic | Standard criteria | p-value1 | |
|---|---|---|---|
| 0 | 1 | ||
| Landlord_size_, n (%) | <0.001 | ||
| small | 839 (29%) | 2,075 (71%) | |
| big | 179 (20%) | 706 (80%) | |
| Financial_role_, n (%) | <0.001 | ||
| Other | 924 (28%) | 2,403 (72%) | |
| Primary Income | 89 (20%) | 365 (80%) | |
|
1
Pearson's Chi-squared test
|
|||
Models:
m1 <- glm(Standard_criteria~1 + Landlord_size_,
family=binomial(link="logit"), data=df)
m2 <- glm(Standard_criteria~1 + Landlord_size_ +
Financial_role_ + (Landlord_size_ * Financial_role_),
family=binomial(link="logit"), data=df)
tbl_regression(m1, exponentiate=TRUE)
| Characteristic | OR (95% CI)1 | p-value |
|---|---|---|
| Landlord_size_ | ||
| small | — | |
| big | 1.59 (1.33 to 1.92) | <0.001 |
|
1
OR = Odds Ratio, CI = Confidence Interval
|
||
tbl_regression(m2, exponentiate=TRUE)
| Characteristic | OR (95% CI)1 | p-value |
|---|---|---|
| Landlord_size_ | ||
| small | — | |
| big | 1.37 (1.11 to 1.69) | 0.003 |
| Financial_role_ | ||
| Other | — | |
| Primary Income | 1.07 (0.76 to 1.54) | 0.69 |
| Landlord_size_ * Financial_role_ | ||
| big * Primary Income | 1.56 (0.93 to 2.61) | 0.091 |
|
1
OR = Odds Ratio, CI = Confidence Interval
|
||
Outcome: how often offer tenancy to low-resource applicants who do not meet standard requirements
Crosstabs:
df %>%
tbl_summary(
by = Offers_to_nonstandard,
percent = "row",
missing = "no",
include = c(Landlord_size_, 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 | ||
| small | 2,619 (92%) | 236 (8.3%) | |
| big | 773 (88%) | 105 (12%) | |
| Financial_role_, n (%) | <0.001 | ||
| Other | 2,998 (92%) | 269 (8.2%) | |
| Primary Income | 379 (84%) | 71 (16%) | |
|
1
Pearson's Chi-squared test
|
|||
Models:
m1 <- glm(Offers_to_nonstandard~1 + Landlord_size_,
family=binomial(link="logit"), data=df)
m2 <- glm(Offers_to_nonstandard~1 + Landlord_size_ +
Financial_role_ + (Landlord_size_ * Financial_role_),
family=binomial(link="logit"), data=df)
tbl_regression(m1, exponentiate=TRUE)
| Characteristic | OR (95% CI)1 | p-value |
|---|---|---|
| Landlord_size_ | ||
| small | — | |
| big | 1.51 (1.18 to 1.92) | <0.001 |
|
1
OR = Odds Ratio, CI = Confidence Interval
|
||
tbl_regression(m2, exponentiate=TRUE)
| Characteristic | OR (95% CI)1 | p-value |
|---|---|---|
| Landlord_size_ | ||
| small | — | |
| big | 1.38 (1.02 to 1.85) | 0.035 |
| Financial_role_ | ||
| Other | — | |
| Primary Income | 2.41 (1.54 to 3.66) | <0.001 |
| Landlord_size_ * Financial_role_ | ||
| big * Primary Income | 0.64 (0.35 to 1.17) | 0.14 |
|
1
OR = Odds Ratio, CI = Confidence Interval
|
||
Outomce: ever rented to tenant using vouchers
Crosstabs:
df %>%
tbl_summary(
by = Rent_to_vouchers,
percent = "row",
missing = "no",
include = c(Landlord_size_, 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 vouchers**")
| Characteristic | Rent to vouchers | p-value1 | |
|---|---|---|---|
| 0 | 1 | ||
| Landlord_size_, n (%) | <0.001 | ||
| small | 2,650 (90%) | 296 (10%) | |
| big | 443 (50%) | 447 (50%) | |
| Financial_role_, n (%) | <0.001 | ||
| Other | 2,823 (84%) | 538 (16%) | |
| Primary Income | 259 (57%) | 198 (43%) | |
|
1
Pearson's Chi-squared test
|
|||
Models:
m1 <- glm(Rent_to_vouchers~1 + Landlord_size_,
family=binomial(link="logit"), data=df)
m2 <- glm(Rent_to_vouchers~1 + Landlord_size_ +
Financial_role_ + (Landlord_size_ * Financial_role_),
family=binomial(link="logit"), data=df)
tbl_regression(m1, exponentiate=TRUE)
tbl_regression(m2, exponentiate=TRUE)
| Characteristic | OR (95% CI)1 | p-value |
|---|---|---|
| Landlord_size_ | ||
| small | — | |
| big | 8.12 (6.62 to 9.97) | <0.001 |
| Financial_role_ | ||
| Other | — | |
| Primary Income | 1.88 (1.21 to 2.84) | 0.004 |
| Landlord_size_ * Financial_role_ | ||
| big * Primary Income | 0.89 (0.54 to 1.51) | 0.67 |
|
1
OR = Odds Ratio, CI = Confidence Interval
|
||
Outcome: ever rented to tenant you knew had criminal record
Crosstabs:
df %>%
tbl_summary(
by = Rent_to_criminal,
percent = "row",
missing = "no",
include = c(Landlord_size_, 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_") ~ "**Rents to criminal hx**")
| Characteristic | Rents to criminal hx | p-value1 | |
|---|---|---|---|
| 0 | 1 | ||
| Landlord_size_, n (%) | <0.001 | ||
| small | 2,650 (90%) | 296 (10%) | |
| big | 570 (64%) | 320 (36%) | |
| Financial_role_, n (%) | <0.001 | ||
| Other | 2,923 (87%) | 438 (13%) | |
| Primary Income | 286 (63%) | 171 (37%) | |
|
1
Pearson's Chi-squared test
|
|||
Models:
m1 <- glm(Rent_to_criminal~1 + Landlord_size_,
family=binomial(link="logit"), data=df)
m2 <- glm(Rent_to_criminal~1 + Landlord_size_ +
Financial_role_ + (Landlord_size_ * Financial_role_),
family=binomial(link="logit"), data=df)
tbl_regression(m1, exponentiate=TRUE)
| Characteristic | OR (95% CI)1 | p-value |
|---|---|---|
| Landlord_size_ | ||
| small | — | |
| big | 5.03 (4.19 to 6.03) | <0.001 |
|
1
OR = Odds Ratio, CI = Confidence Interval
|
||
tbl_regression(m2, exponentiate=TRUE)
| Characteristic | OR (95% CI)1 | p-value |
|---|---|---|
| Landlord_size_ | ||
| small | — | |
| big | 4.13 (3.32 to 5.12) | <0.001 |
| Financial_role_ | ||
| Other | — | |
| Primary Income | 2.43 (1.61 to 3.57) | <0.001 |
| Landlord_size_ * Financial_role_ | ||
| big * Primary Income | 0.87 (0.54 to 1.44) | 0.59 |
|
1
OR = Odds Ratio, CI = Confidence Interval
|
||
Outcome: ever had tenant request disability accomodations
Crosstabs:
df %>%
tbl_summary(
by = Disability_accom.,
percent = "row",
missing = "no",
include = c(Landlord_size_, 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_") ~ "**Disability accommodations**")
| Characteristic | Disability accommodations | p-value1 | |
|---|---|---|---|
| 0 | 1 | ||
| Landlord_size_, n (%) | <0.001 | ||
| small | 2,802 (95%) | 144 (4.9%) | |
| big | 654 (73%) | 236 (27%) | |
| Financial_role_, n (%) | <0.001 | ||
| Other | 3,098 (92%) | 263 (7.8%) | |
| Primary Income | 343 (75%) | 114 (25%) | |
|
1
Pearson's Chi-squared test
|
|||
Models:
m1 <- glm(Disability_accom.~1 + Landlord_size_,
family=binomial(link="logit"), data=df)
m2 <- glm(Disability_accom.~1 + Landlord_size_ +
Financial_role_ + (Landlord_size_ * Financial_role_),
family=binomial(link="logit"), data=df)
tbl_regression(m1, exponentiate=TRUE)
| Characteristic | OR (95% CI)1 | p-value |
|---|---|---|
| Landlord_size_ | ||
| small | — | |
| big | 7.02 (5.62 to 8.80) | <0.001 |
|
1
OR = Odds Ratio, CI = Confidence Interval
|
||
tbl_regression(m2, exponentiate=TRUE)
| Characteristic | OR (95% CI)1 | p-value |
|---|---|---|
| Landlord_size_ | ||
| small | — | |
| big | 6.40 (4.93 to 8.32) | <0.001 |
| Financial_role_ | ||
| Other | — | |
| Primary Income | 2.68 (1.56 to 4.36) | <0.001 |
| Landlord_size_ * Financial_role_ | ||
| big * Primary Income | 0.61 (0.34 to 1.13) | 0.10 |
|
1
OR = Odds Ratio, CI = Confidence Interval
|
||
Outcome: what percentage of security/pet deposits did you retain
Crosstabs:
df %>%
tbl_summary(
by = Deposit_pct_kept,
percent = "row",
missing = "no",
include = c(Landlord_size_, 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_") ~ "**Deposit pct kept**")
| Characteristic | Deposit pct kept | p-value1 | ||||
|---|---|---|---|---|---|---|
| 0 | 25 | 50 | 75 | 100 | ||
| Landlord_size_, n (%) | <0.001 | |||||
| small | 1,415 (59%) | 569 (24%) | 108 (4.5%) | 64 (2.7%) | 245 (10%) | |
| big | 384 (45%) | 292 (34%) | 69 (8.1%) | 21 (2.5%) | 86 (10%) | |
| Financial_role_, n (%) | <0.001 | |||||
| Other | 1,611 (57%) | 699 (25%) | 138 (4.9%) | 71 (2.5%) | 293 (10%) | |
| Primary Income | 185 (43%) | 157 (37%) | 36 (8.4%) | 14 (3.3%) | 35 (8.2%) | |
|
1
Pearson's Chi-squared test
|
||||||
Models:
m1 <- glm(Deposit_pct_kept~1 + Landlord_size_,
family=gaussian(link="identity"), data=df)
m2 <- glm(Deposit_pct_kept~1 + Landlord_size_ +
Financial_role_ + (Landlord_size_ * Financial_role_),
family=gaussian(link="identity"), data=df)
tbl_regression(m1, exponentiate=TRUE)
| Characteristic | exp(Beta) (95% CI)1 | p-value |
|---|---|---|
| Landlord_size_ | ||
| small | — | |
| big | 65.6 (5.52 to 778) | <0.001 |
|
1
CI = Confidence Interval
|
||
tbl_regression(m2, exponentiate=TRUE)
| Characteristic | exp(Beta) (95% CI)1 | p-value |
|---|---|---|
| Landlord_size_ | ||
| small | — | |
| big | 26.4 (1.44 to 485) | 0.027 |
| Financial_role_ | ||
| Other | — | |
| Primary Income | 0.78 (0.00 to 140) | 0.92 |
| Landlord_size_ * Financial_role_ | ||
| big * Primary Income | 18.8 (0.02 to 18,730) | 0.41 |
|
1
CI = Confidence Interval
|
||
Outcome: why did you retain some or all of deposit
Crosstabs:
df %>%
tbl_summary(
by = Deposit_kept_reason,
percent = "row",
missing = "no",
include = c(Landlord_size_, 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_") ~ "**Deposit kept reason**")
| Characteristic | Deposit kept reason | p-value1 | |
|---|---|---|---|
| 0 | 1 | ||
| Landlord_size_, n (%) | 0.008 | ||
| small | 695 (80%) | 174 (20%) | |
| big | 279 (73%) | 102 (27%) | |
| Financial_role_, n (%) | 0.049 | ||
| Other | 819 (79%) | 220 (21%) | |
| Primary Income | 148 (73%) | 56 (27%) | |
|
1
Pearson's Chi-squared test
|
|||
Models:
m1 <- glm(Deposit_kept_reason~1 + Landlord_size_,
family=binomial(link="logit"), data=df)
m2 <- glm(Deposit_kept_reason~1 + Landlord_size_ +
Financial_role_ + (Landlord_size_ * Financial_role_),
family=binomial(link="logit"), data=df)
tbl_regression(m1, exponentiate=TRUE)
| Characteristic | OR (95% CI)1 | p-value |
|---|---|---|
| Landlord_size_ | ||
| small | — | |
| big | 1.46 (1.10 to 1.93) | 0.008 |
|
1
OR = Odds Ratio, CI = Confidence Interval
|
||
tbl_regression(m2, exponentiate=TRUE)
| Characteristic | OR (95% CI)1 | p-value |
|---|---|---|
| Landlord_size_ | ||
| small | — | |
| big | 1.31 (0.93 to 1.84) | 0.12 |
| Financial_role_ | ||
| Other | — | |
| Primary Income | 1.01 (0.52 to 1.85) | 0.97 |
| Landlord_size_ * Financial_role_ | ||
| big * Primary Income | 1.33 (0.62 to 2.98) | 0.48 |
|
1
OR = Odds Ratio, CI = Confidence Interval
|
||
Outcome: prior to 2017, allow fees or deposits in installments
Crosstabs:
df %>%
tbl_summary(
by = Allow_installments,
percent = "row",
missing = "no",
include = c(Landlord_size_, 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_") ~ "**Allow installments**")
| Characteristic | Allow installments | p-value1 | |
|---|---|---|---|
| 0 | 1 | ||
| Landlord_size_, n (%) | <0.001 | ||
| small | 1,612 (58%) | 1,169 (42%) | |
| big | 323 (37%) | 542 (63%) | |
| Financial_role_, n (%) | <0.001 | ||
| Other | 1,742 (55%) | 1,446 (45%) | |
| Primary Income | 186 (42%) | 257 (58%) | |
|
1
Pearson's Chi-squared test
|
|||
Models:
m1 <- glm(Allow_installments~1 + Landlord_size_,
family=binomial(link="logit"), data=df)
m2 <- glm(Allow_installments~1 + Landlord_size_ +
Financial_role_ + (Landlord_size_ * Financial_role_),
family=binomial(link="logit"), data=df)
tbl_regression(m1, exponentiate=TRUE)
| Characteristic | OR (95% CI)1 | p-value |
|---|---|---|
| Landlord_size_ | ||
| small | — | |
| big | 2.31 (1.98 to 2.71) | <0.001 |
|
1
OR = Odds Ratio, CI = Confidence Interval
|
||
tbl_regression(m2, exponentiate=TRUE)
| Characteristic | OR (95% CI)1 | p-value |
|---|---|---|
| Landlord_size_ | ||
| small | — | |
| big | 2.67 (2.21 to 3.23) | <0.001 |
| Financial_role_ | ||
| Other | — | |
| Primary Income | 2.06 (1.50 to 2.85) | <0.001 |
| Landlord_size_ * Financial_role_ | ||
| big * Primary Income | 0.35 (0.23 to 0.55) | <0.001 |
|
1
OR = Odds Ratio, CI = Confidence Interval
|
||
Outcome: do you include utilities in rent for most common unit size
Crosstabs:
df %>%
tbl_summary(
by = Utilities_included,
percent = "row",
missing = "no",
include = c(Landlord_size_, 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_") ~ "**Utilities included**")
| Characteristic | Utilities included | p-value1 | |
|---|---|---|---|
| 0 | 1 | ||
| Landlord_size_, n (%) | <0.001 | ||
| small | 1,761 (65%) | 939 (35%) | |
| big | 387 (44%) | 483 (56%) | |
| Financial_role_, n (%) | 0.024 | ||
| Other | 1,900 (61%) | 1,219 (39%) | |
| Primary Income | 241 (55%) | 195 (45%) | |
|
1
Pearson's Chi-squared test
|
|||
Models:
m1 <- glm(Utilities_included~1 + Landlord_size_,
family=binomial(link="logit"), data=df)
m2 <- glm(Utilities_included~1 + Landlord_size_ +
Financial_role_ + (Landlord_size_ * Financial_role_),
family=binomial(link="logit"), data=df)
tbl_regression(m1, exponentiate=TRUE)
| Characteristic | OR (95% CI)1 | p-value |
|---|---|---|
| Landlord_size_ | ||
| small | — | |
| big | 2.34 (2.00 to 2.74) | <0.001 |
|
1
OR = Odds Ratio, CI = Confidence Interval
|
||
tbl_regression(m2, exponentiate=TRUE)
| Characteristic | OR (95% CI)1 | p-value |
|---|---|---|
| Landlord_size_ | ||
| small | — | |
| big | 2.54 (2.11 to 3.05) | <0.001 |
| Financial_role_ | ||
| Other | — | |
| Primary Income | 0.93 (0.66 to 1.31) | 0.70 |
| Landlord_size_ * Financial_role_ | ||
| big * Primary Income | 0.82 (0.53 to 1.29) | 0.39 |
|
1
OR = Odds Ratio, CI = Confidence Interval
|
||
Outcome: average security deposit fee for most common unit size
Crosstabs:
df %>%
tbl_summary(
by = Security_deposit,
percent = "row",
missing = "no",
include = c(Landlord_size_, 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_") ~ "**Security deposit**")
| Characteristic | Security deposit | p-value1 | |
|---|---|---|---|
| 0 | 1 | ||
| Landlord_size_, n (%) | <0.001 | ||
| small | 1,575 (62%) | 969 (38%) | |
| big | 603 (71%) | 247 (29%) | |
| Financial_role_, n (%) | 0.016 | ||
| Other | 1,866 (63%) | 1,080 (37%) | |
| Primary Income | 300 (69%) | 133 (31%) | |
|
1
Pearson's Chi-squared test
|
|||
Models:
m1 <- glm(Security_deposit~1 + Landlord_size_,
family=binomial(link="logit"), data=df)
m2 <- glm(Security_deposit~1 + Landlord_size_ +
Financial_role_ + (Landlord_size_ * Financial_role_),
family=binomial(link="logit"), data=df)
tbl_regression(m1, exponentiate=TRUE)
| Characteristic | OR (95% CI)1 | p-value |
|---|---|---|
| Landlord_size_ | ||
| small | — | |
| big | 0.67 (0.56 to 0.79) | <0.001 |
|
1
OR = Odds Ratio, CI = Confidence Interval
|
||
tbl_regression(m2, exponentiate=TRUE)
| Characteristic | OR (95% CI)1 | p-value |
|---|---|---|
| Landlord_size_ | ||
| small | — | |
| big | 0.73 (0.60 to 0.89) | 0.002 |
| Financial_role_ | ||
| Other | — | |
| Primary Income | 1.13 (0.81 to 1.57) | 0.47 |
| Landlord_size_ * Financial_role_ | ||
| big * Primary Income | 0.66 (0.42 to 1.06) | 0.083 |
|
1
OR = Odds Ratio, CI = Confidence Interval
|
||
Outcome: average application fee for most common unit size
Crosstabs:
df %>%
tbl_summary(
by = App_fee,
percent = "row",
missing = "no",
include = c(Landlord_size_, 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_") ~ "**App fee**")
| Characteristic | App fee | p-value1 | |
|---|---|---|---|
| 0 | 1 | ||
| Landlord_size_, n (%) | <0.001 | ||
| small | 1,162 (65%) | 616 (35%) | |
| big | 328 (48%) | 356 (52%) | |
| Financial_role_, n (%) | <0.001 | ||
| Other | 1,322 (63%) | 790 (37%) | |
| Primary Income | 162 (48%) | 176 (52%) | |
|
1
Pearson's Chi-squared test
|
|||
Models:
m1 <- glm(App_fee~1 + Landlord_size_,
family=binomial(link="logit"), data=df)
m2 <- glm(App_fee~1 + Landlord_size_ +
Financial_role_ + (Landlord_size_ * Financial_role_),
family=binomial(link="logit"), data=df)
tbl_regression(m1, exponentiate=TRUE)
| Characteristic | OR (95% CI)1 | p-value |
|---|---|---|
| Landlord_size_ | ||
| small | — | |
| big | 2.05 (1.71 to 2.45) | <0.001 |
|
1
OR = Odds Ratio, CI = Confidence Interval
|
||
tbl_regression(m2, exponentiate=TRUE)
| Characteristic | OR (95% CI)1 | p-value |
|---|---|---|
| Landlord_size_ | ||
| small | — | |
| big | 1.71 (1.39 to 2.12) | <0.001 |
| Financial_role_ | ||
| Other | — | |
| Primary Income | 1.05 (0.69 to 1.58) | 0.81 |
| Landlord_size_ * Financial_role_ | ||
| big * Primary Income | 1.53 (0.91 to 2.59) | 0.11 |
|
1
OR = Odds Ratio, CI = Confidence Interval
|
||
Outcome: average cleaning fee for most common unit size
Crosstabs:
df %>%
tbl_summary(
by = Cleaning_fee,
percent = "row",
missing = "no",
include = c(Landlord_size_, 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_") ~ "**Cleaning fee**")
| Characteristic | Cleaning fee | p-value1 | |
|---|---|---|---|
| 0 | 1 | ||
| Landlord_size_, n (%) | 0.16 | ||
| small | 970 (74%) | 333 (26%) | |
| big | 327 (78%) | 93 (22%) | |
| Financial_role_, n (%) | 0.61 | ||
| Other | 1,139 (75%) | 378 (25%) | |
| Primary Income | 152 (77%) | 46 (23%) | |
|
1
Pearson's Chi-squared test
|
|||
Models:
m1 <- glm(Cleaning_fee~1 + Landlord_size_,
family=binomial(link="logit"), data=df)
m2 <- glm(Cleaning_fee~1 + Landlord_size_ +
Financial_role_ + (Landlord_size_ * Financial_role_),
family=binomial(link="logit"), data=df)
tbl_regression(m1, exponentiate=TRUE)
| Characteristic | OR (95% CI)1 | p-value |
|---|---|---|
| Landlord_size_ | ||
| small | — | |
| big | 0.83 (0.64 to 1.07) | 0.16 |
|
1
OR = Odds Ratio, CI = Confidence Interval
|
||
tbl_regression(m2, exponentiate=TRUE)
| Characteristic | OR (95% CI)1 | p-value |
|---|---|---|
| Landlord_size_ | ||
| small | — | |
| big | 0.82 (0.60 to 1.11) | 0.20 |
| Financial_role_ | ||
| Other | — | |
| Primary Income | 0.95 (0.54 to 1.59) | 0.85 |
| Landlord_size_ * Financial_role_ | ||
| big * Primary Income | 1.07 (0.51 to 2.25) | 0.86 |
|
1
OR = Odds Ratio, CI = Confidence Interval
|
||
Outcome: average parking fee for most common unit size
Crosstabs:
df %>%
tbl_summary(
by = Parking_fee,
percent = "row",
missing = "no",
include = c(Landlord_size_, 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_") ~ "**Parking fee**")
| Characteristic | Parking fee | p-value1 | |
|---|---|---|---|
| 0 | 1 | ||
| Landlord_size_, n (%) | <0.001 | ||
| small | 311 (91%) | 30 (8.8%) | |
| big | 158 (75%) | 53 (25%) | |
| Financial_role_, n (%) | <0.001 | ||
| Other | 396 (89%) | 50 (11%) | |
| Primary Income | 69 (68%) | 33 (32%) | |
|
1
Pearson's Chi-squared test
|
|||
Models:
m1 <- glm(Parking_fee~1 + Landlord_size_,
family=binomial(link="logit"), data=df)
m2 <- glm(Parking_fee~1 + Landlord_size_ +
Financial_role_ + (Landlord_size_ * Financial_role_),
family=binomial(link="logit"), data=df)
tbl_regression(m1, exponentiate=TRUE)
| Characteristic | OR (95% CI)1 | p-value |
|---|---|---|
| Landlord_size_ | ||
| small | — | |
| big | 3.48 (2.15 to 5.71) | <0.001 |
|
1
OR = Odds Ratio, CI = Confidence Interval
|
||
tbl_regression(m2, exponentiate=TRUE)
| Characteristic | OR (95% CI)1 | p-value |
|---|---|---|
| Landlord_size_ | ||
| small | — | |
| big | 2.30 (1.26 to 4.19) | 0.006 |
| Financial_role_ | ||
| Other | — | |
| Primary Income | 1.53 (0.35 to 4.81) | 0.51 |
| Landlord_size_ * Financial_role_ | ||
| big * Primary Income | 1.90 (0.51 to 9.44) | 0.38 |
|
1
OR = Odds Ratio, CI = Confidence Interval
|
||
Outcome: average monthly rent for most common unit size above or below fair market price
Crosstabs:
df %>%
tbl_summary(
by = Fair_market_price,
percent = "row",
missing = "no",
include = c(Landlord_size_, 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 | ||
| small | 1,829 (67%) | 911 (33%) | |
| big | 707 (80%) | 175 (20%) | |
| Financial_role_, n (%) | 0.50 | ||
| Other | 2,204 (70%) | 954 (30%) | |
| Primary Income | 319 (71%) | 128 (29%) | |
|
1
Pearson's Chi-squared test
|
|||
Models:
m1 <- glm(Fair_market_price~1 + Landlord_size_,
family=binomial(link="logit"), data=df)
m2 <- glm(Fair_market_price~1 + Landlord_size_ +
Financial_role_ + (Landlord_size_ * Financial_role_),
family=binomial(link="logit"), data=df)
tbl_regression(m1, exponentiate=TRUE)
| Characteristic | OR (95% CI)1 | p-value |
|---|---|---|
| Landlord_size_ | ||
| small | — | |
| big | 0.50 (0.41 to 0.60) | <0.001 |
|
1
OR = Odds Ratio, CI = Confidence Interval
|
||
tbl_regression(m2, exponentiate=TRUE)
| Characteristic | OR (95% CI)1 | p-value |
|---|---|---|
| Landlord_size_ | ||
| small | — | |
| big | 0.43 (0.34 to 0.53) | <0.001 |
| Financial_role_ | ||
| Other | — | |
| Primary Income | 1.13 (0.80 to 1.57) | 0.48 |
| Landlord_size_ * Financial_role_ | ||
| big * Primary Income | 1.38 (0.85 to 2.23) | 0.19 |
|
1
OR = Odds Ratio, CI = Confidence Interval
|
||
Outcome: require last month’s rent before move in for most common unit size
Crosstabs:
df %>%
tbl_summary(
by = Last_month_required,
percent = "row",
missing = "no",
include = c(Landlord_size_, 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_") ~ "**Last month required**")
| Characteristic | Last month required | p-value1 | |
|---|---|---|---|
| 0 | 1 | ||
| Landlord_size_, n (%) | <0.001 | ||
| small | 1,519 (56%) | 1,175 (44%) | |
| big | 693 (79%) | 181 (21%) | |
| Financial_role_, n (%) | <0.001 | ||
| Other | 1,866 (60%) | 1,240 (40%) | |
| Primary Income | 334 (75%) | 112 (25%) | |
|
1
Pearson's Chi-squared test
|
|||
Models:
m1 <- glm(Last_month_required~1 + Landlord_size_,
family=binomial(link="logit"), data=df)
m2 <- glm(Last_month_required~1 + Landlord_size_ +
Financial_role_ + (Landlord_size_ * Financial_role_),
family=binomial(link="logit"), data=df)
tbl_regression(m1, exponentiate=TRUE)
| Characteristic | OR (95% CI)1 | p-value |
|---|---|---|
| Landlord_size_ | ||
| small | — | |
| big | 0.34 (0.28 to 0.40) | <0.001 |
|
1
OR = Odds Ratio, CI = Confidence Interval
|
||
tbl_regression(m2, exponentiate=TRUE)
| Characteristic | OR (95% CI)1 | p-value |
|---|---|---|
| Landlord_size_ | ||
| small | — | |
| big | 0.37 (0.30 to 0.45) | <0.001 |
| Financial_role_ | ||
| Other | — | |
| Primary Income | 0.82 (0.59 to 1.13) | 0.22 |
| Landlord_size_ * Financial_role_ | ||
| big * Primary Income | 0.89 (0.55 to 1.45) | 0.65 |
|
1
OR = Odds Ratio, CI = Confidence Interval
|
||
Outcome: raised rent in past year
Crosstabs:
df %>%
tbl_summary(
by = Raised_rent,
percent = "row",
missing = "no",
include = c(Landlord_size_, 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 | ||
| small | 1,236 (43%) | 1,666 (57%) | |
| big | 122 (14%) | 755 (86%) | |
| Financial_role_, n (%) | <0.001 | ||
| Other | 1,268 (38%) | 2,042 (62%) | |
| Primary Income | 82 (18%) | 369 (82%) | |
|
1
Pearson's Chi-squared test
|
|||
Models:
m1 <- glm(Raised_rent~1 + Landlord_size_,
family=binomial(link="logit"), data=df)
m2 <- glm(Raised_rent~1 + Landlord_size_ +
Financial_role_ + (Landlord_size_ * Financial_role_),
family=binomial(link="logit"), data=df)
tbl_regression(m1, exponentiate=TRUE)
| Characteristic | OR (95% CI)1 | p-value |
|---|---|---|
| Landlord_size_ | ||
| small | — | |
| big | 4.59 (3.75 to 5.66) | <0.001 |
|
1
OR = Odds Ratio, CI = Confidence Interval
|
||
tbl_regression(m2, exponentiate=TRUE)
| Characteristic | OR (95% CI)1 | p-value |
|---|---|---|
| Landlord_size_ | ||
| small | — | |
| big | 3.64 (2.91 to 4.59) | <0.001 |
| Financial_role_ | ||
| Other | — | |
| Primary Income | 1.30 (0.95 to 1.81) | 0.11 |
| Landlord_size_ * Financial_role_ | ||
| big * Primary Income | 1.98 (1.11 to 3.63) | 0.023 |
|
1
OR = Odds Ratio, CI = Confidence Interval
|
||
Outcome: raised rent by how much percent
Crosstabs:
df %>%
tbl_summary(
by = Raised_rent_pct,
percent = "row",
missing = "no",
include = c(Landlord_size_, 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 pct**")
| Characteristic | Raised rent pct | p-value1 | ||||
|---|---|---|---|---|---|---|
| 3 | 7 | 13 | 20 | 30 | ||
| Landlord_size_, n (%) | <0.001 | |||||
| small | 871 (52%) | 540 (32%) | 108 (6.5%) | 93 (5.6%) | 54 (3.2%) | |
| big | 338 (45%) | 317 (42%) | 67 (8.9%) | 22 (2.9%) | 11 (1.5%) | |
| Financial_role_, n (%) | 0.19 | |||||
| Other | 1,035 (51%) | 704 (34%) | 149 (7.3%) | 97 (4.8%) | 57 (2.8%) | |
| Primary Income | 167 (45%) | 151 (41%) | 25 (6.8%) | 18 (4.9%) | 8 (2.2%) | |
|
1
Pearson's Chi-squared test
|
||||||
Models:
m1 <- glm(Raised_rent_pct~1 + Landlord_size_,
family=gaussian(link="identity"), data=df)
m2 <- glm(Raised_rent_pct~1 + Landlord_size_ +
Financial_role_ + (Landlord_size_ * Financial_role_),
family=gaussian(link="identity"), data=df)
tbl_regression(m1, exponentiate=TRUE)
| Characteristic | exp(Beta) (95% CI)1 | p-value |
|---|---|---|
| Landlord_size_ | ||
| small | — | |
| big | 0.73 (0.45 to 1.20) | 0.21 |
|
1
CI = Confidence Interval
|
||
tbl_regression(m2, exponentiate=TRUE)
| Characteristic | exp(Beta) (95% CI)1 | p-value |
|---|---|---|
| Landlord_size_ | ||
| small | — | |
| big | 0.82 (0.46 to 1.46) | 0.50 |
| Financial_role_ | ||
| Other | — | |
| Primary Income | 2.47 (0.80 to 7.62) | 0.12 |
| Landlord_size_ * Financial_role_ | ||
| big * Primary Income | 0.35 (0.08 to 1.44) | 0.15 |
|
1
CI = Confidence Interval
|
||
Outcome: raised rent due to rising costs of taxes, repairs
Crosstabs:
df %>%
tbl_summary(
by = Raised_rent_rising_costs,
percent = "row",
missing = "no",
include = c(Landlord_size_, 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 rising costs**")
| Characteristic | Raised rent rising costs | p-value1 | |
|---|---|---|---|
| 0 | 1 | ||
| Landlord_size_, n (%) | 0.69 | ||
| small | 190 (12%) | 1,364 (88%) | |
| big | 83 (12%) | 630 (88%) | |
| Financial_role_, n (%) | 0.51 | ||
| Other | 233 (12%) | 1,677 (88%) | |
| Primary Income | 38 (11%) | 309 (89%) | |
|
1
Pearson's Chi-squared test
|
|||
Models:
m1 <- glm(Raised_rent_rising_costs~1 + Landlord_size_,
family=binomial(link="logit"), data=df)
m2 <- glm(Raised_rent_rising_costs~1 + Landlord_size_ +
Financial_role_ + (Landlord_size_ * Financial_role_),
family=binomial(link="logit"), data=df)
tbl_regression(m1, exponentiate=TRUE)
| Characteristic | OR (95% CI)1 | p-value |
|---|---|---|
| Landlord_size_ | ||
| small | — | |
| big | 1.06 (0.81 to 1.40) | 0.69 |
|
1
OR = Odds Ratio, CI = Confidence Interval
|
||
tbl_regression(m2, exponentiate=TRUE)
| Characteristic | OR (95% CI)1 | p-value |
|---|---|---|
| Landlord_size_ | ||
| small | — | |
| big | 1.18 (0.85 to 1.66) | 0.33 |
| Financial_role_ | ||
| Other | — | |
| Primary Income | 1.92 (0.94 to 4.61) | 0.10 |
| Landlord_size_ * Financial_role_ | ||
| big * Primary Income | 0.44 (0.17 to 1.06) | 0.083 |
|
1
OR = Odds Ratio, CI = Confidence Interval
|
||
Outcome: raised rent due to regulations
Crosstabs:
df %>%
tbl_summary(
by = Raised_rent_regulations,
percent = "row",
missing = "no",
include = c(Landlord_size_, 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 regulations**")
| Characteristic | Raised rent regulations | p-value1 | |
|---|---|---|---|
| 0 | 1 | ||
| Landlord_size_, n (%) | 0.28 | ||
| small | 1,531 (99%) | 23 (1.5%) | |
| big | 698 (98%) | 15 (2.1%) | |
| Financial_role_, n (%) | 0.22 | ||
| Other | 1,876 (98%) | 34 (1.8%) | |
| Primary Income | 344 (99%) | 3 (0.9%) | |
|
1
Pearson's Chi-squared test
|
|||
Models:
m1 <- glm(Raised_rent_regulations~1 + Landlord_size_,
family=binomial(link="logit"), data=df)
m2 <- glm(Raised_rent_regulations~1 + Landlord_size_ +
Financial_role_ + (Landlord_size_ * Financial_role_),
family=binomial(link="logit"), data=df)
tbl_regression(m1, exponentiate=TRUE)
| Characteristic | OR (95% CI)1 | p-value |
|---|---|---|
| Landlord_size_ | ||
| small | — | |
| big | 1.43 (0.73 to 2.73) | 0.29 |
|
1
OR = Odds Ratio, CI = Confidence Interval
|
||
tbl_regression(m2, exponentiate=TRUE)
| Characteristic | OR (95% CI)1 | p-value |
|---|---|---|
| Landlord_size_ | ||
| small | — | |
| big | 1.98 (0.96 to 3.95) | 0.055 |
| Financial_role_ | ||
| Other | — | |
| Primary Income | 1.39 (0.22 to 4.83) | 0.66 |
| Landlord_size_ * Financial_role_ | ||
| big * Primary Income | 0.10 (0.00 to 1.17) | 0.073 |
|
1
OR = Odds Ratio, CI = Confidence Interval
|
||
Outcome: raised rent due to housing market
Crosstabs:
df %>%
tbl_summary(
by = Raised_rent_market,
percent = "row",
missing = "no",
include = c(Landlord_size_, 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 market**")
| Characteristic | Raised rent market | p-value1 | |
|---|---|---|---|
| 0 | 1 | ||
| Landlord_size_, n (%) | 0.23 | ||
| small | 1,396 (90%) | 158 (10%) | |
| big | 652 (91%) | 61 (8.6%) | |
| Financial_role_, n (%) | 0.76 | ||
| Other | 1,724 (90%) | 186 (9.7%) | |
| Primary Income | 315 (91%) | 32 (9.2%) | |
|
1
Pearson's Chi-squared test
|
|||
Models:
m1 <- glm(Raised_rent_market~1 + Landlord_size_,
family=binomial(link="logit"), data=df)
m2 <- glm(Raised_rent_market~1 + Landlord_size_ +
Financial_role_ + (Landlord_size_ * Financial_role_),
family=binomial(link="logit"), data=df)
tbl_regression(m1, exponentiate=TRUE)
| Characteristic | OR (95% CI)1 | p-value |
|---|---|---|
| Landlord_size_ | ||
| small | — | |
| big | 0.83 (0.60 to 1.12) | 0.23 |
|
1
OR = Odds Ratio, CI = Confidence Interval
|
||
tbl_regression(m2, exponentiate=TRUE)
| Characteristic | OR (95% CI)1 | p-value |
|---|---|---|
| Landlord_size_ | ||
| small | — | |
| big | 0.66 (0.44 to 0.96) | 0.036 |
| Financial_role_ | ||
| Other | — | |
| Primary Income | 0.45 (0.16 to 1.01) | 0.084 |
| Landlord_size_ * Financial_role_ | ||
| big * Primary Income | 3.55 (1.32 to 11.4) | 0.019 |
|
1
OR = Odds Ratio, CI = Confidence Interval
|
||
Outcome: in 2017, did you terminate tenancies
Crosstabs:
df %>%
tbl_summary(
by = Ever_terminated,
percent = "row",
missing = "no",
include = c(Landlord_size_, 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 | ||
| small | 2,705 (92%) | 220 (7.5%) | |
| big | 648 (73%) | 236 (27%) | |
| Financial_role_, n (%) | <0.001 | ||
| Other | 2,999 (90%) | 337 (10%) | |
| Primary Income | 342 (75%) | 114 (25%) | |
|
1
Pearson's Chi-squared test
|
|||
Models:
m1 <- glm(Ever_terminated~1 + Landlord_size_,
family=binomial(link="logit"), data=df)
m2 <- glm(Ever_terminated~1 + Landlord_size_ +
Financial_role_ + (Landlord_size_ * Financial_role_),
family=binomial(link="logit"), data=df)
tbl_regression(m1, exponentiate=TRUE)
| Characteristic | OR (95% CI)1 | p-value |
|---|---|---|
| Landlord_size_ | ||
| small | — | |
| big | 4.48 (3.66 to 5.49) | <0.001 |
|
1
OR = Odds Ratio, CI = Confidence Interval
|
||
tbl_regression(m2, exponentiate=TRUE)
| Characteristic | OR (95% CI)1 | p-value |
|---|---|---|
| Landlord_size_ | ||
| small | — | |
| big | 3.86 (3.03 to 4.90) | <0.001 |
| Financial_role_ | ||
| Other | — | |
| Primary Income | 1.61 (0.95 to 2.59) | 0.060 |
| Landlord_size_ * Financial_role_ | ||
| big * Primary Income | 1.01 (0.57 to 1.86) | 0.97 |
|
1
OR = Odds Ratio, CI = Confidence Interval
|
||
Ouctome: in 2017, how many tenancies did you terminate
Crosstabs:
df %>%
tbl_summary(
by = Num_of_terminations,
percent = "row",
missing = "no",
include = c(Landlord_size_, 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_") ~ "**Number of terminations**")
| Characteristic | Number of terminations | p-value1 | |||
|---|---|---|---|---|---|
| 3 | 7 | 15 | 25 | ||
| Landlord_size_, n (%) | 0.11 | ||||
| small | 185 (97%) | 5 (2.6%) | 0 (0%) | 1 (0.5%) | |
| big | 204 (92%) | 9 (4.1%) | 5 (2.3%) | 3 (1.4%) | |
| Financial_role_, n (%) | 0.002 | ||||
| Other | 289 (96%) | 7 (2.3%) | 5 (1.7%) | 0 (0%) | |
| Primary Income | 96 (91%) | 6 (5.7%) | 0 (0%) | 4 (3.8%) | |
|
1
Fisher's exact test
|
|||||
Models:
m1 <- glm(Num_of_terminations~1 + Landlord_size_,
family=gaussian(link="identity"), data=df)
m2 <- glm(Num_of_terminations~1 + Landlord_size_ +
Financial_role_ + (Landlord_size_ * Financial_role_),
family=gaussian(link="identity"), data=df)
tbl_regression(m1, exponentiate=TRUE)
| Characteristic | exp(Beta) (95% CI)1 | p-value |
|---|---|---|
| Landlord_size_ | ||
| small | — | |
| big | 1.67 (1.01 to 2.76) | 0.046 |
|
1
CI = Confidence Interval
|
||
tbl_regression(m2, exponentiate=TRUE)
| Characteristic | exp(Beta) (95% CI)1 | p-value |
|---|---|---|
| Landlord_size_ | ||
| small | — | |
| big | 1.69 (0.94 to 3.05) | 0.083 |
| Financial_role_ | ||
| Other | — | |
| Primary Income | 4.31 (1.19 to 15.6) | 0.027 |
| Landlord_size_ * Financial_role_ | ||
| big * Primary Income | 0.34 (0.08 to 1.46) | 0.15 |
|
1
CI = Confidence Interval
|
||
Outcome: any terminated due to late payment
Crosstabs:
df %>%
tbl_summary(
by = Terminated_paid_late,
percent = "row",
missing = "no",
include = c(Landlord_size_, 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_") ~ "**Terminated - paid late**")
| Characteristic | Terminated - paid late | p-value1 | |
|---|---|---|---|
| 0 | 1 | ||
| Landlord_size_, n (%) | 0.009 | ||
| small | 13 (23%) | 44 (77%) | |
| big | 4 (6.2%) | 60 (94%) | |
| Financial_role_, n (%) | 0.35 | ||
| Other | 15 (16%) | 77 (84%) | |
| Primary Income | 2 (7.1%) | 26 (93%) | |
|
1
Pearson's Chi-squared test; Fisher's exact test
|
|||
Models:
m1 <- glm(Terminated_paid_late~1 + Landlord_size_,
family=binomial(link="logit"), data=df)
m2 <- glm(Terminated_paid_late~1 + Landlord_size_ +
Financial_role_ + (Landlord_size_ * Financial_role_),
family=binomial(link="logit"), data=df)
tbl_regression(m1, exponentiate=TRUE)
| Characteristic | OR (95% CI)1 | p-value |
|---|---|---|
| Landlord_size_ | ||
| small | — | |
| big | 4.43 (1.46 to 16.6) | 0.014 |
|
1
OR = Odds Ratio, CI = Confidence Interval
|
||
tbl_regression(m2, exponentiate=TRUE)
| Characteristic | OR (95% CI)1 | p-value |
|---|---|---|
| Landlord_size_ | ||
| small | — | |
| big | 2.29 (0.71 to 8.85) | 0.19 |
| Financial_role_ | ||
| Other | — | |
| Primary Income | 0.26 (0.03 to 2.38) | 0.20 |
| Landlord_size_ * Financial_role_ | ||
| big * Primary Income | 50,464,928 (0.00 to NA) | 0.99 |
|
1
OR = Odds Ratio, CI = Confidence Interval
|
||
Outcome: any terminated due to late payment
Crosstabs:
df %>%
tbl_summary(
by = Terminated_non_payment,
percent = "row",
missing = "no",
include = c(Landlord_size_, 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_") ~ "**Terminated - non payment**")
| Characteristic | Terminated - non payment | p-value1 | |
|---|---|---|---|
| 0 | 1 | ||
| Landlord_size_, n (%) | <0.001 | ||
| small | 13 (18%) | 60 (82%) | |
| big | 4 (2.7%) | 144 (97%) | |
| Financial_role_, n (%) | 0.037 | ||
| Other | 15 (11%) | 127 (89%) | |
| Primary Income | 2 (2.6%) | 74 (97%) | |
|
1
Pearson's Chi-squared test
|
|||
Models:
m1 <- glm(Terminated_non_payment~1 + Landlord_size_,
family=binomial(link="logit"), data=df)
m2 <- glm(Terminated_non_payment~1 + Landlord_size_ +
Financial_role_ + (Landlord_size_ * Financial_role_),
family=binomial(link="logit"), data=df)
tbl_regression(m1, exponentiate=TRUE)
| Characteristic | OR (95% CI)1 | p-value |
|---|---|---|
| Landlord_size_ | ||
| small | — | |
| big | 7.80 (2.64 to 28.6) | <0.001 |
|
1
OR = Odds Ratio, CI = Confidence Interval
|
||
tbl_regression(m2, exponentiate=TRUE)
| Characteristic | OR (95% CI)1 | p-value |
|---|---|---|
| Landlord_size_ | ||
| small | — | |
| big | 3.38 (1.09 to 12.7) | 0.046 |
| Financial_role_ | ||
| Other | — | |
| Primary Income | 0.19 (0.02 to 1.74) | 0.12 |
| Landlord_size_ * Financial_role_ | ||
| big * Primary Income | 93,085,001 (0.00 to NA) | 0.99 |
|
1
OR = Odds Ratio, CI = Confidence Interval
|
||
Ouctome: of the terminations, were these handled with the courts
Crosstabs:
df %>%
tbl_summary(
by = Terminated_use_courts,
percent = "row",
missing = "no",
include = c(Landlord_size_, 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_") ~ "**Terminated - use of courts**")
| Characteristic | Terminated - use of courts | p-value1 | |
|---|---|---|---|
| 0 | 1 | ||
| Landlord_size_, n (%) | <0.001 | ||
| small | 22 (0.8%) | 2,903 (99%) | |
| big | 66 (7.4%) | 820 (93%) | |
| Financial_role_, n (%) | <0.001 | ||
| Other | 52 (1.6%) | 3,289 (98%) | |
| Primary Income | 35 (7.7%) | 417 (92%) | |
|
1
Pearson's Chi-squared test
|
|||
Models:
m1 <- glm(Terminated_use_courts~1 + Landlord_size_,
family=binomial(link="logit"), data=df)
m2 <- glm(Terminated_use_courts~1 + Landlord_size_ +
Financial_role_ + (Landlord_size_ * Financial_role_),
family=binomial(link="logit"), data=df)
tbl_regression(m1, exponentiate=TRUE)
tbl_regression(m2, exponentiate=TRUE)
Outcome: average income of renter by most common unit size (used midpoints)
Crosstabs:
df %>%
tbl_summary(
by = Renter_income_estimate,
percent = "row",
missing = "no",
include = c(Landlord_size_, 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 estimate (unit=1000)**")
| Characteristic | Renter income estimate (unit=1000) | p-value1 | ||||
|---|---|---|---|---|---|---|
| 13 | 37 | 62 | 100 | 200 | ||
| Landlord_size_, n (%) | <0.001 | |||||
| small | 124 (4.6%) | 518 (19%) | 755 (28%) | 1,041 (38%) | 276 (10%) | |
| big | 44 (5.4%) | 296 (36%) | 319 (39%) | 149 (18%) | 11 (1.3%) | |
| Financial_role_, n (%) | <0.001 | |||||
| Other | 130 (4.2%) | 685 (22%) | 919 (30%) | 1,085 (35%) | 274 (8.9%) | |
| Primary Income | 33 (7.8%) | 127 (30%) | 150 (35%) | 100 (24%) | 13 (3.1%) | |
|
1
Pearson's Chi-squared test
|
||||||
Models:
m1 <- glm(Renter_income_estimate~1 + Landlord_size_,
family=gaussian(link="identity"), data=df)
m2 <- glm(Renter_income_estimate~1 + Landlord_size_ +
Financial_role_ + (Landlord_size_ * Financial_role_),
family=gaussian(link="identity"), data=df)
tbl_regression(m1, exponentiate=TRUE)
| Characteristic | exp(Beta) (95% CI)1 | p-value |
|---|---|---|
| Landlord_size_ | ||
| small | — | |
| big | 0.00 (0.00 to 0.00) | <0.001 |
|
1
CI = Confidence Interval
|
||
tbl_regression(m2, exponentiate=TRUE)
| Characteristic | exp(Beta) (95% CI)1 | p-value |
|---|---|---|
| Landlord_size_ | ||
| small | — | |
| big | 0.00 (0.00 to 0.00) | <0.001 |
| Financial_role_ | ||
| Other | — | |
| Primary Income | 0.00 (0.00 to 0.00) | <0.001 |
| Landlord_size_ * Financial_role_ | ||
| big * Primary Income | 1,298,911 (92.2 to 18,295,749,646) | 0.004 |
|
1
CI = Confidence Interval
|
||
Outcome: do you expect to remain a property manager
Crosstabs:
df %>%
tbl_summary(
by = Still_mngr_1_5yrs,
percent = "row",
missing = "no",
include = c(Landlord_size_, 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_") ~ "**Still be manager in 1 or 5 yrs**")
| Characteristic | Still be manager in 1 or 5 yrs | p-value1 | |
|---|---|---|---|
| 0 | 1 | ||
| Landlord_size_, n (%) | 0.24 | ||
| small | 2,369 (81%) | 554 (19%) | |
| big | 731 (83%) | 152 (17%) | |
| Financial_role_, n (%) | 0.87 | ||
| Other | 2,714 (81%) | 618 (19%) | |
| Primary Income | 370 (81%) | 86 (19%) | |
|
1
Pearson's Chi-squared test
|
|||
Models:
m1 <- glm(Still_mngr_1_5yrs~1 + Landlord_size_,
family=binomial(link="logit"), data=df)
m2 <- glm(Still_mngr_1_5yrs~1 + Landlord_size_ +
Financial_role_ + (Landlord_size_ * Financial_role_),
family=binomial(link="logit"), data=df)
tbl_regression(m1, exponentiate=TRUE)
| Characteristic | OR (95% CI)1 | p-value |
|---|---|---|
| Landlord_size_ | ||
| small | — | |
| big | 0.89 (0.73 to 1.08) | 0.24 |
|
1
OR = Odds Ratio, CI = Confidence Interval
|
||
tbl_regression(m2, exponentiate=TRUE)
| Characteristic | OR (95% CI)1 | p-value |
|---|---|---|
| Landlord_size_ | ||
| small | — | |
| big | 0.97 (0.77 to 1.22) | 0.81 |
| Financial_role_ | ||
| Other | — | |
| Primary Income | 1.40 (0.96 to 2.00) | 0.071 |
| Landlord_size_ * Financial_role_ | ||
| big * Primary Income | 0.60 (0.35 to 1.01) | 0.055 |
|
1
OR = Odds Ratio, CI = Confidence Interval
|
||
Outcome: why might you stop being property manager
Crosstabs:
df %>%
tbl_summary(
by = Stop_mngr_burdensome_regs,
percent = "row",
missing = "no",
include = c(Landlord_size_, 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_") ~ "**Stop managing due to regulations**")
| Characteristic | Stop managing due to regulations | p-value1 | |
|---|---|---|---|
| 0 | 1 | ||
| Landlord_size_, n (%) | 0.69 | ||
| small | 2,525 (86%) | 421 (14%) | |
| big | 758 (85%) | 132 (15%) | |
| Financial_role_, n (%) | 0.16 | ||
| Other | 2,885 (86%) | 476 (14%) | |
| Primary Income | 381 (83%) | 76 (17%) | |
|
1
Pearson's Chi-squared test
|
|||
Models:
m1 <- glm(Stop_mngr_burdensome_regs~1 + Landlord_size_,
family=binomial(link="logit"), data=df)
m2 <- glm(Stop_mngr_burdensome_regs~1 + Landlord_size_ +
Financial_role_ + (Landlord_size_ * Financial_role_),
family=binomial(link="logit"), data=df)
tbl_regression(m1, exponentiate=TRUE)
| Characteristic | OR (95% CI)1 | p-value |
|---|---|---|
| Landlord_size_ | ||
| small | — | |
| big | 1.04 (0.84 to 1.29) | 0.69 |
|
1
OR = Odds Ratio, CI = Confidence Interval
|
||
tbl_regression(m2, exponentiate=TRUE)
| Characteristic | OR (95% CI)1 | p-value |
|---|---|---|
| Landlord_size_ | ||
| small | — | |
| big | 1.19 (0.93 to 1.52) | 0.16 |
| Financial_role_ | ||
| Other | — | |
| Primary Income | 1.88 (1.28 to 2.70) | <0.001 |
| Landlord_size_ * Financial_role_ | ||
| big * Primary Income | 0.41 (0.24 to 0.72) | 0.002 |
|
1
OR = Odds Ratio, CI = Confidence Interval
|
||