Overview of employees

plot_pie(dlabels, country)

plot_edu(dlabels, education)

plot_pie2(dlabels, division)

plot_pie(dlabels, gender)

plot_sus(dlabels, sustainability)

plot_pie2(dlabels, age) 

plot_position(dlabels, position)

plot_tenure(dlabels, tenure)

plot_size(dlabels, empno)

plot_influence(dlabels, influential)

#awareness of rebound effects
describe(d$reboundaware1)
##    vars    n mean   sd median trimmed  mad min max range  skew kurtosis   se
## X1    1 3391 3.94 2.09      4    3.93 2.97   1   7     6 -0.15    -1.33 0.04
describeBy(d$reboundaware1, group = d$country)
## 
##  Descriptive statistics by group 
## group: 1
##    vars   n mean   sd median trimmed  mad min max range  skew kurtosis   se
## X1    1 673 4.14 2.23      5    4.18 2.97   1   7     6 -0.25    -1.43 0.09
## ------------------------------------------------------------ 
## group: 2
##    vars   n mean  sd median trimmed  mad min max range skew kurtosis   se
## X1    1 781 3.56 2.1      4    3.46 2.97   1   7     6 0.08     -1.4 0.08
## ------------------------------------------------------------ 
## group: 3
##    vars   n mean   sd median trimmed  mad min max range  skew kurtosis   se
## X1    1 796 3.85 2.03      4    3.83 2.97   1   7     6 -0.11    -1.32 0.07
## ------------------------------------------------------------ 
## group: 4
##    vars   n mean   sd median trimmed  mad min max range  skew kurtosis   se
## X1    1 877 4.25 2.02      5    4.31 1.48   1   7     6 -0.33    -1.16 0.07
## ------------------------------------------------------------ 
## group: 5
##    vars   n mean   sd median trimmed  mad min max range  skew kurtosis   se
## X1    1 264 3.81 1.86      4    3.81 1.48   1   7     6 -0.21    -1.01 0.11
#strategies
describe(d$reboundaware2)
##    vars    n mean   sd median trimmed  mad min max range skew kurtosis   se
## X1    1 3391 5.17 2.04      5    5.31 1.48   1   8     7 -0.4    -0.66 0.04
describeBy(d$reboundaware2, group = d$country)
## 
##  Descriptive statistics by group 
## group: 1
##    vars   n mean sd median trimmed  mad min max range  skew kurtosis   se
## X1    1 673 5.47  2      6    5.68 1.48   1   8     7 -0.72    -0.25 0.08
## ------------------------------------------------------------ 
## group: 2
##    vars   n mean   sd median trimmed  mad min max range  skew kurtosis   se
## X1    1 781 5.16 2.14      5     5.3 2.97   1   8     7 -0.35    -0.82 0.08
## ------------------------------------------------------------ 
## group: 3
##    vars   n mean   sd median trimmed  mad min max range  skew kurtosis   se
## X1    1 796 5.15 1.99      5    5.27 1.48   1   8     7 -0.33     -0.6 0.07
## ------------------------------------------------------------ 
## group: 4
##    vars   n mean sd median trimmed  mad min max range  skew kurtosis   se
## X1    1 877  5.1  2      5     5.2 1.48   1   8     7 -0.35    -0.67 0.07
## ------------------------------------------------------------ 
## group: 5
##    vars   n mean   sd median trimmed  mad min max range  skew kurtosis   se
## X1    1 264 4.77 2.05      5    4.82 1.48   1   8     7 -0.14     -0.8 0.13

Awareness depending on various factors

Country

#Violin for rebound1
ggplot(d, aes(x = factor(country,
                         levels = 1:5,
                         labels = c("UK", "Germany", "NL", "Italy", "Lithuania")), y = reboundaware1, fill = factor(country))) +  # Ensure 'country' is #categorical
  geom_violin(trim = FALSE, alpha = 0.5) +  # Violin plot with transparency
  geom_boxplot(width = 0.2, outlier.shape = NA, aes(color = factor(country)), show.legend = FALSE) +  
  stat_summary(fun = mean, geom = "point", shape = 18, size = 3, color = "darkred") +  # Mean point
  scale_fill_brewer(palette = "Dark2") +  # Use Dark2 color palette for fill
  scale_color_brewer(palette = "Dark2") +  # Use Dark2 color palette for boxplot outlines
  theme_minimal() +
  scale_y_continuous(
    breaks = 0:8,  # full scale breaks (adjust if needed)
    labels = c(" ", "(1) Not at all", "(2)", "(3)", "(4)", "(5)", "(6)", "(7) To a great extent", "")
  ) + theme(legend.position = "none")

###recoding answers indicating "I dont know" from 8 to 0
table(d$reboundaware2)
## 
##   1   2   3   4   5   6   7   8 
## 243 172 276 464 677 567 453 539
d$reboundaware2[d$reboundaware2 == 8] <- 0
describe(d$reboundaware2)
##    vars    n mean   sd median trimmed  mad min max range  skew kurtosis   se
## X1    1 3391  3.9 2.35      5       4 1.48   0   7     7 -0.45    -1.09 0.04
#Violin for rebound2
ggplot(d, aes(x = factor(country,
                         levels = 1:5,
                         labels = c("UK", "Germany", "NL", "Italy", "Lithuania")), y = reboundaware2, fill = factor(country))) +  # Ensure 'country' is categorical
  geom_violin(trim = FALSE, alpha = 0.5) +  # Violin plot with transparency
  geom_boxplot(width = 0.2, outlier.shape = NA, aes(color = factor(country)), show.legend = FALSE) +  
  stat_summary(fun = mean, geom = "point", shape = 18, size = 3, color = "darkred") +  # Mean point
  scale_fill_brewer(palette = "Dark2") +  # Use Dark2 color palette for fill
  scale_color_brewer(palette = "Dark2") +  # Use Dark2 color palette for boxplot outlines
  theme_minimal() +
  scale_y_continuous(
    breaks = 0:8,  # full scale breaks (adjust if needed)
    labels = c(" ", "(1) Not at all", "(2)", "(3)", "(4)", "(5)", "(6)", "(7) To a great extent", "")
  ) + theme(legend.position = "none")

Sector

#Violin for rebound1
ggplot(d, aes(x = industry_new, y = reboundaware1, fill = factor(industry_new))) +  # Ensure 'country' is categorical
  geom_violin(trim = FALSE, alpha = 0.5) +  # Violin plot with transparency
  geom_boxplot(width = 0.2, outlier.shape = NA, aes(color = factor(industry_new)), show.legend = FALSE) +  
  stat_summary(fun = mean, geom = "point", shape = 18, size = 3, color = "darkred") +  # Mean point
  scale_fill_brewer(palette = "Dark2") +  # Use Dark2 color palette for fill
  scale_color_brewer(palette = "Dark2") +  # Use Dark2 color palette for boxplot outlines
  theme_minimal() +
  scale_y_continuous(
    breaks = 0:8,  # full scale breaks (adjust if needed)
    labels = c(" ", "(1) Not at all", "(2)", "(3)", "(4)", "(5)", "(6)", "(7) To a great extent", "")
  ) + theme(legend.position = "none")

