1.1 Loading Libraries
First, we’ll load the following libraries.
library(tidyverse)
library(psych)
library(dplyr)
library(tidyr)
library(readr)
library(emmeans)
library(lmerTest)
library(jtools)
library(sjstats)
library(stats)
library(car)
1.2 Importing the Qualtrics Data
Then, we import our dataset.
filename = "Cognition - Euthanasia Study 4 (2024)_10 de mayo de 2024_02.00.csv"
headers = read_csv(filename, col_names = FALSE, n_max = 1)
df = read_csv(filename, skip = 3, col_names = FALSE)
colnames(df) = headers
glimpse(df)
## Rows: 1,154
## Columns: 89
## $ StartDate <dttm> 2024-04-22 14:04:33, 2024-04-22 14:05:14, 20…
## $ EndDate <dttm> 2024-04-22 14:11:55, 2024-04-22 14:14:50, 20…
## $ Status <chr> "Dirección IP", "Dirección IP", "Dirección IP…
## $ IPAddress <chr> "82.132.247.106", "92.29.162.22", "81.101.212…
## $ Progress <dbl> 100, 100, 100, 100, 100, 100, 100, 100, 100, …
## $ `Duration (in seconds)` <dbl> 441, 575, 427, 399, 617, 406, 451, 447, 346, …
## $ Finished <chr> "Verdadero", "Verdadero", "Verdadero", "Verda…
## $ RecordedDate <dttm> 2024-04-22 14:11:56, 2024-04-22 14:14:50, 20…
## $ ResponseId <chr> "R_3suZpDh2B2yQLvD", "R_3OIrhVaR7ZrRAhH", "R_…
## $ RecipientLastName <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ RecipientFirstName <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ RecipientEmail <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ ExternalReference <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ LocationLatitude <dbl> 52.6189, 51.5415, 51.5577, 54.1145, 50.8429, …
## $ LocationLongitude <dbl> -2.0040, -0.0601, -1.7767, -3.2457, -0.1158, …
## $ DistributionChannel <chr> "anonymous", "anonymous", "anonymous", "anony…
## $ UserLanguage <chr> "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN…
## $ Consent <chr> "I agree and want to participate in this stud…
## $ PRO_ID <chr> "6411f6fa47ecc7439d8a157a", "6413577ad4fa8082…
## $ `time_vign1_First Click` <dbl> 9.367, 0.000, 70.635, 0.000, 24.913, 0.000, 5…
## $ `time_vign1_Last Click` <dbl> 90.122, 0.000, 90.112, 0.000, 25.358, 0.000, …
## $ `time_vign1_Page Submit` <dbl> 92.410, 188.530, 91.665, 96.987, 121.220, 115…
## $ `time_vign1_Click Count` <dbl> 28, 0, 2, 0, 2, 0, 4, 0, 5, 0, 30, 11, 7, 13,…
## $ comp1 <chr> "A robot physician.", "A robot physician.", "…
## $ comp2 <chr> "competently", "competently", "competently", …
## $ comp3 <chr> "Very unlikely.", "Very unlikely.", "Very unl…
## $ explain1_4 <dbl> 44, 1, 92, 96, 91, 82, 93, 71, 92, 0, 97, 51,…
## $ explain2_4 <dbl> 22, 81, 19, 30, 30, 30, 93, 67, 19, 92, 5, 52…
## $ explain3_4 <dbl> 19, 92, 10, 3, 30, 28, 81, 81, 72, 92, 8, 11,…
## $ DV_RE_decision_1 <dbl> 6, 5, 4, 4, 4, 4, 4, 5, 1, 6, 2, 3, 6, 6, 5, …
## $ DV_RE_decision_2 <dbl> 6, 4, 2, 5, 2, 2, 4, 5, 2, 5, 2, 3, 5, 6, 6, …
## $ DV_RE_decision_3 <dbl> 2, 5, 4, 3, 2, 4, 4, 3, 7, 2, 7, 3, 3, 1, 3, …
## $ DV_RE_decision_4 <dbl> 6, 4, 3, 4, 4, 4, 4, 4, 7, 2, 4, 3, 4, 1, 2, …
## $ DV_RE_decision_5 <dbl> 6, 3, 4, 3, 2, 4, 2, 2, 4, 2, 4, 3, 4, 1, 2, …
## $ DV_RE_decision_6 <dbl> 4, 5, 4, 4, 2, 2, 4, 4, 1, 5, 1, 3, 4, 6, 6, …
## $ DV_RE_physician_1 <dbl> 4, 5, 6, 4, 3, 4, 4, 4, 1, 6, 2, 3, 5, 6, 2, …
## $ DV_RE_physician_2 <dbl> 7, 1, 5, 1, 1, 2, 1, 2, 1, 2, 2, 3, 6, 2, 2, …
## $ DV_RE_physician_3 <dbl> 4, 4, 5, 4, 4, 4, 6, 5, 3, 7, 2, 3, 6, 6, 6, …
## $ DV_RE_physician_4 <dbl> 4, 1, 5, 3, 5, 3, 4, 4, 1, 6, 2, 3, 5, 4, 5, …
## $ DV_RE_physician_5 <dbl> 6, 2, 3, 3, 2, 2, 4, 2, 1, 2, 1, 3, 5, 4, 4, …
## $ DV_RE_physician_6 <dbl> 4, 3, 6, 5, 5, 4, 4, 4, 1, 5, 2, 3, 5, 5, 5, …
## $ DV_RE_physician_7 <dbl> 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, …
## $ DV_RE_RespAlloc_3 <dbl> 10, 0, 0, 35, 70, 30, 0, 0, 0, 0, 16, 5, 39, …
## $ DV_RE_RespAlloc_4 <dbl> 0, 0, 45, 29, 10, 22, 41, 0, 35, 25, 28, 24, …
## $ DV_RE_RespAlloc_5 <dbl> 30, 15, 20, 21, 10, 15, 11, 26, 20, 0, 6, 24,…
## $ DV_RE_RespAlloc_6 <dbl> 60, 0, 20, 11, 0, 11, 20, 25, 10, 25, 19, 24,…
## $ DV_RE_RespAlloc_7 <dbl> 0, 85, 15, 4, 10, 22, 28, 49, 35, 50, 31, 23,…
## $ DV_RE_wrong_1 <dbl> 2, 5, 4, 4, 3, 4, 6, 5, 7, 3, 7, 4, 4, 2, 2, …
## $ DV_RE_accept_1 <dbl> 6, 3, 2, 4, 5, 4, 4, 4, 1, 3, 1, 4, 5, 6, 2, …
## $ DV_RE_permiss_1 <dbl> 5, 3, 2, 4, 5, 3, 2, 4, 1, 5, 1, 4, 5, 6, 3, …
## $ DV_RE_blame_1 <dbl> 3, 2, 2, 5, 2, 3, 5, 1, 1, 1, 7, 1, 3, 1, 2, …
## $ DV_RE_punish_1 <dbl> 6, 2, 1, 4, 1, 2, 4, 1, 1, 1, 7, 1, 3, 1, 1, …
## $ DV_RE_praise_1 <dbl> 6, 2, 2, 4, 1, 4, 4, 4, 1, 1, 1, 1, 4, 4, 2, …
## $ DV_RE_harm_1 <dbl> 7, 6, 5, 4, 4, 4, 5, 5, 7, 4, 7, 4, 3, 2, 4, …
## $ age <dbl> 53, 26, 30, 24, 22, 58, 61, 27, 34, 55, 40, 5…
## $ gender <chr> "Female", "Male", "Female", "Female", "Female…
## $ education <chr> "Master or equivalent", "Master or equivalent…
## $ `education 2` <chr> "STEM subjects (science, technology, engineer…
## $ income <chr> "Above average", "Above average", "Above aver…
## $ `employment 1` <chr> "Employed for wages", "Employed for wages", "…
## $ `employment 1_4_TEXT` <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ `employment 2` <chr> "Healthcare", "Healthcare", "Other", "Other",…
## $ politics_1 <chr> "2", "5", "2", "3", "3", "3", "4 - Moderate",…
## $ `religious affil` <chr> "Christianity", "No religious affiliation", "…
## $ ethnicity <chr> "White", "White", "White", "White", "White", …
## $ ethnicity_7_TEXT <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ Q813 <chr> "Scotland", "England", "England", "England", …
## $ Q813_7_TEXT <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ relationship <chr> "In a domestic partnership or civil union", "…
## $ MC_demo <chr> "No", "No", "No", "No", "No", "No", "No", "No…
## $ health1 <chr> "No", "No", "No", "No", "No", "Yes", "No", "N…
## $ shoes <chr> "No", "No", "No", "No", "No", "No", "No", "No…
## $ clothes <chr> "No", "No", "No", "No", "No", "No", "No", "No…
## $ PROLIFIC_PID <chr> "6411f6fa47ecc7439d8a157a", "6413577ad4fa8082…
## $ accuracy <dbl> 80, 83, 83, 93, 93, 84, 97, 82, 94, 78, 80, 9…
## $ Condition <chr> "Unexplainable", "Explainable", "Unexplainabl…
## $ Subject <chr> "She", "He", "She", "She", "She", "She", "He"…
## $ subject <chr> "she", "he", "she", "she", "she", "she", "he"…
## $ object <chr> "her", "him", "her", "her", "her", "her", "hi…
## $ possessive <chr> "her", "his", "her", "her", "her", "her", "hi…
## $ name <chr> "Riley", "Taylor", "Alex", "Taylor", "Riley",…
## $ event <chr> "traffic", "work", "work", "traffic", "sport"…
## $ AI <chr> "Joss", "John", "Joss", "Jane", "John", "John…
## $ algorithm <chr> "I used a Random Forest", "I used a Decision …
## $ text <chr> "The process that yields my predictions is no…
## $ alg <chr> "a Random Forest", "a Decision Tree", "Suppor…
## $ difficulty <chr> "difficult", "easy", "difficult", "difficult"…
## $ diff <chr> "It is not easy to explain the process that y…
## $ conjunct <chr> "though", "and", "though", "though", "though"…
1.3 Data Preprocessing
First, we eliminate the data of those participants who answered ‘Yes’
to both the 1st and the 2nd attention checks, as well as the data of
subjects who gave an answer different than ‘3’ to the 3rd attention
check. dditionally, we create a composite index for the participants’
self-reported level of explainability of the algorithm (i.e., explain),
as well as one for their level of agreement with the decision to suspend
life support (i.e., decision), their opinion of the robot physician
(i.e., physician), and one for the overall perception of immorality of
the robot physician and its decision (i.e., immoral). Second, we create
one specific composite index for the perceived immorality of the robot
physician alone (i.e., imm_rob) and one for the perceived immorality of
its decision only (i.e., imm_dec).
df = df %>%
filter(shoes == 'No'| clothes == 'No', DV_RE_physician_7 == 3) %>%
mutate(explain = (explain2_4 + explain3_4 + (100 - explain1_4))/3,
decision = (DV_RE_decision_1 + DV_RE_decision_2 + DV_RE_decision_6 +
(8 - DV_RE_decision_3) + (8 - DV_RE_decision_4) + (8 - DV_RE_decision_5))/6,
physician = (DV_RE_physician_1 + DV_RE_physician_2 + DV_RE_physician_3 +
DV_RE_physician_4 + DV_RE_physician_5 + DV_RE_physician_6)/6,
immoral = (DV_RE_wrong_1 + DV_RE_blame_1 + DV_RE_punish_1 + DV_RE_harm_1 +
(8 - DV_RE_accept_1) + (8 - DV_RE_permiss_1) + (8 - DV_RE_praise_1))/7,
imm_rob = (DV_RE_blame_1 + DV_RE_punish_1 + (8 - DV_RE_praise_1))/3,
imm_dec = (DV_RE_wrong_1 + (8 - DV_RE_accept_1) + (8 - DV_RE_permiss_1))/3)
glimpse(df)
## Rows: 1,097
## Columns: 95
## $ StartDate <dttm> 2024-04-22 14:04:33, 2024-04-22 14:05:14, 20…
## $ EndDate <dttm> 2024-04-22 14:11:55, 2024-04-22 14:14:50, 20…
## $ Status <chr> "Dirección IP", "Dirección IP", "Dirección IP…
## $ IPAddress <chr> "82.132.247.106", "92.29.162.22", "81.101.212…
## $ Progress <dbl> 100, 100, 100, 100, 100, 100, 100, 100, 100, …
## $ `Duration (in seconds)` <dbl> 441, 575, 427, 399, 617, 406, 451, 447, 346, …
## $ Finished <chr> "Verdadero", "Verdadero", "Verdadero", "Verda…
## $ RecordedDate <dttm> 2024-04-22 14:11:56, 2024-04-22 14:14:50, 20…
## $ ResponseId <chr> "R_3suZpDh2B2yQLvD", "R_3OIrhVaR7ZrRAhH", "R_…
## $ RecipientLastName <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ RecipientFirstName <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ RecipientEmail <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ ExternalReference <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ LocationLatitude <dbl> 52.6189, 51.5415, 51.5577, 54.1145, 50.8429, …
## $ LocationLongitude <dbl> -2.0040, -0.0601, -1.7767, -3.2457, -0.1158, …
## $ DistributionChannel <chr> "anonymous", "anonymous", "anonymous", "anony…
## $ UserLanguage <chr> "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN…
## $ Consent <chr> "I agree and want to participate in this stud…
## $ PRO_ID <chr> "6411f6fa47ecc7439d8a157a", "6413577ad4fa8082…
## $ `time_vign1_First Click` <dbl> 9.367, 0.000, 70.635, 0.000, 24.913, 0.000, 5…
## $ `time_vign1_Last Click` <dbl> 90.122, 0.000, 90.112, 0.000, 25.358, 0.000, …
## $ `time_vign1_Page Submit` <dbl> 92.410, 188.530, 91.665, 96.987, 121.220, 115…
## $ `time_vign1_Click Count` <dbl> 28, 0, 2, 0, 2, 0, 4, 0, 5, 0, 30, 11, 7, 13,…
## $ comp1 <chr> "A robot physician.", "A robot physician.", "…
## $ comp2 <chr> "competently", "competently", "competently", …
## $ comp3 <chr> "Very unlikely.", "Very unlikely.", "Very unl…
## $ explain1_4 <dbl> 44, 1, 92, 96, 91, 82, 93, 71, 92, 0, 97, 51,…
## $ explain2_4 <dbl> 22, 81, 19, 30, 30, 30, 93, 67, 19, 92, 5, 52…
## $ explain3_4 <dbl> 19, 92, 10, 3, 30, 28, 81, 81, 72, 92, 8, 11,…
## $ DV_RE_decision_1 <dbl> 6, 5, 4, 4, 4, 4, 4, 5, 1, 6, 2, 3, 6, 6, 5, …
## $ DV_RE_decision_2 <dbl> 6, 4, 2, 5, 2, 2, 4, 5, 2, 5, 2, 3, 5, 6, 6, …
## $ DV_RE_decision_3 <dbl> 2, 5, 4, 3, 2, 4, 4, 3, 7, 2, 7, 3, 3, 1, 3, …
## $ DV_RE_decision_4 <dbl> 6, 4, 3, 4, 4, 4, 4, 4, 7, 2, 4, 3, 4, 1, 2, …
## $ DV_RE_decision_5 <dbl> 6, 3, 4, 3, 2, 4, 2, 2, 4, 2, 4, 3, 4, 1, 2, …
## $ DV_RE_decision_6 <dbl> 4, 5, 4, 4, 2, 2, 4, 4, 1, 5, 1, 3, 4, 6, 6, …
## $ DV_RE_physician_1 <dbl> 4, 5, 6, 4, 3, 4, 4, 4, 1, 6, 2, 3, 5, 6, 2, …
## $ DV_RE_physician_2 <dbl> 7, 1, 5, 1, 1, 2, 1, 2, 1, 2, 2, 3, 6, 2, 2, …
## $ DV_RE_physician_3 <dbl> 4, 4, 5, 4, 4, 4, 6, 5, 3, 7, 2, 3, 6, 6, 6, …
## $ DV_RE_physician_4 <dbl> 4, 1, 5, 3, 5, 3, 4, 4, 1, 6, 2, 3, 5, 4, 5, …
## $ DV_RE_physician_5 <dbl> 6, 2, 3, 3, 2, 2, 4, 2, 1, 2, 1, 3, 5, 4, 4, …
## $ DV_RE_physician_6 <dbl> 4, 3, 6, 5, 5, 4, 4, 4, 1, 5, 2, 3, 5, 5, 5, …
## $ DV_RE_physician_7 <dbl> 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, …
## $ DV_RE_RespAlloc_3 <dbl> 10, 0, 0, 35, 70, 30, 0, 0, 0, 0, 16, 5, 39, …
## $ DV_RE_RespAlloc_4 <dbl> 0, 0, 45, 29, 10, 22, 41, 0, 35, 25, 28, 24, …
## $ DV_RE_RespAlloc_5 <dbl> 30, 15, 20, 21, 10, 15, 11, 26, 20, 0, 6, 24,…
## $ DV_RE_RespAlloc_6 <dbl> 60, 0, 20, 11, 0, 11, 20, 25, 10, 25, 19, 24,…
## $ DV_RE_RespAlloc_7 <dbl> 0, 85, 15, 4, 10, 22, 28, 49, 35, 50, 31, 23,…
## $ DV_RE_wrong_1 <dbl> 2, 5, 4, 4, 3, 4, 6, 5, 7, 3, 7, 4, 4, 2, 2, …
## $ DV_RE_accept_1 <dbl> 6, 3, 2, 4, 5, 4, 4, 4, 1, 3, 1, 4, 5, 6, 2, …
## $ DV_RE_permiss_1 <dbl> 5, 3, 2, 4, 5, 3, 2, 4, 1, 5, 1, 4, 5, 6, 3, …
## $ DV_RE_blame_1 <dbl> 3, 2, 2, 5, 2, 3, 5, 1, 1, 1, 7, 1, 3, 1, 2, …
## $ DV_RE_punish_1 <dbl> 6, 2, 1, 4, 1, 2, 4, 1, 1, 1, 7, 1, 3, 1, 1, …
## $ DV_RE_praise_1 <dbl> 6, 2, 2, 4, 1, 4, 4, 4, 1, 1, 1, 1, 4, 4, 2, …
## $ DV_RE_harm_1 <dbl> 7, 6, 5, 4, 4, 4, 5, 5, 7, 4, 7, 4, 3, 2, 4, …
## $ age <dbl> 53, 26, 30, 24, 22, 58, 61, 27, 34, 55, 40, 5…
## $ gender <chr> "Female", "Male", "Female", "Female", "Female…
## $ education <chr> "Master or equivalent", "Master or equivalent…
## $ `education 2` <chr> "STEM subjects (science, technology, engineer…
## $ income <chr> "Above average", "Above average", "Above aver…
## $ `employment 1` <chr> "Employed for wages", "Employed for wages", "…
## $ `employment 1_4_TEXT` <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ `employment 2` <chr> "Healthcare", "Healthcare", "Other", "Other",…
## $ politics_1 <chr> "2", "5", "2", "3", "3", "3", "4 - Moderate",…
## $ `religious affil` <chr> "Christianity", "No religious affiliation", "…
## $ ethnicity <chr> "White", "White", "White", "White", "White", …
## $ ethnicity_7_TEXT <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ Q813 <chr> "Scotland", "England", "England", "England", …
## $ Q813_7_TEXT <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ relationship <chr> "In a domestic partnership or civil union", "…
## $ MC_demo <chr> "No", "No", "No", "No", "No", "No", "No", "No…
## $ health1 <chr> "No", "No", "No", "No", "No", "Yes", "No", "N…
## $ shoes <chr> "No", "No", "No", "No", "No", "No", "No", "No…
## $ clothes <chr> "No", "No", "No", "No", "No", "No", "No", "No…
## $ PROLIFIC_PID <chr> "6411f6fa47ecc7439d8a157a", "6413577ad4fa8082…
## $ accuracy <dbl> 80, 83, 83, 93, 93, 84, 97, 82, 94, 78, 80, 9…
## $ Condition <chr> "Unexplainable", "Explainable", "Unexplainabl…
## $ Subject <chr> "She", "He", "She", "She", "She", "She", "He"…
## $ subject <chr> "she", "he", "she", "she", "she", "she", "he"…
## $ object <chr> "her", "him", "her", "her", "her", "her", "hi…
## $ possessive <chr> "her", "his", "her", "her", "her", "her", "hi…
## $ name <chr> "Riley", "Taylor", "Alex", "Taylor", "Riley",…
## $ event <chr> "traffic", "work", "work", "traffic", "sport"…
## $ AI <chr> "Joss", "John", "Joss", "Jane", "John", "John…
## $ algorithm <chr> "I used a Random Forest", "I used a Decision …
## $ text <chr> "The process that yields my predictions is no…
## $ alg <chr> "a Random Forest", "a Decision Tree", "Suppor…
## $ difficulty <chr> "difficult", "easy", "difficult", "difficult"…
## $ diff <chr> "It is not easy to explain the process that y…
## $ conjunct <chr> "though", "and", "though", "though", "though"…
## $ explain <dbl> 32.333333, 90.666667, 12.333333, 12.333333, 2…
## $ decision <dbl> 4.333333, 4.333333, 3.833333, 4.500000, 4.000…
## $ physician <dbl> 4.833333, 2.666667, 5.000000, 3.333333, 3.333…
## $ immoral <dbl> 3.571429, 4.428571, 4.285714, 4.142857, 3.285…
## $ imm_rob <dbl> 3.666667, 3.333333, 3.000000, 4.333333, 3.333…
## $ imm_dec <dbl> 2.333333, 5.000000, 5.333333, 4.000000, 3.000…
2.1 Main Analyses
First, we perform a manipulation check for the explainability factor
(i.e., Expl vs. Unexpl), and we see that there is indeed a significant
difference in participants’ self reported explainability of the robot
physician across conditions.
df <- df %>%
mutate(explain1_4_inv = 100 - explain1_4)
df %>%
select(explain1_4_inv, explain2_4, explain3_4) %>%
psych::alpha(.,check.keys = TRUE)
##
## Reliability analysis
## Call: psych::alpha(x = ., check.keys = TRUE)
##
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd median_r
## 0.71 0.75 0.75 0.49 2.9 0.016 64 26 0.34
##
## 95% confidence boundaries
## lower alpha upper
## Feldt 0.68 0.71 0.74
## Duhachek 0.68 0.71 0.75
##
## Reliability if an item is dropped:
## raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r med.r
## explain1_4_inv 0.90 0.90 0.82 0.82 9.19 0.0059 NA 0.82
## explain2_4 0.47 0.48 0.32 0.32 0.94 0.0307 NA 0.32
## explain3_4 0.49 0.51 0.34 0.34 1.04 0.0292 NA 0.34
##
## Item statistics
## n raw.r std.r r.cor r.drop mean sd
## explain1_4_inv 1097 0.74 0.68 0.37 0.35 58 38
## explain2_4 1097 0.85 0.89 0.87 0.67 68 29
## explain3_4 1097 0.84 0.88 0.86 0.65 65 30
glimpse(df)
## Rows: 1,097
## Columns: 96
## $ StartDate <dttm> 2024-04-22 14:04:33, 2024-04-22 14:05:14, 20…
## $ EndDate <dttm> 2024-04-22 14:11:55, 2024-04-22 14:14:50, 20…
## $ Status <chr> "Dirección IP", "Dirección IP", "Dirección IP…
## $ IPAddress <chr> "82.132.247.106", "92.29.162.22", "81.101.212…
## $ Progress <dbl> 100, 100, 100, 100, 100, 100, 100, 100, 100, …
## $ `Duration (in seconds)` <dbl> 441, 575, 427, 399, 617, 406, 451, 447, 346, …
## $ Finished <chr> "Verdadero", "Verdadero", "Verdadero", "Verda…
## $ RecordedDate <dttm> 2024-04-22 14:11:56, 2024-04-22 14:14:50, 20…
## $ ResponseId <chr> "R_3suZpDh2B2yQLvD", "R_3OIrhVaR7ZrRAhH", "R_…
## $ RecipientLastName <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ RecipientFirstName <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ RecipientEmail <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ ExternalReference <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ LocationLatitude <dbl> 52.6189, 51.5415, 51.5577, 54.1145, 50.8429, …
## $ LocationLongitude <dbl> -2.0040, -0.0601, -1.7767, -3.2457, -0.1158, …
## $ DistributionChannel <chr> "anonymous", "anonymous", "anonymous", "anony…
## $ UserLanguage <chr> "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN…
## $ Consent <chr> "I agree and want to participate in this stud…
## $ PRO_ID <chr> "6411f6fa47ecc7439d8a157a", "6413577ad4fa8082…
## $ `time_vign1_First Click` <dbl> 9.367, 0.000, 70.635, 0.000, 24.913, 0.000, 5…
## $ `time_vign1_Last Click` <dbl> 90.122, 0.000, 90.112, 0.000, 25.358, 0.000, …
## $ `time_vign1_Page Submit` <dbl> 92.410, 188.530, 91.665, 96.987, 121.220, 115…
## $ `time_vign1_Click Count` <dbl> 28, 0, 2, 0, 2, 0, 4, 0, 5, 0, 30, 11, 7, 13,…
## $ comp1 <chr> "A robot physician.", "A robot physician.", "…
## $ comp2 <chr> "competently", "competently", "competently", …
## $ comp3 <chr> "Very unlikely.", "Very unlikely.", "Very unl…
## $ explain1_4 <dbl> 44, 1, 92, 96, 91, 82, 93, 71, 92, 0, 97, 51,…
## $ explain2_4 <dbl> 22, 81, 19, 30, 30, 30, 93, 67, 19, 92, 5, 52…
## $ explain3_4 <dbl> 19, 92, 10, 3, 30, 28, 81, 81, 72, 92, 8, 11,…
## $ DV_RE_decision_1 <dbl> 6, 5, 4, 4, 4, 4, 4, 5, 1, 6, 2, 3, 6, 6, 5, …
## $ DV_RE_decision_2 <dbl> 6, 4, 2, 5, 2, 2, 4, 5, 2, 5, 2, 3, 5, 6, 6, …
## $ DV_RE_decision_3 <dbl> 2, 5, 4, 3, 2, 4, 4, 3, 7, 2, 7, 3, 3, 1, 3, …
## $ DV_RE_decision_4 <dbl> 6, 4, 3, 4, 4, 4, 4, 4, 7, 2, 4, 3, 4, 1, 2, …
## $ DV_RE_decision_5 <dbl> 6, 3, 4, 3, 2, 4, 2, 2, 4, 2, 4, 3, 4, 1, 2, …
## $ DV_RE_decision_6 <dbl> 4, 5, 4, 4, 2, 2, 4, 4, 1, 5, 1, 3, 4, 6, 6, …
## $ DV_RE_physician_1 <dbl> 4, 5, 6, 4, 3, 4, 4, 4, 1, 6, 2, 3, 5, 6, 2, …
## $ DV_RE_physician_2 <dbl> 7, 1, 5, 1, 1, 2, 1, 2, 1, 2, 2, 3, 6, 2, 2, …
## $ DV_RE_physician_3 <dbl> 4, 4, 5, 4, 4, 4, 6, 5, 3, 7, 2, 3, 6, 6, 6, …
## $ DV_RE_physician_4 <dbl> 4, 1, 5, 3, 5, 3, 4, 4, 1, 6, 2, 3, 5, 4, 5, …
## $ DV_RE_physician_5 <dbl> 6, 2, 3, 3, 2, 2, 4, 2, 1, 2, 1, 3, 5, 4, 4, …
## $ DV_RE_physician_6 <dbl> 4, 3, 6, 5, 5, 4, 4, 4, 1, 5, 2, 3, 5, 5, 5, …
## $ DV_RE_physician_7 <dbl> 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, …
## $ DV_RE_RespAlloc_3 <dbl> 10, 0, 0, 35, 70, 30, 0, 0, 0, 0, 16, 5, 39, …
## $ DV_RE_RespAlloc_4 <dbl> 0, 0, 45, 29, 10, 22, 41, 0, 35, 25, 28, 24, …
## $ DV_RE_RespAlloc_5 <dbl> 30, 15, 20, 21, 10, 15, 11, 26, 20, 0, 6, 24,…
## $ DV_RE_RespAlloc_6 <dbl> 60, 0, 20, 11, 0, 11, 20, 25, 10, 25, 19, 24,…
## $ DV_RE_RespAlloc_7 <dbl> 0, 85, 15, 4, 10, 22, 28, 49, 35, 50, 31, 23,…
## $ DV_RE_wrong_1 <dbl> 2, 5, 4, 4, 3, 4, 6, 5, 7, 3, 7, 4, 4, 2, 2, …
## $ DV_RE_accept_1 <dbl> 6, 3, 2, 4, 5, 4, 4, 4, 1, 3, 1, 4, 5, 6, 2, …
## $ DV_RE_permiss_1 <dbl> 5, 3, 2, 4, 5, 3, 2, 4, 1, 5, 1, 4, 5, 6, 3, …
## $ DV_RE_blame_1 <dbl> 3, 2, 2, 5, 2, 3, 5, 1, 1, 1, 7, 1, 3, 1, 2, …
## $ DV_RE_punish_1 <dbl> 6, 2, 1, 4, 1, 2, 4, 1, 1, 1, 7, 1, 3, 1, 1, …
## $ DV_RE_praise_1 <dbl> 6, 2, 2, 4, 1, 4, 4, 4, 1, 1, 1, 1, 4, 4, 2, …
## $ DV_RE_harm_1 <dbl> 7, 6, 5, 4, 4, 4, 5, 5, 7, 4, 7, 4, 3, 2, 4, …
## $ age <dbl> 53, 26, 30, 24, 22, 58, 61, 27, 34, 55, 40, 5…
## $ gender <chr> "Female", "Male", "Female", "Female", "Female…
## $ education <chr> "Master or equivalent", "Master or equivalent…
## $ `education 2` <chr> "STEM subjects (science, technology, engineer…
## $ income <chr> "Above average", "Above average", "Above aver…
## $ `employment 1` <chr> "Employed for wages", "Employed for wages", "…
## $ `employment 1_4_TEXT` <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ `employment 2` <chr> "Healthcare", "Healthcare", "Other", "Other",…
## $ politics_1 <chr> "2", "5", "2", "3", "3", "3", "4 - Moderate",…
## $ `religious affil` <chr> "Christianity", "No religious affiliation", "…
## $ ethnicity <chr> "White", "White", "White", "White", "White", …
## $ ethnicity_7_TEXT <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ Q813 <chr> "Scotland", "England", "England", "England", …
## $ Q813_7_TEXT <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ relationship <chr> "In a domestic partnership or civil union", "…
## $ MC_demo <chr> "No", "No", "No", "No", "No", "No", "No", "No…
## $ health1 <chr> "No", "No", "No", "No", "No", "Yes", "No", "N…
## $ shoes <chr> "No", "No", "No", "No", "No", "No", "No", "No…
## $ clothes <chr> "No", "No", "No", "No", "No", "No", "No", "No…
## $ PROLIFIC_PID <chr> "6411f6fa47ecc7439d8a157a", "6413577ad4fa8082…
## $ accuracy <dbl> 80, 83, 83, 93, 93, 84, 97, 82, 94, 78, 80, 9…
## $ Condition <chr> "Unexplainable", "Explainable", "Unexplainabl…
## $ Subject <chr> "She", "He", "She", "She", "She", "She", "He"…
## $ subject <chr> "she", "he", "she", "she", "she", "she", "he"…
## $ object <chr> "her", "him", "her", "her", "her", "her", "hi…
## $ possessive <chr> "her", "his", "her", "her", "her", "her", "hi…
## $ name <chr> "Riley", "Taylor", "Alex", "Taylor", "Riley",…
## $ event <chr> "traffic", "work", "work", "traffic", "sport"…
## $ AI <chr> "Joss", "John", "Joss", "Jane", "John", "John…
## $ algorithm <chr> "I used a Random Forest", "I used a Decision …
## $ text <chr> "The process that yields my predictions is no…
## $ alg <chr> "a Random Forest", "a Decision Tree", "Suppor…
## $ difficulty <chr> "difficult", "easy", "difficult", "difficult"…
## $ diff <chr> "It is not easy to explain the process that y…
## $ conjunct <chr> "though", "and", "though", "though", "though"…
## $ explain <dbl> 32.333333, 90.666667, 12.333333, 12.333333, 2…
## $ decision <dbl> 4.333333, 4.333333, 3.833333, 4.500000, 4.000…
## $ physician <dbl> 4.833333, 2.666667, 5.000000, 3.333333, 3.333…
## $ immoral <dbl> 3.571429, 4.428571, 4.285714, 4.142857, 3.285…
## $ imm_rob <dbl> 3.666667, 3.333333, 3.000000, 4.333333, 3.333…
## $ imm_dec <dbl> 2.333333, 5.000000, 5.333333, 4.000000, 3.000…
## $ explain1_4_inv <dbl> 56, 99, 8, 4, 9, 18, 7, 29, 8, 100, 3, 49, 93…
m1 = lm(explain ~ Condition * accuracy, df)
car::Anova(m1)
## Anova Table (Type II tests)
##
## Response: explain
## Sum Sq Df F value Pr(>F)
## Condition 264113 1 606.4661 <2e-16 ***
## accuracy 907 1 2.0837 0.1492
## Condition:accuracy 739 1 1.6979 0.1928
## Residuals 475996 1093
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
m1_1 = lm(explain ~ Condition + accuracy, df)
car::Anova(m1_1)
## Anova Table (Type II tests)
##
## Response: explain
## Sum Sq Df F value Pr(>F)
## Condition 264113 1 606.0795 <2e-16 ***
## accuracy 907 1 2.0823 0.1493
## Residuals 476735 1094
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(m1_1)
##
## Call:
## lm(formula = explain ~ Condition + accuracy, data = df)
##
## Residuals:
## Min 1Q Median 3Q Max
## -50.488 -14.488 1.477 15.039 53.421
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 66.1646 9.0044 7.348 3.93e-13 ***
## ConditionUnexplainable -31.0449 1.2610 -24.619 < 2e-16 ***
## accuracy 0.1488 0.1031 1.443 0.149
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 20.88 on 1094 degrees of freedom
## Multiple R-squared: 0.3567, Adjusted R-squared: 0.3555
## F-statistic: 303.3 on 2 and 1094 DF, p-value: < 2.2e-16
emmeans(m1_1, pairwise ~ Condition)
## $emmeans
## Condition emmean SE df lower.CL upper.CL
## Explainable 79.1 0.894 1094 77.4 80.9
## Unexplainable 48.1 0.889 1094 46.3 49.8
##
## Confidence level used: 0.95
##
## $contrasts
## contrast estimate SE df t.ratio p.value
## Explainable - Unexplainable 31 1.26 1094 24.619 <.0001
jtools::summ(m1_1, digits = 3, confint = TRUE)
## MODEL INFO:
## Observations: 1097
## Dependent Variable: explain
## Type: OLS linear regression
##
## MODEL FIT:
## F(2,1094) = 303.332, p = 0.000
## R² = 0.357
## Adj. R² = 0.356
##
## Standard errors: OLS
## ----------------------------------------------------------------------------
## Est. 2.5% 97.5% t val. p
## ---------------------------- --------- --------- --------- --------- -------
## (Intercept) 66.165 48.497 83.832 7.348 0.000
## ConditionUnexplainable -31.045 -33.519 -28.571 -24.619 0.000
## accuracy 0.149 -0.054 0.351 1.443 0.149
## ----------------------------------------------------------------------------
sjstats::anova_stats(m1_1)
## term | df | sumsq | meansq | statistic | p.value | etasq | partial.etasq | omegasq | partial.omegasq | epsilonsq | cohens.f | power
## -------------------------------------------------------------------------------------------------------------------------------------------------
## Condition | 1 | 2.635e+05 | 2.635e+05 | 604.582 | < .001 | 0.355 | 0.356 | 0.355 | 0.355 | 0.355 | 0.743 | 1.000
## accuracy | 1 | 907.419 | 907.419 | 2.082 | 0.149 | 0.001 | 0.002 | 0.001 | 0.001 | 0.001 | 0.044 | 0.303
## Residuals | 1094 | 4.767e+05 | 435.773 | | | | | | | | |
Second, we test whether condition and accuracy have an effect on the
level of agreement with the robot’s decision to suspend life support.
Both main effects are significant, indicating a reduction in the
agreement with the robot’s decision in the Unexplainable vs. Explainable
condition and as the level of Accuracy decreases.
df <- df %>%
mutate(DV_RE_decision_3_inv = 8 - DV_RE_decision_3,
DV_RE_decision_4_inv = 8 - DV_RE_decision_4,
DV_RE_decision_5_inv = 8 - DV_RE_decision_5)
df %>%
select(DV_RE_decision_1, DV_RE_decision_2, DV_RE_decision_6,
DV_RE_decision_3_inv, DV_RE_decision_4_inv, DV_RE_decision_5_inv) %>%
psych::alpha(., check.keys = TRUE)
##
## Reliability analysis
## Call: psych::alpha(x = ., check.keys = TRUE)
##
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd median_r
## 0.87 0.87 0.88 0.54 7 0.0059 4.7 1.3 0.54
##
## 95% confidence boundaries
## lower alpha upper
## Feldt 0.86 0.87 0.89
## Duhachek 0.86 0.87 0.89
##
## Reliability if an item is dropped:
## raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r
## DV_RE_decision_1 0.85 0.84 0.84 0.52 5.4 0.0074 0.016
## DV_RE_decision_2 0.86 0.86 0.86 0.55 6.2 0.0066 0.014
## DV_RE_decision_6 0.84 0.84 0.84 0.51 5.3 0.0075 0.015
## DV_RE_decision_3_inv 0.84 0.84 0.84 0.52 5.4 0.0076 0.022
## DV_RE_decision_4_inv 0.85 0.85 0.84 0.53 5.7 0.0073 0.021
## DV_RE_decision_5_inv 0.87 0.88 0.87 0.59 7.1 0.0061 0.011
## med.r
## DV_RE_decision_1 0.53
## DV_RE_decision_2 0.55
## DV_RE_decision_6 0.53
## DV_RE_decision_3_inv 0.52
## DV_RE_decision_4_inv 0.55
## DV_RE_decision_5_inv 0.57
##
## Item statistics
## n raw.r std.r r.cor r.drop mean sd
## DV_RE_decision_1 1097 0.82 0.82 0.79 0.73 4.7 1.6
## DV_RE_decision_2 1097 0.74 0.75 0.69 0.63 4.6 1.7
## DV_RE_decision_6 1097 0.83 0.84 0.81 0.75 4.6 1.6
## DV_RE_decision_3_inv 1097 0.83 0.82 0.78 0.73 4.6 1.8
## DV_RE_decision_4_inv 1097 0.81 0.80 0.75 0.70 4.7 1.8
## DV_RE_decision_5_inv 1097 0.68 0.68 0.58 0.54 5.2 1.6
##
## Non missing response frequency for each item
## 1 2 3 4 5 6 7 miss
## DV_RE_decision_1 0.05 0.05 0.11 0.18 0.24 0.25 0.11 0
## DV_RE_decision_2 0.06 0.07 0.09 0.19 0.24 0.23 0.11 0
## DV_RE_decision_6 0.05 0.07 0.11 0.22 0.22 0.23 0.10 0
## DV_RE_decision_3_inv 0.08 0.10 0.10 0.16 0.19 0.24 0.14 0
## DV_RE_decision_4_inv 0.06 0.08 0.10 0.19 0.17 0.22 0.18 0
## DV_RE_decision_5_inv 0.04 0.05 0.06 0.16 0.19 0.26 0.24 0
m2 = lm(decision ~ Condition * accuracy, df)
car::Anova(m2) # the interaction is not significant
## Anova Table (Type II tests)
##
## Response: decision
## Sum Sq Df F value Pr(>F)
## Condition 11.81 1 6.8651 0.008911 **
## accuracy 12.66 1 7.3591 0.006777 **
## Condition:accuracy 0.00 1 0.0007 0.978815
## Residuals 1881.03 1093
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
m2_1 = lm(decision ~ Condition + accuracy, df)
car::Anova(m2_1)
## Anova Table (Type II tests)
##
## Response: decision
## Sum Sq Df F value Pr(>F)
## Condition 11.81 1 6.8714 0.008880 **
## accuracy 12.66 1 7.3658 0.006752 **
## Residuals 1881.03 1094
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(m2_1)
##
## Call:
## lm(formula = decision ~ Condition + accuracy, data = df)
##
## Residuals:
## Min 1Q Median 3Q Max
## -3.7785 -0.8404 0.0958 0.9929 2.5522
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 3.301581 0.565605 5.837 6.99e-09 ***
## ConditionUnexplainable -0.207639 0.079211 -2.621 0.00888 **
## accuracy 0.017582 0.006478 2.714 0.00675 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.311 on 1094 degrees of freedom
## Multiple R-squared: 0.01251, Adjusted R-squared: 0.0107
## F-statistic: 6.928 on 2 and 1094 DF, p-value: 0.001024
emmeans(m2_1, pairwise ~ Condition)
## $emmeans
## Condition emmean SE df lower.CL upper.CL
## Explainable 4.83 0.0561 1094 4.72 4.94
## Unexplainable 4.62 0.0559 1094 4.51 4.73
##
## Confidence level used: 0.95
##
## $contrasts
## contrast estimate SE df t.ratio p.value
## Explainable - Unexplainable 0.208 0.0792 1094 2.621 0.0089
jtools::summ(m2_1, digits = 3, confint = TRUE) # to get only main effects
## MODEL INFO:
## Observations: 1097
## Dependent Variable: decision
## Type: OLS linear regression
##
## MODEL FIT:
## F(2,1094) = 6.928, p = 0.001
## R² = 0.013
## Adj. R² = 0.011
##
## Standard errors: OLS
## ------------------------------------------------------------------------
## Est. 2.5% 97.5% t val. p
## ---------------------------- -------- -------- -------- -------- -------
## (Intercept) 3.302 2.192 4.411 5.837 0.000
## ConditionUnexplainable -0.208 -0.363 -0.052 -2.621 0.009
## accuracy 0.018 0.005 0.030 2.714 0.007
## ------------------------------------------------------------------------
sjstats::anova_stats(m2_1)
## term | df | sumsq | meansq | statistic | p.value | etasq | partial.etasq | omegasq | partial.omegasq | epsilonsq | cohens.f | power
## ---------------------------------------------------------------------------------------------------------------------------------------------
## Condition | 1 | 11.159 | 11.159 | 6.490 | 0.011 | 0.006 | 0.006 | 0.005 | 0.005 | 0.005 | 0.077 | 0.722
## accuracy | 1 | 12.665 | 12.665 | 7.366 | 0.007 | 0.007 | 0.007 | 0.006 | 0.006 | 0.006 | 0.082 | 0.775
## Residuals | 1094 | 1881.029 | 1.719 | | | | | | | | |
ggplot(df, aes(x = decision, y = accuracy)) +
geom_jitter() + geom_smooth(method = 'lm')

