7/31/2024 Add size (total stuff) control to the models.
Updated with newly derived variables.
Data Preparation
First, import the sampled and coded data set
#import the raw data file
cqc_skills <- read_rds(here("data","cleaned_sfc_ipw.rds"))
cqc_skills %>%
mutate(overall = ifelse(domain == "Overall", 1, 0)) %>%
group_by(form) %>%
summarize(count_rating_unit = sum(overall),
count_rating = n())
## # A tibble: 6 × 3
## form count_rating_unit count_rating
## <fct> <dbl> <int>
## 1 FPO 5122 30732
## 2 CIC 51 306
## 3 GOV 378 2268
## 4 IND 298 1788
## 5 NPO 1405 8430
## 6 <NA> 4 24
nrow(cqc_skills)
## [1] 43548
summary(cqc_skills[, c("turnover", "turnover0", "staff_level", "staff_level0")])
## turnover turnover0 staff_level staff_level0
## Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000
## 1st Qu.: 7.143 1st Qu.: 6.885 1st Qu.: 0.500 1st Qu.: 0.794
## Median : 18.868 Median : 18.182 Median : 0.808 Median : 1.273
## Mean : 31.132 Mean : 29.171 Mean : 1.204 Mean : 1.647
## 3rd Qu.: 38.298 3rd Qu.: 38.095 3rd Qu.: 1.357 3rd Qu.: 1.917
## Max. :4500.000 Max. :704.348 Max. :55.333 Max. :67.333
## NA's :10656 NA's :10644 NA's :5004 NA's :5004
where “turnover0” and “staff_level0” denote the older/crude way to
calculate the variables.
Modelis Used / Reported
model_order_weighted <- clm(rating ~ form + care_home + age + totalstaff + region + during_covid,
data = filter(cqc_skills, domain == "Overall"),
link = "logit",
weights = ipw)
model_staff_weighted <- lm(staff_level ~ form + care_home + age + totalstaff + region + during_covid,
data = filter(cqc_skills, domain == "Overall"),
weights = ipw)
staff_direct_order_weighted <- clm(rating ~ form + staff_level + care_home + age + totalstaff + region + during_covid,
data = filter(cqc_skills, domain == "Overall"),
link = "logit",
weights = ipw)
model_turnover_weighted <- lm(turnover ~ form + care_home + age + totalstaff + region + during_covid,
data = filter(cqc_skills, domain == "Overall"),
weights = ipw)
turnover_direct_order_weighted <- clm(rating ~ form + turnover + care_home + age + totalstaff + region + during_covid,
data = filter(cqc_skills, domain == "Overall"),
link = "logit",
weights = ipw)
results table for new staffing variables
new_models <- modelsummary(list("total effect" = model_order_weighted,
"staffing by sector"= model_staff_weighted,
"direct effect: staffing control" = staff_direct_order_weighted,
"turnover by sector"= model_turnover_weighted,
"direct effect: turnover control" = turnover_direct_order_weighted),
coef_omit = "region", exponentiate = F,
statistic = "({p.value}) {stars}")
new_models
tinytable_y7vxgfend0hry1uw3iwv
| |
total effect |
staffing by sector |
direct effect: staffing control |
turnover by sector |
direct effect: turnover control |
| Inadequate|Req improv |
-5.275 |
|
-5.221 |
|
-5.354 |
| |
(<0.001) *** |
|
(<0.001) *** |
|
(<0.001) *** |
| Req improv|Good |
-2.418 |
|
-2.377 |
|
-2.430 |
| |
(<0.001) *** |
|
(<0.001) *** |
|
(<0.001) *** |
| Good|Outstanding |
2.858 |
|
2.900 |
|
2.886 |
| |
(<0.001) *** |
|
(<0.001) *** |
|
(<0.001) *** |
| formCIC |
0.355 |
0.526 |
0.240 |
-11.331 |
0.147 |
| |
(0.233) |
(0.039) * |
(0.447) |
(0.577) |
(0.726) |
| formGOV |
0.206 |
0.643 |
0.092 |
-24.204 |
0.185 |
| |
(0.134) |
(<0.001) *** |
(0.518) |
(<0.001) *** |
(0.189) |
| formIND |
-0.223 |
-0.154 |
-0.169 |
-15.694 |
-0.218 |
| |
(0.017) * |
(0.067) + |
(0.095) + |
(0.004) ** |
(0.043) * |
| formNPO |
0.305 |
0.501 |
0.223 |
-10.517 |
0.265 |
| |
(<0.001) *** |
(<0.001) *** |
(0.002) ** |
(0.006) ** |
(<0.001) *** |
| care_homeY |
-0.512 |
0.287 |
-0.568 |
-8.921 |
-0.591 |
| |
(<0.001) *** |
(<0.001) *** |
(<0.001) *** |
(0.003) ** |
(<0.001) *** |
| age |
0.028 |
-0.005 |
0.028 |
-0.163 |
0.028 |
| |
(<0.001) *** |
(0.210) |
(<0.001) *** |
(0.580) |
(<0.001) *** |
| totalstaff |
0.002 |
0.003 |
0.001 |
-0.041 |
0.002 |
| |
(0.002) ** |
(<0.001) *** |
(0.032) * |
(0.158) |
(0.009) ** |
| during_covidTRUE |
-1.773 |
-0.185 |
-1.756 |
6.693 |
-1.746 |
| |
(<0.001) *** |
(<0.001) *** |
(<0.001) *** |
(0.024) * |
(<0.001) *** |
| (Intercept) |
|
0.860 |
|
50.649 |
|
| |
|
(<0.001) *** |
|
(<0.001) *** |
|
| staff_level |
|
|
0.077 |
|
|
| |
|
|
(<0.001) *** |
|
|
| turnover |
|
|
|
|
0.000 |
| |
|
|
|
|
(0.501) |
| Num.Obs. |
12933 |
6162 |
11430 |
5263 |
9770 |
| R2 |
|
0.038 |
|
0.010 |
|
| R2 Adj. |
|
0.035 |
|
0.007 |
|
| AIC |
15412.8 |
23060.0 |
13538.3 |
63061.1 |
11384.3 |
| BIC |
15554.7 |
23181.1 |
13685.2 |
63179.3 |
11528.0 |
| Log.Lik. |
|
-11512.001 |
|
-31512.526 |
|
| RMSE |
2.27 |
1.62 |
2.28 |
91.84 |
2.27 |
Derive coefficient plots
# Tidy the models and filter out the threshold terms
staff_tidied <- tidy(model_staff_weighted, conf.int = TRUE) %>%
filter(!term %in% c("(Intercept)", "Inadequate|Req improv", "Req improv|Good", "Good|Outstanding"))
turnover_tidied <- tidy(model_turnover_weighted, conf.int = TRUE) %>%
filter(!term %in% c("(Intercept)", "Inadequate|Req improv", "Req improv|Good", "Good|Outstanding"))
order_tidied <- tidy(model_order_weighted, conf.int = TRUE) %>%
filter(!term %in% c("(Intercept)", "Inadequate|Req improv", "Req improv|Good", "Good|Outstanding")) %>%
mutate(model = "Total effects")
staff_direct_tidied <- tidy(staff_direct_order_weighted, conf.int = TRUE) %>%
filter(!term %in% c("(Intercept)", "Inadequate|Req improv", "Req improv|Good", "Good|Outstanding")) %>%
mutate(model = "Direct effects")
# Combine order and staff direct models
combined_tidied <- bind_rows(order_tidied, staff_direct_tidied)
# Tidy the models and filter out the threshold terms
turnover_tidied <- tidy(model_order_weighted, conf.int = TRUE) %>%
filter(!term %in% c("(Intercept)", "Inadequate|Req improv", "Req improv|Good", "Good|Outstanding")) %>%
mutate(model = "Total Effect")
turnover_direct_tidied <- tidy(turnover_direct_order_weighted, conf.int = TRUE) %>%
filter(!term %in% c("(Intercept)", "Inadequate|Req improv", "Req improv|Good", "Good|Outstanding")) %>%
mutate(model = "Direct Effect")
# Combine total effect and direct effect models
combined_turnover_tidied <- bind_rows(turnover_tidied, turnover_direct_tidied)
ggplot(staff_tidied, aes(x = estimate, y = term)) +
geom_vline(xintercept = 0, color = "red", linetype = "dotted") +
geom_pointrange(aes(xmin = conf.low, xmax = conf.high)) +
labs(x = "Coefficient estimate", y = NULL) +
theme_minimal() +
ggtitle("Staffing by sector Model Coefficient Plot")