# Check sig mean differences
anova_rebound1 <- aov(reboundaware1 ~ industry_new, data = d)
summary(anova_rebound1)
##                Df Sum Sq Mean Sq F value   Pr(>F)    
## industry_new    2     80   40.15   9.257 9.79e-05 ***
## Residuals    3388  14696    4.34                     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#Violin for rebound2
ggplot(d, aes(x = industry_new, y = reboundaware2, fill = factor(industry_new))) +  # Ensure 'country' is categorical
  geom_violin(trim = FALSE, alpha = 0.5) +  # Violin plot with transparency
  geom_boxplot(width = 0.2, outlier.shape = NA, aes(color = factor(industry_new)), show.legend = FALSE) +  
  stat_summary(fun = mean, geom = "point", shape = 18, size = 3, color = "darkred") +  # Mean point
  scale_fill_brewer(palette = "Dark2") +  # Use Dark2 color palette for fill
  scale_color_brewer(palette = "Dark2") +  # Use Dark2 color palette for boxplot outlines
  theme_minimal() +
  scale_y_continuous(
    breaks = 0:8,  # full scale breaks (adjust if needed)
    labels = c(" ", "(1) Not at all", "(2)", "(3)", "(4)", "(5)", "(6)", "(7) To a great extent", "")
  ) + theme(legend.position = "none")

### boxplot
summary_df <- d %>%
  group_by(industry_new) %>%
  summarise(
    mean = mean(reboundaware2, na.rm = TRUE),
    sd = sd(reboundaware2, na.rm = TRUE),
    n = sum(!is.na(reboundaware2)),
    se = sd / sqrt(n)
  )

ggplot(summary_df, aes(x = industry_new, y = mean, fill = industry_new)) +
  geom_col(alpha = 0.8) +
  geom_errorbar(aes(ymin = mean - se, ymax = mean + se), width = 0.2) +
  scale_fill_brewer(palette = "Dark2") +
  theme_minimal() +
  theme(legend.position = "none") +
  labs(
    x = "Industry",
    y = "Mean reboundaware2 (± SE)"
  ) +
  scale_y_continuous(
    breaks = 0:8,
    labels = c(" ", "(1) Not at all", "(2)", "(3)", "(4)", "(5)", "(6)", "(7) To a great extent", "")
  )

anova_rebound2 <- aov(reboundaware2 ~ industry_new, data = d)
summary(anova_rebound2)
##                Df Sum Sq Mean Sq F value   Pr(>F)    
## industry_new    2     79   39.65    7.19 0.000765 ***
## Residuals    3388  18685    5.51                     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Awareness differences depending on country and sector

###rebound1

## country
describeBy(d$reboundaware1, group = d$country)
## 
##  Descriptive statistics by group 
## group: 1
##    vars   n mean   sd median trimmed  mad min max range  skew kurtosis   se
## X1    1 673 4.14 2.23      5    4.18 2.97   1   7     6 -0.25    -1.43 0.09
## ------------------------------------------------------------ 
## group: 2
##    vars   n mean  sd median trimmed  mad min max range skew kurtosis   se
## X1    1 781 3.56 2.1      4    3.46 2.97   1   7     6 0.08     -1.4 0.08
## ------------------------------------------------------------ 
## group: 3
##    vars   n mean   sd median trimmed  mad min max range  skew kurtosis   se
## X1    1 796 3.85 2.03      4    3.83 2.97   1   7     6 -0.11    -1.32 0.07
## ------------------------------------------------------------ 
## group: 4
##    vars   n mean   sd median trimmed  mad min max range  skew kurtosis   se
## X1    1 877 4.25 2.02      5    4.31 1.48   1   7     6 -0.33    -1.16 0.07
## ------------------------------------------------------------ 
## group: 5
##    vars   n mean   sd median trimmed  mad min max range  skew kurtosis   se
## X1    1 264 3.81 1.86      4    3.81 1.48   1   7     6 -0.21    -1.01 0.11
# Check sig mean differences
anova_rebound1 <- aov(reboundaware1 ~ country, data = d)
summary(anova_rebound1)
##               Df Sum Sq Mean Sq F value  Pr(>F)    
## country        4    234   58.59   13.64 4.9e-11 ***
## Residuals   3386  14542    4.29                    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
tukey_rebound1 <- TukeyHSD(anova_rebound1)

library(effectsize)
## 
## Attaching package: 'effectsize'
## The following object is masked from 'package:psych':
## 
##     phi
eta_squared(aov(reboundaware1 ~ country, data = d))
## For one-way between subjects designs, partial eta squared is equivalent
##   to eta squared. Returning eta squared.
## # Effect Size for ANOVA
## 
## Parameter | Eta2 |       95% CI
## -------------------------------
## country   | 0.02 | [0.01, 1.00]
## 
## - One-sided CIs: upper bound fixed at [1.00].

industry

describeBy(d$reboundaware1, group = d$industry_new)
## 
##  Descriptive statistics by group 
## group: Building
##    vars    n mean  sd median trimmed  mad min max range  skew kurtosis   se
## X1    1 1262 3.95 2.1      4    3.94 2.97   1   7     6 -0.18    -1.36 0.06
## ------------------------------------------------------------ 
## group: Manufacturing
##    vars    n mean   sd median trimmed  mad min max range  skew kurtosis   se
## X1    1 1494 4.06 2.04      4    4.08 2.97   1   7     6 -0.23    -1.23 0.05
## ------------------------------------------------------------ 
## group: Mobility
##    vars   n mean   sd median trimmed  mad min max range skew kurtosis   se
## X1    1 635 3.64 2.14      4    3.55 2.97   1   7     6  0.1    -1.39 0.08
summary(aov(reboundaware1 ~ industry_new, data = d))
##                Df Sum Sq Mean Sq F value   Pr(>F)    
## industry_new    2     80   40.15   9.257 9.79e-05 ***
## Residuals    3388  14696    4.34                     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
tukey_bio <- TukeyHSD(aov(reboundaware1 ~ industry_new, data = d))
library(effectsize)
eta_squared(aov(reboundaware1 ~ industry_new, data = d))
## For one-way between subjects designs, partial eta squared is equivalent
##   to eta squared. Returning eta squared.
## # Effect Size for ANOVA
## 
## Parameter    |     Eta2 |       95% CI
## --------------------------------------
## industry_new | 5.43e-03 | [0.00, 1.00]
## 
## - One-sided CIs: upper bound fixed at [1.00].

Company size

