#load processed survey data
load("C:/Users/court/Google Drive/Research/SRHS/landlord_survey_w_weights.RData")

# keep original data just in case 
land_0 <- land
  land <- land %>%
    mutate(ll_size = case_when(
      q7 >= 1 & q7 <=4 ~ "small (1-4 units)",
      q7 >= 5 ~ "big (5+ units)")) %>%
   set_variable_labels(ll_size = "Landlord size") %>%
  
mutate(land, ll_size = factor(ll_size, levels = c("small (1-4 units)", "big (5+ units)")))

  land <- land %>%
    mutate(ll_size_b = case_when(
      ll_size == "small (1-4 units)" ~ 0,
      ll_size == "big (5+ units)" ~ 1)) %>%
   set_variable_labels(ll_size = "Landlord size")

Business Practice Outcomes

Business Practice Binary Outcome
1. Average household income of tenants 1 “>$50,000”,
0 “<=50,000”
2. Use of a third-party renter screening service 1 “yes”,
0 “no”
3. Flexible leasing decisions 1 “yes”,
0 “no”
4. Ever rented to a voucher holder? 1 “yes”,
0 “no”
5. Average monthly rent 1 “> $15,000” , 0 “<= $1,500”
6. Amount rent raised in last year Quasi-linear outcome: 0%, 1%, 6%, 11%, 16%, 26%
7. Raised rent due to changes in the market 1 “yes”,
0 “no”
8. Number of tenancies terminated in last year 1 “1 or more”,
0 “none”
9. Reason for terminating tenancy - fail to pay rent 1 “failed rent”,
0 “terminated for other reason”
10. Reason for terminating tenancy - paid rent late 1 “paid late”,
0 “terminated for other reason”
11. Reason for terminating tenancy - lost voucher 1 “lost voucher”,
0 “terminated for other reason”
12. Reason for terminating tenancy - broke rules 1 “broke rules”,
0 “terminated for other reason”
13. Reason for terminating tenancy - occupy 1 “so LL could occupy unit”,
0 “terminated for other reason”
14. Reason for terminating tenancy - sell unit 1 “sell unit”,
0 “terminated for other reason”
15. Reason for terminating tenancy - other reason 1 “other reason”,
0 “previously listed specific reason”
16. Terminating tenancy more often through court or directly with tenant 1 “with courts”,
0 “with tenant”
## Business Practices

# make binary for logistic regression

# tenant_income
land <-  land %>% 
   mutate(tenant_income_b = case_when(
      tenant_income == "Less than $25,000 per year" ~ 0,
      tenant_income == "$25,000-50,000 per year" ~ 0,
      TRUE ~ 1
   )) %>%
   set_value_labels(tenant_income_b = c("> $50,000" = 1, "<= $50,000" = 0)) %>%
   set_variable_labels(tenant_income_b = "Avg tenant income")


# rent_screen
land <- land %>%
  mutate(rent_screen_b = case_when(
   rent_screen == "Yes" ~ 1,
   TRUE ~ 0)) %>%
  set_value_labels(rent_screen_b = c("yes" = 1, "no" = 0)) %>%
   set_variable_labels(rent_screen_b = "Screening service")


# flex_decision = q26
land <- land %>%
  mutate(flex_decision_b = case_when(
   flex_decision == "Strongly agree" ~ 1,
   flex_decision == "Agree" ~ 1,
   flex_decision == "Neither agree nor disagree" ~ 0,
   flex_decision == "Disagree" ~ 0,
   flex_decision == "Strongly agree" ~ 0,
   flex_decision == "Refused" ~ 0))  %>%
  set_value_labels(flex_decision_b = c("agree" = 1, "disagree/neutral" = 0)) %>%
   set_variable_labels(flex_decision_b = "Flexible decisions")

# rent_voucher = q57
land <- land %>%
  mutate(rent_voucher_b = case_when(
   rent_voucher == "Yes" ~ 1,
   TRUE ~ 0)) %>%
  set_value_labels(rent_voucher_b = c("yes" = 1, "no, dk, missing" = 0)) %>%
   set_variable_labels(rent_voucher_b = "Rented to voucher")

