R Markdown

This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see http://rmarkdown.rstudio.com.

When you click the Knit button a document will be generated that includes both content as well as the output of any embedded R code chunks within the document. You can embed an R code chunk like this:

Install and Load Packages

library(ggplot2)

PRE TASK ANALYSIS

psychopy_csv <- read.csv("5d51ffd641a6aa0019ca73df_BRAIN_E_final_2022-06-20_13h35.39.304_copy.csv")

pre_task_df <- psychopy_csv[c(2:42), c(26,35:36,42:45)]

# pre_task_df

# head(pre_task_df)

# change column header in df
names(pre_task_df)[2] <- "key_resp"
names(pre_task_df)[3] <- "rt"

# head(pre_task_df)

# calculate average pre task rt
pre_rt_summary <- summary(pre_task_df$rt)
# pre_rt_summary
mean_rt_pre <- pre_rt_summary[4]
mean_rt_pre
##     Mean 
## 1.072775
# calculate accuracy

count_correct = 0;

for (row in 1:nrow(pre_task_df)){

  curr_key = pre_task_df$key_resp[row]
  
  curr_emotion = pre_task_df$emotion[row]
  
  if ( (curr_key=="s" && curr_emotion=="happy") || (curr_key=="k" &&        curr_emotion=="angry") ){
    count_correct = count_correct+1
  } 
  
}

# accuracy out of 40 

count_correct
## [1] 38
perc_accuracy <- (count_correct/40)*100

paste("Pre-Task Accuracy: ", perc_accuracy, "%", sep="")
## [1] "Pre-Task Accuracy: 95%"

Note that the echo = FALSE parameter was added to the code chunk to prevent printing of the R code that generated the plot.

main_task_df <- psychopy_csv[ c(43:303), c(26,42:44,47,48) ]

# remove rows with NA
main_task_df <- na.omit(main_task_df)


# head(main_task_df)

names(main_task_df)[5] <- "key_resp"
names(main_task_df)[6] <- "rt"

head(main_task_df)
##                 participant           image_file race gender key_resp    rt
## 44 5d51ffd641a6aa0019ca73df CFD-BF-024-002-N.jpg    B      F        k 0.969
## 46 5d51ffd641a6aa0019ca73df CFD-WM-024-015-N.jpg    W      M        s 0.999
## 48 5d51ffd641a6aa0019ca73df CFD-BM-024-001-N.jpg    B      M        k 1.331
## 50 5d51ffd641a6aa0019ca73df CFD-BF-023-010-N.jpg    B      F        k 1.139
## 52 5d51ffd641a6aa0019ca73df CFD-BF-025-002-N.jpg    B      F        k 3.103
## 54 5d51ffd641a6aa0019ca73df CFD-WF-006-002-N.jpg    W      F        k 1.734
summary_main_rt <- summary(main_task_df$rt)

summary_main_rt
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.6070  0.9045  1.1100  1.5535  1.6600 16.2780
main_mean_rt <-round(summary_main_rt[4], digits=3)

paste("Mean reaction time, main task: ", main_mean_rt , " sec", sep="")
## [1] "Mean reaction time, main task: 1.554 sec"
bfp = 0
bfn = 0

bmp = 0
bmn = 0

wfp = 0 
wfn = 0

wmp = 0
wmn = 0 

afp = 0 
afn = 0 

amp = 0 
amn = 0 

nrow(main_task_df)
## [1] 130
head(main_task_df)
##                 participant           image_file race gender key_resp    rt
## 44 5d51ffd641a6aa0019ca73df CFD-BF-024-002-N.jpg    B      F        k 0.969
## 46 5d51ffd641a6aa0019ca73df CFD-WM-024-015-N.jpg    W      M        s 0.999
## 48 5d51ffd641a6aa0019ca73df CFD-BM-024-001-N.jpg    B      M        k 1.331
## 50 5d51ffd641a6aa0019ca73df CFD-BF-023-010-N.jpg    B      F        k 1.139
## 52 5d51ffd641a6aa0019ca73df CFD-BF-025-002-N.jpg    B      F        k 3.103
## 54 5d51ffd641a6aa0019ca73df CFD-WF-006-002-N.jpg    W      F        k 1.734
for (row in 1:nrow(main_task_df)){
  
  key = main_task_df$key_resp[row]
  race = main_task_df$race[row]
  gender = main_task_df$gender[row]

  
  if (key=="s"){
    
    #selected positive
    
    if (race=="B"){
      if (gender=="F"){
        bfp = bfp+1
        
      } else if (gender=="M"){
        bmp = bmp+1
      }
    } else if (race=="W"){
      if (gender=="F"){
        wfp = wfp+1
      } else if (gender=="M"){
        wmp = wmp+1
      }
      
    } else if (race=="A"){
      if (gender=="F"){
        afp = afp+1
      } else if (gender=="M"){
        amp = amp+1
      }
    }
    
  }else if (key=="k"){
    #selected negative
    
    if (race=="B"){
      if (gender=="F"){
        bfn = bfn+1
      } else if (gender=="M"){
        bmn = bmn+1
      }
    } else if (race=="W"){
      if (gender=="F"){
        wfn = wfn+1
      } else if (gender=="M"){
        wmn = wmn+1
      }
      
    } else if (race=="A"){
      if (gender=="F"){
        afn = afn+1
      } else if (gender=="M"){
        amn = amn+1
      }
    }
  }
  
  
  
} #end for loop


counts <- c(afp,afn, amp, amn, wfp, wfn, wmp, wmn, bfp, bfn, bmp, bmn)

col_names <- c('afp','afn', 'amp', 'amn', 'wfp', 'wfn', 'wmp', 'wmn', 'bfp', 'bfn', 'bmp', 'bmn')

main_counts_df <- data.frame( t(counts) ) 

colnames(main_counts_df) <- col_names

main_counts_df
##   afp afn amp amn wfp wfn wmp wmn bfp bfn bmp bmn
## 1   1   1   0   2   8  20   9  21   7  23  13  18
# CATCH TRIAL ACCURACY 

catch_correct = 0

sum( main_counts_df[1,] )
## [1] 123
# calculate catch trial accuracy
for (row in 1:nrow(main_task_df)){
  
  if (main_task_df$race[row]=="catchNeg"){
    if(main_task_df$key_resp[row]=="k"){
      catch_correct = catch_correct+1
    }
    
  }else if (main_task_df$race[row]=="catchPos"){
    if(main_task_df$key_resp[row]=="s"){
      catch_correct = catch_correct+1
    }
  }
}

catch_correct
## [1] 7
paste("catch trial accuracy: ", catch_correct, "/7", sep="")
## [1] "catch trial accuracy: 7/7"

MAIN TASK PLOT

# PLOTTING


bar_graph_df <- data.frame(category=col_names, counts)

# bar_graph_df
# 
# ggplot(bar_graph_df, aes(x=category, y=counts)) + 
#   geom_bar(stat="identity")


bar_graph <- ggplot(data=bar_graph_df, aes(x=category, y=counts, fill=category ) ) +
  geom_bar(stat="identity") +
  scale_fill_manual(values = c("blue", "red",
                             "blue",  "red",
                               "blue",  "red",
                                "blue", "red",
                               "blue",  "red", 
                             "blue", "red") )

bar_graph