ggplot(df, aes(x = Condition, y = decision)) +
geom_bar(stat = "summary") + geom_smooth(method = 'lm')

ggplot(df, aes(x = accuracy, y = scale(decision), color = Condition, fill = Condition)) + labs(x = 'Accuracy (%)', y = "Moral Approval (standardised)") +
geom_hline(yintercept = 0, linetype = 2) + geom_smooth(method = 'lm') +
theme_classic() + scale_color_manual(values = c('blue', '#ff0000')) +
scale_fill_manual(values = c('blue', '#ff0000')) + theme(legend.position = 'top',
legend.title = element_blank(),
text = element_text(size = 14, family = 'serif'),
axis.text = element_text(size = 13, color = 'black'),
plot.margin = margin(t = .5,l = .1, b = 0, r = .4, "cm"),
axis.ticks = element_blank())

ggplot(df, aes(x = accuracy, y = scale(decision), color = Condition)) +
geom_smooth(method = 'loess')

Third, we test the effect of Condition and of Accuracy over
participants’ general opinion of the robot physician. Again, both the
main effects are significant, suggesting a lowering in participants’
general perception of the robot in the Unexplainable vs. Explainable
condition and as the level of Accuracy decreases.
df %>%
select(DV_RE_physician_1, DV_RE_physician_2, DV_RE_physician_3,
DV_RE_physician_4, DV_RE_physician_5, DV_RE_physician_6) %>%
psych::alpha(.,check.keys = TRUE)
##
## Reliability analysis
## Call: psych::alpha(x = ., check.keys = TRUE)
##
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd median_r
## 0.86 0.87 0.87 0.53 6.6 0.0063 4.2 1.3 0.57
##
## 95% confidence boundaries
## lower alpha upper
## Feldt 0.85 0.86 0.88
## Duhachek 0.85 0.86 0.88
##
## Reliability if an item is dropped:
## raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r
## DV_RE_physician_1 0.83 0.84 0.83 0.51 5.1 0.0080 0.024
## DV_RE_physician_2 0.88 0.88 0.87 0.60 7.4 0.0057 0.007
## DV_RE_physician_3 0.86 0.86 0.85 0.56 6.2 0.0069 0.015
## DV_RE_physician_4 0.82 0.83 0.82 0.49 4.7 0.0088 0.021
## DV_RE_physician_5 0.83 0.84 0.83 0.51 5.2 0.0082 0.025
## DV_RE_physician_6 0.83 0.83 0.82 0.50 4.9 0.0082 0.021
## med.r
## DV_RE_physician_1 0.54
## DV_RE_physician_2 0.61
## DV_RE_physician_3 0.59
## DV_RE_physician_4 0.54
## DV_RE_physician_5 0.57
## DV_RE_physician_6 0.54
##
## Item statistics
## n raw.r std.r r.cor r.drop mean sd
## DV_RE_physician_1 1097 0.81 0.82 0.77 0.72 4.5 1.6
## DV_RE_physician_2 1097 0.65 0.62 0.51 0.47 3.1 1.9
## DV_RE_physician_3 1097 0.68 0.71 0.64 0.57 5.2 1.4
## DV_RE_physician_4 1097 0.86 0.86 0.84 0.79 4.4 1.7
## DV_RE_physician_5 1097 0.82 0.81 0.77 0.72 3.6 1.8
## DV_RE_physician_6 1097 0.83 0.84 0.81 0.74 4.6 1.6
##
## Non missing response frequency for each item
## 1 2 3 4 5 6 7 miss
## DV_RE_physician_1 0.06 0.07 0.09 0.27 0.23 0.21 0.07 0
## DV_RE_physician_2 0.28 0.20 0.14 0.13 0.10 0.10 0.06 0
## DV_RE_physician_3 0.03 0.03 0.04 0.15 0.27 0.31 0.17 0
## DV_RE_physician_4 0.08 0.09 0.11 0.18 0.24 0.20 0.10 0
## DV_RE_physician_5 0.18 0.15 0.14 0.21 0.15 0.11 0.06 0
## DV_RE_physician_6 0.05 0.06 0.09 0.23 0.24 0.21 0.11 0
m3 = lm(physician ~ Condition * accuracy, df)
car::Anova(m3)
## Anova Table (Type II tests)
##
## Response: physician
## Sum Sq Df F value Pr(>F)
## Condition 21.65 1 13.0973 0.0003093 ***
## accuracy 13.35 1 8.0762 0.0045684 **
## Condition:accuracy 0.06 1 0.0335 0.8547559
## Residuals 1806.93 1093
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
m3_1 = lm(physician ~ Condition + accuracy, df)
car::Anova(m3_1)
## Anova Table (Type II tests)
##
## Response: physician
## Sum Sq Df F value Pr(>F)
## Condition 21.65 1 13.1088 0.0003074 ***
## accuracy 13.35 1 8.0833 0.0045505 **
## Residuals 1806.99 1094
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(m3_1)
##
## Call:
## lm(formula = physician ~ Condition + accuracy, data = df)
##
## Residuals:
## Min 1Q Median 3Q Max
## -3.4652 -0.8569 0.0547 0.8700 3.0506
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.80437 0.55436 5.059 4.95e-07 ***
## ConditionUnexplainable -0.28109 0.07764 -3.621 0.000307 ***
## accuracy 0.01805 0.00635 2.843 0.004550 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.285 on 1094 degrees of freedom
## Multiple R-squared: 0.01852, Adjusted R-squared: 0.01672
## F-statistic: 10.32 on 2 and 1094 DF, p-value: 3.628e-05
emmeans(m3_1, pairwise ~ Condition)
## $emmeans
## Condition emmean SE df lower.CL upper.CL
## Explainable 4.38 0.0550 1094 4.27 4.48
## Unexplainable 4.09 0.0548 1094 3.99 4.20
##
## Confidence level used: 0.95
##
## $contrasts
## contrast estimate SE df t.ratio p.value
## Explainable - Unexplainable 0.281 0.0776 1094 3.621 0.0003
jtools::summ(m3_1, digits = 3, confint = TRUE)
## MODEL INFO:
## Observations: 1097
## Dependent Variable: physician
## Type: OLS linear regression
##
## MODEL FIT:
## F(2,1094) = 10.320, p = 0.000
## R² = 0.019
## Adj. R² = 0.017
##
## Standard errors: OLS
## ------------------------------------------------------------------------
## Est. 2.5% 97.5% t val. p
## ---------------------------- -------- -------- -------- -------- -------
## (Intercept) 2.804 1.717 3.892 5.059 0.000
## ConditionUnexplainable -0.281 -0.433 -0.129 -3.621 0.000
## accuracy 0.018 0.006 0.031 2.843 0.005
## ------------------------------------------------------------------------
sjstats::anova_stats(m3_1)
## term | df | sumsq | meansq | statistic | p.value | etasq | partial.etasq | omegasq | partial.omegasq | epsilonsq | cohens.f | power
## ---------------------------------------------------------------------------------------------------------------------------------------------
## Condition | 1 | 20.741 | 20.741 | 12.557 | < .001 | 0.011 | 0.011 | 0.010 | 0.010 | 0.010 | 0.107 | 0.943
## accuracy | 1 | 13.351 | 13.351 | 8.083 | 0.005 | 0.007 | 0.007 | 0.006 | 0.006 | 0.006 | 0.086 | 0.811
## Residuals | 1094 | 1806.987 | 1.652 | | | | | | | | |
ggplot(df, aes(x = physician, y = accuracy)) +
geom_jitter() + geom_smooth(method = 'lm')