d$empno <- as.factor(d$empno)
describeBy(d$reboundaware1, group = d$empno)
## 
##  Descriptive statistics by group 
## group: 1
##    vars   n mean   sd median trimmed  mad min max range skew kurtosis   se
## X1    1 388  3.3 2.07      3    3.14 2.97   1   7     6  0.3    -1.26 0.11
## ------------------------------------------------------------ 
## group: 2
##    vars   n mean   sd median trimmed  mad min max range skew kurtosis   se
## X1    1 558 3.68 2.05      4    3.61 2.97   1   7     6 0.02    -1.34 0.09
## ------------------------------------------------------------ 
## group: 3
##    vars   n mean   sd median trimmed  mad min max range  skew kurtosis   se
## X1    1 650 4.03 1.99      4    4.03 2.97   1   7     6 -0.23    -1.17 0.08
## ------------------------------------------------------------ 
## group: 4
##    vars   n mean sd median trimmed  mad min max range  skew kurtosis   se
## X1    1 525 4.37  2      5    4.47 1.48   1   7     6 -0.46    -1.03 0.09
## ------------------------------------------------------------ 
## group: 5
##    vars   n mean   sd median trimmed  mad min max range  skew kurtosis   se
## X1    1 414 4.67 1.83      5    4.83 1.48   1   7     6 -0.71    -0.56 0.09
## ------------------------------------------------------------ 
## group: 6
##    vars   n mean   sd median trimmed  mad min max range skew kurtosis   se
## X1    1 856 3.73 2.21      4    3.66 2.97   1   7     6 0.05    -1.48 0.08
summary(aov(reboundaware1 ~ empno, data = d))
##               Df Sum Sq Mean Sq F value Pr(>F)    
## empno          5    561   112.2   26.72 <2e-16 ***
## Residuals   3385  14216     4.2                   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
tukey_bio <- TukeyHSD(aov(reboundaware1 ~ empno, data = d))
library(effectsize)
eta_squared(aov(reboundaware1 ~ empno, data = d))
## For one-way between subjects designs, partial eta squared is equivalent
##   to eta squared. Returning eta squared.
## # Effect Size for ANOVA
## 
## Parameter | Eta2 |       95% CI
## -------------------------------
## empno     | 0.04 | [0.03, 1.00]
## 
## - One-sided CIs: upper bound fixed at [1.00].
#figure
ggplot(d, aes(x = factor(empno,
                         levels = 1:7,
                         labels = c("Less than 10", "11-50", "51-150", "151-300","301-500",
    "More than 500", "Self-employed")), y = reboundaware1, fill = factor(empno))) + 
  geom_violin(trim = FALSE, alpha = 0.5) +  # Violin plot with transparency
  geom_boxplot(width = 0.2, outlier.shape = NA, aes(color = factor(empno)), show.legend = FALSE) +  
  stat_summary(fun = mean, geom = "point", shape = 18, size = 3, color = "darkred") +  # Mean point
  scale_fill_brewer(palette = "Dark2") + 
  scale_color_brewer(palette = "Dark2") +  
  theme_minimal() +
  scale_y_continuous(
    breaks = 0:8,  # full scale breaks (adjust if needed)
    labels = c(" ", "(1) Not at all", "(2)", "(3)", "(4)", "(5)", "(6)", "(7) To a great extent", "")
  ) + theme(legend.position = "none")

division

describeBy(d$reboundaware1, group = d$division)
## 
##  Descriptive statistics by group 
## group: 1
##    vars    n mean   sd median trimmed  mad min max range skew kurtosis   se
## X1    1 1301 3.58 2.08      4    3.49 2.97   1   7     6 0.09    -1.38 0.06
## ------------------------------------------------------------ 
## group: 2
##    vars   n mean   sd median trimmed  mad min max range skew kurtosis   se
## X1    1 321 4.19 2.07      5    4.24 1.48   1   7     6 -0.4    -1.16 0.12
## ------------------------------------------------------------ 
## group: 3
##    vars   n mean  sd median trimmed  mad min max range  skew kurtosis  se
## X1    1 333 4.75 1.8      5    4.93 1.48   1   7     6 -0.67    -0.43 0.1
## ------------------------------------------------------------ 
## group: 4
##    vars   n mean   sd median trimmed  mad min max range  skew kurtosis  se
## X1    1 411 4.02 2.04      4    4.03 2.97   1   7     6 -0.21    -1.27 0.1
## ------------------------------------------------------------ 
## group: 5
##    vars   n mean   sd median trimmed  mad min max range  skew kurtosis   se
## X1    1 298 4.31 2.05      5    4.38 2.97   1   7     6 -0.35    -1.19 0.12
## ------------------------------------------------------------ 
## group: 6
##    vars   n mean   sd median trimmed  mad min max range  skew kurtosis  se
## X1    1 365  4.7 1.94      5    4.88 1.48   1   7     6 -0.68     -0.7 0.1
## ------------------------------------------------------------ 
## group: 7
##    vars   n mean   sd median trimmed  mad min max range skew kurtosis   se
## X1    1 362 3.12 2.01      3    2.94 2.97   1   7     6 0.42    -1.16 0.11
summary(aov(reboundaware1 ~ division, data = d))
##               Df Sum Sq Mean Sq F value  Pr(>F)   
## division       1     36   36.02   8.281 0.00403 **
## Residuals   3389  14741    4.35                   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
eta_squared(aov(reboundaware1 ~ division, data = d))
## For one-way between subjects designs, partial eta squared is equivalent
##   to eta squared. Returning eta squared.
## # Effect Size for ANOVA
## 
## Parameter |     Eta2 |       95% CI
## -----------------------------------
## division  | 2.44e-03 | [0.00, 1.00]
## 
## - One-sided CIs: upper bound fixed at [1.00].
ggplot(d, aes(x = factor(division,
                         levels = 1:7,
                         labels = c("Operations", "Finance", "Human Resources (HR)", "Marketing & Sales", "Research & Development", "Information Technology (IT)", "Other:")), y = reboundaware1, fill = factor(division))) + 
  geom_violin(trim = FALSE, alpha = 0.5) +  # Violin plot with transparency
  geom_boxplot(width = 0.2, outlier.shape = NA, aes(color = factor(division)), show.legend = FALSE) +  
  stat_summary(fun = mean, geom = "point", shape = 18, size = 3, color = "darkred") +  # Mean point
  scale_fill_brewer(palette = "Dark2") + 
  scale_color_brewer(palette = "Dark2") +  
  theme_minimal() +
  scale_y_continuous(
    breaks = 0:8,  # full scale breaks (adjust if needed)
    labels = c(" ", "(1) Not at all", "(2)", "(3)", "(4)", "(5)", "(6)", "(7) To a great extent", "")
  ) + theme(legend.position = "none")

position