ggplot(turnover_tidied, aes(x = estimate, y = term)) +
geom_vline(xintercept = 0, color = "red", linetype = "dotted") +
geom_pointrange(aes(xmin = conf.low, xmax = conf.high)) +
labs(x = "Coefficient estimate", y = NULL) +
theme_minimal() +
ggtitle("Turnover by Sector Model Coefficient Plot")

ggplot(combined_tidied, aes(x = estimate, y = term, color = model, shape = model)) +
geom_vline(xintercept = 0, color = "red", linetype = "dotted") +
geom_pointrange(aes(xmin = conf.low, xmax = conf.high), position = position_dodge(width = 0.5)) +
labs(x = "Coefficient estimate", y = NULL) +
theme_minimal() +
ggtitle("Staffing Level: total effects and direct effects")

ggplot(combined_turnover_tidied, aes(x = estimate, y = term, color = model, shape = model)) +
geom_vline(xintercept = 0, color = "red", linetype = "dotted") +
geom_pointrange(aes(xmin = conf.low, xmax = conf.high), position = position_dodge(width = 0.5)) +
labs(x = "Coefficient estimate", y = NULL) +
theme_minimal() +
ggtitle("Turnover: Total Effects and Direct Effects")

Models for other domains (currently without totalstaff control)
“Overall”,“Safe”,“Effective”, “Caring”, “Well-led”, “Responsive”
“Safe” domain
model_order_weighted_safe <- clm(rating ~ form + service_type_selected + age + region + during_covid,
data = filter(cqc_skills, domain == "Safe"),
link = "logit",
weights = ipw)
model_staff_weighted_safe <- lm(staff_level ~ form + service_type_selected + age + region + during_covid,
data = filter(cqc_skills, domain == "Safe"),
weights = ipw)
staff_direct_order_weighted_safe <- clm(rating ~ form + staff_level + service_type_selected + age + region + during_covid,
data = filter(cqc_skills, domain == "Safe"),
link = "logit",
weights = ipw)
model_turnover_weighted_safe <- lm(turnover ~ form + service_type_selected + age + region + during_covid,
data = filter(cqc_skills, domain == "Safe"),
weights = ipw)
turnover_direct_order_weighted_safe <- clm(rating ~ form + turnover + service_type_selected + age + region + during_covid,
data = filter(cqc_skills, domain == "Safe"),
link = "logit",
weights = ipw)
safe_models <- modelsummary(list("full weighted" = model_order_weighted_safe,
"staffing weighted"= model_staff_weighted_safe,
"staff direct weighted" = staff_direct_order_weighted_safe,
"turnover weighted"= model_turnover_weighted_safe,
"turnover direct weighted" = turnover_direct_order_weighted_safe),
coef_omit = "region", exponentiate = F,
statistic = "({p.value}) {stars}")
safe_models
tinytable_jzbd2g8wn99w6o0lok2w
| |
full weighted |
staffing weighted |
staff direct weighted |
turnover weighted |
turnover direct weighted |
| Inadequate|Req improv |
-4.171 |
|
-4.032 |
|
-4.171 |
| |
(<0.001) *** |
|
(<0.001) *** |
|
(<0.001) *** |
| Req improv|Good |
-1.356 |
|
-1.178 |
|
-1.220 |
| |
(<0.001) *** |
|
(<0.001) *** |
|
(<0.001) *** |
| Good|Outstanding |
6.376 |
|
6.633 |
|
6.396 |
| |
(<0.001) *** |
|
(<0.001) *** |
|
(<0.001) *** |
| formCIC |
0.161 |
0.494 |
-0.057 |
-12.839 |
-0.219 |
| |
(0.637) |
(0.048) * |
(0.870) |
(0.534) |
(0.614) |
| formGOV |
0.325 |
0.707 |
0.196 |
-22.042 |
0.287 |
| |
(0.062) + |
(<0.001) *** |
(0.269) |
(0.004) ** |
(0.101) |
| formIND |
-0.250 |
-0.222 |
-0.151 |
-13.983 |
-0.319 |
| |
(0.010) * |
(0.007) ** |
(0.155) |
(0.012) * |
(0.004) ** |
| formNPO |
0.502 |
0.418 |
0.411 |
-9.028 |
0.409 |
| |
(<0.001) *** |
(<0.001) *** |
(<0.001) *** |
(0.027) * |
(<0.001) *** |
| service_type_selectedcare home w/o nursing |
0.284 |
0.316 |
0.286 |
-8.583 |
0.331 |
| |
(<0.001) *** |
(<0.001) *** |
(<0.001) *** |
(0.019) * |
(<0.001) *** |
| service_type_selectedDomicilary Care |
0.673 |
-0.165 |
0.737 |
4.404 |
0.718 |
| |
(<0.001) *** |
(0.005) ** |
(<0.001) *** |
(0.286) |
(<0.001) *** |
| service_type_selectedSupported Living |
0.990 |
1.392 |
0.876 |
-9.017 |
1.004 |
| |
(<0.001) *** |
(<0.001) *** |
(<0.001) *** |
(0.209) |
(<0.001) *** |
| age |
0.023 |
0.000 |
0.020 |
-0.265 |
0.027 |
| |
(<0.001) *** |
(0.916) |
(<0.001) *** |
(0.379) |
(<0.001) *** |
| during_covidTRUE |
-1.446 |
-0.119 |
-1.426 |
5.650 |
-1.415 |
| |
(<0.001) *** |
(0.007) ** |
(<0.001) *** |
(0.066) + |
(<0.001) *** |
| (Intercept) |
|
1.000 |
|
47.128 |
|
| |
|
(<0.001) *** |
|
(<0.001) *** |
|
| staff_level |
|
|
0.161 |
|
|
| |
|
|
(<0.001) *** |
|
|
| turnover |
|
|
|
|
0.000 |
| |
|
|
|
|
(0.384) |
| Num.Obs. |
12491 |
5984 |
11116 |
5085 |
9474 |
| R2 |
|
0.075 |
|
0.011 |
|
| R2 Adj. |
|
0.073 |
|
0.008 |
|
| AIC |
12241.1 |
22011.8 |
10678.9 |
61049.5 |
9109.1 |
| BIC |
12389.8 |
22139.1 |
10832.5 |
61173.6 |
9259.4 |
| Log.Lik. |
|
-10986.907 |
|
-30505.731 |
|
| RMSE |
2.11 |
1.58 |
2.11 |
93.27 |
2.11 |
“Effective domain”
model_order_weighted_effective <- clm(rating ~ form + service_type_selected + age + region + during_covid,
data = filter(cqc_skills, domain == "Effective"),
link = "logit",
weights = ipw)
model_staff_weighted_effective <- lm(staff_level ~ form + service_type_selected + age + region + during_covid,
data = filter(cqc_skills, domain == "Effective"),
weights = ipw)
staff_direct_order_weighted_effective <- clm(rating ~ form + staff_level + service_type_selected + age + region + during_covid,
data = filter(cqc_skills, domain == "Effective"),
link = "logit",
weights = ipw)
model_turnover_weighted_effective <- lm(turnover ~ form + service_type_selected + age + region + during_covid,
data = filter(cqc_skills, domain == "Effective"),
weights = ipw)
turnover_direct_order_weighted_effective <- clm(rating ~ form + turnover + service_type_selected + age + region + during_covid,
data = filter(cqc_skills, domain == "Effective"),
link = "logit",
weights = ipw)
effective_models <- modelsummary(list("full weighted" = model_order_weighted_effective,
"staffing weighted"= model_staff_weighted_effective,
"staff direct weighted" = staff_direct_order_weighted_effective,
"turnover weighted"= model_turnover_weighted_effective,
"turnover direct weighted" = turnover_direct_order_weighted_effective),
coef_omit = "region", exponentiate = F,
statistic = "({p.value}) {stars}")
effective_models
tinytable_u618u9eeahpm3d3tathx
| |
full weighted |
staffing weighted |
staff direct weighted |
turnover weighted |
turnover direct weighted |
| Inadequate|Req improv |
-5.773 |
|
-5.828 |
|
-5.931 |
| |
(<0.001) *** |
|
(<0.001) *** |
|
(<0.001) *** |
| Req improv|Good |
-1.877 |
|
-1.782 |
|
-1.895 |
| |
(<0.001) *** |
|
(<0.001) *** |
|
(<0.001) *** |
| Good|Outstanding |
4.884 |
|
4.982 |
|
4.842 |
| |
(<0.001) *** |
|
(<0.001) *** |
|
(<0.001) *** |
| formCIC |
-0.051 |
0.494 |
-0.222 |
-12.839 |
0.043 |
| |
(0.893) |
(0.048) * |
(0.567) |
(0.534) |
(0.936) |
| formGOV |
0.195 |
0.707 |
0.046 |
-22.042 |
0.138 |
| |
(0.338) |
(<0.001) *** |
(0.823) |
(0.004) ** |
(0.499) |
| formIND |
-0.391 |
-0.222 |
-0.188 |
-13.983 |
-0.211 |
| |
(<0.001) *** |
(0.007) ** |
(0.151) |
(0.012) * |
(0.127) |
| formNPO |
0.233 |
0.418 |
0.124 |
-9.028 |
0.165 |
| |
(0.011) * |
(<0.001) *** |
(0.204) |
(0.027) * |
(0.129) |
| service_type_selectedcare home w/o nursing |
0.333 |
0.316 |
0.309 |
-8.583 |
0.249 |
| |
(<0.001) *** |
(<0.001) *** |
(<0.001) *** |
(0.019) * |
(0.006) ** |
| service_type_selectedDomicilary Care |
0.604 |
-0.165 |
0.655 |
4.404 |
0.619 |
| |
(<0.001) *** |
(0.005) ** |
(<0.001) *** |
(0.286) |
(<0.001) *** |
| service_type_selectedSupported Living |
0.739 |
1.392 |
0.792 |
-9.017 |
0.758 |
| |
(<0.001) *** |
(<0.001) *** |
(<0.001) *** |
(0.209) |
(<0.001) *** |
| age |
0.021 |
0.000 |
0.019 |
-0.265 |
0.019 |
| |
(<0.001) *** |
(0.916) |
(0.005) ** |
(0.379) |
(0.015) * |
| during_covidTRUE |
-1.177 |
-0.119 |
-1.224 |
5.650 |
-1.161 |
| |
(<0.001) *** |
(0.007) ** |
(<0.001) *** |
(0.066) + |
(<0.001) *** |
| (Intercept) |
|
1.000 |
|
47.128 |
|
| |
|
(<0.001) *** |
|
(<0.001) *** |
|
| staff_level |
|
|
0.077 |
|
|
| |
|
|
(<0.001) *** |
|
|
| turnover |
|
|
|
|
-0.001 |
| |
|
|
|
|
(0.002) ** |
| Num.Obs. |
12047 |
5984 |
10733 |
5085 |
9135 |
| R2 |
|
0.075 |
|
0.011 |
|
| R2 Adj. |
|
0.073 |
|
0.008 |
|
| AIC |
9023.6 |
22011.8 |
7937.5 |
61049.5 |
6744.8 |
| BIC |
9171.5 |
22139.1 |
8090.5 |
61173.6 |
6894.3 |
| Log.Lik. |
|
-10986.907 |
|
-30505.731 |
|
| RMSE |
2.13 |
1.58 |
2.14 |
93.27 |
2.14 |
“Caring” domain
model_order_weighted_caring <- clm(rating ~ form + service_type_selected + age + region + during_covid,
data = filter(cqc_skills, domain == "Caring"),
link = "logit",
weights = ipw)
model_staff_weighted_caring <- lm(staff_level ~ form + service_type_selected + age + region + during_covid,
data = filter(cqc_skills, domain == "Caring"),
weights = ipw)
staff_direct_order_weighted_caring <- clm(rating ~ form + staff_level + service_type_selected + age + region + during_covid,
data = filter(cqc_skills, domain == "Caring"),
link = "logit",
weights = ipw)
model_turnover_weighted_caring <- lm(turnover ~ form + service_type_selected + age + region + during_covid,
data = filter(cqc_skills, domain == "Caring"),
weights = ipw)
turnover_direct_order_weighted_caring <- clm(rating ~ form + turnover + service_type_selected + age + region + during_covid,
data = filter(cqc_skills, domain == "Caring"),
link = "logit",
weights = ipw)
caring_models <- modelsummary(list("full weighted" = model_order_weighted_caring,
"staffing weighted"= model_staff_weighted_caring,
"staff direct weighted" = staff_direct_order_weighted_caring,
"turnover weighted"= model_turnover_weighted_caring,
"turnover direct weighted" = turnover_direct_order_weighted_caring),
coef_omit = "region", exponentiate = F,
statistic = "({p.value}) {stars}")
caring_models
tinytable_9vxd9g70qm1nuo2ry95j
| |
full weighted |
staffing weighted |
staff direct weighted |
turnover weighted |
turnover direct weighted |
| Inadequate|Req improv |
-7.035 |
|
-6.828 |
|
-6.739 |
| |
(<0.001) *** |
|
(<0.001) *** |
|
(<0.001) *** |
| Req improv|Good |
-2.768 |
|
-2.740 |
|
-2.894 |
| |
(<0.001) *** |
|
(<0.001) *** |
|
(<0.001) *** |
| Good|Outstanding |
3.925 |
|
3.942 |
|
3.950 |
| |
(<0.001) *** |
|
(<0.001) *** |
|
(<0.001) *** |
| formCIC |
0.710 |
0.494 |
0.691 |
-12.839 |
-0.043 |
| |
(0.039) * |
(0.048) * |
(0.050) + |
(0.534) |
(0.934) |
| formGOV |
0.004 |
0.707 |
-0.100 |
-22.042 |
0.000 |
| |
(0.985) |
(<0.001) *** |
(0.632) |
(0.004) ** |
(0.999) |
| formIND |
0.081 |
-0.222 |
0.135 |
-13.983 |
0.254 |
| |
(0.547) |
(0.007) ** |
(0.344) |
(0.012) * |
(0.092) + |
| formNPO |
0.194 |
0.418 |
0.188 |
-9.028 |
0.281 |
| |
(0.034) * |
(<0.001) *** |
(0.055) + |
(0.027) * |
(0.011) * |
| service_type_selectedcare home w/o nursing |
0.327 |
0.316 |
0.265 |
-8.583 |
0.153 |
| |
(<0.001) *** |
(<0.001) *** |
(0.007) ** |
(0.019) * |
(0.162) |
| service_type_selectedDomicilary Care |
0.882 |
-0.165 |
0.881 |
4.404 |
0.881 |
| |
(<0.001) *** |
(0.005) ** |
(<0.001) *** |
(0.286) |
(<0.001) *** |
| service_type_selectedSupported Living |
0.876 |
1.392 |
0.835 |
-9.017 |
0.793 |
| |
(<0.001) *** |
(<0.001) *** |
(<0.001) *** |
(0.209) |
(<0.001) *** |
| age |
0.040 |
0.000 |
0.038 |
-0.265 |
0.044 |
| |
(<0.001) *** |
(0.916) |
(<0.001) *** |
(0.379) |
(<0.001) *** |
| during_covidTRUE |
-1.071 |
-0.119 |
-1.047 |
5.650 |
-1.112 |
| |
(<0.001) *** |
(0.007) ** |
(<0.001) *** |
(0.066) + |
(<0.001) *** |
| (Intercept) |
|
1.000 |
|
47.128 |
|
| |
|
(<0.001) *** |
|
(<0.001) *** |
|
| staff_level |
|
|
0.019 |
|
|
| |
|
|
(0.300) |
|
|
| turnover |
|
|
|
|
0.000 |
| |
|
|
|
|
(0.371) |
| Num.Obs. |
11961 |
5984 |
10666 |
5085 |
9084 |
| R2 |
|
0.075 |
|
0.011 |
|
| R2 Adj. |
|
0.073 |
|
0.008 |
|
| AIC |
8061.2 |
22011.8 |
7238.0 |
61049.5 |
5955.4 |
| BIC |
8209.0 |
22139.1 |
7390.8 |
61173.6 |
6104.8 |
| Log.Lik. |
|
-10986.907 |
|
-30505.731 |
|
| RMSE |
2.24 |
1.58 |
2.25 |
93.27 |
2.24 |
“Well-led” domain
model_order_weighted_well_led <- clm(rating ~ form + service_type_selected + age + region + during_covid,
data = filter(cqc_skills, domain == "Well-led"),
link = "logit",
weights = ipw)
model_staff_weighted_well_led <- lm(staff_level ~ form + service_type_selected + age + region + during_covid,
data = filter(cqc_skills, domain == "Well-led"),
weights = ipw)
staff_direct_order_weighted_well_led <- clm(rating ~ form + staff_level + service_type_selected + age + region + during_covid,
data = filter(cqc_skills, domain == "Well-led"),
link = "logit",
weights = ipw)
model_turnover_weighted_well_led <- lm(turnover ~ form + service_type_selected + age + region + during_covid,
data = filter(cqc_skills, domain == "Well-led"),
weights = ipw)
turnover_direct_order_weighted_well_led <- clm(rating ~ form + turnover + service_type_selected + age + region + during_covid,
data = filter(cqc_skills, domain == "Well-led"),
link = "logit",
weights = ipw)
well_led_models <- modelsummary(list("total effect" = model_order_weighted_well_led,
"staffing by sector"= model_staff_weighted_well_led,
"direct effect: staffing control" = staff_direct_order_weighted_well_led,
"turnover by sector"= model_turnover_weighted_well_led,
"direct effect: turnover control" = turnover_direct_order_weighted_well_led),
coef_omit = "region", exponentiate = F,
statistic = "({p.value}) {stars}")
well_led_models
tinytable_x6pn93fuzfoixdjjq7vl
| |
total effect |
staffing by sector |
direct effect: staffing control |
turnover by sector |
direct effect: turnover control |
| Inadequate|Req improv |
-4.160 |
|
-4.051 |
|
-4.110 |
| |
(<0.001) *** |
|
(<0.001) *** |
|
(<0.001) *** |
| Req improv|Good |
-1.312 |
|
-1.191 |
|
-1.269 |
| |
(<0.001) *** |
|
(<0.001) *** |
|
(<0.001) *** |
| Good|Outstanding |
3.496 |
|
3.593 |
|
3.578 |
| |
(<0.001) *** |
|
(<0.001) *** |
|
(<0.001) *** |
| formCIC |
0.529 |
0.494 |
0.395 |
-12.839 |
0.148 |
| |
(0.068) + |
(0.048) * |
(0.193) |
(0.534) |
(0.711) |
| formGOV |
0.124 |
0.707 |
0.015 |
-22.042 |
0.093 |
| |
(0.370) |
(<0.001) *** |
(0.916) |
(0.004) ** |
(0.509) |
| formIND |
-0.341 |
-0.222 |
-0.292 |
-13.983 |
-0.369 |
| |
(<0.001) *** |
(0.007) ** |
(0.002) ** |
(0.012) * |
(<0.001) *** |
| formNPO |
0.324 |
0.418 |
0.235 |
-9.028 |
0.299 |
| |
(<0.001) *** |
(<0.001) *** |
(<0.001) *** |
(0.027) * |
(<0.001) *** |
| service_type_selectedcare home w/o nursing |
0.168 |
0.316 |
0.160 |
-8.583 |
0.156 |
| |
(0.003) ** |
(<0.001) *** |
(0.008) ** |
(0.019) * |
(0.016) * |
| service_type_selectedDomicilary Care |
0.565 |
-0.165 |
0.613 |
4.404 |
0.658 |
| |
(<0.001) *** |
(0.005) ** |
(<0.001) *** |
(0.286) |
(<0.001) *** |
| service_type_selectedSupported Living |
0.509 |
1.392 |
0.543 |
-9.017 |
0.531 |
| |
(<0.001) *** |
(<0.001) *** |
(<0.001) *** |
(0.209) |
(<0.001) *** |
| age |
0.032 |
0.000 |
0.031 |
-0.265 |
0.030 |
| |
(<0.001) *** |
(0.916) |
(<0.001) *** |
(0.379) |
(<0.001) *** |
| during_covidTRUE |
-1.482 |
-0.119 |
-1.445 |
5.650 |
-1.452 |
| |
(<0.001) *** |
(0.007) ** |
(<0.001) *** |
(0.066) + |
(<0.001) *** |
| (Intercept) |
|
1.000 |
|
47.128 |
|
| |
|
(<0.001) *** |
|
(<0.001) *** |
|
| staff_level |
|
|
0.083 |
|
|
| |
|
|
(<0.001) *** |
|
|
| turnover |
|
|
|
|
0.000 |
| |
|
|
|
|
(0.075) + |
| Num.Obs. |
12500 |
5984 |
11125 |
5085 |
9483 |
| R2 |
|
0.075 |
|
0.011 |
|
| R2 Adj. |
|
0.073 |
|
0.008 |
|
| AIC |
17172.8 |
22011.8 |
15257.1 |
61049.5 |
12788.4 |
| BIC |
17321.4 |
22139.1 |
15410.8 |
61173.6 |
12938.7 |
| Log.Lik. |
|
-10986.907 |
|
-30505.731 |
|
| RMSE |
2.27 |
1.58 |
2.28 |
93.27 |
2.28 |
“Responsive” domain
model_order_weighted_responsive <- clm(rating ~ form + service_type_selected + age + region + during_covid,
data = filter(cqc_skills, domain == "Responsive"),
link = "logit",
weights = ipw)
model_staff_weighted_responsive <- lm(staff_level ~ form + service_type_selected + age + region + during_covid,
data = filter(cqc_skills, domain == "Responsive"),
weights = ipw)
staff_direct_order_weighted_responsive <- clm(rating ~ form + staff_level + service_type_selected + age + region + during_covid,
data = filter(cqc_skills, domain == "Responsive"),
link = "logit",
weights = ipw)
model_turnover_weighted_responsive <- lm(turnover ~ form + service_type_selected + age + region + during_covid,
data = filter(cqc_skills, domain == "Responsive"),
weights = ipw)
turnover_direct_order_weighted_responsive <- clm(rating ~ form + turnover + service_type_selected + age + region + during_covid,
data = filter(cqc_skills, domain == "Responsive"),
link = "logit",
weights = ipw)
responsive_models <- modelsummary(list("full weighted" = model_order_weighted_responsive,
"staffing weighted"= model_staff_weighted_responsive,
"staff direct weighted" = staff_direct_order_weighted_responsive,
"turnover weighted"= model_turnover_weighted_responsive,
"turnover direct weighted" = turnover_direct_order_weighted_responsive),
coef_omit = "region", exponentiate = F,
statistic = "({p.value}) {stars}")
responsive_models
tinytable_fcedq6yvvp2kw50l8ddl
| |
full weighted |
staffing weighted |
staff direct weighted |
turnover weighted |
turnover direct weighted |
| Inadequate|Req improv |
-6.380 |
|
-6.098 |
|
-5.961 |
| |
(<0.001) *** |
|
(<0.001) *** |
|
(<0.001) *** |
| Req improv|Good |
-1.822 |
|
-1.704 |
|
-1.785 |
| |
(<0.001) *** |
|
(<0.001) *** |
|
(<0.001) *** |
| Good|Outstanding |
3.679 |
|
3.805 |
|
3.783 |
| |
(<0.001) *** |
|
(<0.001) *** |
|
(<0.001) *** |
| formCIC |
-0.276 |
0.494 |
-0.415 |
-12.839 |
-0.327 |
| |
(0.394) |
(0.048) * |
(0.222) |
(0.534) |
(0.467) |
| formGOV |
0.088 |
0.707 |
-0.031 |
-22.042 |
0.088 |
| |
(0.598) |
(<0.001) *** |
(0.856) |
(0.004) ** |
(0.609) |
| formIND |
0.069 |
-0.222 |
0.124 |
-13.983 |
0.108 |
| |
(0.536) |
(0.007) ** |
(0.297) |
(0.012) * |
(0.400) |
| formNPO |
0.271 |
0.418 |
0.237 |
-9.028 |
0.241 |
| |
(<0.001) *** |
(<0.001) *** |
(0.004) ** |
(0.027) * |
(0.010) ** |
| service_type_selectedcare home w/o nursing |
0.598 |
0.316 |
0.610 |
-8.583 |
0.526 |
| |
(<0.001) *** |
(<0.001) *** |
(<0.001) *** |
(0.019) * |
(<0.001) *** |
| service_type_selectedDomicilary Care |
0.643 |
-0.165 |
0.742 |
4.404 |
0.749 |
| |
(<0.001) *** |
(0.005) ** |
(<0.001) *** |
(0.286) |
(<0.001) *** |
| service_type_selectedSupported Living |
1.037 |
1.392 |
1.072 |
-9.017 |
0.989 |
| |
(<0.001) *** |
(<0.001) *** |
(<0.001) *** |
(0.209) |
(<0.001) *** |
| age |
0.039 |
0.000 |
0.040 |
-0.265 |
0.041 |
| |
(<0.001) *** |
(0.916) |
(<0.001) *** |
(0.379) |
(<0.001) *** |
| during_covidTRUE |
-0.773 |
-0.119 |
-0.724 |
5.650 |
-0.656 |
| |
(<0.001) *** |
(0.007) ** |
(<0.001) *** |
(0.066) + |
(<0.001) *** |
| (Intercept) |
|
1.000 |
|
47.128 |
|
| |
|
(<0.001) *** |
|
(<0.001) *** |
|
| staff_level |
|
|
0.063 |
|
|
| |
|
|
(<0.001) *** |
|
|
| turnover |
|
|
|
|
0.000 |
| |
|
|
|
|
(0.952) |
| Num.Obs. |
12027 |
5984 |
10719 |
5085 |
9123 |
| R2 |
|
0.075 |
|
0.011 |
|
| R2 Adj. |
|
0.073 |
|
0.008 |
|
| AIC |
11517.6 |
22011.8 |
10240.8 |
61049.5 |
8527.0 |
| BIC |
11665.5 |
22139.1 |
10393.7 |
61173.6 |
8676.5 |
| Log.Lik. |
|
-10986.907 |
|
-30505.731 |
|
| RMSE |
2.30 |
1.58 |
2.30 |
93.27 |
2.29 |