The average extraversion in this cycle is 3.71. Promoted employees have a higher mean extraversion (4.49, n=41) than non-promoted employees (2.84, n=37); this difference is statistically significant (t=4.15, p=8.61e−05) with a large effect size (Cohen’s d=0.93). The point-biserial correlation between extraversion and promotion is r=0.427, indicating that promotions are favoring extraversion. In this dataset, simple correlations with supervisor-rated performance are small (openness −.186, conscientiousness −.185, extraversion −.073, agreeableness −.186, emotional stability −.186), so no trait clearly predicts ratings here; however, based on class material, conscientiousness is typically the most valid personality predictor for managerial performance.
There is clear evidence that extraversion is being over-weighted in promotion decisions relative to job performance (4.49 vs 2.84; t=4.15, p=8.61e−05; d=0.93; r=0.427). I recommend reducing reliance on extraversion as a primary criterion and emphasizing job-relevant, higher-validity methods. Specifically, use structured behavior-based interviews mapped to managerial competencies, work-sample/in-basket exercises, cognitive/problem-solving measures aligned to the role, 360° leadership feedback, and objective performance metrics. These steps will better align promotions with actual job requirements and future performance.
getwd()
## [1] "/Users/timmydaly/Desktop/MGT HR"
library(readxl)
df <- read_xlsx("Practice_Org1.xlsx")
df$Start_Date <- as.Date(df$Start_Date)
df_2024 <- subset(df, format(Start_Date, "%Y") == "2024")
mean_engagement <- mean(df_2024$Engagement, na.rm = TRUE)
at_risk <- subset(df_2024, Engagement < mean_engagement)
print(at_risk)
## # A tibble: 15 × 6
## ID Last_Name First_Name Start_Date Gender Engagement
## <chr> <chr> <chr> <date> <chr> <dbl>
## 1 E0057 Holland Kaylee 2024-07-08 Male 1.93
## 2 E0062 Gill Sonia 2024-11-04 Male 3.06
## 3 E0083 Fernandez Christopher 2024-06-20 Male 3.47
## 4 E0120 Griffin Willie 2024-06-18 Female 3.51
## 5 E0127 Orr Dennis 2024-12-21 Female 3.76
## 6 E0151 Mcclure Melanie 2024-01-17 Female 3.14
## 7 E0152 Levine Amber 2024-02-05 Male 3.62
## 8 E0181 Miller Kylie 2024-08-27 Male 1.96
## 9 E0235 Dunn Shane 2024-10-06 Male 3.21
## 10 E0296 Ramirez Andrew 2024-08-14 Female 2.87
## 11 E0305 Sandoval Brittany 2024-06-15 Female 3.64
## 12 E0366 Chung Lisa 2024-01-21 Male 2.65
## 13 E0390 Vasquez Glenn 2024-08-16 Female 2.43
## 14 E0438 Day Matthew 2024-06-09 Female 3.64
## 15 E0452 Turner Anthony 2024-12-21 Female 3
cat("Employee IDs flagged for early intervention:\n")
## Employee IDs flagged for early intervention:
cat(at_risk$ID, sep = ", ")
## E0057, E0062, E0083, E0120, E0127, E0151, E0152, E0181, E0235, E0296, E0305, E0366, E0390, E0438, E0452
library(readxl)
org2 <- read_xlsx("Practice_Org2.xlsx", sheet = "Sheet1")
names(org2)
## [1] "employee_ID" "department"
## [3] "openness" "conscientiousness"
## [5] "extraversion" "agreeableness"
## [7] "emotional stability" "supervisor_rated_performance"
## [9] "promoted"
org2$extraversion[org2$extraversion == -9999] <- NA
p <- tolower(as.character(org2$promoted))
p[p %in% c("yes","y","true","1")] <- "1"
p[p %in% c("no","n","false","0")] <- "0"
org2$promoted <- as.integer(p)
avg_extraversion <- mean(org2$extraversion, na.rm = TRUE)
avg_extraversion # report this
## [1] 3.705128
tt <- t.test(org2$extraversion ~ org2$promoted)
traits <- c("openness","conscientiousness","extraversion","agreeableness","emotional stability")
cors_to_perf <- sapply(traits, function(v) cor(org2[[v]], org2$supervisor_rated_performance, use = "complete.obs"))
cors_to_perf
## openness conscientiousness extraversion agreeableness
## -0.18609348 -0.18459481 -0.07275869 -0.18607471
## emotional stability
## -0.18606527
p <- tolower(as.character(org2$promoted))
p[p %in% c("yes","y","true","1")] <- "1"
p[p %in% c("no","n","false","0")] <- "0"
org2$promoted01 <- as.integer(p)
tapply(org2$extraversion, org2$promoted01, mean, na.rm = TRUE)
## 0 1
## 2.837838 4.487805
t.test(org2$extraversion ~ org2$promoted01)
##
## Welch Two Sample t-test
##
## data: org2$extraversion by org2$promoted01
## t = -4.1499, df = 75.848, p-value = 8.608e-05
## alternative hypothesis: true difference in means between group 0 and group 1 is not equal to 0
## 95 percent confidence interval:
## -2.4418566 -0.8580775
## sample estimates:
## mean in group 0 mean in group 1
## 2.837838 4.487805
x1 <- org2$extraversion[org2$promoted01 == 1]
x0 <- org2$extraversion[org2$promoted01 == 0]
m1 <- mean(x1, na.rm = TRUE); m0 <- mean(x0, na.rm = TRUE)
s1 <- sd(x1, na.rm = TRUE); s0 <- sd(x0, na.rm = TRUE)
n1 <- sum(!is.na(x1)); n0 <- sum(!is.na(x0))
sp <- sqrt(((n1-1)*s1^2 + (n0-1)*s0^2) / (n1+n0-2))
d <- (m1 - m0) / sp
cor(org2$extraversion, org2$promoted01, use = "complete.obs")
## [1] 0.4271286
traits <- c("openness","conscientiousness","extraversion","agreeableness","emotional stability")
cors_to_perf <- sapply(traits, function(v) cor(org2[[v]], org2$supervisor_rated_performance, use = "complete.obs"))
cors_to_perf
## openness conscientiousness extraversion agreeableness
## -0.18609348 -0.18459481 -0.07275869 -0.18607471
## emotional stability
## -0.18606527
org2$promoted01 <- as.integer(tolower(as.character(org2$promoted)) %in% c("yes","y","true","1"))