# rent_monthly = q72
# NOTE - googled avg monthly rent in seattle: ~ $2000
# 214 missing (NA), 52 refused
land <- land %>%
  mutate(rent_monthly_b = case_when(
   rent_monthly == "Less than $500" ~ 0,
   rent_monthly == "$500-1,000" ~ 0,
   rent_monthly == "$1,001-1,500" ~ 0,
   rent_monthly == "Refused" ~ NA_real_,
   TRUE ~ 1))  %>%
  set_value_labels(rent_monthly_b = c("> $1,500" = 1, "<= $1,500" = 0)) %>%
   set_variable_labels(rent_monthly_b = "Avg. monthly rent")

# rent_raise = q85
# made quasi-numeric
land <- land %>%
  mutate(rent_raise_b = case_when(
   rent_raise == "0% (I have not raised the rent in a Seattle unit in the past year)" ~ 0,
   rent_raise == "1-5%" ~ 1,
   rent_raise == "6-10%" ~ 6,
   rent_raise == "11-15%" ~ 11,
   rent_raise == "16-25%" ~ 16,
   rent_raise == "More than 25%" ~ 26,
   rent_raise == "Refused" ~ NA_real_)) %>%
   set_variable_labels(rent_raise_b = "Pct. raised rent")

land <- land %>%
  mutate(rent_raise_market_b = case_when(
   rent_raise_market == "No" ~ 0,
   rent_raise_market == "Yes" ~ 1)) %>%
  set_value_labels(rent_raise_market_b = c("yes" = 1, "no" = 0)) %>%
   set_variable_labels(rent_raise_market_b = "Raise due to market")

# terminate_num = q67
land <- land %>%
  mutate(terminate_num_b = case_when(
   terminate_num == "0" ~ 0,
   terminate_num == "Refused" ~ NA_real_,
   TRUE ~ 1)) %>%
  set_value_labels(terminate_num_b = c("none" = 0, "1 or more/dk" = 1)) %>%
   set_variable_labels(terminate_num_b = "Number tenancies terminated")


# terminate_reason_pay = q68_1
land <- land %>%
  mutate(terminate_reason_pay_b = case_when(
   terminate_reason_pay ==  "Tenant(s) failed to pay rent or fees" ~ 1), 
   terminate_reason_pay_b = case_when( 
      terminate_reason_pay_b == 1 ~ 1,
      terminate_num_b ==1 ~ 0)) %>%
  set_value_labels(terminate_reason_pay_b = c("Failed to pay rent" = 1, "Other reason" = 0)) %>%
   set_variable_labels(terminate_reason_pay_b = "Termination reason - pay rent")

# terminate_reason_paylate = q68_2
land <- land %>%
  mutate(terminate_reason_paylate_b = case_when(
   terminate_reason_paylate ==  "Tenant(s) consistently paid rent/fees late" ~ 1), 
   terminate_reason_paylate_b = case_when( 
      terminate_reason_paylate_b == 1 ~ 1,
      terminate_num_b ==1 ~ 0)) %>%
  set_value_labels(terminate_reason_paylate_b = c("Paid late" = 1, "Other reason" = 0)) %>%
   set_variable_labels(terminate_reason_paylate_b = "Termination reason - late rent")

# terminate_reason_voucher = q68_3
land <- land %>%
  mutate(terminate_reason_voucher_b = case_when(
   terminate_reason_voucher ==  "Tenant lost their housing voucher" ~ 1), 
   terminate_reason_voucher_b = case_when( 
      terminate_reason_voucher_b == 1 ~ 1,
      terminate_num_b ==1 ~ 0)) %>%
  set_value_labels(terminate_reason_voucher_b = c("Lost voucher" = 1, "Other reason" = 0)) %>%
   set_variable_labels(terminate_reason_voucher_b = "Termination reason - lost voucher")

