library(lmerTest)
## Loading required package: lme4
## Loading required package: Matrix
## 
## Attaching package: 'lmerTest'
## The following object is masked from 'package:lme4':
## 
##     lmer
## The following object is masked from 'package:stats':
## 
##     step
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.3     ✔ readr     2.1.4
## ✔ forcats   1.0.0     ✔ stringr   1.5.0
## ✔ ggplot2   3.5.0     ✔ tibble    3.2.1
## ✔ lubridate 1.9.2     ✔ tidyr     1.3.0
## ✔ purrr     1.0.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ tidyr::expand() masks Matrix::expand()
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ✖ tidyr::pack()   masks Matrix::pack()
## ✖ tidyr::unpack() masks Matrix::unpack()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
data <- read.csv("~/Google drive/My Drive/YEAR 1/PROJECTS/SHAI/Dominance and Job Preference/Data/study1.csv") %>% 
  slice(-c(1:2)) %>% 
  filter(attn == 24)%>% 
  filter(employment == 1 | employment == 2)

Descriptives

  1. Manufacturing
  2. Healthcare
  3. Engineering
  4. Real Estate
  5. Sales
  6. Retail
  7. Tech
  8. Entertainment and Sports
  9. Government
  10. Finance
  11. Accounting
  12. Military
  13. Pharmaceutical
  14. e-Commerce
data_social_good <- data %>% 
  select(ResponseId, industry_social_good_2:industry_social_good_15, FL_8_DO, politicalIdeology, ZSB_DO) %>% 
  pivot_longer(cols = industry_social_good_2:industry_social_good_15,
               names_to = "industry",
               values_to = "value") %>% 
  mutate(value = as.numeric(value)) %>% 
  rename(socialgood = value) %>%
  separate(industry, into = c("termindustry", "termsocial", "termgood", "industry"), sep = "_") %>%
  select(ResponseId, industry, socialgood, FL_8_DO, politicalIdeology)

summary_social <- data_social_good %>% 
  group_by(industry) %>% 
  summarise(mean(socialgood, na.rm = T)) %>% 
  ungroup()