ggplot(df, aes(x = Condition, y = physician)) +
geom_bar(stat = "summary") + geom_smooth(method = 'lm') +
scale_y_reverse()

2.2 Composed Indexes Analyses
Here, we test the effect of Condition and of Accuracy on the composed
index of perceived immorality of the robot physician and of its
decision, and then separately for the composite index of immorality of
the robot physician and of its decision alone. Considering the general
index of morality (i.e., immoral), both the main effects are
significant, indicating more general perceived immorality of the
decision and of the robot agent in the Unexplainable vs. Explainable
condition. Considering the composite index of the robot agent’s
immorality, no effect reaches significance. Ultimately, the composite
index of decision’s perceived immorality shows a main effect of
Accuracy.
# immoral
df <- df %>%
mutate(DV_RE_accept_1_inv = 8 - DV_RE_accept_1,
DV_RE_permiss_1_inv = 8 - DV_RE_permiss_1,
DV_RE_praise_1_inv = 8 - DV_RE_praise_1)
df %>%
select(DV_RE_wrong_1, DV_RE_blame_1, DV_RE_punish_1, DV_RE_harm_1,
DV_RE_accept_1_inv, DV_RE_permiss_1_inv, DV_RE_praise_1_inv) %>%
psych::alpha(., check.keys = TRUE)
##
## Reliability analysis
## Call: psych::alpha(x = ., check.keys = TRUE)
##
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd median_r
## 0.76 0.75 0.8 0.3 3.1 0.01 3.7 1.1 0.32
##
## 95% confidence boundaries
## lower alpha upper
## Feldt 0.74 0.76 0.79
## Duhachek 0.74 0.76 0.78
##
## Reliability if an item is dropped:
## raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r
## DV_RE_wrong_1 0.68 0.67 0.74 0.26 2.1 0.0146 0.067
## DV_RE_blame_1 0.79 0.78 0.80 0.37 3.5 0.0087 0.055
## DV_RE_punish_1 0.77 0.76 0.78 0.35 3.2 0.0103 0.063
## DV_RE_harm_1 0.72 0.71 0.78 0.29 2.5 0.0124 0.077
## DV_RE_accept_1_inv 0.68 0.67 0.72 0.25 2.0 0.0146 0.055
## DV_RE_permiss_1_inv 0.69 0.68 0.73 0.26 2.1 0.0138 0.058
## DV_RE_praise_1_inv 0.77 0.77 0.81 0.35 3.3 0.0104 0.057
## med.r
## DV_RE_wrong_1 0.20
## DV_RE_blame_1 0.38
## DV_RE_punish_1 0.38
## DV_RE_harm_1 0.26
## DV_RE_accept_1_inv 0.26
## DV_RE_permiss_1_inv 0.26
## DV_RE_praise_1_inv 0.26
##
## Item statistics
## n raw.r std.r r.cor r.drop mean sd
## DV_RE_wrong_1 1097 0.82 0.80 0.77 0.70 3.7 2.0
## DV_RE_blame_1 1097 0.40 0.43 0.31 0.18 2.6 1.7
## DV_RE_punish_1 1097 0.43 0.48 0.38 0.29 1.7 1.2
## DV_RE_harm_1 1097 0.69 0.67 0.58 0.53 4.5 1.8
## DV_RE_accept_1_inv 1097 0.83 0.81 0.83 0.73 3.8 1.8
## DV_RE_permiss_1_inv 1097 0.79 0.78 0.78 0.68 3.9 1.7
## DV_RE_praise_1_inv 1097 0.49 0.47 0.34 0.30 5.5 1.7
##
## Non missing response frequency for each item
## 1 2 3 4 5 6 7 miss
## DV_RE_wrong_1 0.16 0.20 0.15 0.13 0.14 0.09 0.12 0
## DV_RE_blame_1 0.39 0.20 0.13 0.12 0.08 0.04 0.03 0
## DV_RE_punish_1 0.66 0.17 0.07 0.06 0.02 0.01 0.01 0
## DV_RE_harm_1 0.06 0.10 0.10 0.22 0.22 0.13 0.18 0
## DV_RE_accept_1_inv 0.09 0.17 0.22 0.16 0.12 0.10 0.12 0
## DV_RE_permiss_1_inv 0.06 0.15 0.22 0.22 0.14 0.11 0.10 0
## DV_RE_praise_1_inv 0.02 0.04 0.06 0.21 0.09 0.13 0.44 0
m4 = lm(immoral ~ Condition * accuracy, df)
car::Anova(m4)
## Anova Table (Type II tests)
##
## Response: immoral
## Sum Sq Df F value Pr(>F)
## Condition 5.32 1 4.4431 0.03527 *
## accuracy 7.75 1 6.4697 0.01111 *
## Condition:accuracy 1.55 1 1.2939 0.25558
## Residuals 1309.66 1093
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
m4_1 = lm(immoral ~ Condition + accuracy, df)
car::Anova(m4_1)
## Anova Table (Type II tests)
##
## Response: immoral
## Sum Sq Df F value Pr(>F)
## Condition 5.32 1 4.4420 0.03529 *
## accuracy 7.75 1 6.4679 0.01112 *
## Residuals 1311.21 1094
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(m4_1)
##
## Call:
## lm(formula = immoral ~ Condition + accuracy, data = df)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.8142 -0.7902 -0.0537 0.7537 3.5177
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 4.802848 0.472228 10.171 <2e-16 ***
## ConditionUnexplainable 0.139383 0.066134 2.108 0.0353 *
## accuracy -0.013756 0.005409 -2.543 0.0111 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.095 on 1094 degrees of freedom
## Multiple R-squared: 0.009616, Adjusted R-squared: 0.007806
## F-statistic: 5.311 on 2 and 1094 DF, p-value: 0.005064
emmeans(m4_1, pairwise ~ Condition)
## $emmeans
## Condition emmean SE df lower.CL upper.CL
## Explainable 3.61 0.0469 1094 3.51 3.70
## Unexplainable 3.74 0.0466 1094 3.65 3.84
##
## Confidence level used: 0.95
##
## $contrasts
## contrast estimate SE df t.ratio p.value
## Explainable - Unexplainable -0.139 0.0661 1094 -2.108 0.0353
jtools::summ(m4_1, digits = 3, confint = TRUE)
## MODEL INFO:
## Observations: 1097
## Dependent Variable: immoral
## Type: OLS linear regression
##
## MODEL FIT:
## F(2,1094) = 5.311, p = 0.005
## R² = 0.010
## Adj. R² = 0.008
##
## Standard errors: OLS
## ------------------------------------------------------------------------
## Est. 2.5% 97.5% t val. p
## ---------------------------- -------- -------- -------- -------- -------
## (Intercept) 4.803 3.876 5.729 10.171 0.000
## ConditionUnexplainable 0.139 0.010 0.269 2.108 0.035
## accuracy -0.014 -0.024 -0.003 -2.543 0.011
## ------------------------------------------------------------------------
sjstats::anova_stats(m4_1)
## term | df | sumsq | meansq | statistic | p.value | etasq | partial.etasq | omegasq | partial.omegasq | epsilonsq | cohens.f | power
## ---------------------------------------------------------------------------------------------------------------------------------------------
## Condition | 1 | 4.980 | 4.980 | 4.155 | 0.042 | 0.004 | 0.004 | 0.003 | 0.003 | 0.003 | 0.062 | 0.531
## accuracy | 1 | 7.752 | 7.752 | 6.468 | 0.011 | 0.006 | 0.006 | 0.005 | 0.005 | 0.005 | 0.077 | 0.720
## Residuals | 1094 | 1311.208 | 1.199 | | | | | | | | |
ggplot(df, aes(x = immoral, y = accuracy)) +
geom_jitter() + geom_smooth(method = 'lm')