describeBy(d$reboundaware1, group = d$position)
## 
##  Descriptive statistics by group 
## group: 1
##    vars    n mean   sd median trimmed  mad min max range skew kurtosis   se
## X1    1 1358 3.36 2.14      3    3.21 2.97   1   7     6 0.26    -1.38 0.06
## ------------------------------------------------------------ 
## group: 2
##    vars    n mean   sd median trimmed  mad min max range  skew kurtosis   se
## X1    1 1267 4.27 1.95      5    4.34 1.48   1   7     6 -0.39    -1.03 0.05
## ------------------------------------------------------------ 
## group: 3
##    vars   n mean   sd median trimmed  mad min max range  skew kurtosis   se
## X1    1 641 4.64 1.91      5     4.8 1.48   1   7     6 -0.58    -0.76 0.08
## ------------------------------------------------------------ 
## group: 4
##    vars   n mean   sd median trimmed  mad min max range skew kurtosis   se
## X1    1 125  3.4 1.99      4     3.3 2.97   1   7     6 0.18    -1.28 0.18
summary(aov(reboundaware1 ~ position, data = d))
##               Df Sum Sq Mean Sq F value Pr(>F)    
## position       1    498   497.9   118.2 <2e-16 ***
## Residuals   3389  14279     4.2                   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
eta_squared(aov(reboundaware1 ~ position, data = d))
## For one-way between subjects designs, partial eta squared is equivalent
##   to eta squared. Returning eta squared.
## # Effect Size for ANOVA
## 
## Parameter | Eta2 |       95% CI
## -------------------------------
## position  | 0.03 | [0.02, 1.00]
## 
## - One-sided CIs: upper bound fixed at [1.00].
ggplot(d, aes(x = factor(position,
                         levels = 1:4,
                         labels = c("Team member / Employee (no management responsibilities)", "Middle management (e.g., supervising others, team lead)", "Senior or upper management", "Other")), y = reboundaware1, fill = factor(position))) + 
  geom_violin(trim = FALSE, alpha = 0.5) +  # Violin plot with transparency
  geom_boxplot(width = 0.2, outlier.shape = NA, aes(color = factor(position)), show.legend = FALSE) +  
  stat_summary(fun = mean, geom = "point", shape = 18, size = 3, color = "darkred") +  # Mean point
  scale_fill_brewer(palette = "Dark2") + 
  scale_color_brewer(palette = "Dark2") +  
  theme_minimal() +
  scale_y_continuous(
    breaks = 0:8,  # full scale breaks (adjust if needed)
    labels = c(" ", "(1) Not at all", "(2)", "(3)", "(4)", "(5)", "(6)", "(7) To a great extent", "")
  ) + theme(legend.position = "none")

tenure

describeBy(d$reboundaware1, group = d$tenure)
## 
##  Descriptive statistics by group 
## group: 1
##    vars   n mean   sd median trimmed  mad min max range skew kurtosis   se
## X1    1 150  3.1 2.05      3     2.9 2.97   1   7     6 0.46    -1.13 0.17
## ------------------------------------------------------------ 
## group: 2
##    vars   n mean   sd median trimmed  mad min max range skew kurtosis   se
## X1    1 509 3.87 2.11      4    3.84 2.97   1   7     6 -0.1    -1.41 0.09
## ------------------------------------------------------------ 
## group: 3
##    vars   n mean   sd median trimmed  mad min max range  skew kurtosis   se
## X1    1 687 4.18 1.96      5    4.23 1.48   1   7     6 -0.37    -1.04 0.07
## ------------------------------------------------------------ 
## group: 4
##    vars   n mean   sd median trimmed  mad min max range  skew kurtosis   se
## X1    1 689 4.44 2.02      5    4.55 1.48   1   7     6 -0.46    -1.02 0.08
## ------------------------------------------------------------ 
## group: 5
##    vars   n mean   sd median trimmed  mad min max range  skew kurtosis   se
## X1    1 479  4.2 2.08      5    4.24 1.48   1   7     6 -0.29    -1.21 0.09
## ------------------------------------------------------------ 
## group: 6
##    vars   n mean   sd median trimmed  mad min max range skew kurtosis   se
## X1    1 346 3.69 2.09      4    3.62 2.97   1   7     6 0.04    -1.42 0.11
## ------------------------------------------------------------ 
## group: 7
##    vars   n mean   sd median trimmed  mad min max range skew kurtosis   se
## X1    1 531 3.23 2.06      3    3.08 2.97   1   7     6 0.31    -1.35 0.09
summary(aov(reboundaware1 ~ tenure, data = d))
##               Df Sum Sq Mean Sq F value   Pr(>F)    
## tenure         1     77   77.19    17.8 2.52e-05 ***
## Residuals   3389  14699    4.34                     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
eta_squared(aov(reboundaware1 ~ tenure, data = d))
## For one-way between subjects designs, partial eta squared is equivalent
##   to eta squared. Returning eta squared.
## # Effect Size for ANOVA
## 
## Parameter |     Eta2 |       95% CI
## -----------------------------------
## tenure    | 5.22e-03 | [0.00, 1.00]
## 
## - One-sided CIs: upper bound fixed at [1.00].
#figure
ggplot(d, aes(x = factor(tenure,
                         levels = 1:7,
                         labels = c("Less than 12 months", "1-3 years", "4-6 years", "7-10 years", "11-15 years", "15-20 years", "More than 20 years")), y = reboundaware1, fill = factor(tenure))) + 
  geom_violin(trim = FALSE, alpha = 0.5) +  # Violin plot with transparency
  geom_boxplot(width = 0.2, outlier.shape = NA, aes(color = factor(tenure)), show.legend = FALSE) +  
  stat_summary(fun = mean, geom = "point", shape = 18, size = 3, color = "darkred") +  # Mean point
  scale_fill_brewer(palette = "Dark2") + 
  scale_color_brewer(palette = "Dark2") +  
  theme_minimal() +
  scale_y_continuous(
    breaks = 0:8,  # full scale breaks (adjust if needed)
    labels = c(" ", "(1) Not at all", "(2)", "(3)", "(4)", "(5)", "(6)", "(7) To a great extent", "")
  ) + theme(legend.position = "none")

Sustainability as part of job description

