#install.packages("tidyverse")
#install.packages("labelled")
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ readr 2.1.5
## ✔ forcats 1.0.0 ✔ stringr 1.5.1
## ✔ ggplot2 3.5.2 ✔ tibble 3.3.0
## ✔ lubridate 1.9.4 ✔ tidyr 1.3.1
## ✔ purrr 1.0.4
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(readxl)
library(labelled)
AIPerf <- read_excel("/Users/christina/Desktop/Dissertation/Dissertation Survey Documents/AIPerf.xlsx", sheet = "RawData")
#glimpse(AIPerf)
#head(AIPerf)
# 1. Extract descriptions (row 1) and remove them
AIPerf_descriptions <- as.character(AIPerf[1, ])
AIPerf <- AIPerf[-1, ]
# 2. Label assignment
AIPerf <- set_variable_labels(AIPerf, .labels = AIPerf_descriptions)
# 3. See all labels
#var_label(AIPerf)
AIPerf <- AIPerf %>%
mutate(across(where(is.character), ~ type.convert(.x, as.is = FALSE)))
#head(AIPerf)
AIPerf_Ex <- AIPerf %>%
mutate(
excluded_complete = (Progress < 80),
excluded_consent = (`Consent Choices` != "1,2,3"),
excluded_aiKnowledge = (AI_Knowledge != 3),
excluded_attention = (Attention != 2),
excluded_age = if_else(is.na(Age), FALSE, Age == 1),
exclude = excluded_complete |
excluded_consent |
excluded_aiKnowledge |
excluded_attention |
excluded_age
)
#checking how many rows have been excluded
count_exclude <- sum(AIPerf_Ex$exclude==TRUE, na.rm=TRUE)
print(paste("The number of participants that have been excluded for analysis:", count_exclude))
## [1] "The number of participants that have been excluded for analysis: 72"
print(paste("The number of participants remaining:", (256-count_exclude)))
## [1] "The number of participants remaining: 184"
#renaming GAAIP Columns for readability
AIPerf_T <- AIPerf_Ex %>%
filter(exclude != TRUE) %>%
select(-contains("exclude")) %>%
rename(
AIP_N1 = AI_Psych_1,
AIP_P1 = AI_Psych_2,
AIP_N2 = AI_Psych_3,
AIP_P2 = AI_Psych_4,
AIP_N3 = AI_Psych_5,
AIP_P3 = AI_Psych_6,
AIP_N4 = AI_Psych_7,
AIP_N5 = AI_Socio_1,
AIP_P4 = AI_Socio_2,
AIP_N6 = AI_Socio_3,
AIP_P5 = AI_Socio_4,
AIP_N7 = AI_Socio_5,
AIP_P6 = AI_Cap_1,
AIP_P7 = AI_Cap_2,
AIP_N8 = AI_Cap_3,
AIP_P8 = AI_Cap_4,
AIP_P9 = AI_Cap_5,
scenarios = FL_11_DO
) %>%
#Transforms AIP Scales to 1-5 instead of 8-12
mutate(
AIP_N1 = AIP_N1-7,
AIP_P1 = AIP_P1-7,
AIP_N2 = AIP_N2-7,
AIP_P2 = AIP_P2-7,
AIP_N3 = AIP_N3-7,
AIP_P3 = AIP_P3-7,
AIP_N4 = AIP_N4-7,
AIP_N5 = AIP_N5-7,
AIP_P4 = AIP_P4-7,
AIP_N6 = AIP_N6-7,
AIP_P5 = AIP_P5-7,
AIP_N7 = AIP_N7-7,
AIP_P6 = AIP_P6-7,
AIP_P7 = AIP_P7-7,
AIP_N8 = AIP_N8-7,
AIP_P8 = AIP_P8-7,
AIP_P9 = AIP_P9-7,
# Scenario transformations
scenarios = case_when(
scenarios == "AI_Assist(M)" ~ "AI_Assist(A)",
scenarios == "AI_Decides(M)" ~ "AI_Decides(A)",
TRUE ~ scenarios
),
Sector = case_when(
Sector == 4 ~ 2,
Sector == 5 ~ 3,
Sector == 6 ~ 4,
Sector == 7 ~ 5,
Sector == 8 ~ 6,
Sector == 9 ~ 7,
Sector == 10 ~ 8,
Sector == 11~ 9,
Sector == 12 ~ 10,
Sector == 13 ~ 11,
Sector == 14 ~ 12,
Sector == 15 ~ 13,
Sector == 16 ~ 14,
Sector == 17 ~ 15,
Sector == 18 ~ 16
))
#Replaced missing data for respondents that marked 'None of the Above' in the `Review Check`
AIPerf_T$`Review Check` <- replace(AIPerf_T$`Review Check`, is.na(AIPerf_T$`Review Check`), 5)
AIPerf_T
## # A tibble: 184 × 63
## StartDate EndDate Status IPAddress Progress Duration (in seconds…¹ Finished
## <dbl> <dbl> <int> <fct> <int> <int> <int>
## 1 45768. 45768. 0 31.94.56.39 100 277 1
## 2 45768. 45768. 0 104.28.40.… 100 318 1
## 3 45768. 45768. 0 109.175.16… 100 249 1
## 4 45768. 45768. 0 104.28.86.… 100 547 1
## 5 45768. 45768. 0 45.148.12.… 100 344 1
## 6 45769. 45769. 0 172.225.23… 100 366 1
## 7 45769. 45769. 0 104.28.32.… 100 841 1
## 8 45769. 45769. 0 187.136.16… 100 584 1
## 9 45769. 45769. 0 94.119.182… 100 310 1
## 10 45769. 45769. 0 109.175.19… 100 494 1
## # ℹ 174 more rows
## # ℹ abbreviated name: ¹​`Duration (in seconds)`
## # ℹ 56 more variables: RecordedDate <dbl>, ResponseId <fct>,
## # RecipientLastName <lgl>, RecipientFirstName <lgl>, RecipientEmail <lgl>,
## # ExternalReference <lgl>, LocationLatitude <dbl>, LocationLongitude <dbl>,
## # DistributionChannel <fct>, UserLanguage <fct>, Q_RecaptchaScore <dbl>,
## # `Consent Choices` <fct>, AI_Knowledge <int>, AI_Personal <int>, …
#Turning relevant variables into factors to be used in analysis
AIPerf_T$AI_Personal <- factor(AIPerf_T$AI_Personal,
levels = 1:5,
labels = c("I have no practical experience using AI in my personal life.","I have come into contact with AI once in my personal life.","I have already dealt with AI several times in my personal life.","I regularly come into contact with AI in my personal life.","I deal with AI almost daily in my personal life."))
AIPerf_T$AI_Work <- factor(AIPerf_T$AI_Work,
levels = 1:5,
labels = c("I have no practical experience using AI at work.","I have come into contact with AI once at work.","I have already dealt with AI several times at work.","I regularly come into contact with AI at work.","I deal with AI almost daily at work." ))
AIPerf_T$Age <- factor(AIPerf_T$Age,
levels = 1:8,
labels = c("Under 18", "18-24", "25-34","35-44", "45-54", "55-64", "65+", "Unknown"))
AIPerf_T$Gender <- factor(AIPerf_T$Gender,
levels = 1:3,
labels = c("Male", "Female", "Non-binary"))
AIPerf_T$Work_Exp <- factor(AIPerf_T$Work_Exp,
levels = 1:5,
labels = c("None at all", "Less than 6 months", "1-4 years", "5-9 years", "More than 10 years"))
AIPerf_T$`AI Check` <- factor(AIPerf_T$`AI Check`,
levels = 1:3,
labels = c("Yes", "I'm not sure", "No"))
AIPerf_T$`Review Check` <- factor(AIPerf_T$`Review Check`,
levels = 1:5,
labels = c("The policy itself","The use of Artificial Intelligence in the 360 feedback process","Both of the above","I don't remember","None of the above"))
AIPerf_T$Sector <- factor(AIPerf_T$Sector,
levels = 1:16,
labels = c("Accommodation activities", "Arts, entertainment and recreation", "Construction and real estate activities", "Disaster risk management", "Education", "Energy", "Environmental protection and restoration activities", "Financial and insurance activities", "Forestry", "Human health and social work activities", "Information and communication", "Manufacturing", "Professional, scientific and technical activities", "Services", "Transport", "Water supply, sewerage, waste management and remediation"))
AIPerf_T$Location <- factor(AIPerf_T$Location,
levels = 1:6,
labels = c("United States of America","United Kingdom of Great Britain and Northern Ireland", "Other - Europe, Middle East, and Africa", "Other - Asia-Pacific", "Other - North America", "Other - Latin America"))
AIPerf_T$scenarios <- factor(AIPerf_T$scenarios,
levels = c("Control", "AI_Assist(A)", "AI_Decides(A)", "AI_Assist", "AI_Decides"),
labels = c("Control", "AI_Assist(A)", "AI_Decides(A)", "AI_Assist", "AI_Decides"))
head(AIPerf_T)
## # A tibble: 6 × 63
## StartDate EndDate Status IPAddress Progress Duration (in seconds…¹ Finished
## <dbl> <dbl> <int> <fct> <int> <int> <int>
## 1 45768. 45768. 0 31.94.56.39 100 277 1
## 2 45768. 45768. 0 104.28.40.1… 100 318 1
## 3 45768. 45768. 0 109.175.167… 100 249 1
## 4 45768. 45768. 0 104.28.86.95 100 547 1
## 5 45768. 45768. 0 45.148.12.2… 100 344 1
## 6 45769. 45769. 0 172.225.236… 100 366 1
## # ℹ abbreviated name: ¹​`Duration (in seconds)`
## # ℹ 56 more variables: RecordedDate <dbl>, ResponseId <fct>,
## # RecipientLastName <lgl>, RecipientFirstName <lgl>, RecipientEmail <lgl>,
## # ExternalReference <lgl>, LocationLatitude <dbl>, LocationLongitude <dbl>,
## # DistributionChannel <fct>, UserLanguage <fct>, Q_RecaptchaScore <dbl>,
## # `Consent Choices` <fct>, AI_Knowledge <int>, AI_Personal <fct>,
## # AI_Work <fct>, AI_Gen <fct>, AIP_N1 <dbl>, AIP_P1 <dbl>, AIP_N2 <dbl>, …
#install.packages("gtsummary")
library(gtsummary)
# Descriptive Stats: Categorical Variables
Cat_Table <- AIPerf_T %>%
select(scenarios, AI_Personal, AI_Work, Gender, Age, Work_Exp, Sector, Location) %>%
tbl_summary(
statistic = list(
all_categorical() ~ "{n} ({p}%)"
))
Cat_Table
| Characteristic | N = 1841 |
|---|---|
| scenarios | |
| Â Â Â Â Control | 42 (23%) |
| Â Â Â Â AI_Assist(A) | 35 (19%) |
| Â Â Â Â AI_Decides(A) | 34 (18%) |
| Â Â Â Â AI_Assist | 38 (21%) |
| Â Â Â Â AI_Decides | 35 (19%) |
| AI_Personal | |
| Â Â Â Â I have no practical experience using AI in my personal life. | 4 (2.2%) |
| Â Â Â Â I have come into contact with AI once in my personal life. | 7 (3.8%) |
| Â Â Â Â I have already dealt with AI several times in my personal life. | 45 (24%) |
| Â Â Â Â I regularly come into contact with AI in my personal life. | 69 (38%) |
| Â Â Â Â I deal with AI almost daily in my personal life. | 59 (32%) |
| AI_Work | |
| Â Â Â Â I have no practical experience using AI at work. | 35 (19%) |
| Â Â Â Â I have come into contact with AI once at work. | 10 (5.4%) |
| Â Â Â Â I have already dealt with AI several times at work. | 52 (28%) |
| Â Â Â Â I regularly come into contact with AI at work. | 54 (29%) |
| Â Â Â Â I deal with AI almost daily at work. | 33 (18%) |
| Gender | |
| Â Â Â Â Male | 70 (38%) |
| Â Â Â Â Female | 109 (60%) |
| Â Â Â Â Non-binary | 3 (1.6%) |
| Â Â Â Â Unknown | 2 |
| Age | |
| Â Â Â Â Under 18 | 0 (0%) |
| Â Â Â Â 18-24 | 59 (32%) |
| Â Â Â Â 25-34 | 79 (43%) |
| Â Â Â Â 35-44 | 30 (16%) |
| Â Â Â Â 45-54 | 10 (5.5%) |
| Â Â Â Â 55-64 | 4 (2.2%) |
| Â Â Â Â 65+ | 1 (0.5%) |
| Â Â Â Â Unknown | 0 (0%) |
| Â Â Â Â Unknown | 1 |
| Work_Exp | |
| Â Â Â Â None at all | 14 (7.7%) |
| Â Â Â Â Less than 6 months | 22 (12%) |
| Â Â Â Â 1-4 years | 67 (37%) |
| Â Â Â Â 5-9 years | 30 (16%) |
| Â Â Â Â More than 10 years | 50 (27%) |
| Â Â Â Â Unknown | 1 |
| Sector | |
| Â Â Â Â Accommodation activities | 0 (0%) |
| Â Â Â Â Arts, entertainment and recreation | 13 (7.1%) |
| Â Â Â Â Construction and real estate activities | 7 (3.8%) |
| Â Â Â Â Disaster risk management | 1 (0.5%) |
| Â Â Â Â Education | 49 (27%) |
| Â Â Â Â Energy | 3 (1.6%) |
| Â Â Â Â Environmental protection and restoration activities | 1 (0.5%) |
| Â Â Â Â Financial and insurance activities | 14 (7.7%) |
| Â Â Â Â Forestry | 0 (0%) |
| Â Â Â Â Human health and social work activities | 27 (15%) |
| Â Â Â Â Information and communication | 22 (12%) |
| Â Â Â Â Manufacturing | 5 (2.7%) |
| Â Â Â Â Professional, scientific and technical activities | 15 (8.2%) |
| Â Â Â Â Services | 22 (12%) |
| Â Â Â Â Transport | 2 (1.1%) |
| Â Â Â Â Water supply, sewerage, waste management and remediation | 1 (0.5%) |
| Â Â Â Â Unknown | 2 |
| Location | |
| Â Â Â Â United States of America | 36 (20%) |
| Â Â Â Â United Kingdom of Great Britain and Northern Ireland | 71 (39%) |
| Â Â Â Â Other - Europe, Middle East, and Africa | 41 (22%) |
| Â Â Â Â Other - Asia-Pacific | 31 (17%) |
| Â Â Â Â Other - North America | 3 (1.6%) |
| Â Â Â Â Other - Latin America | 1 (0.5%) |
| Â Â Â Â Unknown | 1 |
| 1 n (%) | |
Cat_Table_Scenario <- AIPerf_T %>%
select(scenarios, AI_Personal, AI_Work, Gender, Age, Work_Exp, Sector, Location) %>%
tbl_summary(
by=scenarios,
statistic = list(
all_categorical() ~ "{n} ({p}%)"
))
Cat_Table_Scenario
| Characteristic | Control N = 421 |
AI_Assist(A) N = 351 |
AI_Decides(A) N = 341 |
AI_Assist N = 381 |
AI_Decides N = 351 |
|---|---|---|---|---|---|
| AI_Personal | |||||
| Â Â Â Â I have no practical experience using AI in my personal life. | 1 (2.4%) | 0 (0%) | 3 (8.8%) | 0 (0%) | 0 (0%) |
| Â Â Â Â I have come into contact with AI once in my personal life. | 2 (4.8%) | 2 (5.7%) | 1 (2.9%) | 0 (0%) | 2 (5.7%) |
| Â Â Â Â I have already dealt with AI several times in my personal life. | 8 (19%) | 6 (17%) | 12 (35%) | 11 (29%) | 8 (23%) |
| Â Â Â Â I regularly come into contact with AI in my personal life. | 17 (40%) | 19 (54%) | 10 (29%) | 12 (32%) | 11 (31%) |
| Â Â Â Â I deal with AI almost daily in my personal life. | 14 (33%) | 8 (23%) | 8 (24%) | 15 (39%) | 14 (40%) |
| AI_Work | |||||
| Â Â Â Â I have no practical experience using AI at work. | 6 (14%) | 7 (20%) | 7 (21%) | 6 (16%) | 9 (26%) |
| Â Â Â Â I have come into contact with AI once at work. | 2 (4.8%) | 4 (11%) | 4 (12%) | 0 (0%) | 0 (0%) |
| Â Â Â Â I have already dealt with AI several times at work. | 11 (26%) | 8 (23%) | 10 (29%) | 10 (26%) | 13 (37%) |
| Â Â Â Â I regularly come into contact with AI at work. | 15 (36%) | 12 (34%) | 8 (24%) | 13 (34%) | 6 (17%) |
| Â Â Â Â I deal with AI almost daily at work. | 8 (19%) | 4 (11%) | 5 (15%) | 9 (24%) | 7 (20%) |
| Gender | |||||
| Â Â Â Â Male | 23 (56%) | 11 (32%) | 13 (38%) | 10 (26%) | 13 (37%) |
| Â Â Â Â Female | 18 (44%) | 23 (68%) | 19 (56%) | 28 (74%) | 21 (60%) |
| Â Â Â Â Non-binary | 0 (0%) | 0 (0%) | 2 (5.9%) | 0 (0%) | 1 (2.9%) |
| Â Â Â Â Unknown | 1 | 1 | 0 | 0 | 0 |
| Age | |||||
| Â Â Â Â Under 18 | 0 (0%) | 0 (0%) | 0 (0%) | 0 (0%) | 0 (0%) |
| Â Â Â Â 18-24 | 12 (29%) | 14 (41%) | 8 (24%) | 12 (32%) | 13 (37%) |
| Â Â Â Â 25-34 | 18 (43%) | 11 (32%) | 18 (53%) | 17 (45%) | 15 (43%) |
| Â Â Â Â 35-44 | 7 (17%) | 9 (26%) | 6 (18%) | 3 (7.9%) | 5 (14%) |
| Â Â Â Â 45-54 | 3 (7.1%) | 0 (0%) | 1 (2.9%) | 4 (11%) | 2 (5.7%) |
| Â Â Â Â 55-64 | 2 (4.8%) | 0 (0%) | 0 (0%) | 2 (5.3%) | 0 (0%) |
| Â Â Â Â 65+ | 0 (0%) | 0 (0%) | 1 (2.9%) | 0 (0%) | 0 (0%) |
| Â Â Â Â Unknown | 0 (0%) | 0 (0%) | 0 (0%) | 0 (0%) | 0 (0%) |
| Â Â Â Â Unknown | 0 | 1 | 0 | 0 | 0 |
| Work_Exp | |||||
| Â Â Â Â None at all | 7 (17%) | 2 (5.9%) | 0 (0%) | 1 (2.6%) | 4 (11%) |
| Â Â Â Â Less than 6 months | 2 (4.8%) | 5 (15%) | 4 (12%) | 6 (16%) | 5 (14%) |
| Â Â Â Â 1-4 years | 14 (33%) | 14 (41%) | 14 (41%) | 14 (37%) | 11 (31%) |
| Â Â Â Â 5-9 years | 7 (17%) | 3 (8.8%) | 5 (15%) | 5 (13%) | 10 (29%) |
| Â Â Â Â More than 10 years | 12 (29%) | 10 (29%) | 11 (32%) | 12 (32%) | 5 (14%) |
| Â Â Â Â Unknown | 0 | 1 | 0 | 0 | 0 |
| Sector | |||||
| Â Â Â Â Accommodation activities | 0 (0%) | 0 (0%) | 0 (0%) | 0 (0%) | 0 (0%) |
| Â Â Â Â Arts, entertainment and recreation | 4 (9.5%) | 2 (5.9%) | 2 (6.1%) | 1 (2.6%) | 4 (11%) |
| Â Â Â Â Construction and real estate activities | 0 (0%) | 3 (8.8%) | 2 (6.1%) | 1 (2.6%) | 1 (2.9%) |
| Â Â Â Â Disaster risk management | 0 (0%) | 0 (0%) | 1 (3.0%) | 0 (0%) | 0 (0%) |
| Â Â Â Â Education | 13 (31%) | 9 (26%) | 8 (24%) | 10 (26%) | 9 (26%) |
| Â Â Â Â Energy | 0 (0%) | 0 (0%) | 1 (3.0%) | 1 (2.6%) | 1 (2.9%) |
| Â Â Â Â Environmental protection and restoration activities | 0 (0%) | 0 (0%) | 0 (0%) | 1 (2.6%) | 0 (0%) |
| Â Â Â Â Financial and insurance activities | 3 (7.1%) | 4 (12%) | 1 (3.0%) | 2 (5.3%) | 4 (11%) |
| Â Â Â Â Forestry | 0 (0%) | 0 (0%) | 0 (0%) | 0 (0%) | 0 (0%) |
| Â Â Â Â Human health and social work activities | 4 (9.5%) | 6 (18%) | 8 (24%) | 4 (11%) | 5 (14%) |
| Â Â Â Â Information and communication | 6 (14%) | 0 (0%) | 4 (12%) | 8 (21%) | 4 (11%) |
| Â Â Â Â Manufacturing | 1 (2.4%) | 2 (5.9%) | 1 (3.0%) | 1 (2.6%) | 0 (0%) |
| Â Â Â Â Professional, scientific and technical activities | 6 (14%) | 1 (2.9%) | 3 (9.1%) | 5 (13%) | 0 (0%) |
| Â Â Â Â Services | 4 (9.5%) | 7 (21%) | 2 (6.1%) | 2 (5.3%) | 7 (20%) |
| Â Â Â Â Transport | 0 (0%) | 0 (0%) | 0 (0%) | 2 (5.3%) | 0 (0%) |
| Â Â Â Â Water supply, sewerage, waste management and remediation | 1 (2.4%) | 0 (0%) | 0 (0%) | 0 (0%) | 0 (0%) |
| Â Â Â Â Unknown | 0 | 1 | 1 | 0 | 0 |
| Location | |||||
| Â Â Â Â United States of America | 4 (9.5%) | 4 (12%) | 7 (21%) | 14 (37%) | 7 (20%) |
| Â Â Â Â United Kingdom of Great Britain and Northern Ireland | 20 (48%) | 16 (47%) | 14 (41%) | 10 (26%) | 11 (31%) |
| Â Â Â Â Other - Europe, Middle East, and Africa | 10 (24%) | 7 (21%) | 6 (18%) | 11 (29%) | 7 (20%) |
| Â Â Â Â Other - Asia-Pacific | 8 (19%) | 5 (15%) | 7 (21%) | 2 (5.3%) | 9 (26%) |
| Â Â Â Â Other - North America | 0 (0%) | 2 (5.9%) | 0 (0%) | 1 (2.6%) | 0 (0%) |
| Â Â Â Â Other - Latin America | 0 (0%) | 0 (0%) | 0 (0%) | 0 (0%) | 1 (2.9%) |
| Â Â Â Â Unknown | 0 | 1 | 0 | 0 | 0 |
| 1 n (%) | |||||
library(psych)
##
## Attaching package: 'psych'
## The following objects are masked from 'package:ggplot2':
##
## %+%, alpha
# Descriptive Stats: Continuous Variables
AIPerf_T <- AIPerf_T %>%
mutate(AIP_P_Avg = rowMeans(.[grep("AIP_P[1-9]$", names(.))]),
AIP_N_Avg = rowMeans(.[grep("AIP_N[1-8]$", names(.))]),
PF_Avg = rowMeans(.[grep("PF_[1-6]$", names(.))]),
OT_Avg = rowMeans(.[grep("OT_[1-5]$", names(.))]))
Cont_Table <-AIPerf_T %>%
select("AIP_P_Avg", "AIP_N_Avg", "PF_Avg", "OT_Avg", "Immersion") %>%
describe()
Cont_vars <- AIPerf_T %>%
select(scenarios, AIP_P_Avg,AIP_N_Avg, PF_Avg, OT_Avg)
Cont_Table_Scenario <- describeBy(
Cont_vars[, -1],
group = Cont_vars$scenarios,
mat = TRUE,
digits = 2
)
Cont_Table_Scenario
## item group1 vars n mean sd median trimmed mad min max
## AIP_P_Avg1 1 Control 1 42 3.49 0.72 3.61 3.54 0.58 1.00 5.00
## AIP_P_Avg2 2 AI_Assist(A) 1 35 3.53 0.76 3.67 3.57 0.49 1.44 5.00
## AIP_P_Avg3 3 AI_Decides(A) 1 34 3.32 0.74 3.28 3.33 0.74 1.56 5.00
## AIP_P_Avg4 4 AI_Assist 1 38 3.40 0.82 3.67 3.51 0.49 1.00 4.44
## AIP_P_Avg5 5 AI_Decides 1 35 3.53 0.80 3.56 3.59 0.99 1.22 4.56
## AIP_N_Avg1 6 Control 2 42 3.15 0.69 3.00 3.16 0.65 1.62 4.50
## AIP_N_Avg2 7 AI_Assist(A) 2 35 3.01 0.77 3.00 3.01 0.74 1.38 4.38
## AIP_N_Avg3 8 AI_Decides(A) 2 34 3.25 0.74 3.38 3.27 0.83 1.88 4.50
## AIP_N_Avg4 9 AI_Assist 2 38 3.29 0.65 3.19 3.28 0.65 1.88 4.62
## AIP_N_Avg5 10 AI_Decides 2 35 3.13 0.89 3.25 3.16 0.93 1.25 4.88
## PF_Avg1 11 Control 3 42 3.26 0.73 3.25 3.29 0.86 1.17 4.67
## PF_Avg2 12 AI_Assist(A) 3 35 3.32 0.55 3.33 3.33 0.74 2.33 4.17
## PF_Avg3 13 AI_Decides(A) 3 34 3.04 0.67 3.08 3.06 0.49 1.33 4.67
## PF_Avg4 14 AI_Assist 3 38 3.06 0.66 3.25 3.08 0.37 1.50 4.17
## PF_Avg5 15 AI_Decides 3 35 3.02 0.55 3.00 3.02 0.49 1.50 4.17
## OT_Avg1 16 Control 4 42 3.33 0.71 3.30 3.34 0.44 1.00 5.00
## OT_Avg2 17 AI_Assist(A) 4 35 3.51 0.63 3.60 3.50 0.59 2.20 5.00
## OT_Avg3 18 AI_Decides(A) 4 34 3.20 0.79 3.40 3.28 0.59 1.00 4.60
## OT_Avg4 19 AI_Assist 4 38 3.17 0.71 3.20 3.24 0.59 1.40 4.20
## OT_Avg5 20 AI_Decides 4 35 3.17 0.66 3.00 3.14 0.59 1.20 5.00
## range skew kurtosis se
## AIP_P_Avg1 4.00 -0.90 1.84 0.11
## AIP_P_Avg2 3.56 -0.58 0.55 0.13
## AIP_P_Avg3 3.44 -0.08 -0.14 0.13
## AIP_P_Avg4 3.44 -1.37 1.20 0.13
## AIP_P_Avg5 3.33 -0.66 -0.04 0.14
## AIP_N_Avg1 2.88 0.02 -0.78 0.11
## AIP_N_Avg2 3.00 -0.06 -0.74 0.13
## AIP_N_Avg3 2.62 -0.24 -1.22 0.13
## AIP_N_Avg4 2.75 0.18 -0.73 0.10
## AIP_N_Avg5 3.62 -0.34 -0.76 0.15
## PF_Avg1 3.50 -0.45 -0.08 0.11
## PF_Avg2 1.83 -0.07 -1.32 0.09
## PF_Avg3 3.33 -0.29 0.34 0.11
## PF_Avg4 2.67 -0.54 -0.52 0.11
## PF_Avg5 2.67 -0.18 0.21 0.09
## OT_Avg1 4.00 -0.42 1.54 0.11
## OT_Avg2 2.80 0.16 -0.17 0.11
## OT_Avg3 3.60 -0.81 0.41 0.14
## OT_Avg4 2.80 -0.82 0.14 0.12
## OT_Avg5 3.80 0.18 1.88 0.11
alphas <- list(
AIP_P = alpha(AIPerf_T[grep("AIP_P[1-9]$", names(AIPerf_T))]),
AIP_N = alpha(AIPerf_T[grep("AIP_N[1-8]$", names(AIPerf_T))]),
PF = alpha(AIPerf_T[grep("PF_[1-6]$", names(AIPerf_T))]),
OT = alpha(AIPerf_T[grep("OT_[1-5]$", names(AIPerf_T))])
)
sapply(alphas, function(x) round(x$total$raw_alpha, 2))
## AIP_P AIP_N PF OT
## 0.85 0.78 0.72 0.87
#install.packages("Hmisc")
library(Hmisc)
##
## Attaching package: 'Hmisc'
## The following object is masked from 'package:psych':
##
## describe
## The following objects are masked from 'package:dplyr':
##
## src, summarize
## The following objects are masked from 'package:base':
##
## format.pval, units
#install.packages("ggcorrplot")
library(ggcorrplot)
AIPerf_Corrs <-rcorr(as.matrix(AIPerf_T[,c("AIP_P_Avg", "AIP_N_Avg", "PF_Avg", "OT_Avg")]))
print("Correlation matrix:")
## [1] "Correlation matrix:"
print(AIPerf_Corrs$r)
## AIP_P_Avg AIP_N_Avg PF_Avg OT_Avg
## AIP_P_Avg 1.0000000 -0.3769751 0.3127056 0.3932754
## AIP_N_Avg -0.3769751 1.0000000 -0.1668324 -0.3210728
## PF_Avg 0.3127056 -0.1668324 1.0000000 0.5934860
## OT_Avg 0.3932754 -0.3210728 0.5934860 1.0000000
print("P-values:")
## [1] "P-values:"
print(AIPerf_Corrs$P)
## AIP_P_Avg AIP_N_Avg PF_Avg OT_Avg
## AIP_P_Avg NA 0.0000001330508 0.00001548183 0.00000003343059
## AIP_N_Avg 0.00000013305075 NA 0.02360551404 0.00000883880295
## PF_Avg 0.00001548182528 0.0236055140369 NA 0.00000000000000
## OT_Avg 0.00000003343059 0.0000088388029 0.00000000000 NA
#install.packages("apaTables")
library(apaTables)
apa.cor.table(AIPerf_T[, c("AIP_P_Avg", "AIP_N_Avg", "PF_Avg", "OT_Avg")],
filename = "Correlation_Table.doc")
##
##
## Means, standard deviations, and correlations with confidence intervals
##
##
## Variable M SD 1 2 3
## 1. AIP_P_Avg 3.46 0.76
##
## 2. AIP_N_Avg 3.17 0.75 -.38**
## [-.49, -.25]
##
## 3. PF_Avg 3.14 0.65 .31** -.17*
## [.18, .44] [-.30, -.02]
##
## 4. OT_Avg 3.27 0.70 .39** -.32** .59**
## [.26, .51] [-.45, -.19] [.49, .68]
##
##
## 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.
##
ggcorrplot(AIPerf_Corrs$r, method = "circle", hc.order = TRUE, type= "lower", p.mat = AIPerf_Corrs$P, lab = TRUE,
outline.col = "white",
ggtheme = ggplot2::theme_gray,
colors = c("#6D9EC1", "white", "#E46726"))
AIPerf_T$scenarios_Manipulation <- ifelse(
# Control: No AI
AIPerf_T$scenarios == "Control" &
AIPerf_T$`AI Check`== "No" &
AIPerf_T$`Review Check`!= "The policy itself" , "Partially Passed",
ifelse(
# Control: No AI + Policy only
AIPerf_T$scenarios == "Control" &
AIPerf_T$`AI Check`== "No" &
AIPerf_T$`Review Check`== "The policy itself" , "Passed",
ifelse(
# AI_Decides: Yes AI
AIPerf_T$scenarios == "AI_Decides" &
AIPerf_T$`AI Check`== "Yes" &
AIPerf_T$`Review Check`!= "The policy itself" , "Partially Passed",
ifelse(
# AI_Decides: Yes AI + Policy only
AIPerf_T$scenarios == "AI_Decides" &
AIPerf_T$`AI Check`== "Yes" &
AIPerf_T$`Review Check`== "The policy itself" , "Passed",
ifelse(
# AI_Decides (A): Yes AI
AIPerf_T$scenarios == "AI_Decides(A)" &
AIPerf_T$`AI Check`== "Yes" &
AIPerf_T$`Review Check`!= "The policy itself" & AIPerf_T$`Review Check`!= "The use of Artificial Intelligence in the 360 feedback process" & AIPerf_T$`Review Check`!= "Both of the above", "Partially Passed",
ifelse(
# AI_Decides(A): Yes AI + Policy OR Both (since policy could include AI use)
AIPerf_T$scenarios == "AI_Decides(A)" &
AIPerf_T$`AI Check`== "Yes" &
(AIPerf_T$`Review Check`== "The policy itself" | AIPerf_T$`Review Check`== "The use of Artificial Intelligence in the 360 feedback process" | AIPerf_T$`Review Check`== "Both of the above") , "Passed",
ifelse(
# AI_Assist: Yes AI
AIPerf_T$scenarios == "AI_Assist" &
AIPerf_T$`AI Check`== "Yes" &
AIPerf_T$`Review Check`!= "The policy itself" , "Partially Passed",
ifelse(
# AI_Assist: Yes AI + Policy only
AIPerf_T$scenarios == "AI_Assist" &
AIPerf_T$`AI Check`== "Yes" &
AIPerf_T$`Review Check` == "The policy itself", "Passed",
ifelse(
# AI_Decides (A): Yes AI
AIPerf_T$scenarios == "AI_Assist(A)" &
AIPerf_T$`AI Check`== "Yes" &
AIPerf_T$`Review Check`!= "The policy itself" & AIPerf_T$`Review Check`!= "The use of Artificial Intelligence in the 360 feedback process" & AIPerf_T$`Review Check`!= "Both of the above", "Partially Passed",
ifelse(
# AI_Assist(A): Yes AI + Policy OR Both (since policy could include AI use)
AIPerf_T$scenarios == "AI_Assist(A)" &
AIPerf_T$`AI Check`== "Yes" &
(AIPerf_T$`Review Check`== "The policy itself" | AIPerf_T$`Review Check`== "The use of Artificial Intelligence in the 360 feedback process" | AIPerf_T$`Review Check`== "Both of the above") , "Passed",
"Failed"))))))))))
#View(AIPerf_T)
addmargins(table(AIPerf_T$scenarios_Manipulation, AIPerf_T$scenarios))
##
## Control AI_Assist(A) AI_Decides(A) AI_Assist AI_Decides Sum
## Failed 36 10 9 6 5 66
## Partially Passed 2 4 7 23 15 51
## Passed 4 21 18 9 15 67
## Sum 42 35 34 38 35 184
#install.packages("pwr")
library(pwr)
AIPerf_Pwr10 <- pwr.anova.test(k = 5, n = 36.8, f = 0.10, sig.level = 0.05)
print(paste("Power for small effect sizes (.10):", round(AIPerf_Pwr10$power, digits = 3)))
## [1] "Power for small effect sizes (.10): 0.157"
AIPerf_Pwr25 <- pwr.anova.test(k = 5, n = 36.8, f = 0.25, sig.level = 0.05)
print(paste("Power for moderate effect sizes (.25):", round(AIPerf_Pwr25$power, digits = 3)))
## [1] "Power for moderate effect sizes (.25): 0.771"
AIPerf_Pwr40 <- pwr.anova.test(k = 5, n = 36.8, f = 0.40, sig.level = 0.05)
print(paste("Power for moderate effect sizes (.40):", round(AIPerf_Pwr40$power, digits = 3)))
## [1] "Power for moderate effect sizes (.40): 0.996"
#ANOVA for Procedural Fairness
model_pf <- aov(PF_Avg ~ scenarios, data = AIPerf_T)
residuals_pf <- residuals(model_pf)
model_pf
## Call:
## aov(formula = PF_Avg ~ scenarios, data = AIPerf_T)
##
## Terms:
## scenarios Residuals
## Sum of Squares 2.78847 73.51346
## Deg. of Freedom 4 179
##
## Residual standard error: 0.6408508
## Estimated effects may be unbalanced
# Q-Q plot for Procedural Fairness
qqnorm(residuals_pf)
qqline(residuals_pf)
# Histogram for Procedural Fairness
hist(residuals_pf, breaks = 20, main = "Distribution of Residuals - PF")
shapiro.test(residuals_pf)
##
## Shapiro-Wilk normality test
##
## data: residuals_pf
## W = 0.98838, p-value = 0.137
#ANOVA for Organisational Trust
model_ot <- aov(OT_Avg ~ scenarios, data = AIPerf_T)
residuals_ot <- residuals(model_ot)
model_ot
## Call:
## aov(formula = OT_Avg ~ scenarios, data = AIPerf_T)
##
## Terms:
## scenarios Residuals
## Sum of Squares 3.07089 87.85411
## Deg. of Freedom 4 179
##
## Residual standard error: 0.7005748
## Estimated effects may be unbalanced
# Q-Q plot for Organisational Trust
qqnorm(residuals_ot)
qqline(residuals_ot)
# Histogram for Organisational Trust
hist(residuals_ot, breaks = 20, main = "Distribution of Residuals - OT")
shapiro.test(residuals_ot)
##
## Shapiro-Wilk normality test
##
## data: residuals_ot
## W = 0.97362, p-value = 0.001473
#Homogeneity of Variances
#install.packages("car")
library(car)
## Loading required package: carData
##
## Attaching package: 'car'
## The following object is masked from 'package:psych':
##
## logit
## The following object is masked from 'package:dplyr':
##
## recode
## The following object is masked from 'package:purrr':
##
## some
leveneTest(PF_Avg ~ scenarios, data = AIPerf_T)
## Levene's Test for Homogeneity of Variance (center = median)
## Df F value Pr(>F)
## group 4 1.2804 0.2794
## 179
leveneTest(OT_Avg ~ scenarios, data = AIPerf_T)
## Levene's Test for Homogeneity of Variance (center = median)
## Df F value Pr(>F)
## group 4 0.4741 0.7547
## 179
#ANOVA to determine differences in Immersion
Immersion_AVG <- mean(AIPerf_T$Immersion)
Immersion_Agreg <- aggregate(Immersion ~ scenarios, data = AIPerf_T, mean)
print(Immersion_Agreg)
## scenarios Immersion
## 1 Control 3.214286
## 2 AI_Assist(A) 3.085714
## 3 AI_Decides(A) 2.852941
## 4 AI_Assist 3.026316
## 5 AI_Decides 3.057143
Immersion_AVG
## [1] 3.054348
print(Immersion_Agreg)
## scenarios Immersion
## 1 Control 3.214286
## 2 AI_Assist(A) 3.085714
## 3 AI_Decides(A) 2.852941
## 4 AI_Assist 3.026316
## 5 AI_Decides 3.057143
model_immersion <-aov(Immersion ~ scenarios, data = AIPerf_T)
summary(model_immersion)
## Df Sum Sq Mean Sq F value Pr(>F)
## scenarios 4 2.52 0.6295 0.823 0.512
## Residuals 179 136.94 0.7650
#ANOVA to determine differences between all groups
model_pf_all <-aov(PF_Avg ~ scenarios, data = AIPerf_T)
summary(model_pf_all)
## Df Sum Sq Mean Sq F value Pr(>F)
## scenarios 4 2.79 0.6971 1.697 0.153
## Residuals 179 73.51 0.4107
model_ot_all <-aov(OT_Avg ~ scenarios, data = AIPerf_T)
summary(model_ot_all)
## Df Sum Sq Mean Sq F value Pr(>F)
## scenarios 4 3.07 0.7677 1.564 0.186
## Residuals 179 87.85 0.4908
#T.Test to determine differences Control and Manipulation
AIPerf_T$scenarios_c0 <- ifelse(AIPerf_T$scenarios == "AI_Decides", "AI(ALL)",
ifelse(AIPerf_T$scenarios == "AI_Decides(A)", "AI(ALL)",
ifelse(AIPerf_T$scenarios == "AI_Assist", "AI(ALL)",
ifelse(AIPerf_T$scenarios == "AI_Assist(A)", "AI(ALL)",
ifelse(AIPerf_T$scenarios == "Control", "Control", "Other")))))
model_pf_all_0 <-t.test(PF_Avg ~ scenarios_c0, data = AIPerf_T)
model_pf_all_0
##
## Welch Two Sample t-test
##
## data: PF_Avg by scenarios_c0
## t = -1.2287, df = 59.755, p-value = 0.224
## alternative hypothesis: true difference in means between group AI(ALL) and group Control is not equal to 0
## 95 percent confidence interval:
## -0.39836494 0.09521269
## sample estimates:
## mean in group AI(ALL) mean in group Control
## 3.110329 3.261905
model_ot_all_0 <-t.test(OT_Avg ~ scenarios_c0, data = AIPerf_T)
model_ot_all_0
##
## Welch Two Sample t-test
##
## data: OT_Avg by scenarios_c0
## t = -0.55944, df = 67.102, p-value = 0.5777
## alternative hypothesis: true difference in means between group AI(ALL) and group Control is not equal to 0
## 95 percent confidence interval:
## -0.3170767 0.1782437
## sample estimates:
## mean in group AI(ALL) mean in group Control
## 3.259155 3.328571
#H1: Individuals will indicate the lowest level of procedural fairness in the scenario wherein Ratiem employs AI as a decider in their 360-degree performance review process.
#H3: Individuals will indicate the lowest level of organisational trust in the scenario wherein Ratiem employs artificial intelligence as a decider in their 360-degree performance review process.
#Combine AI_Decides + AI_Decides(A) and AI_Assist + AI_Assist(A) - C1
AIPerf_T$scenarios_c1 <- ifelse(AIPerf_T$scenarios == "AI_Decides", "AI_Decides(All)",
ifelse(AIPerf_T$scenarios == "AI_Decides(A)", "AI_Decides(All)",
ifelse(AIPerf_T$scenarios == "AI_Assist", "AI_Assist(All)",
ifelse(AIPerf_T$scenarios == "AI_Assist(A)", "AI_Assist(All)",
ifelse(AIPerf_T$scenarios == "Control", "Control", "Other")))))
model_pf_H1_1 <-aov(PF_Avg ~ scenarios_c1, data = AIPerf_T)
summary(model_pf_H1_1)
## Df Sum Sq Mean Sq F value Pr(>F)
## scenarios_c1 2 1.53 0.7652 1.852 0.16
## Residuals 181 74.77 0.4131
model_ot_H3_1 <-aov(OT_Avg ~ scenarios_c1, data = AIPerf_T)
summary(model_ot_H3_1)
## Df Sum Sq Mean Sq F value Pr(>F)
## scenarios_c1 2 0.94 0.4713 0.948 0.389
## Residuals 181 89.98 0.4971
#Combine AI_Decides + AI_Decides(A) and all other scenarios - C2
AIPerf_T$scenarios_c2 <- ifelse(AIPerf_T$scenarios == "AI_Decides", "AI_Decides(All)",
ifelse(AIPerf_T$scenarios == "AI_Decides(A)", "AI_Decides(All)",
ifelse(AIPerf_T$scenarios == "AI_Assist", "AI_No_Decide",
ifelse(AIPerf_T$scenarios == "AI_Assist(A)", "AI_No_Decide",
ifelse(AIPerf_T$scenarios == "Control", "AI_No_Decide", "Other")))))
model_pf_H1_2 <-t.test(PF_Avg ~ scenarios_c2, data = AIPerf_T)
model_pf_H1_2
##
## Welch Two Sample t-test
##
## data: PF_Avg by scenarios_c2
## t = -1.8563, df = 152.4, p-value = 0.06535
## alternative hypothesis: true difference in means between group AI_Decides(All) and group AI_No_Decide is not equal to 0
## 95 percent confidence interval:
## -0.36698981 0.01143425
## sample estimates:
## mean in group AI_Decides(All) mean in group AI_No_Decide
## 3.033816 3.211594
model_pf_H3_2 <-t.test(OT_Avg ~ scenarios_c2, data = AIPerf_T)
model_pf_H3_2
##
## Welch Two Sample t-test
##
## data: OT_Avg by scenarios_c2
## t = -1.366, df = 138.53, p-value = 0.1741
## alternative hypothesis: true difference in means between group AI_Decides(All) and group AI_No_Decide is not equal to 0
## 95 percent confidence interval:
## -0.36179564 0.06614346
## sample estimates:
## mean in group AI_Decides(All) mean in group AI_No_Decide
## 3.182609 3.330435
#scenario_counts <- AIPerf_T %>%
#dplyr::count(scenarios_c1)
#print(scenario_counts)
#H2:Individuals will indicate the highest level of procedural fairness in the scenario wherein Ratiem assesses the uses of AI in their 360-degree performance review process and address related employee concerns.
#H4: Individuals will indicate the highest level of organisational trust in the scenario wherein Ratiem reviews the use of artificial intelligence in their 360-degree performance review process.
#Combine AI_Assist + AI_Decides and AI_Assist(A) + AI_Decides(A) - C3
AIPerf_T$scenarios_c3 <- ifelse(AIPerf_T$scenarios == "AI_Decides", "No_Assess",
ifelse(AIPerf_T$scenarios == "AI_Decides(A)", "AI_Assess",
ifelse(AIPerf_T$scenarios == "AI_Assist", "No_Assess",
ifelse(AIPerf_T$scenarios == "AI_Assist(A)", "AI_Assess",
ifelse(AIPerf_T$scenarios == "Control", "Control", "Other")))))
model_pf_H2_1 <-aov(PF_Avg ~ scenarios_c3, data = AIPerf_T)
summary(model_pf_H2_1)
## Df Sum Sq Mean Sq F value Pr(>F)
## scenarios_c3 2 1.46 0.7324 1.771 0.173
## Residuals 181 74.84 0.4135
model_ot_H4_1 <-aov(OT_Avg ~ scenarios_c3, data = AIPerf_T)
summary(model_ot_H4_1)
## Df Sum Sq Mean Sq F value Pr(>F)
## scenarios_c3 2 1.43 0.7143 1.445 0.239
## Residuals 181 89.50 0.4945
#Combine AI_Decides + AI_Decides(A) and all other scenarios - C2
AIPerf_T$scenarios_c4 <- ifelse(AIPerf_T$scenarios == "AI_Decides", "No_Assess",
ifelse(AIPerf_T$scenarios == "AI_Decides(A)", "Assess",
ifelse(AIPerf_T$scenarios == "AI_Assist", "No_Assess",
ifelse(AIPerf_T$scenarios == "AI_Assist(A)", "Assess",
ifelse(AIPerf_T$scenarios == "Control", "No_Assess", "Other")))))
model_pf_H2_2 <-t.test(PF_Avg ~ scenarios_c4, data = AIPerf_T)
model_pf_H2_2
##
## Welch Two Sample t-test
##
## data: PF_Avg by scenarios_c4
## t = 0.63685, df = 149.78, p-value = 0.5252
## alternative hypothesis: true difference in means between group Assess and group No_Assess is not equal to 0
## 95 percent confidence interval:
## -0.1300188 0.2536903
## sample estimates:
## mean in group Assess mean in group No_Assess
## 3.183575 3.121739
model_pf_H4_2 <-t.test(OT_Avg ~ scenarios_c4, data = AIPerf_T)
model_pf_H4_2
##
## Welch Two Sample t-test
##
## data: OT_Avg by scenarios_c4
## t = 1.2039, df = 138.51, p-value = 0.2307
## alternative hypothesis: true difference in means between group Assess and group No_Assess is not equal to 0
## 95 percent confidence interval:
## -0.0837934 0.3446630
## sample estimates:
## mean in group Assess mean in group No_Assess
## 3.356522 3.226087
# scenario_counts <- AIPerf_T %>%
# dplyr::count(scenarios_c4)
#
# print(scenario_counts)
AIP_P_centred <- scale(AIPerf_T$AIP_P_Avg, center= TRUE, scale = FALSE)
AIP_N_centred <- scale(AIPerf_T$AIP_N_Avg, center= TRUE, scale = FALSE)
#H5: AI attitudes will moderate the relationship between AI use in Ratiem’s 360 performance review process and procedural fairness.
#Moderator: AIP_P_Avg
model_pf_H5_P <- lm(PF_Avg ~ scenarios, data=AIPerf_T)
model_pf_H5_P1 <- lm(PF_Avg ~ scenarios + AIP_P_centred, data=AIPerf_T)
model_pf_H5_P2 <- lm(PF_Avg ~ scenarios + AIP_P_centred + scenarios:AIP_P_centred, data=AIPerf_T)
summary(model_pf_H5_P1)
##
## Call:
## lm(formula = PF_Avg ~ scenarios + AIP_P_centred, data = AIPerf_T)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.97154 -0.44079 0.04729 0.39597 1.50525
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 3.25220 0.09433 34.478 < 0.0000000000000002 ***
## scenariosAI_Assist(A) 0.04799 0.13989 0.343 0.7320
## scenariosAI_Decides(A) -0.17358 0.14136 -1.228 0.2211
## scenariosAI_Assist -0.18134 0.13693 -1.324 0.1871
## scenariosAI_Decides -0.24643 0.13988 -1.762 0.0798 .
## AIP_P_centred 0.25823 0.05952 4.339 0.000024 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.6111 on 178 degrees of freedom
## Multiple R-squared: 0.1287, Adjusted R-squared: 0.1042
## F-statistic: 5.258 on 5 and 178 DF, p-value: 0.0001574
anova(model_pf_H5_P,model_pf_H5_P1, model_pf_H5_P2)
## Analysis of Variance Table
##
## Model 1: PF_Avg ~ scenarios
## Model 2: PF_Avg ~ scenarios + AIP_P_centred
## Model 3: PF_Avg ~ scenarios + AIP_P_centred + scenarios:AIP_P_centred
## Res.Df RSS Df Sum of Sq F Pr(>F)
## 1 179 73.513
## 2 178 66.482 1 7.0311 18.7615 0.00002497 ***
## 3 174 65.209 4 1.2736 0.8496 0.4956
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(lm(PF_Avg ~ scenarios + AIP_P_centred + scenarios:AIP_P_centred, data = AIPerf_T))
##
## Call:
## lm(formula = PF_Avg ~ scenarios + AIP_P_centred + scenarios:AIP_P_centred,
## data = AIPerf_T)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.90605 -0.42413 0.03788 0.40798 1.53471
##
## Coefficients:
## Estimate Std. Error t value
## (Intercept) 3.25583 0.09459 34.419
## scenariosAI_Assist(A) 0.04790 0.14056 0.341
## scenariosAI_Decides(A) -0.18588 0.14263 -1.303
## scenariosAI_Assist -0.17462 0.13731 -1.272
## scenariosAI_Decides -0.24789 0.14050 -1.764
## AIP_P_centred 0.16161 0.13291 1.216
## scenariosAI_Assist(A):AIP_P_centred 0.04806 0.19216 0.250
## scenariosAI_Decides(A):AIP_P_centred 0.03176 0.19622 0.162
## scenariosAI_Assist:AIP_P_centred 0.28952 0.18059 1.603
## scenariosAI_Decides:AIP_P_centred 0.06551 0.18688 0.351
## Pr(>|t|)
## (Intercept) <0.0000000000000002 ***
## scenariosAI_Assist(A) 0.7337
## scenariosAI_Decides(A) 0.1942
## scenariosAI_Assist 0.2051
## scenariosAI_Decides 0.0794 .
## AIP_P_centred 0.2257
## scenariosAI_Assist(A):AIP_P_centred 0.8028
## scenariosAI_Decides(A):AIP_P_centred 0.8716
## scenariosAI_Assist:AIP_P_centred 0.1107
## scenariosAI_Decides:AIP_P_centred 0.7264
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.6122 on 174 degrees of freedom
## Multiple R-squared: 0.1454, Adjusted R-squared: 0.1012
## F-statistic: 3.289 on 9 and 174 DF, p-value: 0.001
#Moderator: AIP_N_Avg
model_pf_H5_N <- lm(PF_Avg ~ scenarios, data=AIPerf_T)
model_pf_H5_N1 <- lm(PF_Avg ~ scenarios + AIP_N_centred, data=AIPerf_T)
model_pf_H5_N2 <- lm(PF_Avg ~ scenarios + AIP_N_centred + scenarios:AIP_N_centred, data=AIPerf_T)
summary(model_pf_H5_N1)
##
## Call:
## lm(formula = PF_Avg ~ scenarios + AIP_N_centred, data = AIPerf_T)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.13192 -0.41106 0.03778 0.42402 1.67124
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 3.26020 0.09800 33.268 <0.0000000000000002 ***
## scenariosAI_Assist(A) 0.03778 0.14565 0.259 0.7956
## scenariosAI_Decides(A) -0.20482 0.14665 -1.397 0.1643
## scenariosAI_Assist -0.18765 0.14243 -1.318 0.1894
## scenariosAI_Decides -0.24106 0.14536 -1.658 0.0990 .
## AIP_N_centred -0.13113 0.06349 -2.066 0.0403 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.6351 on 178 degrees of freedom
## Multiple R-squared: 0.0591, Adjusted R-squared: 0.03267
## F-statistic: 2.236 on 5 and 178 DF, p-value: 0.05271
anova(model_pf_H5_N,model_pf_H5_N1, model_pf_H5_N2)
## Analysis of Variance Table
##
## Model 1: PF_Avg ~ scenarios
## Model 2: PF_Avg ~ scenarios + AIP_N_centred
## Model 3: PF_Avg ~ scenarios + AIP_N_centred + scenarios:AIP_N_centred
## Res.Df RSS Df Sum of Sq F Pr(>F)
## 1 179 73.513
## 2 178 71.793 1 1.7208 4.2569 0.04058 *
## 3 174 70.335 4 1.4576 0.9015 0.46440
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(lm(PF_Avg ~ scenarios + AIP_N_centred + scenarios:AIP_P_centred, data = AIPerf_T))
##
## Call:
## lm(formula = PF_Avg ~ scenarios + AIP_N_centred + scenarios:AIP_P_centred,
## data = AIPerf_T)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.89102 -0.41918 0.04613 0.39414 1.54689
##
## Coefficients:
## Estimate Std. Error t value
## (Intercept) 3.25558 0.09483 34.332
## scenariosAI_Assist(A) 0.04506 0.14109 0.319
## scenariosAI_Decides(A) -0.18403 0.14305 -1.286
## scenariosAI_Assist -0.17192 0.13781 -1.247
## scenariosAI_Decides -0.24782 0.14084 -1.760
## AIP_N_centred -0.02654 0.06747 -0.393
## scenariosControl:AIP_P_centred 0.15915 0.13338 1.193
## scenariosAI_Assist(A):AIP_P_centred 0.19376 0.14487 1.337
## scenariosAI_Decides(A):AIP_P_centred 0.18825 0.14529 1.296
## scenariosAI_Assist:AIP_P_centred 0.43829 0.12684 3.456
## scenariosAI_Decides:AIP_P_centred 0.21626 0.13456 1.607
## Pr(>|t|)
## (Intercept) < 0.0000000000000002 ***
## scenariosAI_Assist(A) 0.749859
## scenariosAI_Decides(A) 0.199998
## scenariosAI_Assist 0.213909
## scenariosAI_Decides 0.080244 .
## AIP_N_centred 0.694568
## scenariosControl:AIP_P_centred 0.234416
## scenariosAI_Assist(A):AIP_P_centred 0.182821
## scenariosAI_Decides(A):AIP_P_centred 0.196815
## scenariosAI_Assist:AIP_P_centred 0.000691 ***
## scenariosAI_Decides:AIP_P_centred 0.109842
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.6137 on 173 degrees of freedom
## Multiple R-squared: 0.1461, Adjusted R-squared: 0.09679
## F-statistic: 2.961 on 10 and 173 DF, p-value: 0.001836
# H6: AI Attitudes and Organisational TrustAI attitudes will moderate the relationship between AI use in Ratiem’s 360 performance review process and organisational trust.
#Moderator: AIP_P_Avg
model_ot_H5_P <- lm(OT_Avg ~ scenarios, data=AIPerf_T)
model_ot_H5_P1 <- lm(OT_Avg ~ scenarios + AIP_P_centred, data=AIPerf_T)
model_ot_H5_P2 <- lm(OT_Avg ~ scenarios + AIP_P_centred + scenarios:AIP_P_centred, data=AIPerf_T)
summary(model_ot_H5_P1)
##
## Call:
## lm(formula = OT_Avg ~ scenarios + AIP_P_centred, data = AIPerf_T)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.33388 -0.35858 0.03397 0.38748 1.96781
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 3.31512 0.09975 33.234 < 0.0000000000000002 ***
## scenariosAI_Assist(A) 0.16731 0.14793 1.131 0.260
## scenariosAI_Decides(A) -0.06730 0.14948 -0.450 0.653
## scenariosAI_Assist -0.12751 0.14481 -0.881 0.380
## scenariosAI_Decides -0.17441 0.14793 -1.179 0.240
## AIP_P_centred 0.35794 0.06294 5.687 0.0000000521 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.6463 on 178 degrees of freedom
## Multiple R-squared: 0.1823, Adjusted R-squared: 0.1594
## F-statistic: 7.939 on 5 and 178 DF, p-value: 0.0000008943
anova(model_ot_H5_P,model_ot_H5_P1, model_ot_H5_P2)
## Analysis of Variance Table
##
## Model 1: OT_Avg ~ scenarios
## Model 2: OT_Avg ~ scenarios + AIP_P_centred
## Model 3: OT_Avg ~ scenarios + AIP_P_centred + scenarios:AIP_P_centred
## Res.Df RSS Df Sum of Sq F Pr(>F)
## 1 179 87.854
## 2 178 74.345 1 13.5091 32.0562 0.00000006076 ***
## 3 174 73.327 4 1.0179 0.6039 0.6603
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#Moderator: AIP_N_Avg
model_ot_H5_N <- lm(OT_Avg ~ scenarios, data=AIPerf_T)
model_ot_H5_N1 <- lm(OT_Avg ~ scenarios + AIP_N_centred, data=AIPerf_T)
model_ot_H5_N2 <- lm(OT_Avg ~ scenarios + AIP_N_centred + scenarios:AIP_N_centred, data=AIPerf_T)
summary(model_ot_H5_N1)
##
## Call:
## lm(formula = OT_Avg ~ scenarios + AIP_N_centred, data = AIPerf_T)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.40961 -0.40961 -0.00373 0.46852 1.44385
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 3.32480 0.10310 32.249 < 0.0000000000000002 ***
## scenariosAI_Assist(A) 0.13724 0.15323 0.896 0.372
## scenariosAI_Decides(A) -0.09992 0.15428 -0.648 0.518
## scenariosAI_Assist -0.12208 0.14984 -0.815 0.416
## scenariosAI_Decides -0.16941 0.15292 -1.108 0.269
## AIP_N_centred -0.28967 0.06679 -4.337 0.0000241 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.6681 on 178 degrees of freedom
## Multiple R-squared: 0.1261, Adjusted R-squared: 0.1016
## F-statistic: 5.138 on 5 and 178 DF, p-value: 0.0001991
anova(model_ot_H5_N,model_ot_H5_N1, model_ot_H5_N2)
## Analysis of Variance Table
##
## Model 1: OT_Avg ~ scenarios
## Model 2: OT_Avg ~ scenarios + AIP_N_centred
## Model 3: OT_Avg ~ scenarios + AIP_N_centred + scenarios:AIP_N_centred
## Res.Df RSS Df Sum of Sq F Pr(>F)
## 1 179 87.854
## 2 178 79.458 1 8.3963 18.8416 0.00002404 ***
## 3 174 77.539 4 1.9189 1.0765 0.3697
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
ggplot(AIPerf_T, aes(x = AIP_P_centred, y = PF_Avg)) +
geom_point(alpha = 0.5) +
geom_smooth(method = "lm", color = "black") +
labs(x = "Positive AI Attitudes (centered)",
y = "Procedural Fairness",
title = "Positive AI Attitudes Predict Procedural Fairness") +
theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'
ggplot(AIPerf_T, aes(x = AIP_N_centred, y = PF_Avg)) +
geom_point(alpha = 0.5) +
geom_smooth(method = "lm", color = "black") +
labs(x = "Negative AI Attitudes (centered)",
y = "Procedural Fairness",
title = "Negative AI Attitudes Predict Procedural Fairness") +
theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'
ggplot(AIPerf_T, aes(x = AIP_P_centred, y = OT_Avg)) +
geom_point(alpha = 0.5) +
geom_smooth(method = "lm", color = "black") +
labs(x = "Positive AI Attitudes (centered)",
y = "Procedural Fairness",
title = "Positive AI Attitudes Predict Procedural Fairness") +
theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'
ggplot(AIPerf_T, aes(x = AIP_N_centred, y = OT_Avg)) +
geom_point(alpha = 0.5) +
geom_smooth(method = "lm", color = "black") +
labs(x = "Negative AI Attitudes (centered)",
y = "Procedural Fairness",
title = "Negative AI Attitudes Predict Procedural Fairness") +
theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'