ggplot(df, aes(x = Condition, y = immoral)) +
geom_bar(stat = "summary") + geom_smooth(method = 'lm')

# imm_rob
df %>%
select(DV_RE_blame_1, DV_RE_punish_1, DV_RE_praise_1_inv) %>%
psych::alpha(., check.keys = TRUE)
##
## Reliability analysis
## Call: psych::alpha(x = ., check.keys = TRUE)
##
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd median_r
## 0.52 0.23 0.34 0.09 0.3 0.025 2.3 1.1 -0.15
##
## 95% confidence boundaries
## lower alpha upper
## Feldt 0.47 0.52 0.57
## Duhachek 0.47 0.52 0.57
##
## Reliability if an item is dropped:
## raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r
## DV_RE_blame_1 0.25 -0.36 -0.15 -0.15 -0.26 0.043 NA
## DV_RE_punish_1 0.25 -0.34 -0.15 -0.15 -0.25 0.045 NA
## DV_RE_praise_1_inv- 0.70 0.72 0.57 0.57 2.61 0.017 NA
## med.r
## DV_RE_blame_1 -0.15
## DV_RE_punish_1 -0.15
## DV_RE_praise_1_inv- 0.57
##
## Item statistics
## n raw.r std.r r.cor r.drop mean sd
## DV_RE_blame_1 1097 0.80 0.75 0.67 0.42 2.6 1.7
## DV_RE_punish_1 1097 0.74 0.75 0.67 0.48 1.7 1.2
## DV_RE_praise_1_inv- 1097 0.63 0.37 -0.24 0.17 2.5 1.7
##
## Non missing response frequency for each item
## 1 2 3 4 5 6 7 miss
## DV_RE_blame_1 0.39 0.20 0.13 0.12 0.08 0.04 0.03 0
## DV_RE_punish_1 0.66 0.17 0.07 0.06 0.02 0.01 0.01 0
## DV_RE_praise_1_inv 0.02 0.04 0.06 0.21 0.09 0.13 0.44 0
m5 = lm(imm_rob ~ Condition * accuracy, df)
car::Anova(m5)
## Anova Table (Type II tests)
##
## Response: imm_rob
## Sum Sq Df F value Pr(>F)
## Condition 2.04 1 2.2386 0.1349
## accuracy 0.90 1 0.9924 0.3194
## Condition:accuracy 0.01 1 0.0079 0.9291
## Residuals 994.63 1093
sjstats::anova_stats(m5)
## term | df | sumsq | meansq | statistic | p.value | etasq | partial.etasq | omegasq | partial.omegasq | epsilonsq | cohens.f | power
## -----------------------------------------------------------------------------------------------------------------------------------------------------
## Condition | 1 | 1.965 | 1.965 | 2.159 | 0.142 | 0.002 | 0.002 | 0.001 | 0.001 | 0.001 | 0.044 | 0.312
## accuracy | 1 | 0.903 | 0.903 | 0.992 | 0.319 | 0.001 | 0.001 | 0.000 | 0.000 | 0.000 | 0.030 | 0.169
## Condition:accuracy | 1 | 0.007 | 0.007 | 0.008 | 0.929 | 0.000 | 0.000 | -0.001 | -0.001 | -0.001 | 0.003 | 0.051
## Residuals | 1093 | 994.631 | 0.910 | | | | | | | | |
# imm_dec
df %>%
select(DV_RE_wrong_1, DV_RE_accept_1_inv, DV_RE_permiss_1_inv) %>%
psych::alpha(., check.keys = TRUE)
##
## Reliability analysis
## Call: psych::alpha(x = ., check.keys = TRUE)
##
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd median_r
## 0.86 0.87 0.82 0.68 6.5 0.0072 3.8 1.6 0.68
##
## 95% confidence boundaries
## lower alpha upper
## Feldt 0.85 0.86 0.88
## Duhachek 0.85 0.86 0.88
##
## Reliability if an item is dropped:
## raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r
## DV_RE_wrong_1 0.87 0.87 0.77 0.77 6.8 0.0078 NA
## DV_RE_accept_1_inv 0.75 0.75 0.60 0.60 3.0 0.0150 NA
## DV_RE_permiss_1_inv 0.81 0.81 0.68 0.68 4.2 0.0117 NA
## med.r
## DV_RE_wrong_1 0.77
## DV_RE_accept_1_inv 0.60
## DV_RE_permiss_1_inv 0.68
##
## Item statistics
## n raw.r std.r r.cor r.drop mean sd
## DV_RE_wrong_1 1097 0.87 0.85 0.72 0.68 3.7 2.0
## DV_RE_accept_1_inv 1097 0.92 0.92 0.87 0.80 3.8 1.8
## DV_RE_permiss_1_inv 1097 0.88 0.89 0.82 0.75 3.9 1.7
##
## Non missing response frequency for each item
## 1 2 3 4 5 6 7 miss
## DV_RE_wrong_1 0.16 0.20 0.15 0.13 0.14 0.09 0.12 0
## DV_RE_accept_1_inv 0.09 0.17 0.22 0.16 0.12 0.10 0.12 0
## DV_RE_permiss_1_inv 0.06 0.15 0.22 0.22 0.14 0.11 0.10 0
m6 = lm(imm_dec ~ Condition * accuracy, df)
car::Anova(m6)
## Anova Table (Type II tests)
##
## Response: imm_dec
## Sum Sq Df F value Pr(>F)
## Condition 7.69 1 2.9387 0.08676 .
## accuracy 22.22 1 8.4868 0.00365 **
## Condition:accuracy 2.21 1 0.8449 0.35820
## Residuals 2861.11 1093
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
m6_1 = lm(imm_dec ~ Condition + accuracy, df)
car::Anova(m6_1)
## Anova Table (Type II tests)
##
## Response: imm_dec
## Sum Sq Df F value Pr(>F)
## Condition 7.69 1 2.9391 0.086742 .
## accuracy 22.22 1 8.4880 0.003648 **
## Residuals 2863.32 1094
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(m6_1)
##
## Call:
## lm(formula = imm_dec ~ Condition + accuracy, data = df)
##
## Residuals:
## Min 1Q Median 3Q Max
## -3.085 -1.212 -0.116 1.054 3.478
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 5.757482 0.697832 8.251 4.49e-16 ***
## ConditionUnexplainable 0.167545 0.097729 1.714 0.08674 .
## accuracy -0.023287 0.007993 -2.913 0.00365 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.618 on 1094 degrees of freedom
## Multiple R-squared: 0.0101, Adjusted R-squared: 0.008289
## F-statistic: 5.58 on 2 and 1094 DF, p-value: 0.00388
jtools::summ(m6_1, digits = 3, confint = TRUE)
## MODEL INFO:
## Observations: 1097
## Dependent Variable: imm_dec
## Type: OLS linear regression
##
## MODEL FIT:
## F(2,1094) = 5.580, p = 0.004
## R² = 0.010
## Adj. R² = 0.008
##
## Standard errors: OLS
## ------------------------------------------------------------------------
## Est. 2.5% 97.5% t val. p
## ---------------------------- -------- -------- -------- -------- -------
## (Intercept) 5.757 4.388 7.127 8.251 0.000
## ConditionUnexplainable 0.168 -0.024 0.359 1.714 0.087
## accuracy -0.023 -0.039 -0.008 -2.913 0.004
## ------------------------------------------------------------------------
sjstats::anova_stats(m6_1)
## term | df | sumsq | meansq | statistic | p.value | etasq | partial.etasq | omegasq | partial.omegasq | epsilonsq | cohens.f | power
## ---------------------------------------------------------------------------------------------------------------------------------------------
## Condition | 1 | 6.994 | 6.994 | 2.672 | 0.102 | 0.002 | 0.002 | 0.002 | 0.002 | 0.002 | 0.049 | 0.373
## accuracy | 1 | 22.216 | 22.216 | 8.488 | 0.004 | 0.008 | 0.008 | 0.007 | 0.007 | 0.007 | 0.088 | 0.830
## Residuals | 1094 | 2863.324 | 2.617 | | | | | | | | |
ggplot(df, aes(x = imm_dec, y = accuracy)) +
geom_jitter() + geom_smooth(method = 'lm')