# terminate_reason_rules = q68_4
land <- land %>%
  mutate(terminate_reason_rules_b = case_when(
   terminate_reason_rules ==  "Tenant(s) failed to comply with rules of rental agreement (other than regarding rent) " ~ 1), 
   terminate_reason_rules_b = case_when( 
      terminate_reason_rules_b == 1 ~ 1,
      terminate_num_b ==1 ~ 0)) %>%
  set_value_labels(terminate_reason_rules_b = c("Broke rules" = 1, "Other reason" = 0)) %>%
   set_variable_labels(terminate_reason_rules_b = "Termination reason - rules")

# terminate_reason_occupy = q68_5
land <- land %>%
  mutate(terminate_reason_occupy_b = case_when(
   terminate_reason_occupy ==  "So that you or a family member could occupy the unit" ~ 1), 
   terminate_reason_occupy_b = case_when( 
      terminate_reason_occupy_b == 1 ~ 1,
      terminate_num_b ==1 ~ 0)) %>%
  set_value_labels(terminate_reason_occupy_b = c("LL occupy unit" = 1, "Other reason" = 0)) %>%
   set_variable_labels(terminate_reason_occupy_b = "Termination reason - occupy unit")

# terminate_reason_sell = q68_6
land <- land %>%
  mutate(terminate_reason_sell_b = case_when(
   terminate_reason_sell ==  "So that you could sell the unit" ~ 1), 
   terminate_reason_sell_b = case_when( 
      terminate_reason_sell_b == 1 ~ 1,
      terminate_num_b ==1 ~ 0)) %>%
  set_value_labels(terminate_reason_sell_b = c("Sell unit" = 1, "Other reason" = 0)) %>%
   set_variable_labels(terminate_reason_sell_b = "Termination reason - sell")

# terminate_reason_other = q68_7
land <- land %>%
  mutate(terminate_reason_other_b = case_when(
   terminate_reason_other ==  "Other" ~ 1), 
   terminate_reason_other_b = case_when( 
      terminate_reason_other_b == 1 ~ 1,
      terminate_num_b ==1 ~ 0)) %>%
  set_value_labels(terminate_reason_other_b = c("Other reason" = 1, "One of specific reasons" = 0)) %>%
   set_variable_labels(terminate_reason_other_b = "Termination reason - other")

# terminate_court = q69
land <- land %>%
  mutate(terminate_court_b = case_when(
   terminate_court == " Always directly with the tenant" ~ 0,
   terminate_court == "Through the courts and directly with the tenant, but more often directly with the tenant" ~ 0,
   terminate_court == "Refulsed" ~ NA_real_,
   TRUE ~ 1)) %>%
  set_value_labels(terminate_court_b = c("with tenant" = 0, "with courts" = 1)) %>%
   set_variable_labels(terminate_reason_other_b = "Termination within court")

Landlord Characteristics

waffle_data1 <- c(`Small Landlords (1-4 units)`=(2946), 
                 `Large Landlords (5+ units)`=890)
 
# # weighted
# waffle_data2 <- c(`Small Landlords (1-4 units)`=(3235), 
#                  `Large Landlords (5+ units)`=601)


w1 <- waffle(waffle_data1/100, rows=5, size=1, colors=c("pink", "red"),
       title="77% of respondents are small landlords (unweighted)", 
       xlab="One square ~ 100 landlords")


# w2 <- waffle(waffle_data2/100, rows=5, size=1, colors=c("pink", "red"),
#        title="weighted: 84% of respondents are small landlords", 
#        xlab="One square ~ 100 landlords")

grid.arrange(w1)

# PIE CHART - DIFFICULT TO FIGURE OUT ....
# land %>%  ggplot(aes(x="",
#                      y=ll_size,
#                      fill=ll_size)) +
#   geom_bar(stat="identity", width=1) +
#   coord_polar("y", start=0) +
#   theme_void() +
#    labs(title = "Landlord size and financial role",
#        fill = "Landlord Size") 




One-third of big landlords have less than 10 years of tenure, while half of small landlords have 10 or less years.