describeBy(d$reboundaware1, group = d$sustainability)
## 
##  Descriptive statistics by group 
## group: 1
##    vars   n mean  sd median trimmed mad min max range skew kurtosis   se
## X1    1 601 2.05 1.6      1    1.72   0   1   7     6 1.44     0.97 0.07
## ------------------------------------------------------------ 
## group: 2
##    vars   n mean   sd median trimmed  mad min max range skew kurtosis   se
## X1    1 537 3.12 1.96      3    2.97 2.97   1   7     6 0.42    -1.15 0.08
## ------------------------------------------------------------ 
## group: 3
##    vars   n mean   sd median trimmed  mad min max range  skew kurtosis   se
## X1    1 915 3.98 1.85      4    4.01 1.48   1   7     6 -0.24    -1.04 0.06
## ------------------------------------------------------------ 
## group: 4
##    vars   n mean   sd median trimmed  mad min max range  skew kurtosis   se
## X1    1 857  4.8 1.67      5    4.97 1.48   1   7     6 -0.78    -0.06 0.06
## ------------------------------------------------------------ 
## group: 5
##    vars   n mean   sd median trimmed  mad min max range  skew kurtosis   se
## X1    1 481 5.63 1.54      6     5.9 1.48   1   7     6 -1.34     1.43 0.07
summary(lm(reboundaware1 ~ sustainability, data = d))
## 
## Call:
## lm(formula = reboundaware1 ~ sustainability, data = d)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.6963 -1.1463  0.0787  1.1912  4.8537 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)     1.25875    0.07575   16.62   <2e-16 ***
## sustainability  0.88750    0.02302   38.56   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.741 on 3389 degrees of freedom
## Multiple R-squared:  0.3049, Adjusted R-squared:  0.3047 
## F-statistic:  1487 on 1 and 3389 DF,  p-value: < 2.2e-16
eta_squared(lm(reboundaware1 ~ sustainability, data = d))
## For one-way between subjects designs, partial eta squared is equivalent
##   to eta squared. Returning eta squared.
## # Effect Size for ANOVA
## 
## Parameter      | Eta2 |       95% CI
## ------------------------------------
## sustainability | 0.30 | [0.28, 1.00]
## 
## - One-sided CIs: upper bound fixed at [1.00].
#figure
ggplot(d, aes(x = factor(sustainability,
                         levels = 1:5,
                         labels = c("Not at all", "Hardly", "Somewhat", "Fairly", "Very much")), y = reboundaware1, fill = factor(sustainability))) + 
  geom_violin(trim = FALSE, alpha = 0.5) +
  geom_boxplot(width = 0.2, outlier.shape = NA, aes(color = factor(sustainability)), show.legend = FALSE) +  
  stat_summary(fun = mean, geom = "point", shape = 18, size = 3, color = "darkred") +  # Mean point
  scale_fill_brewer(palette = "Dark2") + 
  scale_color_brewer(palette = "Dark2") +  
  theme_minimal() +
  scale_y_continuous(
    breaks = 0:8,  # full scale breaks (adjust if needed)
    labels = c(" ", "(1) Not at all", "(2)", "(3)", "(4)", "(5)", "(6)", "(7) To a great extent", "")
  ) + theme(legend.position = "none")

Correlation matrix

library(corrplot)
## corrplot 0.95 loaded
d$position[d$position == 4] <- NA
d$gender <- as.factor(d$gender)
d$country_base <- as.factor(d$country_base)
d$division <- as.factor(d$division)
d$industry_new <- as.factor(d$industry_new)
d$empno <- as.numeric(d$empno)
d$tenure <- as.numeric(d$tenure)
d$position <- as.numeric(d$position)

#overall table
var <- d[, c("age","gender", "education", "country_base", 
             "sustainability", "position", "division", "tenure",
             "industry_new",  "empno",
             "bio_val", "ego_val", "pa", "ccb_ar", 
             "se", "ar3_employee", "ar4_employee",
             "sn", "ar1_org", "ar3_org", "ar4_org", "cer1", "cer2",  
             "reboundaware1")]
var_num <- var[, sapply(var, is.numeric)] # only numerical variables
cor_matrix <- cor(var_num, use = "complete.obs")
corrplot(cor_matrix, method = "color", type = "lower", col = brewer.pal(n = 10, name = "RdYlBu"), addCoef.col =      "black", tl.col = "black", tl.srt = 45,diag = FALSE)   

