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