# Least = Government, most = Engineering
data_zsb <- data %>% 
  mutate(zsb_2_all = ifelse(ZSB_DO == "zsb_1", zsb_2,
                            ifelse(ZSB_DO == "zsb_2", zsb_2.1,
                                   ifelse(ZSB_DO == "zsb_3", zsb_2.2,
                                          ifelse(ZSB_DO == "zsb_4", zsb_2.3, NA))))) %>% 
  mutate(zsb_3_all = ifelse(ZSB_DO == "zsb_1", zsb_3,
                            ifelse(ZSB_DO == "zsb_2", zsb_3.1,
                                   ifelse(ZSB_DO == "zsb_3", zsb_3.2,
                                          ifelse(ZSB_DO == "zsb_4", zsb_3.3, NA))))) %>% 
  mutate(zsb_4_all = ifelse(ZSB_DO == "zsb_1", zsb_4,
                            ifelse(ZSB_DO == "zsb_2", zsb_4.1,
                                   ifelse(ZSB_DO == "zsb_3", zsb_4.2,
                                          ifelse(ZSB_DO == "zsb_4", zsb_4.3, NA))))) %>% 
  mutate(zsb_5_all = ifelse(ZSB_DO == "zsb_1", zsb_5,
                            ifelse(ZSB_DO == "zsb_2", zsb_5.1,
                                   ifelse(ZSB_DO == "zsb_3", zsb_5.2,
                                          ifelse(ZSB_DO == "zsb_4", zsb_5.3, NA))))) %>% 
  mutate(zsb_6_all = ifelse(ZSB_DO == "zsb_1", zsb_6,
                            ifelse(ZSB_DO == "zsb_2", zsb_6.1,
                                   ifelse(ZSB_DO == "zsb_3", zsb_6.2,
                                          ifelse(ZSB_DO == "zsb_4", zsb_6.3, NA))))) %>% 
  mutate(zsb_7_all = ifelse(ZSB_DO == "zsb_1", zsb_7,
                            ifelse(ZSB_DO == "zsb_2", zsb_7.1,
                                   ifelse(ZSB_DO == "zsb_3", zsb_7.2,
                                          ifelse(ZSB_DO == "zsb_4", zsb_7.3, NA))))) %>% 
  mutate(zsb_8_all = ifelse(ZSB_DO == "zsb_1", zsb_8,
                            ifelse(ZSB_DO == "zsb_2", zsb_8.1,
                                   ifelse(ZSB_DO == "zsb_3", zsb_8.2,
                                          ifelse(ZSB_DO == "zsb_4", zsb_8.3, NA))))) %>% 
  mutate(zsb_9_all = ifelse(ZSB_DO == "zsb_1", zsb_9,
                            ifelse(ZSB_DO == "zsb_2", zsb_9.1,
                                   ifelse(ZSB_DO == "zsb_3", zsb_9.2,
                                          ifelse(ZSB_DO == "zsb_4", zsb_9.3, NA))))) %>% 
  mutate(zsb_10_all = ifelse(ZSB_DO == "zsb_1", zsb_10,
                            ifelse(ZSB_DO == "zsb_2", zsb_10.1,
                                   ifelse(ZSB_DO == "zsb_3", zsb_10.2,
                                          ifelse(ZSB_DO == "zsb_4", zsb_10.3, NA))))) %>% 
  mutate(zsb_11_all = ifelse(ZSB_DO == "zsb_1", zsb_11,
                            ifelse(ZSB_DO == "zsb_2", zsb_11.1,
                                   ifelse(ZSB_DO == "zsb_3", zsb_11.2,
                                          ifelse(ZSB_DO == "zsb_4", zsb_11.3, NA))))) %>% 
  mutate(zsb_12_all = ifelse(ZSB_DO == "zsb_1", zsb_12,
                            ifelse(ZSB_DO == "zsb_2", zsb_12.1,
                                   ifelse(ZSB_DO == "zsb_3", zsb_12.2,
                                          ifelse(ZSB_DO == "zsb_4", zsb_12.3, NA))))) %>%
  mutate(zsb_13_all = ifelse(ZSB_DO == "zsb_1", zsb_13,
                            ifelse(ZSB_DO == "zsb_2", zsb_13.1,
                                   ifelse(ZSB_DO == "zsb_3", zsb_13.2,
                                          ifelse(ZSB_DO == "zsb_4", zsb_13.3, NA))))) %>% 
  mutate(zsb_14_all = ifelse(ZSB_DO == "zsb_1", zsb_14,
                            ifelse(ZSB_DO == "zsb_2", zsb_14.1,
                                   ifelse(ZSB_DO == "zsb_3", zsb_14.2,
                                          ifelse(ZSB_DO == "zsb_4", zsb_14.3, NA))))) %>% 
  mutate(zsb_15_all = ifelse(ZSB_DO == "zsb_1", zsb_15,
                            ifelse(ZSB_DO == "zsb_2", zsb_15.1,
                                   ifelse(ZSB_DO == "zsb_3", zsb_15.2,
                                          ifelse(ZSB_DO == "zsb_4", zsb_15.3, NA))))) %>%
  select(ResponseId, zsb_2_all:zsb_15_all, FL_8_DO, politicalIdeology, ZSB_DO, orgType) %>% 
  pivot_longer(cols = zsb_2_all:zsb_15_all,
               names_to = "industry",
               values_to = "value") %>% 
  mutate(value = as.numeric(value)) %>% 
  rename(zsb = value) %>%
  separate(industry, into = c("termzsb", "industry"), sep = "_") %>%
  select(ResponseId, industry, zsb, FL_8_DO, politicalIdeology, ZSB_DO, orgType)
## Warning: Expected 2 pieces. Additional pieces discarded in 5404 rows [1, 2, 3, 4, 5, 6,
## 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, ...].
summary_zsb <- data_zsb %>% 
  group_by(industry) %>% 
  summarise(mean(zsb, na.rm = T)) %>% 
  ungroup()

# Least = Healthcare, most = Government

Primary model

full <- data_social_good %>% 
  full_join(data_zsb)
## Joining with `by = join_by(ResponseId, industry, FL_8_DO, politicalIdeology)`
model1 <- full %>%
  lmer(zsb ~ socialgood + (1|ResponseId) + (1|industry) + (1|ZSB_DO), .)

summary(model1)
## Linear mixed model fit by REML. t-tests use Satterthwaite's method [
## lmerModLmerTest]
## Formula: zsb ~ socialgood + (1 | ResponseId) + (1 | industry) + (1 | ZSB_DO)
##    Data: .
## 
## REML criterion at convergence: 17543.3
## 
## Scaled residuals: 
##     Min      1Q  Median      3Q     Max 
## -4.1047 -0.5972  0.0095  0.6015  4.7127 
## 
## Random effects:
##  Groups     Name        Variance Std.Dev.
##  ResponseId (Intercept) 1.24269  1.1148  
##  industry   (Intercept) 0.17046  0.4129  
##  ZSB_DO     (Intercept) 0.06683  0.2585  
##  Residual               1.22363  1.1062  
## Number of obs: 5404, groups:  ResponseId, 386; industry, 14; ZSB_DO, 4
## 
## Fixed effects:
##               Estimate Std. Error         df t value Pr(>|t|)    
## (Intercept)    4.23358    0.18020    7.24712   23.49 4.17e-08 ***
## socialgood    -0.16893    0.01417 5294.04377  -11.92  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Correlation of Fixed Effects:
##            (Intr)
## socialgood -0.061
ggplot(data = full,
       aes(x = socialgood,
           y = zsb))+
  geom_jitter(alpha = 0.1)+
  facet_wrap(~industry) +
  geom_smooth(method = "lm")