2.3 Individual Indexes Analyses
Afterward, we test the effects of Condition and of Accuracy on each
one of the seven morality items composing the 3 composite measures taken
separately. Here we can notice an interesting thing, namely that the two
factors of Explainability and Accuracy do not show any main effect nor
interaction on any of the 3 scales assessing the robot’s agent
immorality (i.e., blame, punish, praise), while there is a main effect
of Accuracy on all the 3 scales assessing the decision’s immorality
(i.e., wrongness, acceptability, permissibility), with no main effect of
Explainability nor interaction. Ultimately, both the Explainability and
the interaction have a significant effect over the ‘harm’ scale, which
has a more blurred distinction between robot’s vs. decision’s
assessment.
m7 = lm(DV_RE_wrong_1 ~ Condition * accuracy, df)
car::Anova(m7)
## Anova Table (Type II tests)
##
## Response: DV_RE_wrong_1
## Sum Sq Df F value Pr(>F)
## Condition 7.0 1 1.8094 0.17885
## accuracy 17.4 1 4.5149 0.03382 *
## Condition:accuracy 0.2 1 0.0643 0.79994
## Residuals 4208.5 1093
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
m7_1 = lm(DV_RE_wrong_1 ~ Condition + accuracy, df)
car::Anova(m7_1)
## Anova Table (Type II tests)
##
## Response: DV_RE_wrong_1
## Sum Sq Df F value Pr(>F)
## Condition 7.0 1 1.8110 0.17867
## accuracy 17.4 1 4.5188 0.03375 *
## Residuals 4208.8 1094
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(m7_1)
##
## Call:
## lm(formula = DV_RE_wrong_1 ~ Condition + accuracy, data = df)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.956 -1.653 -0.426 1.430 3.595
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 5.383012 0.846046 6.363 2.91e-10 ***
## ConditionUnexplainable 0.159450 0.118486 1.346 0.1787
## accuracy -0.020600 0.009691 -2.126 0.0337 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.961 on 1094 degrees of freedom
## Multiple R-squared: 0.005614, Adjusted R-squared: 0.003797
## F-statistic: 3.088 on 2 and 1094 DF, p-value: 0.04597
jtools::summ(m7_1, digits = 3, confint = TRUE)
## MODEL INFO:
## Observations: 1097
## Dependent Variable: DV_RE_wrong_1
## Type: OLS linear regression
##
## MODEL FIT:
## F(2,1094) = 3.088, p = 0.046
## R² = 0.006
## Adj. R² = 0.004
##
## Standard errors: OLS
## ------------------------------------------------------------------------
## Est. 2.5% 97.5% t val. p
## ---------------------------- -------- -------- -------- -------- -------
## (Intercept) 5.383 3.723 7.043 6.363 0.000
## ConditionUnexplainable 0.159 -0.073 0.392 1.346 0.179
## accuracy -0.021 -0.040 -0.002 -2.126 0.034
## ------------------------------------------------------------------------
sjstats::anova_stats(m7_1)
## term | df | sumsq | meansq | statistic | p.value | etasq | partial.etasq | omegasq | partial.omegasq | epsilonsq | cohens.f | power
## ---------------------------------------------------------------------------------------------------------------------------------------------
## Condition | 1 | 6.379 | 6.379 | 1.658 | 0.198 | 0.002 | 0.002 | 0.001 | 0.001 | 0.001 | 0.039 | 0.251
## accuracy | 1 | 17.384 | 17.384 | 4.519 | 0.034 | 0.004 | 0.004 | 0.003 | 0.003 | 0.003 | 0.064 | 0.566
## Residuals | 1094 | 4208.780 | 3.847 | | | | | | | | |
m8 = lm(DV_RE_blame_1 ~ Condition * accuracy, df)
car::Anova(m8)
## Anova Table (Type II tests)
##
## Response: DV_RE_blame_1
## Sum Sq Df F value Pr(>F)
## Condition 7.6 1 2.5830 0.1083
## accuracy 5.5 1 1.8717 0.1716
## Condition:accuracy 1.1 1 0.3700 0.5432
## Residuals 3213.5 1093
sjstats::anova_stats(m8)
## term | df | sumsq | meansq | statistic | p.value | etasq | partial.etasq | omegasq | partial.omegasq | epsilonsq | cohens.f | power
## ------------------------------------------------------------------------------------------------------------------------------------------------------
## Condition | 1 | 7.248 | 7.248 | 2.465 | 0.117 | 0.002 | 0.002 | 0.001 | 0.001 | 0.001 | 0.047 | 0.349
## accuracy | 1 | 5.503 | 5.503 | 1.872 | 0.172 | 0.002 | 0.002 | 0.001 | 0.001 | 0.001 | 0.041 | 0.277
## Condition:accuracy | 1 | 1.088 | 1.088 | 0.370 | 0.543 | 0.000 | 0.000 | -0.001 | -0.001 | -0.001 | 0.018 | 0.093
## Residuals | 1093 | 3213.487 | 2.940 | | | | | | | | |
m9 = lm(DV_RE_punish_1 ~ Condition * accuracy, df)
car::Anova(m9)
## Anova Table (Type II tests)
##
## Response: DV_RE_punish_1
## Sum Sq Df F value Pr(>F)
## Condition 5.33 1 3.5049 0.06146 .
## accuracy 1.10 1 0.7256 0.39451
## Condition:accuracy 1.14 1 0.7501 0.38664
## Residuals 1662.41 1093
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
sjstats::anova_stats(m9)
## term | df | sumsq | meansq | statistic | p.value | etasq | partial.etasq | omegasq | partial.omegasq | epsilonsq | cohens.f | power
## ------------------------------------------------------------------------------------------------------------------------------------------------------
## Condition | 1 | 5.202 | 5.202 | 3.420 | 0.065 | 0.003 | 0.003 | 0.002 | 0.002 | 0.002 | 0.056 | 0.456
## accuracy | 1 | 1.104 | 1.104 | 0.726 | 0.395 | 0.001 | 0.001 | 0.000 | 0.000 | 0.000 | 0.026 | 0.136
## Condition:accuracy | 1 | 1.141 | 1.141 | 0.750 | 0.387 | 0.001 | 0.001 | 0.000 | 0.000 | 0.000 | 0.026 | 0.139
## Residuals | 1093 | 1662.411 | 1.521 | | | | | | | | |
m10 = lm(DV_RE_harm_1 ~ Condition * accuracy, df)
car::Anova(m10)
## Anova Table (Type II tests)
##
## Response: DV_RE_harm_1
## Sum Sq Df F value Pr(>F)
## Condition 12.6 1 4.1216 0.04258 *
## accuracy 6.2 1 2.0432 0.15317
## Condition:accuracy 16.0 1 5.2346 0.02233 *
## Residuals 3340.3 1093
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
emmeans(m10, pairwise ~ Condition)
## $emmeans
## Condition emmean SE df lower.CL upper.CL
## Explainable 4.43 0.0748 1093 4.29 4.58
## Unexplainable 4.65 0.0745 1093 4.50 4.79
##
## Confidence level used: 0.95
##
## $contrasts
## contrast estimate SE df t.ratio p.value
## Explainable - Unexplainable -0.215 0.106 1093 -2.031 0.0425
emtrends(m10, pairwise ~ Condition, var = 'accuracy')
## $emtrends
## Condition accuracy.trend SE df lower.CL upper.CL
## Explainable 0.0070 0.0121 1093 -0.0167 0.03071
## Unexplainable -0.0325 0.0123 1093 -0.0568 -0.00831
##
## Confidence level used: 0.95
##
## $contrasts
## contrast estimate SE df t.ratio p.value
## Explainable - Unexplainable 0.0395 0.0173 1093 2.288 0.0223
sjstats::anova_stats(m10)
## term | df | sumsq | meansq | statistic | p.value | etasq | partial.etasq | omegasq | partial.omegasq | epsilonsq | cohens.f | power
## ------------------------------------------------------------------------------------------------------------------------------------------------------
## Condition | 1 | 12.121 | 12.121 | 3.966 | 0.047 | 0.004 | 0.004 | 0.003 | 0.003 | 0.003 | 0.060 | 0.513
## accuracy | 1 | 6.244 | 6.244 | 2.043 | 0.153 | 0.002 | 0.002 | 0.001 | 0.001 | 0.001 | 0.043 | 0.298
## Condition:accuracy | 1 | 15.997 | 15.997 | 5.235 | 0.022 | 0.005 | 0.005 | 0.004 | 0.004 | 0.004 | 0.069 | 0.629
## Residuals | 1093 | 3340.317 | 3.056 | | | | | | | | |
m11 = lm(DV_RE_accept_1 ~ Condition * accuracy, df)
car::Anova(m11)
## Anova Table (Type II tests)
##
## Response: DV_RE_accept_1
## Sum Sq Df F value Pr(>F)
## Condition 10.8 1 3.2302 0.07257 .
## accuracy 18.0 1 5.4117 0.02018 *
## Condition:accuracy 1.5 1 0.4590 0.49822
## Residuals 3642.2 1093
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
m11_1 = lm(DV_RE_accept_1 ~ Condition + accuracy, df)
car::Anova(m11_1)
## Anova Table (Type II tests)
##
## Response: DV_RE_accept_1
## Sum Sq Df F value Pr(>F)
## Condition 10.8 1 3.2318 0.07250 .
## accuracy 18.0 1 5.4144 0.02015 *
## Residuals 3643.8 1094
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(m11_1)
##
## Call:
## lm(formula = DV_RE_accept_1 ~ Condition + accuracy, data = df)
##
## Residuals:
## Min 1Q Median 3Q Max
## -3.4743 -1.2761 0.1015 1.6096 3.1435
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.439202 0.787210 3.099 0.00199 **
## ConditionUnexplainable -0.198192 0.110246 -1.798 0.07250 .
## accuracy 0.020981 0.009017 2.327 0.02015 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.825 on 1094 degrees of freedom
## Multiple R-squared: 0.00764, Adjusted R-squared: 0.005825
## F-statistic: 4.211 on 2 and 1094 DF, p-value: 0.01507
jtools::summ(m11_1, digits = 3, confint = TRUE)
## MODEL INFO:
## Observations: 1097
## Dependent Variable: DV_RE_accept_1
## Type: OLS linear regression
##
## MODEL FIT:
## F(2,1094) = 4.211, p = 0.015
## R² = 0.008
## Adj. R² = 0.006
##
## Standard errors: OLS
## -----------------------------------------------------------------------
## Est. 2.5% 97.5% t val. p
## ---------------------------- -------- -------- ------- -------- -------
## (Intercept) 2.439 0.895 3.984 3.099 0.002
## ConditionUnexplainable -0.198 -0.415 0.018 -1.798 0.072
## accuracy 0.021 0.003 0.039 2.327 0.020
## -----------------------------------------------------------------------
sjstats::anova_stats(m11_1)
## term | df | sumsq | meansq | statistic | p.value | etasq | partial.etasq | omegasq | partial.omegasq | epsilonsq | cohens.f | power
## ---------------------------------------------------------------------------------------------------------------------------------------------
## Condition | 1 | 10.018 | 10.018 | 3.008 | 0.083 | 0.003 | 0.003 | 0.002 | 0.002 | 0.002 | 0.052 | 0.411
## accuracy | 1 | 18.033 | 18.033 | 5.414 | 0.020 | 0.005 | 0.005 | 0.004 | 0.004 | 0.004 | 0.070 | 0.643
## Residuals | 1094 | 3643.754 | 3.331 | | | | | | | | |
m12 = lm(DV_RE_permiss_1 ~ Condition * accuracy, df)
car::Anova(m12)
## Anova Table (Type II tests)
##
## Response: DV_RE_permiss_1
## Sum Sq Df F value Pr(>F)
## Condition 5.76 1 2.0294 0.154570
## accuracy 32.76 1 11.5417 0.000705 ***
## Condition:accuracy 7.44 1 2.6201 0.105804
## Residuals 3102.79 1093
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
m12_1 = lm(DV_RE_permiss_1 ~ Condition + accuracy, df)
car::Anova(m12_1)
## Anova Table (Type II tests)
##
## Response: DV_RE_permiss_1
## Sum Sq Df F value Pr(>F)
## Condition 5.76 1 2.0264 0.1548746
## accuracy 32.76 1 11.5246 0.0007115 ***
## Residuals 3110.23 1094
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(m12_1)
##
## Call:
## lm(formula = DV_RE_permiss_1 ~ Condition + accuracy, data = df)
##
## Residuals:
## Min 1Q Median 3Q Max
## -3.3862 -1.1600 0.0698 1.1264 3.2395
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.67136 0.72730 2.298 0.021747 *
## ConditionUnexplainable -0.14499 0.10186 -1.424 0.154875
## accuracy 0.02828 0.00833 3.395 0.000711 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.686 on 1094 degrees of freedom
## Multiple R-squared: 0.01201, Adjusted R-squared: 0.0102
## F-statistic: 6.647 on 2 and 1094 DF, p-value: 0.00135
jtools::summ(m12_1, digits = 3, confint = TRUE)
## MODEL INFO:
## Observations: 1097
## Dependent Variable: DV_RE_permiss_1
## Type: OLS linear regression
##
## MODEL FIT:
## F(2,1094) = 6.647, p = 0.001
## R² = 0.012
## Adj. R² = 0.010
##
## Standard errors: OLS
## -----------------------------------------------------------------------
## Est. 2.5% 97.5% t val. p
## ---------------------------- -------- -------- ------- -------- -------
## (Intercept) 1.671 0.244 3.098 2.298 0.022
## ConditionUnexplainable -0.145 -0.345 0.055 -1.424 0.155
## accuracy 0.028 0.012 0.045 3.395 0.001
## -----------------------------------------------------------------------
sjstats::anova_stats(m12_1)
## term | df | sumsq | meansq | statistic | p.value | etasq | partial.etasq | omegasq | partial.omegasq | epsilonsq | cohens.f | power
## ---------------------------------------------------------------------------------------------------------------------------------------------
## Condition | 1 | 5.033 | 5.033 | 1.770 | 0.184 | 0.002 | 0.002 | 0.001 | 0.001 | 0.001 | 0.040 | 0.265
## accuracy | 1 | 32.764 | 32.764 | 11.525 | 0.001 | 0.010 | 0.010 | 0.009 | 0.010 | 0.010 | 0.103 | 0.924
## Residuals | 1094 | 3110.232 | 2.843 | | | | | | | | |
m13 = lm(DV_RE_praise_1 ~ Condition * accuracy, df)
car::Anova(m13)
## Anova Table (Type II tests)
##
## Response: DV_RE_praise_1
## Sum Sq Df F value Pr(>F)
## Condition 0.61 1 0.2202 0.6390
## accuracy 0.30 1 0.1069 0.7438
## Condition:accuracy 5.60 1 2.0114 0.1564
## Residuals 3041.60 1093
sjstats::anova_stats(m13)
## term | df | sumsq | meansq | statistic | p.value | etasq | partial.etasq | omegasq | partial.omegasq | epsilonsq | cohens.f | power
## ------------------------------------------------------------------------------------------------------------------------------------------------------
## Condition | 1 | 0.590 | 0.590 | 0.212 | 0.645 | 0.000 | 0.000 | -0.001 | -0.001 | -0.001 | 0.014 | 0.075
## accuracy | 1 | 0.297 | 0.297 | 0.107 | 0.744 | 0.000 | 0.000 | -0.001 | -0.001 | -0.001 | 0.010 | 0.062
## Condition:accuracy | 1 | 5.597 | 5.597 | 2.011 | 0.156 | 0.002 | 0.002 | 0.001 | 0.001 | 0.001 | 0.043 | 0.294
## Residuals | 1093 | 3041.599 | 2.783 | | | | | | | | |
2.4 Responsibility Allocation
Here we test the effects of Explainability and Accuracy on each of
the responsibility allocation scales, namely to the robot, its
developers, the hospital, the state, or the international medical ethics
regulatory commission. Significance is reached only in the interaction
effect when allocating responsibility to the robot.
# allocation to robot
df <- df %>%
rename(alloc_rob = DV_RE_RespAlloc_3)
m14 = lm(alloc_rob ~ Condition * accuracy, df)
car::Anova(m14)
## Anova Table (Type II tests)
##
## Response: alloc_rob
## Sum Sq Df F value Pr(>F)
## Condition 632 1 1.5181 0.21818
## accuracy 269 1 0.6470 0.42137
## Condition:accuracy 2235 1 5.3705 0.02066 *
## Residuals 454873 1093
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
emtrends(m14, pairwise ~ Condition, var = 'accuracy')
## $emtrends
## Condition accuracy.trend SE df lower.CL upper.CL
## Explainable -0.148 0.141 1093 -0.424 0.129
## Unexplainable 0.320 0.144 1093 0.037 0.602
##
## Confidence level used: 0.95
##
## $contrasts
## contrast estimate SE df t.ratio p.value
## Explainable - Unexplainable -0.467 0.202 1093 -2.317 0.0207
sjstats::anova_stats(m14)
## term | df | sumsq | meansq | statistic | p.value | etasq | partial.etasq | omegasq | partial.omegasq | epsilonsq | cohens.f | power
## ---------------------------------------------------------------------------------------------------------------------------------------------------------
## Condition | 1 | 655.197 | 655.197 | 1.574 | 0.210 | 0.001 | 0.001 | 0.001 | 0.001 | 0.001 | 0.038 | 0.241
## accuracy | 1 | 269.257 | 269.257 | 0.647 | 0.421 | 0.001 | 0.001 | 0.000 | 0.000 | 0.000 | 0.024 | 0.127
## Condition:accuracy | 1 | 2235.029 | 2235.029 | 5.370 | 0.021 | 0.005 | 0.005 | 0.004 | 0.004 | 0.004 | 0.070 | 0.640
## Residuals | 1093 | 4.549e+05 | 416.169 | | | | | | | | |
# allocation to developers
df <- df %>%
rename(alloc_dev = DV_RE_RespAlloc_4)
m15 = lm(alloc_dev ~ Condition * accuracy, df)
car::Anova(m15)
## Anova Table (Type II tests)
##
## Response: alloc_dev
## Sum Sq Df F value Pr(>F)
## Condition 5 1 0.0146 0.9040
## accuracy 24 1 0.0758 0.7831
## Condition:accuracy 652 1 2.0950 0.1481
## Residuals 340235 1093
sjstats::anova_stats(m15)
## term | df | sumsq | meansq | statistic | p.value | etasq | partial.etasq | omegasq | partial.omegasq | epsilonsq | cohens.f | power
## --------------------------------------------------------------------------------------------------------------------------------------------------------
## Condition | 1 | 5.124 | 5.124 | 0.016 | 0.898 | 0.000 | 0.000 | -0.001 | -0.001 | -0.001 | 0.004 | 0.052
## accuracy | 1 | 23.600 | 23.600 | 0.076 | 0.783 | 0.000 | 0.000 | -0.001 | -0.001 | -0.001 | 0.008 | 0.059
## Condition:accuracy | 1 | 652.132 | 652.132 | 2.095 | 0.148 | 0.002 | 0.002 | 0.001 | 0.001 | 0.001 | 0.044 | 0.304
## Residuals | 1093 | 3.402e+05 | 311.285 | | | | | | | | |
#allocation to hospital
df <- df %>%
rename(alloc_hosp = DV_RE_RespAlloc_5)
m16 = lm(alloc_hosp ~ Condition * accuracy, df)
car::Anova(m16)
## Anova Table (Type II tests)
##
## Response: alloc_hosp
## Sum Sq Df F value Pr(>F)
## Condition 64 1 0.1926 0.6608
## accuracy 50 1 0.1488 0.6998
## Condition:accuracy 7 1 0.0221 0.8819
## Residuals 364293 1093
sjstats::anova_stats(m16)
## term | df | sumsq | meansq | statistic | p.value | etasq | partial.etasq | omegasq | partial.omegasq | epsilonsq | cohens.f | power
## --------------------------------------------------------------------------------------------------------------------------------------------------------
## Condition | 1 | 67.394 | 67.394 | 0.202 | 0.653 | 0 | 0 | -0.001 | -0.001 | -0.001 | 0.014 | 0.073
## accuracy | 1 | 49.582 | 49.582 | 0.149 | 0.700 | 0 | 0 | -0.001 | -0.001 | -0.001 | 0.012 | 0.067
## Condition:accuracy | 1 | 7.355 | 7.355 | 0.022 | 0.882 | 0 | 0 | -0.001 | -0.001 | -0.001 | 0.004 | 0.053
## Residuals | 1093 | 3.643e+05 | 333.297 | | | | | | | | |
# allocation to state
df <- df %>%
rename(alloc_state = DV_RE_RespAlloc_6)
m17 = lm(alloc_state ~ Condition * accuracy, df)
car::Anova(m17)
## Anova Table (Type II tests)
##
## Response: alloc_state
## Sum Sq Df F value Pr(>F)
## Condition 11 1 0.0518 0.8200
## accuracy 52 1 0.2390 0.6250
## Condition:accuracy 488 1 2.2242 0.1362
## Residuals 239953 1093
sjstats::anova_stats(m17)
## term | df | sumsq | meansq | statistic | p.value | etasq | partial.etasq | omegasq | partial.omegasq | epsilonsq | cohens.f | power
## --------------------------------------------------------------------------------------------------------------------------------------------------------
## Condition | 1 | 10.073 | 10.073 | 0.046 | 0.830 | 0.000 | 0.000 | -0.001 | -0.001 | -0.001 | 0.006 | 0.055
## accuracy | 1 | 52.471 | 52.471 | 0.239 | 0.625 | 0.000 | 0.000 | -0.001 | -0.001 | -0.001 | 0.015 | 0.078
## Condition:accuracy | 1 | 488.294 | 488.294 | 2.224 | 0.136 | 0.002 | 0.002 | 0.001 | 0.001 | 0.001 | 0.045 | 0.320
## Residuals | 1093 | 2.400e+05 | 219.536 | | | | | | | | |
# allocation to ethical committee
df <- df %>%
rename(alloc_ethcom = DV_RE_RespAlloc_7)
m18 = lm(alloc_ethcom ~ Condition * accuracy, df)
car::Anova(m18)
## Anova Table (Type II tests)
##
## Response: alloc_ethcom
## Sum Sq Df F value Pr(>F)
## Condition 337 1 1.0986 0.2948
## accuracy 7 1 0.0243 0.8760
## Condition:accuracy 9 1 0.0307 0.8609
## Residuals 335582 1093
sjstats::anova_stats(m18)
## term | df | sumsq | meansq | statistic | p.value | etasq | partial.etasq | omegasq | partial.omegasq | epsilonsq | cohens.f | power
## --------------------------------------------------------------------------------------------------------------------------------------------------------
## Condition | 1 | 334.805 | 334.805 | 1.090 | 0.297 | 0.001 | 0.001 | 0.000 | 0.000 | 0.000 | 0.032 | 0.181
## accuracy | 1 | 7.475 | 7.475 | 0.024 | 0.876 | 0.000 | 0.000 | -0.001 | -0.001 | -0.001 | 0.005 | 0.053
## Condition:accuracy | 1 | 9.426 | 9.426 | 0.031 | 0.861 | 0.000 | 0.000 | -0.001 | -0.001 | -0.001 | 0.005 | 0.054
## Residuals | 1093 | 3.356e+05 | 307.029 | | | | | | | | |
# Visualise individual means
df %>%
select(contains('alloc')) %>%
gather(key = 'target', value = 'alloc') %>%
group_by(target) %>%
summarise(m = mean(alloc), sd = sd(alloc))
## # A tibble: 5 × 3
## target m sd
## <chr> <dbl> <dbl>
## 1 alloc_dev 22.8 17.6
## 2 alloc_ethcom 23.6 17.5
## 3 alloc_hosp 24.0 18.2
## 4 alloc_rob 16.2 20.4
## 5 alloc_state 13.4 14.8
# Test differences in the allocation of responsibility to different entities
data_vec <- c(df$alloc_dev, df$alloc_ethcom, df$alloc_hosp, df$alloc_rob, df$alloc_state)
group <- rep(c("alloc_dev", "alloc_ethcom", "alloc_hosp", "alloc_rob", "alloc_state"), each = nrow(df))
tukey_result <- TukeyHSD(aov(data_vec ~ group))
tukey_result
## Tukey multiple comparisons of means
## 95% family-wise confidence level
##
## Fit: aov(formula = data_vec ~ group)
##
## $group
## diff lwr upr p adj
## alloc_ethcom-alloc_dev 0.8122151 -1.2637713 2.8882016 0.8232046
## alloc_hosp-alloc_dev 1.1859617 -0.8900247 3.2619481 0.5240768
## alloc_rob-alloc_dev -6.5505925 -8.6265790 -4.4746061 0.0000000
## alloc_state-alloc_dev -9.4175023 -11.4934887 -7.3415158 0.0000000
## alloc_hosp-alloc_ethcom 0.3737466 -1.7022399 2.4497330 0.9881953
## alloc_rob-alloc_ethcom -7.3628077 -9.4387941 -5.2868212 0.0000000
## alloc_state-alloc_ethcom -10.2297174 -12.3057038 -8.1537310 0.0000000
## alloc_rob-alloc_hosp -7.7365542 -9.8125407 -5.6605678 0.0000000
## alloc_state-alloc_hosp -10.6034640 -12.6794504 -8.5274776 0.0000000
## alloc_state-alloc_rob -2.8669098 -4.9428962 -0.7909233 0.0015592
# Here we see that there is poor resp allocation to the robot, so it can explain the poor results on the decomposed indexes.
m4_mod = lm(immoral ~ (Condition + accuracy) * alloc_rob, df)
car::Anova(m4_mod) # no moderation, but main effect, of response allocation on immorality
## Anova Table (Type II tests)
##
## Response: immoral
## Sum Sq Df F value Pr(>F)
## Condition 6.55 1 5.5208 0.0189692 *
## accuracy 7.69 1 6.4872 0.0110015 *
## alloc_rob 12.98 1 10.9469 0.0009682 ***
## Condition:alloc_rob 1.82 1 1.5316 0.2161411
## accuracy:alloc_rob 3.36 1 2.8366 0.0924279 .
## Residuals 1293.42 1091
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
emmeans(m4_mod, pairwise ~ Condition)
## $emmeans
## Condition emmean SE df lower.CL upper.CL
## Explainable 3.60 0.0467 1091 3.51 3.69
## Unexplainable 3.75 0.0465 1091 3.66 3.84
##
## Confidence level used: 0.95
##
## $contrasts
## contrast estimate SE df t.ratio p.value
## Explainable - Unexplainable -0.156 0.066 1091 -2.359 0.0185
sjstats::anova_stats(m4_mod)
## term | df | sumsq | meansq | statistic | p.value | etasq | partial.etasq | omegasq | partial.omegasq | epsilonsq | cohens.f | power
## -------------------------------------------------------------------------------------------------------------------------------------------------------
## Condition | 1 | 4.980 | 4.980 | 4.200 | 0.041 | 0.004 | 0.004 | 0.003 | 0.003 | 0.003 | 0.062 | 0.536
## accuracy | 1 | 7.752 | 7.752 | 6.539 | 0.011 | 0.006 | 0.006 | 0.005 | 0.005 | 0.005 | 0.077 | 0.725
## alloc_rob | 1 | 12.978 | 12.978 | 10.947 | 0.001 | 0.010 | 0.010 | 0.009 | 0.009 | 0.009 | 0.100 | 0.911
## Condition:alloc_rob | 1 | 1.445 | 1.445 | 1.219 | 0.270 | 0.001 | 0.001 | 0.000 | 0.000 | 0.000 | 0.033 | 0.197
## accuracy:alloc_rob | 1 | 3.363 | 3.363 | 2.837 | 0.092 | 0.003 | 0.003 | 0.002 | 0.002 | 0.002 | 0.051 | 0.392
## Residuals | 1091 | 1293.422 | 1.186 | | | | | | | | |
m_alloc_rob = lm(immoral ~ alloc_rob, df)
car::Anova(m_alloc_rob)
## Anova Table (Type II tests)
##
## Response: immoral
## Sum Sq Df F value Pr(>F)
## alloc_rob 12.83 1 10.716 0.001096 **
## Residuals 1311.11 1095
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(m_alloc_rob)
##
## Call:
## lm(formula = immoral ~ alloc_rob, data = df)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.7614 -0.7614 -0.0472 0.7095 3.3973
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 3.761449 0.042205 89.124 <2e-16 ***
## alloc_rob -0.005293 0.001617 -3.273 0.0011 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.094 on 1095 degrees of freedom
## Multiple R-squared: 0.009691, Adjusted R-squared: 0.008787
## F-statistic: 10.72 on 1 and 1095 DF, p-value: 0.001096
jtools::summ(m_alloc_rob, digits = 3, confint = TRUE)
## MODEL INFO:
## Observations: 1097
## Dependent Variable: immoral
## Type: OLS linear regression
##
## MODEL FIT:
## F(1,1095) = 10.716, p = 0.001
## R² = 0.010
## Adj. R² = 0.009
##
## Standard errors: OLS
## -------------------------------------------------------------
## Est. 2.5% 97.5% t val. p
## ----------------- -------- -------- -------- -------- -------
## (Intercept) 3.761 3.679 3.844 89.124 0.000
## alloc_rob -0.005 -0.008 -0.002 -3.273 0.001
## -------------------------------------------------------------
sjstats::anova_stats(m_alloc_rob)
## term | df | sumsq | meansq | statistic | p.value | etasq | partial.etasq | omegasq | partial.omegasq | epsilonsq | cohens.f | power
## ---------------------------------------------------------------------------------------------------------------------------------------------
## alloc_rob | 1 | 12.831 | 12.831 | 10.716 | 0.001 | 0.010 | 0.010 | 0.009 | 0.009 | 0.009 | 0.099 | 0.906
## Residuals | 1095 | 1311.109 | 1.197 | | | | | | | | |
interactions::interact_plot(m4_mod, modx = 'Condition', pred = 'alloc_rob',
interval = TRUE) #Play with the graph, writing accuracy instead of condition and then inverting the two terms