land %>%  ggplot(aes(x=ll_size,
                    fill=forcats::fct_rev(tenure))) +
  geom_bar(position='fill') +
  labs(y = "Prop",
       x = "Landlord size",
       title = "Landlord size and tenure") 




Very few small landlords cited primary income, though over one-third of big landlords cite their rental units as primary income. Most small landlords use rental units as an investment.


land %>%  ggplot(aes(x=ll_size,
                    fill=finrole_coll)) +
  geom_bar(position='fill') +
  labs(y = "Prop",
       x = "Landlord size",
       title = "Landlord size and financial role",
       fill = "Financial Role") 




Median number of units ranges from 1-3 regardless of tenure.


# create means to plot
mean1 <- aggregate(q7 ~ tenure, land, mean)
median1 <- aggregate(q7 ~ tenure, land, median)
  


land %>% select(tenure, q7, finrole_coll) %>% na.omit() %>%
  ggplot(aes(x=tenure,
                    y=q7,
                    color=tenure)) +
  geom_boxplot() +
  geom_jitter(height = 0.15, alpha=0.3) +
  geom_hline(yintercept=5, 
                color = "red", size=0.7) +
  scale_y_continuous(limits=(c(NA,1000)),
                             trans='log10') +
  labs(y = "Number of units",
       x = "Tenure",
       title = "Landlord characteristics and tenure",
       subtitle = "Red line indicates threshold for *big landlords*") +
  geom_text(data = mean1, aes(label = paste("mean = ",round(q7, 1)), y = 800), size = 3) +
  geom_text(data = median1, aes(label =  paste("median = ", round(q7, 1)), y = 1000), size = 3) 




Median number of units ranges from 7-30 for landlords who use rental units as primary income.


# create means to plot
mean1 <- aggregate(q7 ~ tenure * finrole_coll, land, mean)
median1 <- aggregate(q7 ~ tenure * finrole_coll, land, median)
  

land %>% select(tenure, q7, finrole_coll) %>% na.omit() %>%
  ggplot(aes(x=tenure,
                    y=q7,
                    color=finrole_coll,
                    na.rm=TRUE)) +
  geom_boxplot() +
  geom_point(position=position_jitterdodge(jitter.height = 0.15), alpha=0.3) +
  geom_hline(yintercept=5, 
                color = "red", size=0.7) +
  scale_y_continuous(limits=(c(NA,1000)),
                             trans='log10') +
  theme(legend.position="bottom") +
  labs(y = "Number of units",
       x = "Tenure",
       title = "Landlord characteristics, tenure, and finances",
       subtitle = "Red line indicates threshold for *big landlords*",
       color = "Financial Role") +
  geom_text(data=median1, aes(label =paste("median = ", label=round(q7,1)), 
                            y= 500, 
                            group=finrole_coll),
                            size = 2.75,
            position=ggstance::position_dodgev(height=0.45))

Correlation

Initial look at model variables. Below I’ve forced the business practices to be binary outcomes or quasi-numeric for a correlation matrix. FYI - Q7 is the total number of units.

  • No strong correlations
  • Monthly rent and tenant income are correlated (0.4)
  • Number of buildings and renting to voucher holders correlated (0.4)
  • Terminations through the courts and number of terminations are negatively correlated (0.4)
# correlation map
land %>% select(q7, total_bldgs_b, tenure_b,
                tenant_income_b, rent_screen_b, flex_decision_b,
                rent_voucher_b, rent_monthly_b, rent_raise_b, rent_raise_market_b, terminate_num_b,
                terminate_court_b) %>%
   ggcorr(,nbreaks = 5,
          label=TRUE,
          hjust = 1, 
          size = 4)




Models

tbl_m1 <- tbl_regression(m1, exponentiate = TRUE)%>%
  bold_p() %>% italicize_levels() %>%
  add_glance_source_note()

tbl_m2 <- tbl_regression(m2, exponentiate = TRUE)%>%
  bold_p() %>% italicize_levels() %>%
  add_glance_source_note()