apaTables::apa.cor.table(
  var_num,
  filename = "Table_Correlations.doc",
  table.number = 1,
  show.conf.interval = TRUE
)
## 
## 
## Table 1 
## 
## Means, standard deviations, and correlations with confidence intervals
##  
## 
##   Variable          M    SD   1            2            3            4         
##   1. age            3.49 1.33                                                  
##                                                                                
##   2. education      4.90 1.70 -.14**                                           
##                               [-.17, -.11]                                     
##                                                                                
##   3. sustainability 3.02 1.30 -.25**       .17**                               
##                               [-.28, -.22] [.14, .21]                          
##                                                                                
##   4. position       1.78 0.75 -.05**       .31**        .34**                  
##                               [-.09, -.02] [.28, .34]   [.31, .37]             
##                                                                                
##   5. tenure         4.18 1.77 .52**        -.05**       -.07**       .08**     
##                               [.50, .55]   [-.08, -.02] [-.10, -.04] [.04, .11]
##                                                                                
##   6. empno          3.76 1.72 -.07**       .18**        .10**        .05**     
##                               [-.11, -.04] [.15, .21]   [.07, .14]   [.01, .08]
##                                                                                
##   7. bio_val        5.13 1.63 .03          .09**        .23**        .09**     
##                               [-.01, .06]  [.06, .13]   [.19, .26]   [.06, .13]
##                                                                                
##   8. ego_val        4.22 1.75 -.21**       .16**        .41**        .17**     
##                               [-.24, -.18] [.12, .19]   [.39, .44]   [.14, .20]
##                                                                                
##   9. pa             5.33 1.47 .02          .04**        .12**        .04*      
##                               [-.02, .05]  [.01, .08]   [.08, .15]   [.01, .07]
##                                                                                
##   10. ccb_ar        4.72 1.65 -.11**       .10**        .37**        .14**     
##                               [-.14, -.08] [.07, .14]   [.34, .40]   [.11, .17]
##                                                                                
##   11. se            5.04 1.41 -.08**       .12**        .46**        .22**     
##                               [-.11, -.04] [.09, .16]   [.44, .49]   [.19, .25]
##                                                                                
##   12. ar3_employee  5.17 1.54 -.02         .06**        .30**        .13**     
##                               [-.05, .02]  [.03, .10]   [.27, .33]   [.10, .16]
##                                                                                
##   13. ar4_employee  5.24 1.49 .01          .07**        .30**        .11**     
##                               [-.03, .04]  [.04, .10]   [.27, .33]   [.08, .15]
##                                                                                
##   14. sn            5.05 1.45 -.07**       .10**        .48**        .21**     
##                               [-.10, -.04] [.07, .13]   [.45, .50]   [.18, .25]
##                                                                                
##   15. ar1_org       5.40 1.41 .00          .08**        .21**        .09**     
##                               [-.03, .04]  [.05, .11]   [.18, .24]   [.06, .12]
##                                                                                
##   16. ar3_org       5.44 1.39 .01          .07**        .23**        .08**     
##                               [-.03, .04]  [.04, .11]   [.19, .26]   [.04, .11]
##                                                                                
##   17. ar4_org       5.37 1.42 .01          .08**        .26**        .10**     
##                               [-.03, .04]  [.05, .11]   [.23, .29]   [.06, .13]
##                                                                                
##   18. cer1          5.13 1.52 -.02         .10**        .41**        .17**     
##                               [-.05, .01]  [.07, .13]   [.38, .44]   [.14, .21]
##                                                                                
##   19. cer2          5.15 1.50 -.02         .11**        .40**        .16**     
##                               [-.05, .01]  [.07, .14]   [.37, .42]   [.13, .20]
##                                                                                
##   20. reboundaware1 3.94 2.09 -.26**       .15**        .55**        .24**     
##                               [-.30, -.23] [.12, .18]   [.53, .58]   [.21, .28]
##                                                                                
##   5            6          7          8          9          10        
##                                                                      
##                                                                      
##                                                                      
##                                                                      
##                                                                      
##                                                                      
##                                                                      
##                                                                      
##                                                                      
##                                                                      
##                                                                      
##                                                                      
##                                                                      
##                                                                      
##   .06**                                                              
##   [.03, .10]                                                         
##                                                                      
##   .05**        .08**                                                 
##   [.01, .08]   [.05, .11]                                            
##                                                                      
##   -.06**       .11**      .42**                                      
##   [-.10, -.03] [.07, .14] [.40, .45]                                 
##                                                                      
##   .04*         .06**      .45**      .26**                           
##   [.01, .08]   [.03, .10] [.42, .47] [.23, .30]                      
##                                                                      
##   -.01         .08**      .43**      .40**      .40**                
##   [-.04, .02]  [.05, .12] [.40, .46] [.37, .43] [.37, .43]           
##                                                                      
##   .02          .07**      .51**      .48**      .34**      .49**     
##   [-.02, .05]  [.04, .10] [.48, .53] [.45, .50] [.31, .37] [.46, .51]
##                                                                      
##   .04*         .06**      .40**      .37**      .28**      .36**     
##   [.01, .07]   [.02, .09] [.37, .43] [.34, .40] [.25, .31] [.33, .39]
##                                                                      
##   .05**        .08**      .48**      .39**      .31**      .38**     
##   [.01, .08]   [.05, .11] [.45, .50] [.36, .41] [.28, .34] [.36, .41]
##                                                                      
##   .04*         .06**      .49**      .47**      .34**      .50**     
##   [.01, .07]   [.03, .10] [.46, .51] [.44, .50] [.31, .37] [.47, .52]
##                                                                      
##   .04*         .15**      .42**      .28**      .27**      .32**     
##   [.01, .08]   [.11, .18] [.39, .45] [.25, .31] [.24, .30] [.28, .35]
##                                                                      
##   .06**        .15**      .44**      .31**      .31**      .32**     
##   [.03, .10]   [.12, .19] [.41, .46] [.28, .34] [.28, .34] [.29, .35]
##                                                                      
##   .06**        .14**      .43**      .34**      .28**      .34**     
##   [.02, .09]   [.11, .17] [.41, .46] [.31, .37] [.25, .31] [.31, .37]
##                                                                      
##   .04**        .16**      .37**      .39**      .23**      .35**     
##   [.01, .08]   [.12, .19] [.34, .40] [.36, .42] [.20, .26] [.32, .38]
##                                                                      
##   .05**        .17**      .38**      .38**      .25**      .34**     
##   [.02, .09]   [.14, .20] [.35, .41] [.35, .41] [.22, .28] [.31, .37]
##                                                                      
##   -.07**       .08**      .17**      .44**      .19**      .43**     
##   [-.11, -.04] [.04, .11] [.14, .21] [.41, .47] [.16, .23] [.40, .45]
##                                                                      
##   11         12         13         14         15         16         17        
##                                                                               
##                                                                               
##                                                                               
##                                                                               
##                                                                               
##                                                                               
##                                                                               
##                                                                               
##                                                                               
##                                                                               
##                                                                               
##                                                                               
##                                                                               
##                                                                               
##                                                                               
##                                                                               
##                                                                               
##                                                                               
##                                                                               
##                                                                               
##                                                                               
##                                                                               
##                                                                               
##                                                                               
##                                                                               
##                                                                               
##                                                                               
##                                                                               
##                                                                               
##                                                                               
##                                                                               
##                                                                               
##   .52**                                                                       
##   [.50, .54]                                                                  
##                                                                               
##   .54**      .67**                                                            
##   [.52, .57] [.65, .69]                                                       
##                                                                               
##   .78**      .48**      .50**                                                 
##   [.77, .79] [.45, .50] [.48, .53]                                            
##                                                                               
##   .41**      .48**      .50**      .39**                                      
##   [.39, .44] [.45, .51] [.48, .53] [.37, .42]                                 
##                                                                               
##   .45**      .63**      .55**      .41**      .60**                           
##   [.42, .48] [.61, .65] [.52, .57] [.38, .44] [.58, .62]                      
##                                                                               
##   .46**      .53**      .68**      .44**      .60**      .61**                
##   [.43, .49] [.50, .55] [.66, .70] [.42, .47] [.57, .62] [.58, .63]           
##                                                                               
##   .57**      .38**      .41**      .58**      .39**      .36**      .42**     
##   [.55, .60] [.35, .41] [.38, .43] [.55, .60] [.36, .41] [.33, .39] [.40, .45]
##                                                                               
##   .57**      .38**      .40**      .58**      .39**      .38**      .43**     
##   [.55, .59] [.35, .41] [.37, .43] [.56, .60] [.36, .42] [.35, .41] [.41, .46]
##                                                                               
##   .42**      .27**      .25**      .43**      .13**      .17**      .19**     
##   [.40, .45] [.24, .30] [.22, .29] [.41, .46] [.09, .16] [.13, .20] [.16, .22]
##                                                                               
##   18         19        
##                        
##                        
##                        
##                        
##                        
##                        
##                        
##                        
##                        
##                        
##                        
##                        
##                        
##                        
##                        
##                        
##                        
##                        
##                        
##                        
##                        
##                        
##                        
##                        
##                        
##                        
##                        
##                        
##                        
##                        
##                        
##                        
##                        
##                        
##                        
##                        
##                        
##                        
##                        
##                        
##                        
##                        
##                        
##                        
##                        
##                        
##                        
##                        
##                        
##                        
##                        
##                        
##                        
##   .76**                
##   [.75, .77]           
##                        
##   .31**      .31**     
##   [.28, .34] [.27, .34]
##                        
## 
## Note. M and SD are used to represent mean and standard deviation, respectively.
## Values in square brackets indicate the 95% confidence interval.
## The confidence interval is a plausible range of population correlations 
## that could have caused the sample correlation (Cumming, 2014).
##  * indicates p < .05. ** indicates p < .01.
## 
#correlation figure with focus on reboundaware1
target <- "reboundaware1"

df_plot <- map_dfr(
  setdiff(names(var_num), target),
  function(v) {
    ct <- cor.test(
      var_num[[v]],
      var_num[[target]],
      method = "pearson",
      use = "pairwise.complete.obs"
    )

    tibble(
      variable = v,
      r        = unname(ct$estimate),
      lower    = ct$conf.int[1],
      upper    = ct$conf.int[2],
      p        = ct$p.value
    )
  }
)

library(ggplot2)