interactions::interact_plot(m4_mod, modx = 'accuracy', pred = 'alloc_rob',
interval = TRUE)

interactions::interact_plot(m4_mod, modx = 'alloc_rob', pred = 'accuracy',
interval = TRUE)

# In sum, people usually have a positive opinion of the physician and agree with the decision. Both Expl and Acc matter, so the more accurate the decision is, the more people agree with it and the more favourable they perceive the agent, and same thing with Expl.
2.5 Demographic Analyses
Here we check whether the gender of the robot’s name (i.e., male,
female, neutral) and multiple demographic variables acted as a moderator
of the effect on a participants’ level of agreement with the robot
decision, on their overall opinion of the robot, or on any of the three
composite moral indexes. We observe the following results: - The AI
name’s gender does not have a main effect nor a moderation effect; - Age
of participants moderates the effect of Explainability on the overall
opinion of the robot and on the perceived immorality of the decision; -
Gender of participant has a main effect over general opinion of the
robot and overall judgment of immorality; - Education (STEM
vs. Humanities) has a main effect on overall opinion of the robot
physician and general judgment of immorality; - Domain of Employment has
a main effect over agreement with the decision, overall opinion of the
robot physician, general judgment of immorality, perceived immorality of
the decision; - Political Orientation has a main effect on the overal
opinion of the physician and perceived immorality of the decision; -
Religious Affiliation has a main effect on the level of agreement with
the decision and on the general opinion of the robot physician; -
Ethnicity has a main effect on the overall opinion of the robot
physician; - Presence of Serious Long-Term Health Problems moderates the
effect of Explainability over the general opinion of the robot
physician.
m14_dec = lm(decision ~ (Condition + accuracy) * AI, df)
car::Anova(m14_dec)
## Anova Table (Type II tests)
##
## Response: decision
## Sum Sq Df F value Pr(>F)
## Condition 11.96 1 6.9391 0.008553 **
## accuracy 12.65 1 7.3413 0.006845 **
## AI 2.23 2 0.6475 0.523553
## Condition:AI 0.22 2 0.0652 0.936900
## accuracy:AI 3.39 2 0.9840 0.374154
## Residuals 1875.24 1088
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
m14_phys = lm(physician ~ (Condition + accuracy) * AI, df)
car::Anova(m14_phys)
## Anova Table (Type II tests)
##
## Response: physician
## Sum Sq Df F value Pr(>F)
## Condition 22.15 1 13.3584 0.0002696 ***
## accuracy 13.35 1 8.0534 0.0046263 **
## AI 0.52 2 0.1576 0.8542425
## Condition:AI 0.44 2 0.1325 0.8758761
## accuracy:AI 2.07 2 0.6256 0.5351382
## Residuals 1804.03 1088
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
m14_imm = lm(immoral ~ (Condition + accuracy) * AI, df)
car::Anova(m14_imm)
## Anova Table (Type II tests)
##
## Response: immoral
## Sum Sq Df F value Pr(>F)
## Condition 5.50 1 4.5723 0.03272 *
## accuracy 7.85 1 6.5295 0.01075 *
## AI 0.20 2 0.0843 0.91916
## Condition:AI 1.88 2 0.7839 0.45687
## accuracy:AI 1.53 2 0.6367 0.52926
## Residuals 1307.73 1088
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
m14_immdec = lm(imm_dec ~ (Condition + accuracy) * AI, df)
car::Anova(m14_immdec)
## Anova Table (Type II tests)
##
## Response: imm_dec
## Sum Sq Df F value Pr(>F)
## Condition 7.96 1 3.0338 0.081831 .
## accuracy 22.56 1 8.6017 0.003429 **
## AI 0.51 2 0.0965 0.908041
## Condition:AI 7.54 2 1.4372 0.238043
## accuracy:AI 1.86 2 0.3551 0.701169
## Residuals 2853.80 1088
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
m15_dec = lm(decision ~ (Condition + accuracy) * age, df)
car::Anova(m15_dec)
## Anova Table (Type II tests)
##
## Response: decision
## Sum Sq Df F value Pr(>F)
## Condition 11.45 1 6.6501 0.010045 *
## accuracy 13.05 1 7.5814 0.005995 **
## age 0.19 1 0.1099 0.740267
## Condition:age 2.40 1 1.3948 0.237852
## accuracy:age 0.59 1 0.3436 0.557854
## Residuals 1877.73 1091
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
m15_phys = lm(physician ~ (Condition + accuracy) * age, df)
car::Anova(m15_phys)
## Anova Table (Type II tests)
##
## Response: physician
## Sum Sq Df F value Pr(>F)
## Condition 21.09 1 12.8385 0.0003546 ***
## accuracy 14.31 1 8.7103 0.0032318 **
## age 2.08 1 1.2673 0.2605245
## Condition:age 11.39 1 6.9357 0.0085687 **
## accuracy:age 1.89 1 1.1534 0.2830736
## Residuals 1792.02 1091
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
emtrends(m15_phys, pairwise ~ Condition, var = 'age')
## $emtrends
## Condition age.trend SE df lower.CL upper.CL
## Explainable -0.00402 0.00395 1091 -0.01177 0.00374
## Unexplainable 0.01092 0.00406 1091 0.00295 0.01889
##
## Confidence level used: 0.95
##
## $contrasts
## contrast estimate SE df t.ratio p.value
## Explainable - Unexplainable -0.0149 0.00567 1091 -2.634 0.0086
m15_imm = lm(immoral ~ (Condition + accuracy) * age, df)
car::Anova(m15_imm)
## Anova Table (Type II tests)
##
## Response: immoral
## Sum Sq Df F value Pr(>F)
## Condition 5.02 1 4.1967 0.040741 *
## accuracy 8.20 1 6.8530 0.008972 **
## age 1.67 1 1.3980 0.237315
## Condition:age 3.04 1 2.5425 0.111112
## accuracy:age 0.37 1 0.3096 0.578033
## Residuals 1306.21 1091
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
m15_immdec = lm(imm_dec ~ (Condition + accuracy) * age, df)
car::Anova(m15_immdec)
## Anova Table (Type II tests)
##
## Response: imm_dec
## Sum Sq Df F value Pr(>F)
## Condition 8.25 1 3.1592 0.075781 .
## accuracy 22.76 1 8.7175 0.003219 **
## age 1.45 1 0.5559 0.456073
## Condition:age 11.18 1 4.2807 0.038782 *
## accuracy:age 2.16 1 0.8275 0.363202
## Residuals 2848.96 1091
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
emtrends(m15_immdec, pairwise ~ Condition, var = 'age')
## $emtrends
## Condition age.trend SE df lower.CL upper.CL
## Explainable 0.00979 0.00498 1091 1.28e-05 0.01957
## Unexplainable -0.00500 0.00512 1091 -1.51e-02 0.00505
##
## Confidence level used: 0.95
##
## $contrasts
## contrast estimate SE df t.ratio p.value
## Explainable - Unexplainable 0.0148 0.00715 1091 2.069 0.0388
m16_dec = lm(decision ~ (Condition + accuracy) * gender, df)
car::Anova(m16_dec)
## Anova Table (Type II tests)
##
## Response: decision
## Sum Sq Df F value Pr(>F)
## Condition 11.12 1 6.4670 0.011127 *
## accuracy 12.97 1 7.5414 0.006129 **
## gender 7.09 3 1.3750 0.248880
## Condition:gender 4.26 2 1.2379 0.290408
## accuracy:gender 0.43 2 0.1240 0.883405
## Residuals 1867.73 1086
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
m16_phys = lm(physician ~ (Condition + accuracy) * gender, df)
car::Anova(m16_phys)
## Anova Table (Type II tests)
##
## Response: physician
## Sum Sq Df F value Pr(>F)
## Condition 20.12 1 12.2637 0.0004806 ***
## accuracy 13.75 1 8.3811 0.0038674 **
## gender 21.24 3 4.3140 0.0049229 **
## Condition:gender 0.20 2 0.0619 0.9399964
## accuracy:gender 1.26 2 0.3839 0.6812663
## Residuals 1781.91 1086
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
m16_imm = lm(immoral ~ (Condition + accuracy) * gender, df)
car::Anova(m16_imm)
## Anova Table (Type II tests)
##
## Response: immoral
## Sum Sq Df F value Pr(>F)
## Condition 4.65 1 3.9029 0.04846 *
## accuracy 8.22 1 6.9022 0.00873 **
## gender 12.67 3 3.5458 0.01416 *
## Condition:gender 1.42 2 0.5962 0.55109
## accuracy:gender 2.45 2 1.0278 0.35816
## Residuals 1293.35 1086
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
m16_immdec = lm(imm_dec ~ (Condition + accuracy) * gender, df)
car::Anova(m16_immdec)
## Anova Table (Type II tests)
##
## Response: imm_dec
## Sum Sq Df F value Pr(>F)
## Condition 6.47 1 2.4880 0.115009
## accuracy 23.33 1 8.9672 0.002811 **
## gender 19.33 3 2.4764 0.059988 .
## Condition:gender 1.27 2 0.2446 0.783083
## accuracy:gender 13.06 2 2.5104 0.081703 .
## Residuals 2825.31 1086
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
m17_dec = lm(decision ~ (Condition + accuracy) * `education 2`, df)
car::Anova(m17_dec)
## Anova Table (Type II tests)
##
## Response: decision
## Sum Sq Df F value Pr(>F)
## Condition 12.18 1 7.0995 0.007825 **
## accuracy 12.49 1 7.2753 0.007099 **
## `education 2` 8.38 2 2.4422 0.087446 .
## Condition:`education 2` 0.49 2 0.1421 0.867532
## accuracy:`education 2` 4.94 2 1.4398 0.237429
## Residuals 1867.27 1088
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
m17_phys = lm(physician ~ (Condition + accuracy) * `education 2`, df)
car::Anova(m17_phys)
## Anova Table (Type II tests)
##
## Response: physician
## Sum Sq Df F value Pr(>F)
## Condition 21.57 1 13.2163 0.0002905 ***
## accuracy 13.94 1 8.5408 0.0035445 **
## `education 2` 16.56 2 5.0740 0.0064065 **
## Condition:`education 2` 8.48 2 2.5963 0.0750091 .
## accuracy:`education 2` 6.23 2 1.9091 0.1487145
## Residuals 1775.96 1088
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
m17_imm = lm(immoral ~ (Condition + accuracy) * `education 2`, df)
car::Anova(m17_imm)
## Anova Table (Type II tests)
##
## Response: immoral
## Sum Sq Df F value Pr(>F)
## Condition 5.55 1 4.6387 0.03148 *
## accuracy 7.91 1 6.6135 0.01025 *
## `education 2` 7.75 2 3.2389 0.03958 *
## Condition:`education 2` 0.84 2 0.3526 0.70291
## accuracy:`education 2` 1.70 2 0.7128 0.49052
## Residuals 1300.99 1088
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
m17_immdec = lm(imm_dec ~ (Condition + accuracy) * `education 2`, df)
car::Anova(m17_immdec)
## Anova Table (Type II tests)
##
## Response: imm_dec
## Sum Sq Df F value Pr(>F)
## Condition 8.07 1 3.0918 0.078969 .
## accuracy 22.85 1 8.7568 0.003151 **
## `education 2` 14.73 2 2.8223 0.059904 .
## Condition:`education 2` 4.54 2 0.8700 0.419262
## accuracy:`education 2` 5.01 2 0.9593 0.383503
## Residuals 2839.37 1088
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
m18_dec = lm(decision ~ (Condition + accuracy) * `employment 2`, df)
car::Anova(m18_dec)
## Anova Table (Type II tests)
##
## Response: decision
## Sum Sq Df F value Pr(>F)
## Condition 13.08 1 7.6497 0.005775 **
## accuracy 12.03 1 7.0332 0.008119 **
## `employment 2` 22.56 6 2.1977 0.041011 *
## Condition:`employment 2` 10.69 6 1.0412 0.396806
## accuracy:`employment 2` 7.96 6 0.7753 0.589388
## Residuals 1840.50 1076
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
m18_phys = lm(physician ~ (Condition + accuracy) * `employment 2`, df)
car::Anova(m18_phys)
## Anova Table (Type II tests)
##
## Response: physician
## Sum Sq Df F value Pr(>F)
## Condition 23.28 1 14.2285 0.0001707 ***
## accuracy 12.63 1 7.7195 0.0055579 **
## `employment 2` 25.61 6 2.6094 0.0162436 *
## Condition:`employment 2` 12.63 6 1.2863 0.2605584
## accuracy:`employment 2` 9.02 6 0.9194 0.4799339
## Residuals 1760.26 1076
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
m18_imm = lm(immoral ~ (Condition + accuracy) * `employment 2`, df)
car::Anova(m18_imm)
## Anova Table (Type II tests)
##
## Response: immoral
## Sum Sq Df F value Pr(>F)
## Condition 6.54 1 5.5292 0.01888 *
## accuracy 7.16 1 6.0543 0.01403 *
## `employment 2` 22.33 6 3.1453 0.00462 **
## Condition:`employment 2` 10.17 6 1.4318 0.19910
## accuracy:`employment 2` 5.45 6 0.7677 0.59536
## Residuals 1273.26 1076
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
m18_immdec = lm(imm_dec ~ (Condition + accuracy) * `employment 2`, df)
car::Anova(m18_immdec)
## Anova Table (Type II tests)
##
## Response: imm_dec
## Sum Sq Df F value Pr(>F)
## Condition 9.98 1 3.8506 0.049986 *
## accuracy 21.02 1 8.1134 0.004478 **
## `employment 2` 40.12 6 2.5811 0.017334 *
## Condition:`employment 2` 18.29 6 1.1767 0.316204
## accuracy:`employment 2` 17.92 6 1.1530 0.329359
## Residuals 2787.89 1076
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
m19_dec = lm(decision ~ (Condition + accuracy) * politics_1, df)
car::Anova(m19_dec)
## Anova Table (Type II tests)
##
## Response: decision
## Sum Sq Df F value Pr(>F)
## Condition 11.24 1 6.5055 0.01089 *
## accuracy 10.81 1 6.2571 0.01252 *
## politics_1 8.57 6 0.8264 0.54948
## Condition:politics_1 6.72 6 0.6484 0.69146
## accuracy:politics_1 4.02 6 0.3878 0.88713
## Residuals 1859.53 1076
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
m19_phys = lm(physician ~ (Condition + accuracy) * politics_1, df)
car::Anova(m19_phys)
## Anova Table (Type II tests)
##
## Response: physician
## Sum Sq Df F value Pr(>F)
## Condition 19.03 1 11.9158 0.0005782 ***
## accuracy 10.99 1 6.8781 0.0088489 **
## politics_1 53.58 6 5.5915 1.004e-05 ***
## Condition:politics_1 14.71 6 1.5351 0.1632406
## accuracy:politics_1 15.00 6 1.5658 0.1537552
## Residuals 1718.53 1076
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
m19_imm = lm(immoral ~ (Condition + accuracy) * politics_1, df)
car::Anova(m19_imm)
## Anova Table (Type II tests)
##
## Response: immoral
## Sum Sq Df F value Pr(>F)
## Condition 4.67 1 3.8898 0.04884 *
## accuracy 6.40 1 5.3352 0.02109 *
## politics_1 14.06 6 1.9520 0.06975 .
## Condition:politics_1 1.00 6 0.1385 0.99117
## accuracy:politics_1 4.35 6 0.6034 0.72779
## Residuals 1291.50 1076
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
m19_immdec = lm(imm_dec ~ (Condition + accuracy) * politics_1, df)
car::Anova(m19_immdec)
## Anova Table (Type II tests)
##
## Response: imm_dec
## Sum Sq Df F value Pr(>F)
## Condition 6.75 1 2.5846 0.108200
## accuracy 18.64 1 7.1400 0.007652 **
## politics_1 33.58 6 2.1435 0.046176 *
## Condition:politics_1 3.93 6 0.2511 0.958952
## accuracy:politics_1 13.57 6 0.8661 0.519232
## Residuals 2809.63 1076
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
df <- df %>%
rename(rel_aff = `religious affil`)
m20_dec = lm(decision ~ (Condition + accuracy) * rel_aff, df)
car::Anova(m20_dec)
## Anova Table (Type II tests)
##
## Response: decision
## Sum Sq Df F value Pr(>F)
## Condition 10.96 1 6.4231 0.011405 *
## accuracy 13.99 1 8.1993 0.004272 **
## rel_aff 28.58 6 2.7918 0.010648 *
## Condition:rel_aff 10.74 5 1.2588 0.279537
## accuracy:rel_aff 3.79 6 0.3699 0.898299
## Residuals 1837.70 1077
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
m20_phys = lm(physician ~ (Condition + accuracy) * rel_aff, df)
car::Anova(m20_phys)
## Anova Table (Type II tests)
##
## Response: physician
## Sum Sq Df F value Pr(>F)
## Condition 21.88 1 13.2692 0.0002826 ***
## accuracy 11.43 1 6.9326 0.0085852 **
## rel_aff 23.85 6 2.4106 0.0255314 *
## Condition:rel_aff 3.22 5 0.3905 0.8555451
## accuracy:rel_aff 5.09 6 0.5145 0.7976765
## Residuals 1775.85 1077
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
m20_imm = lm(immoral ~ (Condition + accuracy) * rel_aff, df)
car::Anova(m20_imm)
## Anova Table (Type II tests)
##
## Response: immoral
## Sum Sq Df F value Pr(>F)
## Condition 5.42 1 4.5111 0.0339 *
## accuracy 7.86 1 6.5366 0.0107 *
## rel_aff 8.87 6 1.2297 0.2883
## Condition:rel_aff 6.48 5 1.0775 0.3711
## accuracy:rel_aff 1.58 6 0.2192 0.9707
## Residuals 1294.79 1077
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
m20_immdec = lm(imm_dec ~ (Condition + accuracy) * rel_aff, df)
car::Anova(m20_immdec)
## Anova Table (Type II tests)
##
## Response: imm_dec
## Sum Sq Df F value Pr(>F)
## Condition 8.48 1 3.2339 0.072407 .
## accuracy 22.59 1 8.6142 0.003406 **
## rel_aff 21.45 6 1.3636 0.226187
## Condition:rel_aff 12.83 5 0.9786 0.429633
## accuracy:rel_aff 5.27 6 0.3350 0.918626
## Residuals 2823.90 1077
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
m21_dec = lm(decision ~ (Condition + accuracy) * ethnicity, df)
car::Anova(m21_dec)
## Anova Table (Type II tests)
##
## Response: decision
## Sum Sq Df F value Pr(>F)
## Condition 11.05 1 6.4177 0.011440 *
## accuracy 12.46 1 7.2369 0.007253 **
## ethnicity 22.41 10 1.3018 0.224324
## Condition:ethnicity 4.67 3 0.9041 0.438514
## accuracy:ethnicity 0.12 4 0.0175 0.999403
## Residuals 1852.25 1076
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
m21_phys = lm(physician ~ (Condition + accuracy) * ethnicity, df)
car::Anova(m21_phys)
## Anova Table (Type II tests)
##
## Response: physician
## Sum Sq Df F value Pr(>F)
## Condition 26.00 1 15.9003 7.128e-05 ***
## accuracy 11.67 1 7.1371 0.007665 **
## ethnicity 40.43 10 2.4723 0.006302 **
## Condition:ethnicity 4.72 3 0.9620 0.409964
## accuracy:ethnicity 2.19 4 0.3350 0.854509
## Residuals 1759.58 1076
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
m21_imm = lm(immoral ~ (Condition + accuracy) * ethnicity, df)
car::Anova(m21_imm)
## Anova Table (Type II tests)
##
## Response: immoral
## Sum Sq Df F value Pr(>F)
## Condition 5.31 1 4.4349 0.03544 *
## accuracy 6.85 1 5.7214 0.01693 *
## ethnicity 16.24 10 1.3563 0.19560
## Condition:ethnicity 3.77 3 1.0500 0.36955
## accuracy:ethnicity 1.38 4 0.2887 0.88542
## Residuals 1288.49 1076
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
m21_immdec = lm(imm_dec ~ (Condition + accuracy) * ethnicity, df)
car::Anova(m21_immdec)
## Anova Table (Type II tests)
##
## Response: imm_dec
## Sum Sq Df F value Pr(>F)
## Condition 8.43 1 3.1992 0.073954 .
## accuracy 19.78 1 7.5040 0.006258 **
## ethnicity 21.70 10 0.8233 0.606221
## Condition:ethnicity 4.10 3 0.5183 0.669771
## accuracy:ethnicity 0.55 4 0.0519 0.994959
## Residuals 2836.71 1076
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
m22_dec = lm(decision ~ (Condition + accuracy) * health1, df)
car::Anova(m22_dec)
## Anova Table (Type II tests)
##
## Response: decision
## Sum Sq Df F value Pr(>F)
## Condition 12.53 1 7.2772 0.007091 **
## accuracy 12.09 1 7.0214 0.008171 **
## health1 5.91 2 1.7156 0.180349
## Condition:health1 0.11 2 0.0319 0.968559
## accuracy:health1 2.29 2 0.6646 0.514711
## Residuals 1872.74 1088
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
m22_phys = lm(physician ~ (Condition + accuracy) * health1, df)
car::Anova(m22_phys)
## Anova Table (Type II tests)
##
## Response: physician
## Sum Sq Df F value Pr(>F)
## Condition 22.22 1 13.5054 0.0002495 ***
## accuracy 12.62 1 7.6679 0.0057168 **
## health1 2.15 2 0.6522 0.5211216
## Condition:health1 14.23 2 4.3242 0.0134722 *
## accuracy:health1 0.49 2 0.1497 0.8609908
## Residuals 1790.22 1088
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
m22_imm = lm(immoral ~ (Condition + accuracy) * health1, df)
car::Anova(m22_imm)
## Anova Table (Type II tests)
##
## Response: immoral
## Sum Sq Df F value Pr(>F)
## Condition 5.80 1 4.8369 0.02807 *
## accuracy 7.48 1 6.2420 0.01262 *
## health1 2.58 2 1.0753 0.34157
## Condition:health1 1.48 2 0.6155 0.54054
## accuracy:health1 3.24 2 1.3507 0.25949
## Residuals 1303.99 1088
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
m22_immdec = lm(imm_dec ~ (Condition + accuracy) * health1, df)
car::Anova(m22_immdec)
## Anova Table (Type II tests)
##
## Response: imm_dec
## Sum Sq Df F value Pr(>F)
## Condition 8.34 1 3.1817 0.074745 .
## accuracy 21.73 1 8.2945 0.004054 **
## health1 3.24 2 0.6186 0.538899
## Condition:health1 5.65 2 1.0787 0.340412
## accuracy:health1 4.25 2 0.8102 0.445036
## Residuals 2850.34 1088
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1