tbl_m3 <- tbl_regression(m3, exponentiate = TRUE)%>%
  bold_p() %>% italicize_levels() %>%
  add_glance_source_note()

tbl_m4 <- tbl_regression(m4, exponentiate = TRUE)%>%
  bold_p() %>% italicize_levels() %>%
  add_glance_source_note()

tbl_m5 <- tbl_regression(m5, exponentiate = TRUE)%>%
  bold_p() %>% italicize_levels() %>%
  add_glance_source_note()

tbl_m6 <- tbl_regression(m6, exponentiate = TRUE)%>%
  bold_p() %>% italicize_levels() %>%
  add_glance_source_note()

tbl_m7 <- tbl_regression(m7, exponentiate = TRUE)%>%
  bold_p() %>% italicize_levels() %>%
  add_glance_source_note()

tbl_m8 <- tbl_regression(m8, exponentiate = TRUE)%>%
  bold_p() %>% italicize_levels() %>%
  add_glance_source_note()

tbl_m9 <- tbl_regression(m9, exponentiate = TRUE)%>%
  bold_p() %>% italicize_levels() %>%
  add_glance_source_note()

tbl_m10 <- tbl_regression(m10, exponentiate = TRUE)%>%
  bold_p() %>% italicize_levels() %>%
  add_glance_source_note()

# tbl_m13 <- tbl_regression(m13, exponentiate = TRUE)%>%
#   bold_p() %>% italicize_levels() %>%
#   add_glance_source_note()

tbl_m14 <- tbl_regression(m14, exponentiate = TRUE)%>%
  bold_p() %>% italicize_levels() %>%
  add_glance_source_note()

tbl_m16 <- tbl_regression(m16, exponentiate = TRUE)%>%
  bold_p() %>% italicize_levels() %>%
  add_glance_source_note()




  • Tenant Income
    • The odds of renting to someone with more than $50,000 of annual income is 0.58 for big landlords compared to small landlords.
    • Similarly, the odds of renting to someone with more than $50,000 of annual income is lower for those with 2-4 years of tenure and 10-19 years of tenure compared to newer landlords with less than 2 years of experience (0.4 and 0.29, respectively).


  • Rent Screening
    • Big landlords have 1.78 times the odds of using a third-party screener than small landlords.


  • Flexible leasing decisions
    • Having more years of tenure is significantly associated with making flexible leasing decisions compared to new landlords with less than 2 years of experience.


  • Renting to voucher holders
    • Big landlords have 6.3 the odds of renting to a voucher holder than small landlords.
    • Those with more tenure are more likely to rent to voucher holders than newer landlords.
    • Landlords who use rentals for primary income are 1.86 more likely to rent to voucher holders than those who use rentals as an investment income only.
tbl_merge(
    tbls = list(tbl_m1,
                tbl_m2,
                tbl_m3,
                tbl_m4),
    tab_spanner = c("Tenant income",
                   "Rent screen",
                   "Flex decision",
                   "Rent to vouchers"))
