suppressPackageStartupMessages(library(dplyr))
library(dplyr)
library(haven)
library(knitr)
library(ggplot2)
library(tidyr)
data_full <- read_dta("C:/Users/JH/OneDrive - Kitces.com/Desktop/JH/Research_Ticket/Wellbeing Senior Advisors/Stata_WellBeing_2025/Stata/Master_Well_Being_2025.dta")
# SERVICE ADVISORS ANALYSIS (rspbizrole == 3)
service_advisors <- data_full %>% filter(rspbizrole == 3)
# 1. Team Composition
service_advisors %>%
mutate(pstructure = as_factor(pstructure)) %>%
group_by(pstructure) %>%
summarise(Mean_Wellbeing = round(mean(cantril_prsnt, na.rm = TRUE), 2), N = n(), .groups = "drop") %>%
arrange(pstructure) %>%
kable(col.names = c("Team Structure / Support Level", "Mean Wellbeing", "N"),
caption = "Wellbeing by Team Composition - Service Advisors", align = c("l", "r", "r"))
| Team Structure / Support Level | Mean Wellbeing | N |
|---|---|---|
| Unsupported Solo | 8.67 | 6 |
| Supported Solo | 6.45 | 11 |
| Silo | 6.78 | 18 |
| Ensemble | 6.53 | 47 |
knitr::asis_output("Among service advisors, wellbeing is highest among unsupported solo advisors (8.67), though this group has a very small sample size (N=6). Supported solo, silo, and ensemble structures show more clustered scores around 6.45 to 6.78. The largest group (ensemble) has a mean of 6.53, which is slightly below the overall service advisor average.")
Among service advisors, wellbeing is highest among unsupported solo advisors (8.67), though this group has a very small sample size (N=6). Supported solo, silo, and ensemble structures show more clustered scores around 6.45 to 6.78. The largest group (ensemble) has a mean of 6.53, which is slightly below the overall service advisor average.
# 2. Total Income
service_advisors %>%
filter(!is.na(rspinc)) %>%
mutate(income_level = case_when(rspinc < 100000 ~ "< $100,000", rspinc < 150000 ~ "$100,000 – $149,999",
rspinc < 200000 ~ "$150,000 – $199,999", rspinc >= 200000 ~ "$200,000+"),
income_level = factor(income_level, levels = c("< $100,000", "$100,000 – $149,999", "$150,000 – $199,999", "$200,000+"))) %>%
group_by(income_level) %>% summarise(Mean_Wellbeing = round(mean(cantril_prsnt, na.rm = TRUE), 2), N = n(), .groups = "drop") %>%
kable(col.names = c("Total Income Level", "Mean Wellbeing", "N"), caption = "Wellbeing by Total Income - Service Advisors")
| Total Income Level | Mean Wellbeing | N |
|---|---|---|
| < $100,000 | 6.07 | 30 |
| $100,000 – $149,999 | 7.14 | 22 |
| $150,000 – $199,999 | 6.75 | 8 |
| $200,000+ | 7.31 | 13 |
knitr::asis_output("Wellbeing shows a generally positive but non-linear relationship with total income among service advisors. Those earning <$100,000 report the lowest wellbeing (6.07), while the highest scores appear in the $100k-$150k (7.14) and $200k+ (7.31) range. The $150k-$200k group is somewhat lower (6.75), possibly reflecting a transitional stress zone or other unmeasured factors. The pattern suggests that crossing into six figure income (especially above $100k) is associated with meaningfully higher life satisfaction, though sample sizes are modest in the higher brackets.")
Wellbeing shows a generally positive but non-linear relationship with total income among service advisors. Those earning <$100,000 report the lowest wellbeing (6.07), while the highest scores appear in the $100k-$150k (7.14) and $200k+ (7.31) range. The $150k-$200k group is somewhat lower (6.75), possibly reflecting a transitional stress zone or other unmeasured factors. The pattern suggests that crossing into six figure income (especially above $100k) is associated with meaningfully higher life satisfaction, though sample sizes are modest in the higher brackets.
# 3. Compensation Mix
service_advisors %>%
mutate(rsppaystruc = as_factor(rsppaystruc)) %>%
group_by(rsppaystruc) %>%
summarise(Mean_Wellbeing = round(mean(cantril_prsnt, na.rm = TRUE), 2), N = n(), .groups = "drop") %>%
kable(col.names = c("Compensation Mix", "Mean Wellbeing", "N"), caption = "Wellbeing by Compensation Mix - Service Advisors")
| Compensation Mix | Mean Wellbeing | N |
|---|---|---|
| Fixed salary only | 6.55 | 11 |
| Salary as draw | 7.50 | 2 |
| Salary with revenue incentive | 6.55 | 38 |
| Salary with non-revenue incentive | 6.56 | 16 |
| Revenue-based only | 7.50 | 4 |
| Net profits only | 7.38 | 8 |
| Other | 7.50 | 2 |
| NA | 7.00 | 1 |
knitr::asis_output("Wellbeing varies modestly across compensation mixes for service advisors, ranging from 6.55 (fixed salary only / salary with revenue incentive) to 7.50 (salary as draw, revenue-based only, other). Notably, the purely variable structures (revenue-based only and net profits only) show higher wellbeing (7.50 and 7.38) than most fixed or hybrid arrangements, though sample sizes are small in those categories. This hints that variable pay may not carry a wellbeing penalty for service advisors, and could even be associated with higher satisfaction when it aligns with performance or autonomy, but larger samples are needed to confirm.")
Wellbeing varies modestly across compensation mixes for service advisors, ranging from 6.55 (fixed salary only / salary with revenue incentive) to 7.50 (salary as draw, revenue-based only, other). Notably, the purely variable structures (revenue-based only and net profits only) show higher wellbeing (7.50 and 7.38) than most fixed or hybrid arrangements, though sample sizes are small in those categories. This hints that variable pay may not carry a wellbeing penalty for service advisors, and could even be associated with higher satisfaction when it aligns with performance or autonomy, but larger samples are needed to confirm.
# 4. Leave Intent
service_advisors %>%
filter(!is.na(ny_leave_emp)) %>%
mutate(leave_intent = case_when(ny_leave_emp %in% 1:3 ~ "Unlikely to Leave (Extremely Unlikely, Unlikely, and Slightly Unlikely)",
ny_leave_emp %in% 4:6 ~ "Likely to Leave (Likely, Likely, and Extremely Likely)", TRUE ~ "Missing"),
leave_intent = factor(leave_intent, levels = c("Unlikely to Leave (Extremely Unlikely, Unlikely, and Slightly Unlikely)", "Likely to Leave (Likely, Likely, and Extremely Likely)"))) %>%
group_by(leave_intent) %>%
summarise(Mean_Wellbeing = round(mean(cantril_prsnt, na.rm = TRUE), 2),
Mean_Income = round(mean(rspinc, na.rm = TRUE), 0),
Mean_Experience = round(mean(rspfsexp, na.rm = TRUE), 1),
N = n(), .groups = "drop") %>%
kable(col.names = c("Leave Intent (12 mo)", "Mean Wellbeing", "Mean Income", "Mean Experience (yrs)", "N"),
caption = "Key Characteristics by Intent to Leave Employer - Service Advisors", align = c("l","r","r","r","r"))
| Leave Intent (12 mo) | Mean Wellbeing | Mean Income | Mean Experience (yrs) | N |
|---|---|---|---|---|
| Unlikely to Leave (Extremely Unlikely, Unlikely, and Slightly Unlikely) | 7.20 | 159477 | 11.3 | 61 |
| Likely to Leave (Likely, Likely, and Extremely Likely) | 5.17 | 118513 | 10.6 | 18 |
knitr::asis_output("Service advisors who are likely or extremely likely to leave their employer within the next 12 months report substantially lower wellbeing and lower average income compared to those unlikely to leave. Experience levels are similar, suggesting tenure itself is not the primary driver of turnover intent. The large wellbeing gap (over 2 points on the Cantril ladder) indicates that dissatisfaction with life overall, potentially tied to compensation, role fit, or firm support.")
Service advisors who are likely or extremely likely to leave their employer within the next 12 months report substantially lower wellbeing and lower average income compared to those unlikely to leave. Experience levels are similar, suggesting tenure itself is not the primary driver of turnover intent. The large wellbeing gap (over 2 points on the Cantril ladder) indicates that dissatisfaction with life overall, potentially tied to compensation, role fit, or firm support.
# 5. Client-Facing Experience
service_advisors %>%
mutate(grpclexp = as_factor(grpclexp)) %>%
group_by(grpclexp) %>%
summarise(Mean_Wellbeing = round(mean(cantril_prsnt, na.rm = TRUE), 2), N = n(), .groups = "drop") %>%
arrange(grpclexp) %>%
kable(col.names = c("Client-Facing Experience Group", "Mean Wellbeing", "N"),
caption = "Wellbeing by Client-Facing Experience - Service Advisors")
| Client-Facing Experience Group | Mean Wellbeing | N |
|---|---|---|
| <5 yrs | 6.61 | 57 |
| 5 to 9 | 7.25 | 12 |
| 10 to 19 | 6.25 | 4 |
| 20+ yrs | 7.00 | 9 |
knitr::asis_output("Wellbeing among service advisors does not show a clear linear trend with client-facing experience. The lowest scores appear in the 10-19 year group (6.25) and <5 years group (6.61). The 5-9 year group reports the highest wellbeing (7.25), while 20+ years is moderate (7.00). This pattern suggests mid-career service advisors may experience a wellbeing peak, possibly due to growing competence without burnout, while very early and very late career stages show more variability or modest declines. Small sample sizes in longer-experience groups limit strong conclusions.")
Wellbeing among service advisors does not show a clear linear trend with client-facing experience. The lowest scores appear in the 10-19 year group (6.25) and <5 years group (6.61). The 5-9 year group reports the highest wellbeing (7.25), while 20+ years is moderate (7.00). This pattern suggests mid-career service advisors may experience a wellbeing peak, possibly due to growing competence without burnout, while very early and very late career stages show more variability or modest declines. Small sample sizes in longer-experience groups limit strong conclusions.