## `geom_smooth()` using formula = 'y ~ x'

Exploratory analyses

model2 <- full %>%
  lmer(zsb ~ socialgood * as.factor(FL_8_DO) + (1|ResponseId) + (1|industry)  + (1|ZSB_DO), .)

summary(model2)
## Linear mixed model fit by REML. t-tests use Satterthwaite's method [
## lmerModLmerTest]
## Formula: zsb ~ socialgood * as.factor(FL_8_DO) + (1 | ResponseId) + (1 |  
##     industry) + (1 | ZSB_DO)
##    Data: .
## 
## REML criterion at convergence: 17548
## 
## Scaled residuals: 
##     Min      1Q  Median      3Q     Max 
## -4.1153 -0.5983  0.0078  0.6014  4.7132 
## 
## Random effects:
##  Groups     Name        Variance Std.Dev.
##  ResponseId (Intercept) 1.2402   1.1137  
##  industry   (Intercept) 0.1712   0.4137  
##  ZSB_DO     (Intercept) 0.0668   0.2584  
##  Residual               1.2235   1.1061  
## Number of obs: 5404, groups:  ResponseId, 386; industry, 14; ZSB_DO, 4
## 
## Fixed effects:
##                                     Estimate Std. Error         df t value
## (Intercept)                          4.17887    0.18967    8.88410  22.033
## socialgood                          -0.14791    0.01899 5282.23773  -7.789
## as.factor(FL_8_DO)FL_9               0.11182    0.11937  402.95940   0.937
## socialgood:as.factor(FL_8_DO)FL_9   -0.04252    0.02553 5246.87814  -1.666
##                                   Pr(>|t|)    
## (Intercept)                       4.63e-09 ***
## socialgood                        8.07e-15 ***
## as.factor(FL_8_DO)FL_9              0.3495    
## socialgood:as.factor(FL_8_DO)FL_9   0.0958 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Correlation of Fixed Effects:
##             (Intr) soclgd a.(FL_
## socialgood  -0.075              
## a.(FL_8_DO) -0.310  0.106       
## s:.(FL_8_DO  0.050 -0.666 -0.166
## approaching significance
model3 <- full %>%
  lmer(zsb ~ socialgood + as.factor(orgType) + (1|ResponseId) + (1|industry)  + (1|ZSB_DO), .)

summary(model3)
## Linear mixed model fit by REML. t-tests use Satterthwaite's method [
## lmerModLmerTest]
## Formula: zsb ~ socialgood + as.factor(orgType) + (1 | ResponseId) + (1 |  
##     industry) + (1 | ZSB_DO)
##    Data: .
## 
## REML criterion at convergence: 17542.1
## 
## Scaled residuals: 
##     Min      1Q  Median      3Q     Max 
## -4.1064 -0.5961  0.0087  0.6010  4.7091 
## 
## Random effects:
##  Groups     Name        Variance Std.Dev.
##  ResponseId (Intercept) 1.2379   1.1126  
##  industry   (Intercept) 0.1703   0.4127  
##  ZSB_DO     (Intercept) 0.0688   0.2623  
##  Residual               1.2236   1.1062  
## Number of obs: 5404, groups:  ResponseId, 386; industry, 14; ZSB_DO, 4
## 
## Fixed effects:
##                       Estimate Std. Error         df t value Pr(>|t|)    
## (Intercept)            4.28464    0.18383    7.51616  23.307 2.77e-08 ***
## socialgood            -0.16967    0.01417 5288.90356 -11.971  < 2e-16 ***
## as.factor(orgType)2   -0.22418    0.15915  380.65083  -1.409    0.160    
## as.factor(orgType)3   -0.43235    0.34036  381.33497  -1.270    0.205    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Correlation of Fixed Effects:
##             (Intr) soclgd a.(T)2
## socialgood  -0.064              
## as.fctr(T)2 -0.147  0.030       
## as.fctr(T)3 -0.072  0.012  0.078