Characteristic Tenant income Rent screen Flex decision Rent to vouchers
OR (95% CI)1 p-value OR (95% CI)1 p-value OR (95% CI)1 p-value OR (95% CI)1 p-value
Landlord size
small (1-4 units)
big (5+ units) 0.58 (0.48 to 0.69) <0.001 1.78 (1.50 to 2.12) <0.001 0.94 (0.79 to 1.13) 0.53 6.30 (5.18 to 7.68) <0.001
tenure
0-2 yrs
2-4 yrs 0.40 (0.22 to 0.67) <0.001 0.60 (0.42 to 0.86) 0.005 1.63 (1.13 to 2.36) 0.010 2.37 (1.21 to 5.24) 0.020
5-9 yrs 0.67 (0.36 to 1.15) 0.16 0.69 (0.48 to 1.01) 0.054 1.54 (1.04 to 2.28) 0.031 1.36 (0.66 to 3.14) 0.43
10-19 yrs 0.29 (0.16 to 0.48) <0.001 0.41 (0.29 to 0.59) <0.001 2.01 (1.39 to 2.91) <0.001 4.11 (2.12 to 9.03) <0.001
20+ yrs 0.60 (0.33 to 1.02) 0.074 0.65 (0.45 to 0.93) 0.020 1.69 (1.16 to 2.48) 0.006 1.24 (0.61 to 2.82) 0.57
Financial role
Investment Income
Multiple Roles 1.02 (0.85 to 1.23) 0.82 0.96 (0.82 to 1.12) 0.60 1.12 (0.95 to 1.31) 0.18 1.16 (0.93 to 1.44) 0.19
Primary Income 0.84 (0.67 to 1.07) 0.16 1.21 (0.97 to 1.51) 0.086 1.21 (0.95 to 1.54) 0.12 1.86 (1.44 to 2.40) <0.001
Null deviance = 4,109; Null df = 3,639; Log-likelihood = -1,972; AIC = 3,961; BIC = 4,010; Deviance = 3,945; Residual df = 3,632; No. Obs. = 3,640

1 OR = Odds Ratio, CI = Confidence Interval




  • Monthly Rent

    • Big landlords have a 0.7 reduction in the odds of renting a unit with > $1,500 rent compared to small landlords.


  • Raised the rent in the last year
    • Big landlords have 2.88 times the odds of raising the rent in the last year compared to small landlords.
    • Landlords of greater tenure lengths were also more likely to have reported raising the rent in the last year compared to newer landlords.
    • Landlords who use rental units as their primary income had 1.91 times the odds of increasing the rent compared to landlords who use units as an investment income only.


tbl_merge(
    tbls = list(tbl_m5,
                tbl_m6,
                tbl_m7),
    tab_spanner = c("Monthly rent",
                   "Raise rent",
                   "Raise rent due to market"))
Characteristic Monthly rent Raise rent Raise rent due to market
OR (95% CI)1 p-value exp(Beta) (95% CI)1 p-value OR (95% CI)1 p-value
Landlord size
small (1-4 units)
big (5+ units) 0.30 (0.25 to 0.35) <0.001 2.88 (1.91 to 4.34) <0.001 1.05 (0.85 to 1.30) 0.65
tenure
0-2 yrs
2-4 yrs 0.43 (0.25 to 0.70) 0.001 7.70 (3.27 to 18.1) <0.001 0.77 (0.38 to 1.63) 0.48
5-9 yrs 0.85 (0.48 to 1.44) 0.55 4.32 (1.75 to 10.7) 0.002 0.71 (0.34 to 1.52) 0.36
10-19 yrs 0.29 (0.17 to 0.47) <0.001 5.44 (2.32 to 12.7) <0.001 0.55 (0.27 to 1.16) 0.10
20+ yrs 0.61 (0.35 to 1.00) 0.063 5.08 (2.12 to 12.2) <0.001 0.83 (0.40 to 1.75) 0.61
Financial role
Investment Income
Multiple Roles 1.10 (0.92 to 1.32) 0.28 1.34 (0.92 to 1.94) 0.12 1.29 (1.05 to 1.59) 0.015
Primary Income 1.05 (0.83 to 1.33) 0.68 1.91 (1.13 to 3.23) 0.016 1.31 (1.00 to 1.72) 0.049
Null deviance = 4,371; Null df = 3,592; Log-likelihood = -1,995; AIC = 4,005; BIC = 4,055; Deviance = 3,989; Residual df = 3,585; No. Obs. = 3,593

1 OR = Odds Ratio, CI = Confidence Interval, CI = Confidence Interval




  • Terminated a tenancy
    • Big landlords had 3.79 times the odds of ever terminating a tenancy compared to small landlords.
    • The odds were also higher for those who use rental units as a primary income than those who use them as investments only.


  • Terminated due to failure to pay
    • Big landlords had 3.8 times the odds of ever terminating a tenancy due to a tenant’s failure to pay compared to small landlords.


  • Terminated due to late payment
    • There was no relationship between those who terminated due to late payments and size of landlord, tenure, or financial role.


  • Terminated because landlord wanted to sell unit
    • Big landlords had lower odds of terminating because they wanted to sell a unit compared to small landlords.


  • Terminated using the court system
    • Big landlords had lower odds (0.11) of using the court system to handle a termination compared to small landlords.