ggplot(df_plot, aes(x = r, y = reorder(variable, r))) +
  geom_vline(xintercept = 0, linetype = "dashed", color = "grey60") +
  geom_errorbarh(aes(xmin = lower, xmax = upper), height = .2) +
  geom_point(size = 3) +
  labs(
    x = "Correlation with Rebound Awareness (r)",
    y = NULL
  ) +
  theme_classic(base_size = 12)
## Warning: `geom_errobarh()` was deprecated in ggplot2 4.0.0.
## ℹ Please use the `orientation` argument of `geom_errorbar()` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
## `height` was translated to `width`.

Correlational network

library(qgraph)
qgraph(cor_matrix, 
       layout = "spring",         # Layout algorithm
       vsize = 7,                 # Size of the nodes
       esize = 20,                # Edge size scaling
       minimum = 0.2,              # Show edges only if correlation > 0.2
       cut = 0.5,                 # Threshold for line width
       labels = colnames(vars),   # Use variable names as labels
       color = "#74ADD1",
       edge.color = "#313695",
       edge.labels = TRUE
       )   

Regression

#complete cases
d_cc <- d[complete.cases(d[, c(
  "age","gender","education","country_base",
  "sustainability","position","division","tenure",
  "industry_new","empno",
  "bio_val","ego_val","pa","ccb_ar",
  "se","ar3_employee","ar4_employee",
  "sn","ar1_org","ar3_org","ar4_org","cer1","cer2",
  "reboundaware1"
)]), ]

#model with factors on all levels: 45% explained variance
model <- lm(reboundaware1 ~ age + gender + education + country_base + 
             sustainability + position + division + tenure + 
             industry_new + empno + 
             bio_val + ego_val + pa + ccb_ar + 
             se + ar3_employee + ar4_employee + 
             sn + ar1_org + ar3_org + ar4_org + cer1 + cer2, data = d_cc)
summary(model, fit.measures = TRUE, standardized = TRUE, rsquare = TRUE)
## 
## Call:
## lm(formula = reboundaware1 ~ age + gender + education + country_base + 
##     sustainability + position + division + tenure + industry_new + 
##     empno + bio_val + ego_val + pa + ccb_ar + se + ar3_employee + 
##     ar4_employee + sn + ar1_org + ar3_org + ar4_org + cer1 + 
##     cer2, data = d_cc)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -5.128 -1.012  0.085  1.027  6.246 
## 
## Coefficients:
##                            Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                0.486219   0.211117   2.303 0.021337 *  
## age                       -0.173631   0.025867  -6.712 2.25e-11 ***
## gender2                    0.010330   0.060761   0.170 0.865018    
## gender3                    0.398943   0.308548   1.293 0.196115    
## gender4                    0.757435   0.327171   2.315 0.020670 *  
## education                  0.008856   0.017923   0.494 0.621267    
## country_base2             -0.101654   0.088615  -1.147 0.251408    
## country_base3             -0.221784   0.086178  -2.574 0.010110 *  
## country_base4              0.248462   0.086008   2.889 0.003893 ** 
## country_base5              0.083967   0.120218   0.698 0.484939    
## sustainability             0.492884   0.027313  18.046  < 2e-16 ***
## position                   0.107209   0.041408   2.589 0.009667 ** 
## division2                  0.214739   0.099395   2.160 0.030810 *  
## division3                  0.454156   0.099244   4.576 4.91e-06 ***
## division4                  0.099381   0.090180   1.102 0.270530    
## division5                  0.222350   0.102272   2.174 0.029770 *  
## division6                  0.198958   0.097668   2.037 0.041722 *  
## division7                 -0.280707   0.099489  -2.821 0.004809 ** 
## tenure                     0.013954   0.018751   0.744 0.456830    
## industry_newManufacturing  0.022726   0.063266   0.359 0.719459    
## industry_newMobility      -0.197450   0.080286  -2.459 0.013971 *  
## empno                      0.023635   0.017902   1.320 0.186841    
## bio_val                   -0.185486   0.022652  -8.189 3.76e-16 ***
## ego_val                    0.221633   0.019902  11.136  < 2e-16 ***
## pa                         0.082290   0.021901   3.757 0.000175 ***
## ccb_ar                     0.242850   0.020890  11.625  < 2e-16 ***
## se                         0.104769   0.034539   3.033 0.002438 ** 
## ar3_employee               0.054520   0.026845   2.031 0.042347 *  
## ar4_employee               0.011961   0.029687   0.403 0.687050    
## sn                         0.126508   0.033197   3.811 0.000141 ***
## ar1_org                   -0.100657   0.026412  -3.811 0.000141 ***
## ar3_org                   -0.052349   0.029441  -1.778 0.075483 .  
## ar4_org                   -0.050929   0.029797  -1.709 0.087509 .  
## cer1                       0.010935   0.029057   0.376 0.706695    
## cer2                       0.016095   0.029478   0.546 0.585104    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.544 on 3231 degrees of freedom
## Multiple R-squared:  0.4593, Adjusted R-squared:  0.4536 
## F-statistic: 80.71 on 34 and 3231 DF,  p-value: < 2.2e-16
#figure
library(broom)
library(dplyr)

df_coef <- parameters::model_parameters(
  model,
  standardize = "refit",  # gets standardized β
  ci = 0.95               # 95% confidence interval
) |>
  filter(Parameter != "(Intercept)")  # remove intercept

ggplot(df_coef, aes(x = Coefficient, y = reorder(Parameter, Coefficient))) +
  geom_vline(xintercept = 0, linetype = "dashed", color = "grey60") +
  geom_errorbarh(aes(xmin = CI_low, xmax = CI_high), width = .2) +
  geom_point(size = 3) +
  labs(
    x = "Standardized Regression Coefficient (β)",
    y = NULL
  ) +
  theme_classic(base_size = 12)

#model with only numeric variables
model_num <- lm(reboundaware1 ~ age + 
             sustainability + position + tenure + 
             empno + 
             bio_val + ego_val + pa + ccb_ar + 
             se + ar3_employee + ar4_employee + 
             sn + ar1_org + ar3_org + ar4_org + cer1 + cer2, data = d_cc)