tbl_merge(
    tbls = list(tbl_m8,
                tbl_m9,
                tbl_m10,
                tbl_m14,
                tbl_m16),
    tab_spanner = c("Terminated tenancy",
                   "Terminate - fail to pay",
                   "Terminate - pay late",
                   "Terminate - sell",
                   "Terminate within court"))
Characteristic Terminated tenancy Terminate - fail to pay Terminate - pay late Terminate - sell Terminate within court
OR (95% CI)1 p-value OR (95% CI)1 p-value OR (95% CI)1 p-value OR (95% CI)1 p-value OR (95% CI)1 p-value
Landlord size
small (1-4 units)
big (5+ units) 3.79 (3.00 to 4.77) <0.001 3.80 (2.45 to 5.96) <0.001 1.58 (0.96 to 2.62) 0.073 0.45 (0.23 to 0.85) 0.016 0.11 (0.07 to 0.20) <0.001
tenure
0-2 yrs
2-4 yrs 1.16 (0.65 to 2.25) 0.63 1.45 (0.40 to 5.67) 0.58 0.92 (0.28 to 3.58) 0.89 1.53 (0.27 to 29.0) 0.69 1.29 (0.29 to 3.97) 0.69
5-9 yrs 0.93 (0.49 to 1.87) 0.83 1.06 (0.26 to 4.50) 0.94 0.64 (0.17 to 2.76) 0.52 2.52 (0.39 to 49.6) 0.41 1.03 (0.22 to 3.53) 0.96
10-19 yrs 0.97 (0.55 to 1.88) 0.93 0.95 (0.27 to 3.69) 0.94 0.51 (0.15 to 2.00) 0.29 1.72 (0.31 to 32.4) 0.61 1.84 (0.42 to 5.57) 0.34
20+ yrs 0.92 (0.50 to 1.82) 0.80 1.33 (0.35 to 5.41) 0.68 0.57 (0.16 to 2.36) 0.41 1.26 (0.19 to 24.8) 0.84 2.00 (0.43 to 6.96) 0.31
Financial role
Investment Income
Multiple Roles 0.94 (0.73 to 1.22) 0.66 1.07 (0.64 to 1.79) 0.79 0.79 (0.43 to 1.42) 0.45 1.67 (0.82 to 3.35) 0.15 1.14 (0.62 to 2.15) 0.69
Primary Income 1.57 (1.18 to 2.08) 0.002 1.96 (1.15 to 3.34) 0.013 0.79 (0.43 to 1.42) 0.43 1.48 (0.66 to 3.28) 0.33 0.47 (0.28 to 0.80) 0.006
Null deviance = 2,663; Null df = 3,619; Log-likelihood = -1,232; AIC = 2,480; BIC = 2,529; Deviance = 2,464; Residual df = 3,612; No. Obs. = 3,620

1 OR = Odds Ratio, CI = Confidence Interval

model_list <- list("Tenant income" = m1,
                   "Rent screen" = m2,
                   "Flex decision" = m3,
                   "Rent to vouchers" = m4,
                   "Monthly rent" = m5,
                   "Raise rent" = m6,
                   "Raise rent due to market" = m7,
                   "Terminated tenancy" = m8,
                   "Terminate - fail to pay" = m9,
                   "Terminate - pay late" = m10,
                   "Terminate - sell" = m14,
                   "Terminate within court" = m16)

# msummary(model_list, 
#          estimate = "{estimate}{stars}",
#          title = "Business Practice Models")

Next Steps

  • Model attitudes as outcomes, controlling for landlord characteristics
  • Model attitudes as outcomes, controlling for landlord characteristics and business practices
    • Business practices will stay as binary outcomes for the controls