summary(model_num, fit.measures = TRUE, standardized = TRUE, rsquare = TRUE)
## 
## Call:
## lm(formula = reboundaware1 ~ age + sustainability + position + 
##     tenure + empno + bio_val + ego_val + pa + ccb_ar + se + ar3_employee + 
##     ar4_employee + sn + ar1_org + ar3_org + ar4_org + cer1 + 
##     cer2, data = d_cc)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -5.2959 -1.0292  0.1073  1.0316  6.2413 
## 
## Coefficients:
##                 Estimate Std. Error t value Pr(>|t|)    
## (Intercept)     0.468283   0.177875   2.633 0.008512 ** 
## age            -0.178786   0.025932  -6.894 6.47e-12 ***
## sustainability  0.515148   0.027162  18.966  < 2e-16 ***
## position        0.128448   0.039197   3.277 0.001060 ** 
## tenure          0.024336   0.018631   1.306 0.191575    
## empno           0.008988   0.016718   0.538 0.590887    
## bio_val        -0.179873   0.022610  -7.956 2.44e-15 ***
## ego_val         0.225427   0.019948  11.300  < 2e-16 ***
## pa              0.082442   0.021903   3.764 0.000170 ***
## ccb_ar          0.244001   0.020970  11.636  < 2e-16 ***
## se              0.131256   0.034669   3.786 0.000156 ***
## ar3_employee    0.055067   0.027190   2.025 0.042923 *  
## ar4_employee    0.020727   0.029969   0.692 0.489235    
## sn              0.135168   0.033078   4.086 4.49e-05 ***
## ar1_org        -0.114018   0.026691  -4.272 1.99e-05 ***
## ar3_org        -0.057278   0.029761  -1.925 0.054362 .  
## ar4_org        -0.052822   0.030150  -1.752 0.079875 .  
## cer1           -0.002879   0.029361  -0.098 0.921888    
## cer2            0.008547   0.029773   0.287 0.774068    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.566 on 3247 degrees of freedom
## Multiple R-squared:  0.4414, Adjusted R-squared:  0.4383 
## F-statistic: 142.5 on 18 and 3247 DF,  p-value: < 2.2e-16
df_coef_num <- parameters::model_parameters(
  model_num,
  standardize = "refit",  # gets standardized β
  ci = 0.95               # 95% confidence interval
) |>
  filter(Parameter != "(Intercept)")  # remove intercept

ggplot(df_coef_num, aes(x = Coefficient, y = reorder(Parameter, Coefficient))) +
  geom_vline(xintercept = 0, linetype = "dashed", color = "grey60") +
  geom_errorbarh(aes(xmin = CI_low, xmax = CI_high), width = .2) +
  geom_point(size = 3) +
  labs(
    x = "Standardized Regression Coefficient (β)",
    y = NULL
  ) +
  theme_classic(base_size = 12)

#model for individual-level factors: 32% of explained variance
model_ind <- lm(reboundaware1 ~ age + gender + education + country_base + bio_val + ego_val + pa + ccb_ar, data = d_cc)
summary(model_ind, fit.measures = TRUE, standardized = TRUE, rsquare = TRUE)
## 
## Call:
## lm(formula = reboundaware1 ~ age + gender + education + country_base + 
##     bio_val + ego_val + pa + ccb_ar, data = d_cc)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -5.1502 -1.1735  0.1674  1.2084  6.1159 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)    1.69874    0.19785   8.586  < 2e-16 ***
## age           -0.25700    0.02402 -10.700  < 2e-16 ***
## gender2       -0.08722    0.06528  -1.336 0.181616    
## gender3        0.76678    0.33946   2.259 0.023961 *  
## gender4        1.39508    0.35974   3.878 0.000107 ***
## education      0.06598    0.01852   3.562 0.000373 ***
## country_base2 -0.43259    0.09422  -4.591 4.58e-06 ***
## country_base3 -0.26652    0.09334  -2.855 0.004326 ** 
## country_base4  0.26627    0.09175   2.902 0.003730 ** 
## country_base5 -0.30881    0.12714  -2.429 0.015200 *  
## bio_val       -0.16203    0.02319  -6.988 3.37e-12 ***
## ego_val        0.38666    0.02047  18.885  < 2e-16 ***
## pa             0.04990    0.02384   2.093 0.036468 *  
## ccb_ar         0.39850    0.02165  18.410  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.71 on 3252 degrees of freedom
## Multiple R-squared:  0.3329, Adjusted R-squared:  0.3302 
## F-statistic: 124.8 on 13 and 3252 DF,  p-value: < 2.2e-16
#model for job/role-level factors: 37% of variance explained
model_job <- lm(reboundaware1 ~ sustainability + position + division + tenure + se + ar3_employee + ar4_employee, data = d_cc)
summary(model_job, fit.measures = TRUE, standardized = TRUE, rsquare = TRUE)
## 
## Call:
## lm(formula = reboundaware1 ~ sustainability + position + division + 
##     tenure + se + ar3_employee + ar4_employee, data = d_cc)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -5.2459 -1.1289  0.0728  1.1615  6.1792 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)     0.12953    0.15036   0.861 0.389042    
## sustainability  0.67300    0.02682  25.097  < 2e-16 ***
## position        0.10025    0.04220   2.375 0.017588 *  
## division2       0.42359    0.10504   4.033 5.64e-05 ***
## division3       0.72821    0.10439   6.976 3.67e-12 ***
## division4       0.29333    0.09568   3.066 0.002190 ** 
## division5       0.37174    0.10831   3.432 0.000606 ***
## division6       0.43201    0.10209   4.232 2.38e-05 ***
## division7      -0.30225    0.10552  -2.864 0.004205 ** 
## tenure         -0.05836    0.01682  -3.469 0.000529 ***
## se              0.28930    0.02756  10.499  < 2e-16 ***
## ar3_employee    0.04910    0.02646   1.856 0.063544 .  
## ar4_employee   -0.01185    0.02768  -0.428 0.668592    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.665 on 3253 degrees of freedom
## Multiple R-squared:  0.367,  Adjusted R-squared:  0.3647 
## F-statistic: 157.2 on 12 and 3253 DF,  p-value: < 2.2e-16
#model for organizational-level factors: 23% explained variance
model_org <- lm(reboundaware1 ~ industry_new + empno + sn + ar1_org + ar3_org + ar4_org + cer1 + cer2, data = d_cc)
summary(model_org, fit.measures = TRUE, standardized = TRUE, rsquare = TRUE)
## 
## Call:
## lm(formula = reboundaware1 ~ industry_new + empno + sn + ar1_org + 
##     ar3_org + ar4_org + cer1 + cer2, data = d_cc)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.6627 -1.3957  0.3082  1.4804  5.5914 
## 
## Coefficients:
##                            Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                0.743727   0.170460   4.363 1.32e-05 ***
## industry_newManufacturing -0.000633   0.075043  -0.008  0.99327    
## industry_newMobility      -0.197908   0.095770  -2.066  0.03886 *  
## empno                      0.059019   0.020385   2.895  0.00381 ** 
## sn                         0.572619   0.029955  19.116  < 2e-16 ***
## ar1_org                   -0.129672   0.031485  -4.118 3.91e-05 ***
## ar3_org                   -0.011179   0.032313  -0.346  0.72940    
## ar4_org                    0.007196   0.032202   0.223  0.82320    
## cer1                       0.112608   0.034498   3.264  0.00111 ** 
## cer2                       0.054881   0.035254   1.557  0.11963    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.864 on 3256 degrees of freedom
## Multiple R-squared:  0.206,  Adjusted R-squared:  0.2038 
## F-statistic: 93.86 on 9 and 3256 DF,  p-value: < 2.2e-16