Coding goals for week 7

Challenges and successes

My new and improved code + annotations

Loading packages

#Loading relevant packages
library(qualtRics) #for reading data, filtering redundant rows and setting variables with numeric entries as 'numeric'
library(tidyverse) #for dplyr and ggplot
## ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.1 ──
## ✓ ggplot2 3.3.4     ✓ purrr   0.3.4
## ✓ tibble  3.1.2     ✓ dplyr   1.0.6
## ✓ tidyr   1.1.3     ✓ stringr 1.4.0
## ✓ readr   1.4.0     ✓ forcats 0.5.1
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()
library(ggbeeswarm) #for a violin scatter plot
library(ggeasy) #for ggplot formatting shortcuts
library(patchwork) #for combining plots into a single output

Experiment 2

1. Reading data

The same functions are used as those justified in Experiment 1:

  • READING the Qualtrics .csv file (survey data) downloaded manually into my working directory (named “Study_1_data.csv”), using the qualtRics read_survey() function (data now named “mydata2” in Global Environment).
  • CONVERTING ‘mydata’ to a data.frame using the as.data.frame() function (the qualtRics package formats the data to a tibble rather than a data.frame).
  • (Optional step) CHECKING the types of variable we have (e.g., numeric, string, character etc.) using the sapply() function. The as.data.frame.list() function is also used to condense the output (there are 360 variables!).
mydata2=read_survey("Study_2_data.csv")
## Warning: Duplicated column names deduplicated: 'Timer_First Click' =>
## 'Timer_First Click_1' [26], 'Timer_Last Click' => 'Timer_Last Click_1' [27],
## 'Timer_Page Submit' => 'Timer_Page Submit_1' [28], 'Timer_Click Count' =>
## 'Timer_Click Count_1' [29], 'Timer_First Click' => 'Timer_First Click_2' [30],
## 'Timer_Last Click' => 'Timer_Last Click_2' [31], 'Timer_Page Submit' =>
## 'Timer_Page Submit_2' [32], 'Timer_Click Count' => 'Timer_Click Count_2' [33],
## 'Timer_First Click' => 'Timer_First Click_3' [34], 'Timer_Last Click' =>
## 'Timer_Last Click_3' [35], 'Timer_Page Submit' => 'Timer_Page Submit_3' [36],
## 'Timer_Click Count' => 'Timer_Click Count_3' [37], 'Timer_First Click' =>
## 'Timer_First Click_4' [38], 'Timer_Last Click' => 'Timer_Last Click_4' [39],
## 'Timer_Page Submit' => 'Timer_Page Submit_4' [40], 'Timer_Click Count' =>
## 'Timer_Click Count_4' [41], 'Timer_First Click' => 'Timer_First Click_5' [42],
## 'Timer_Last Click' => 'Timer_Last Click_5' [43], 'Timer_Page Submit' =>
## 'Timer_Page Submit_5' [44], 'Timer_Click Count' => 'Timer_Click Count_5' [45],
## 'Timer_First Click' => 'Timer_First Click_6' [46], 'Timer_Last Click' =>
## 'Timer_Last Click_6' [47], 'Timer_Page Submit' => 'Timer_Page Submit_6' [48],
## 'Timer_Click Count' => 'Timer_Click Count_6' [49], 'Timer_First Click' =>
## 'Timer_First Click_7' [50], 'Timer_Last Click' => 'Timer_Last Click_7' [51],
## 'Timer_Page Submit' => 'Timer_Page Submit_7' [52], 'Timer_Click Count' =>
## 'Timer_Click Count_7' [53], 'Timer_First Click' => 'Timer_First Click_8' [54],
## 'Timer_Last Click' => 'Timer_Last Click_8' [55], 'Timer_Page Submit' =>
## 'Timer_Page Submit_8' [56], 'Timer_Click Count' => 'Timer_Click Count_8' [57],
## 'Timer_First Click' => 'Timer_First Click_9' [58], 'Timer_Last Click' =>
## 'Timer_Last Click_9' [59], 'Timer_Page Submit' => 'Timer_Page Submit_9' [60],
## 'Timer_Click Count' => 'Timer_Click Count_9' [61], 'Timer_First Click' =>
## 'Timer_First Click_10' [62], 'Timer_Last Click' => 'Timer_Last Click_10' [63],
## 'Timer_Page Submit' => 'Timer_Page Submit_10' [64], 'Timer_Click Count' =>
## 'Timer_Click Count_10' [65], 'Timer_First Click' => 'Timer_First Click_11' [66],
## 'Timer_Last Click' => 'Timer_Last Click_11' [67], 'Timer_Page Submit' =>
## 'Timer_Page Submit_11' [68], 'Timer_Click Count' => 'Timer_Click Count_11' [69],
## 'Timer_First Click' => 'Timer_First Click_12' [70], 'Timer_Last Click' =>
## 'Timer_Last Click_12' [71], 'Timer_Page Submit' => 'Timer_Page Submit_12' [72],
## 'Timer_Click Count' => 'Timer_Click Count_12' [73], 'Timer_First Click' =>
## 'Timer_First Click_13' [74], 'Timer_Last Click' => 'Timer_Last Click_13' [75],
## 'Timer_Page Submit' => 'Timer_Page Submit_13' [76], 'Timer_Click Count' =>
## 'Timer_Click Count_13' [77], 'Timer_First Click' => 'Timer_First Click_14' [78],
## 'Timer_Last Click' => 'Timer_Last Click_14' [79], 'Timer_Page Submit' =>
## 'Timer_Page Submit_14' [80], 'Timer_Click Count' => 'Timer_Click Count_14' [81],
## 'Timer_First Click' => 'Timer_First Click_15' [82], 'Timer_Last Click' =>
## 'Timer_Last Click_15' [83], 'Timer_Page Submit' => 'Timer_Page Submit_15' [84],
## 'Timer_Click Count' => 'Timer_Click Count_15' [85], 'Timer_First Click' =>
## 'Timer_First Click_16' [86], 'Timer_Last Click' => 'Timer_Last Click_16' [87],
## 'Timer_Page Submit' => 'Timer_Page Submit_16' [88], 'Timer_Click Count' =>
## 'Timer_Click Count_16' [89], 'Timer_First Click' => 'Timer_First Click_17' [90],
## 'Timer_Last Click' => 'Timer_Last Click_17' [91], 'Timer_Page Submit' =>
## 'Timer_Page Submit_17' [92], 'Timer_Click Count' => 'Timer_Click Count_17' [93],
## 'Timer_First Click' => 'Timer_First Click_18' [94], 'Timer_Last Click' =>
## 'Timer_Last Click_18' [95], 'Timer_Page Submit' => 'Timer_Page Submit_18' [96],
## 'Timer_Click Count' => 'Timer_Click Count_18' [97], 'Timer_First Click' =>
## 'Timer_First Click_19' [98], 'Timer_Last Click' => 'Timer_Last Click_19' [99],
## 'Timer_Page Submit' => 'Timer_Page Submit_19' [100], 'Timer_Click Count'
## => 'Timer_Click Count_19' [101], 'Timer_First Click' => 'Timer_First
## Click_20' [102], 'Timer_Last Click' => 'Timer_Last Click_20' [103], 'Timer_Page
## Submit' => 'Timer_Page Submit_20' [104], 'Timer_Click Count' => 'Timer_Click
## Count_20' [105], 'Timer_First Click' => 'Timer_First Click_21' [106],
## 'Timer_Last Click' => 'Timer_Last Click_21' [107], 'Timer_Page Submit'
## => 'Timer_Page Submit_21' [108], 'Timer_Click Count' => 'Timer_Click
## Count_21' [109], 'Timer_First Click' => 'Timer_First Click_22' [110],
## 'Timer_Last Click' => 'Timer_Last Click_22' [111], 'Timer_Page Submit'
## => 'Timer_Page Submit_22' [112], 'Timer_Click Count' => 'Timer_Click
## Count_22' [113], 'Timer_First Click' => 'Timer_First Click_23' [114],
## 'Timer_Last Click' => 'Timer_Last Click_23' [115], 'Timer_Page Submit'
## => 'Timer_Page Submit_23' [116], 'Timer_Click Count' => 'Timer_Click
## Count_23' [117], 'Timer_First Click' => 'Timer_First Click_24' [118],
## 'Timer_Last Click' => 'Timer_Last Click_24' [119], 'Timer_Page Submit'
## => 'Timer_Page Submit_24' [120], 'Timer_Click Count' => 'Timer_Click
## Count_24' [121], 'Timer_First Click' => 'Timer_First Click_25' [122],
## 'Timer_Last Click' => 'Timer_Last Click_25' [123], 'Timer_Page Submit'
## => 'Timer_Page Submit_25' [124], 'Timer_Click Count' => 'Timer_Click
## Count_25' [125], 'Timer_First Click' => 'Timer_First Click_26' [126],
## 'Timer_Last Click' => 'Timer_Last Click_26' [127], 'Timer_Page Submit'
## => 'Timer_Page Submit_26' [128], 'Timer_Click Count' => 'Timer_Click
## Count_26' [129], 'Timer_First Click' => 'Timer_First Click_27' [130],
## 'Timer_Last Click' => 'Timer_Last Click_27' [131], 'Timer_Page Submit'
## => 'Timer_Page Submit_27' [132], 'Timer_Click Count' => 'Timer_Click
## Count_27' [133], 'Timer_First Click' => 'Timer_First Click_28' [134],
## 'Timer_Last Click' => 'Timer_Last Click_28' [135], 'Timer_Page Submit'
## => 'Timer_Page Submit_28' [136], 'Timer_Click Count' => 'Timer_Click
## Count_28' [137], 'Timer_First Click' => 'Timer_First Click_29' [138],
## 'Timer_Last Click' => 'Timer_Last Click_29' [139], 'Timer_Page Submit'
## => 'Timer_Page Submit_29' [140], 'Timer_Click Count' => 'Timer_Click
## Count_29' [141], 'Timer_First Click' => 'Timer_First Click_30' [142],
## 'Timer_Last Click' => 'Timer_Last Click_30' [143], 'Timer_Page Submit'
## => 'Timer_Page Submit_30' [144], 'Timer_Click Count' => 'Timer_Click
## Count_30' [145], 'Timer_First Click' => 'Timer_First Click_31' [146],
## 'Timer_Last Click' => 'Timer_Last Click_31' [147], 'Timer_Page Submit'
## => 'Timer_Page Submit_31' [148], 'Timer_Click Count' => 'Timer_Click
## Count_31' [149], 'Timer_First Click' => 'Timer_First Click_32' [150],
## 'Timer_Last Click' => 'Timer_Last Click_32' [151], 'Timer_Page Submit'
## => 'Timer_Page Submit_32' [152], 'Timer_Click Count' => 'Timer_Click
## Count_32' [153], 'Timer_First Click' => 'Timer_First Click_33' [154],
## 'Timer_Last Click' => 'Timer_Last Click_33' [155], 'Timer_Page Submit'
## => 'Timer_Page Submit_33' [156], 'Timer_Click Count' => 'Timer_Click
## Count_33' [157], 'Timer_First Click' => 'Timer_First Click_34' [158],
## 'Timer_Last Click' => 'Timer_Last Click_34' [159], 'Timer_Page Submit'
## => 'Timer_Page Submit_34' [160], 'Timer_Click Count' => 'Timer_Click
## Count_34' [161], 'Timer_First Click' => 'Timer_First Click_35' [162],
## 'Timer_Last Click' => 'Timer_Last Click_35' [163], 'Timer_Page Submit'
## => 'Timer_Page Submit_35' [164], 'Timer_Click Count' => 'Timer_Click
## Count_35' [165], 'Timer_First Click' => 'Timer_First Click_36' [166],
## 'Timer_Last Click' => 'Timer_Last Click_36' [167], 'Timer_Page Submit'
## => 'Timer_Page Submit_36' [168], 'Timer_Click Count' => 'Timer_Click
## Count_36' [169], 'Timer_First Click' => 'Timer_First Click_37' [170],
## 'Timer_Last Click' => 'Timer_Last Click_37' [171], 'Timer_Page Submit'
## => 'Timer_Page Submit_37' [172], 'Timer_Click Count' => 'Timer_Click
## Count_37' [173], 'Timer_First Click' => 'Timer_First Click_38' [174],
## 'Timer_Last Click' => 'Timer_Last Click_38' [175], 'Timer_Page Submit'
## => 'Timer_Page Submit_38' [176], 'Timer_Click Count' => 'Timer_Click
## Count_38' [177], 'Timer_First Click' => 'Timer_First Click_39' [178],
## 'Timer_Last Click' => 'Timer_Last Click_39' [179], 'Timer_Page Submit'
## => 'Timer_Page Submit_39' [180], 'Timer_Click Count' => 'Timer_Click
## Count_39' [181], 'Timer_First Click' => 'Timer_First Click_40' [182],
## 'Timer_Last Click'
## 
## ── Column specification ────────────────────────────────────────────────────────
## cols(
##   .default = col_double(),
##   StartDate = col_datetime(format = ""),
##   EndDate = col_datetime(format = ""),
##   IPAddress = col_character(),
##   RecordedDate = col_datetime(format = ""),
##   ResponseId = col_character(),
##   RecipientLastName = col_character(),
##   RecipientFirstName = col_character(),
##   RecipientEmail = col_character(),
##   ExternalReference = col_character(),
##   LocationLatitude = col_character(),
##   LocationLongitude = col_character(),
##   DistributionChannel = col_character(),
##   UserLanguage = col_character(),
##   PID = col_character(),
##   Memory_task = col_character(),
##   Memory_task_DO = col_character(),
##   Prolific_PID = col_character(),
##   FL_12_DO = col_character()
## )
## ℹ Use `spec()` for the full column specifications.
mydata2<- as.data.frame(mydata2)

sapply(mydata2, class) %>% as.data.frame.list() #Note that relevant columns for calculations should be 'numeric'
##   StartDate EndDate  Status IPAddress Progress Duration..in.seconds. Finished
## 1   POSIXct POSIXct numeric character  numeric               numeric  numeric
## 2    POSIXt  POSIXt numeric character  numeric               numeric  numeric
##   RecordedDate ResponseId RecipientLastName RecipientFirstName RecipientEmail
## 1      POSIXct  character         character          character      character
## 2       POSIXt  character         character          character      character
##   ExternalReference LocationLatitude LocationLongitude DistributionChannel
## 1         character        character         character           character
## 2         character        character         character           character
##   UserLanguage Consent       PID  Gender     Age Timer_First.Click
## 1    character numeric character numeric numeric           numeric
## 2    character numeric character numeric numeric           numeric
##   Timer_Last.Click Timer_Page.Submit Timer_Click.Count Timer_First.Click_1
## 1          numeric           numeric           numeric             numeric
## 2          numeric           numeric           numeric             numeric
##   Timer_Last.Click_1 Timer_Page.Submit_1 Timer_Click.Count_1
## 1            numeric             numeric             numeric
## 2            numeric             numeric             numeric
##   Timer_First.Click_2 Timer_Last.Click_2 Timer_Page.Submit_2
## 1             numeric            numeric             numeric
## 2             numeric            numeric             numeric
##   Timer_Click.Count_2 Timer_First.Click_3 Timer_Last.Click_3
## 1             numeric             numeric            numeric
## 2             numeric             numeric            numeric
##   Timer_Page.Submit_3 Timer_Click.Count_3 Timer_First.Click_4
## 1             numeric             numeric             numeric
## 2             numeric             numeric             numeric
##   Timer_Last.Click_4 Timer_Page.Submit_4 Timer_Click.Count_4
## 1            numeric             numeric             numeric
## 2            numeric             numeric             numeric
##   Timer_First.Click_5 Timer_Last.Click_5 Timer_Page.Submit_5
## 1             numeric            numeric             numeric
## 2             numeric            numeric             numeric
##   Timer_Click.Count_5 Timer_First.Click_6 Timer_Last.Click_6
## 1             numeric             numeric            numeric
## 2             numeric             numeric            numeric
##   Timer_Page.Submit_6 Timer_Click.Count_6 Timer_First.Click_7
## 1             numeric             numeric             numeric
## 2             numeric             numeric             numeric
##   Timer_Last.Click_7 Timer_Page.Submit_7 Timer_Click.Count_7
## 1            numeric             numeric             numeric
## 2            numeric             numeric             numeric
##   Timer_First.Click_8 Timer_Last.Click_8 Timer_Page.Submit_8
## 1             numeric            numeric             numeric
## 2             numeric            numeric             numeric
##   Timer_Click.Count_8 Timer_First.Click_9 Timer_Last.Click_9
## 1             numeric             numeric            numeric
## 2             numeric             numeric            numeric
##   Timer_Page.Submit_9 Timer_Click.Count_9 Timer_First.Click_10
## 1             numeric             numeric              numeric
## 2             numeric             numeric              numeric
##   Timer_Last.Click_10 Timer_Page.Submit_10 Timer_Click.Count_10
## 1             numeric              numeric              numeric
## 2             numeric              numeric              numeric
##   Timer_First.Click_11 Timer_Last.Click_11 Timer_Page.Submit_11
## 1              numeric             numeric              numeric
## 2              numeric             numeric              numeric
##   Timer_Click.Count_11 Timer_First.Click_12 Timer_Last.Click_12
## 1              numeric              numeric             numeric
## 2              numeric              numeric             numeric
##   Timer_Page.Submit_12 Timer_Click.Count_12 Timer_First.Click_13
## 1              numeric              numeric              numeric
## 2              numeric              numeric              numeric
##   Timer_Last.Click_13 Timer_Page.Submit_13 Timer_Click.Count_13
## 1             numeric              numeric              numeric
## 2             numeric              numeric              numeric
##   Timer_First.Click_14 Timer_Last.Click_14 Timer_Page.Submit_14
## 1              numeric             numeric              numeric
## 2              numeric             numeric              numeric
##   Timer_Click.Count_14 Timer_First.Click_15 Timer_Last.Click_15
## 1              numeric              numeric             numeric
## 2              numeric              numeric             numeric
##   Timer_Page.Submit_15 Timer_Click.Count_15 Timer_First.Click_16
## 1              numeric              numeric              numeric
## 2              numeric              numeric              numeric
##   Timer_Last.Click_16 Timer_Page.Submit_16 Timer_Click.Count_16
## 1             numeric              numeric              numeric
## 2             numeric              numeric              numeric
##   Timer_First.Click_17 Timer_Last.Click_17 Timer_Page.Submit_17
## 1              numeric             numeric              numeric
## 2              numeric             numeric              numeric
##   Timer_Click.Count_17 Timer_First.Click_18 Timer_Last.Click_18
## 1              numeric              numeric             numeric
## 2              numeric              numeric             numeric
##   Timer_Page.Submit_18 Timer_Click.Count_18 Timer_First.Click_19
## 1              numeric              numeric              numeric
## 2              numeric              numeric              numeric
##   Timer_Last.Click_19 Timer_Page.Submit_19 Timer_Click.Count_19
## 1             numeric              numeric              numeric
## 2             numeric              numeric              numeric
##   Timer_First.Click_20 Timer_Last.Click_20 Timer_Page.Submit_20
## 1              numeric             numeric              numeric
## 2              numeric             numeric              numeric
##   Timer_Click.Count_20 Timer_First.Click_21 Timer_Last.Click_21
## 1              numeric              numeric             numeric
## 2              numeric              numeric             numeric
##   Timer_Page.Submit_21 Timer_Click.Count_21 Timer_First.Click_22
## 1              numeric              numeric              numeric
## 2              numeric              numeric              numeric
##   Timer_Last.Click_22 Timer_Page.Submit_22 Timer_Click.Count_22
## 1             numeric              numeric              numeric
## 2             numeric              numeric              numeric
##   Timer_First.Click_23 Timer_Last.Click_23 Timer_Page.Submit_23
## 1              numeric             numeric              numeric
## 2              numeric             numeric              numeric
##   Timer_Click.Count_23 Timer_First.Click_24 Timer_Last.Click_24
## 1              numeric              numeric             numeric
## 2              numeric              numeric             numeric
##   Timer_Page.Submit_24 Timer_Click.Count_24 Timer_First.Click_25
## 1              numeric              numeric              numeric
## 2              numeric              numeric              numeric
##   Timer_Last.Click_25 Timer_Page.Submit_25 Timer_Click.Count_25
## 1             numeric              numeric              numeric
## 2             numeric              numeric              numeric
##   Timer_First.Click_26 Timer_Last.Click_26 Timer_Page.Submit_26
## 1              numeric             numeric              numeric
## 2              numeric             numeric              numeric
##   Timer_Click.Count_26 Timer_First.Click_27 Timer_Last.Click_27
## 1              numeric              numeric             numeric
## 2              numeric              numeric             numeric
##   Timer_Page.Submit_27 Timer_Click.Count_27 Timer_First.Click_28
## 1              numeric              numeric              numeric
## 2              numeric              numeric              numeric
##   Timer_Last.Click_28 Timer_Page.Submit_28 Timer_Click.Count_28
## 1             numeric              numeric              numeric
## 2             numeric              numeric              numeric
##   Timer_First.Click_29 Timer_Last.Click_29 Timer_Page.Submit_29
## 1              numeric             numeric              numeric
## 2              numeric             numeric              numeric
##   Timer_Click.Count_29 Timer_First.Click_30 Timer_Last.Click_30
## 1              numeric              numeric             numeric
## 2              numeric              numeric             numeric
##   Timer_Page.Submit_30 Timer_Click.Count_30 Timer_First.Click_31
## 1              numeric              numeric              numeric
## 2              numeric              numeric              numeric
##   Timer_Last.Click_31 Timer_Page.Submit_31 Timer_Click.Count_31
## 1             numeric              numeric              numeric
## 2             numeric              numeric              numeric
##   Timer_First.Click_32 Timer_Last.Click_32 Timer_Page.Submit_32
## 1              numeric             numeric              numeric
## 2              numeric             numeric              numeric
##   Timer_Click.Count_32 Timer_First.Click_33 Timer_Last.Click_33
## 1              numeric              numeric             numeric
## 2              numeric              numeric             numeric
##   Timer_Page.Submit_33 Timer_Click.Count_33 Timer_First.Click_34
## 1              numeric              numeric              numeric
## 2              numeric              numeric              numeric
##   Timer_Last.Click_34 Timer_Page.Submit_34 Timer_Click.Count_34
## 1             numeric              numeric              numeric
## 2             numeric              numeric              numeric
##   Timer_First.Click_35 Timer_Last.Click_35 Timer_Page.Submit_35
## 1              numeric             numeric              numeric
## 2              numeric             numeric              numeric
##   Timer_Click.Count_35 Timer_First.Click_36 Timer_Last.Click_36
## 1              numeric              numeric             numeric
## 2              numeric              numeric             numeric
##   Timer_Page.Submit_36 Timer_Click.Count_36 Timer_First.Click_37
## 1              numeric              numeric              numeric
## 2              numeric              numeric              numeric
##   Timer_Last.Click_37 Timer_Page.Submit_37 Timer_Click.Count_37
## 1             numeric              numeric              numeric
## 2             numeric              numeric              numeric
##   Timer_First.Click_38 Timer_Last.Click_38 Timer_Page.Submit_38
## 1              numeric             numeric              numeric
## 2              numeric             numeric              numeric
##   Timer_Click.Count_38 Timer_First.Click_39 Timer_Last.Click_39
## 1              numeric              numeric             numeric
## 2              numeric              numeric             numeric
##   Timer_Page.Submit_39 Timer_Click.Count_39 Timer_First.Click_40
## 1              numeric              numeric              numeric
## 2              numeric              numeric              numeric
##   Timer_Last.Click_40 Timer_Page.Submit_40 Timer_Click.Count_40
## 1             numeric              numeric              numeric
## 2             numeric              numeric              numeric
##   Timer_First.Click_41 Timer_Last.Click_41 Timer_Page.Submit_41
## 1              numeric             numeric              numeric
## 2              numeric             numeric              numeric
##   Timer_Click.Count_41 Timer_First.Click_42 Timer_Last.Click_42
## 1              numeric              numeric             numeric
## 2              numeric              numeric             numeric
##   Timer_Page.Submit_42 Timer_Click.Count_42 Timer_First.Click_43
## 1              numeric              numeric              numeric
## 2              numeric              numeric              numeric
##   Timer_Last.Click_43 Timer_Page.Submit_43 Timer_Click.Count_43
## 1             numeric              numeric              numeric
## 2             numeric              numeric              numeric
##   Timer_First.Click_44 Timer_Last.Click_44 Timer_Page.Submit_44
## 1              numeric             numeric              numeric
## 2              numeric             numeric              numeric
##   Timer_Click.Count_44 Timer_First.Click_45 Timer_Last.Click_45
## 1              numeric              numeric             numeric
## 2              numeric              numeric             numeric
##   Timer_Page.Submit_45 Timer_Click.Count_45 Timer_First.Click_46
## 1              numeric              numeric              numeric
## 2              numeric              numeric              numeric
##   Timer_Last.Click_46 Timer_Page.Submit_46 Timer_Click.Count_46
## 1             numeric              numeric              numeric
## 2             numeric              numeric              numeric
##   Timer_First.Click_47 Timer_Last.Click_47 Timer_Page.Submit_47
## 1              numeric             numeric              numeric
## 2              numeric             numeric              numeric
##   Timer_Click.Count_47 Timer_First.Click_48 Timer_Last.Click_48
## 1              numeric              numeric             numeric
## 2              numeric              numeric             numeric
##   Timer_Page.Submit_48 Timer_Click.Count_48 Timer_First.Click_49
## 1              numeric              numeric              numeric
## 2              numeric              numeric              numeric
##   Timer_Last.Click_49 Timer_Page.Submit_49 Timer_Click.Count_49
## 1             numeric              numeric              numeric
## 2             numeric              numeric              numeric
##   Timer_First.Click_50 Timer_Last.Click_50 Timer_Page.Submit_50
## 1              numeric             numeric              numeric
## 2              numeric             numeric              numeric
##   Timer_Click.Count_50 Timer_First.Click_51 Timer_Last.Click_51
## 1              numeric              numeric             numeric
## 2              numeric              numeric             numeric
##   Timer_Page.Submit_51 Timer_Click.Count_51 Timer_First.Click_52
## 1              numeric              numeric              numeric
## 2              numeric              numeric              numeric
##   Timer_Last.Click_52 Timer_Page.Submit_52 Timer_Click.Count_52
## 1             numeric              numeric              numeric
## 2             numeric              numeric              numeric
##   Timer_First.Click_53 Timer_Last.Click_53 Timer_Page.Submit_53
## 1              numeric             numeric              numeric
## 2              numeric             numeric              numeric
##   Timer_Click.Count_53 Timer_First.Click_54 Timer_Last.Click_54
## 1              numeric              numeric             numeric
## 2              numeric              numeric             numeric
##   Timer_Page.Submit_54 Timer_Click.Count_54 Timer_First.Click_55
## 1              numeric              numeric              numeric
## 2              numeric              numeric              numeric
##   Timer_Last.Click_55 Timer_Page.Submit_55 Timer_Click.Count_55
## 1             numeric              numeric              numeric
## 2             numeric              numeric              numeric
##   Timer_First.Click_56 Timer_Last.Click_56 Timer_Page.Submit_56
## 1              numeric             numeric              numeric
## 2              numeric             numeric              numeric
##   Timer_Click.Count_56 Timer_First.Click_57 Timer_Last.Click_57
## 1              numeric              numeric             numeric
## 2              numeric              numeric             numeric
##   Timer_Page.Submit_57 Timer_Click.Count_57 Timer_First.Click_58
## 1              numeric              numeric              numeric
## 2              numeric              numeric              numeric
##   Timer_Last.Click_58 Timer_Page.Submit_58 Timer_Click.Count_58
## 1             numeric              numeric              numeric
## 2             numeric              numeric              numeric
##   Timer_First.Click_59 Timer_Last.Click_59 Timer_Page.Submit_59
## 1              numeric             numeric              numeric
## 2              numeric             numeric              numeric
##   Timer_Click.Count_59 Timer_First.Click_60 Timer_Last.Click_60
## 1              numeric              numeric             numeric
## 2              numeric              numeric             numeric
##   Timer_Page.Submit_60 Timer_Click.Count_60 Timer_First.Click_61
## 1              numeric              numeric              numeric
## 2              numeric              numeric              numeric
##   Timer_Last.Click_61 Timer_Page.Submit_61 Timer_Click.Count_61
## 1             numeric              numeric              numeric
## 2             numeric              numeric              numeric
##   Timer_First.Click_62 Timer_Last.Click_62 Timer_Page.Submit_62
## 1              numeric             numeric              numeric
## 2              numeric             numeric              numeric
##   Timer_Click.Count_62 Timer_First.Click_63 Timer_Last.Click_63
## 1              numeric              numeric             numeric
## 2              numeric              numeric             numeric
##   Timer_Page.Submit_63 Timer_Click.Count_63 Timer_First.Click_64
## 1              numeric              numeric              numeric
## 2              numeric              numeric              numeric
##   Timer_Last.Click_64 Timer_Page.Submit_64 Timer_Click.Count_64
## 1             numeric              numeric              numeric
## 2             numeric              numeric              numeric
##   Timer_First.Click_65 Timer_Last.Click_65 Timer_Page.Submit_65
## 1              numeric             numeric              numeric
## 2              numeric             numeric              numeric
##   Timer_Click.Count_65 Timer_First.Click_66 Timer_Last.Click_66
## 1              numeric              numeric             numeric
## 2              numeric              numeric             numeric
##   Timer_Page.Submit_66 Timer_Click.Count_66 Timer_First.Click_67
## 1              numeric              numeric              numeric
## 2              numeric              numeric              numeric
##   Timer_Last.Click_67 Timer_Page.Submit_67 Timer_Click.Count_67
## 1             numeric              numeric              numeric
## 2             numeric              numeric              numeric
##   Timer_First.Click_68 Timer_Last.Click_68 Timer_Page.Submit_68
## 1              numeric             numeric              numeric
## 2              numeric             numeric              numeric
##   Timer_Click.Count_68 Timer_First.Click_69 Timer_Last.Click_69
## 1              numeric              numeric             numeric
## 2              numeric              numeric             numeric
##   Timer_Page.Submit_69 Timer_Click.Count_69 Timer_First.Click_70
## 1              numeric              numeric              numeric
## 2              numeric              numeric              numeric
##   Timer_Last.Click_70 Timer_Page.Submit_70 Timer_Click.Count_70
## 1             numeric              numeric              numeric
## 2             numeric              numeric              numeric
##   Timer_First.Click_71 Timer_Last.Click_71 Timer_Page.Submit_71
## 1              numeric             numeric              numeric
## 2              numeric             numeric              numeric
##   Timer_Click.Count_71 Timer_First.Click_72 Timer_Last.Click_72
## 1              numeric              numeric             numeric
## 2              numeric              numeric             numeric
##   Timer_Page.Submit_72 Timer_Click.Count_72 Timer_First.Click_73
## 1              numeric              numeric              numeric
## 2              numeric              numeric              numeric
##   Timer_Last.Click_73 Timer_Page.Submit_73 Timer_Click.Count_73
## 1             numeric              numeric              numeric
## 2             numeric              numeric              numeric
##   Timer_First.Click_74 Timer_Last.Click_74 Timer_Page.Submit_74
## 1              numeric             numeric              numeric
## 2              numeric             numeric              numeric
##   Timer_Click.Count_74 Timer_First.Click_75 Timer_Last.Click_75
## 1              numeric              numeric             numeric
## 2              numeric              numeric             numeric
##   Timer_Page.Submit_75 Timer_Click.Count_75    NC_1    NC_2    NC_3    NC_4
## 1              numeric              numeric numeric numeric numeric numeric
## 2              numeric              numeric numeric numeric numeric numeric
##      NC_5    NC_6   NBS_1   NBS_2   NBS_3   NBS_4   NBS_5   NBS_6
## 1 numeric numeric numeric numeric numeric numeric numeric numeric
## 2 numeric numeric numeric numeric numeric numeric numeric numeric
##   Mistrust_expertise_1 Mistrust_expertise_2 Mistrust_expertise_3     GSS
## 1              numeric              numeric              numeric numeric
## 2              numeric              numeric              numeric numeric
##   Certainty_sci_know_1 Certainty_sci_know_2 Certainty_sci_know_3
## 1              numeric              numeric              numeric
## 2              numeric              numeric              numeric
##   Certainty_sci_know_4 Certainty_sci_know_5 Certainty_sci_know_6
## 1              numeric              numeric              numeric
## 2              numeric              numeric              numeric
##   Development_sci_know_1 Development_sci_know_2 Development_sci_know_3
## 1                numeric                numeric                numeric
## 2                numeric                numeric                numeric
##   Development_sci_know_4 Development_sci_know_5 Development_sci_know_6
## 1                numeric                numeric                numeric
## 2                numeric                numeric                numeric
##   Memory_task Memory_task_DO Serious_check     SC0 Prolific_PID Random_ID
## 1   character      character       numeric numeric    character   numeric
## 2   character      character       numeric numeric    character   numeric
##    FL_12_DO
## 1 character
## 2 character

2. Tidying and filtering data

The same functions are used as those justified in Experiment 1:

  • RENAMING variables “SC0” to “recall_score” and “FL_10_DO” to “condition” using the rename() function
  • (Optional step) COUNTING the number of raw observations using the summarise() function.
  • FILTERING observations based on the pre-registered exclusion criteria (same as applied in Exp 1) using the filter() function
    • (Optional step) creating a SUBSET of relevant variables for data analysis (35 variables) using the select() function
  • COUNTING the final number of participants that remain after exclusions (final sample size = 400) using the summarise() function
  • (Optional step) EXPORTING the tidied and filtered data to a .csv using the write_csv function (data saved as “MyDataSubset2.csv” in my working directory)
mydata2 <- mydata2 %>% rename(Recall_score = SC0, Condition = FL_12_DO) #new name = old name

mydata2 %>% summarise(n()) #412
##   n()
## 1 412
#Applying pre-registered exclusion criteria and filtering variables
mydata2 <- mydata2 %>% 
  filter(
    Consent == 1,
    Finished == 1,
    Serious_check == 1,
    Recall_score >= 4) %>% 
  select(
    Finished,
    `Duration (in seconds)`,
    Gender,
    Age,
    Serious_check, 
    Recall_score,
    Condition,
    NC_1:Development_sci_know_6)

mydata2 %>% summarise(n()) #Ensure that the final sample size = 400
##   n()
## 1 400
write_csv(mydata2, "MyDataSubset2.csv")

3. Descriptives > Calculating demographics

  • CALCULATING the mean age of participants, standard deviation, and age range of the sample using the summarise() function.
    • Values should correspond to those reported in the paper (Mean = 33.5, SD = 12, Range: 18-73
  • COUNTING the gender identities in the sample (number of Males, Females, ‘Other’ and ‘Prefer not to say’) using the count() function
    • According to the survey file in the OSF repo, Male is coded as “1”, Female as “2”, ‘Other’ as “3”, and ‘Prefer not to say’ as “4”
    • Numbers of participants should correspond to those reported in the paper (there are 150 males, 248 females, and 2 participants that identify as ‘other’)
#AGE: mean, SD, and range
mydata2 %>% summarise(mean(Age), sd(Age), range(Age)) # M = 33.5, SD = 12, Range: 18-73
##   mean(Age)  sd(Age) range(Age)
## 1    33.465 12.03415         18
## 2    33.465 12.03415         73
#GENDER: 
mydata2 %>% count(Gender) #male = 150, female = 248, other = 2, prefer not = 0
##   Gender   n
## 1      1 150
## 2      2 248
## 3      3   2

4. Making sense of the independent variables

Experiment 2 adopts a 2x2 between-subjects design identical to Experiment 1 –> Factors = Headline Conflict (levels = Conflict and Consistent) and Headline Format (levels = Generic and Qualified) –> four experimental conditions: Generic/Conflicting, Generic/Non-conflicting, Qualified/Conflicting or Qualified/Non-conflicting.

  • SEPARATING the ‘Condition’ column to create columns for each IV. The separate() function will be used to create columns c(“block”, “number”, “Format”, “Conflict”) to be applied to the ‘Condition’ string whereby data is separated by underscore (eg. “Block_1_Generic_Conflict”).
  • CHANGING the new variables ‘Format’ and ‘Conflict’ from characters to factors using the as.factor() function.
  • and RENAMING “Conflict” and “Consistent” levels of the ‘Conflict’ factor to “Conf.” and “Non-Conf.”, respectively (for the purpose of mimicking the plots in the paper), using the recode_factor() function.
#Separate
mydata2 <- separate(mydata2, Condition, c("block", "number", "Format", "Conflict"))

#Change
mydata2 <- mydata2 %>%
  mutate(Format=as.factor(Format)) %>%
  mutate(Conflict=as.factor(Conflict)) 

sapply(mydata2, class) #(optional) to check
##               Finished  Duration (in seconds)                 Gender 
##              "numeric"              "numeric"              "numeric" 
##                    Age          Serious_check           Recall_score 
##              "numeric"              "numeric"              "numeric" 
##                  block                 number                 Format 
##            "character"            "character"               "factor" 
##               Conflict                   NC_1                   NC_2 
##               "factor"              "numeric"              "numeric" 
##                   NC_3                   NC_4                   NC_5 
##              "numeric"              "numeric"              "numeric" 
##                   NC_6                  NBS_1                  NBS_2 
##              "numeric"              "numeric"              "numeric" 
##                  NBS_3                  NBS_4                  NBS_5 
##              "numeric"              "numeric"              "numeric" 
##                  NBS_6   Mistrust_expertise_1   Mistrust_expertise_2 
##              "numeric"              "numeric"              "numeric" 
##   Mistrust_expertise_3                    GSS   Certainty_sci_know_1 
##              "numeric"              "numeric"              "numeric" 
##   Certainty_sci_know_2   Certainty_sci_know_3   Certainty_sci_know_4 
##              "numeric"              "numeric"              "numeric" 
##   Certainty_sci_know_5   Certainty_sci_know_6 Development_sci_know_1 
##              "numeric"              "numeric"              "numeric" 
## Development_sci_know_2 Development_sci_know_3 Development_sci_know_4 
##              "numeric"              "numeric"              "numeric" 
## Development_sci_know_5 Development_sci_know_6 
##              "numeric"              "numeric"
#Rename
mydata2$Conflict <- recode_factor(mydata2$Conflict,
                                      Conflict = "Conf.",       #old name = new name
                                      Consistent = "Non-Conf.") #old name = new name

5. Making sense of the dependent variables

Experiment 2 adopts 6 different dependent variables to Experiment 1, that measure more global beliefs about nutrition and the development of science:

  1. Displaying general NUTRITIONAL CONFUSION: participants were presented with six self-directed statements about their own confusion about nutritional advice and indicated the extent to which they agreed or disagreed on a 5-point Likert scale (higher scores indicate greater confusion).
  2. The presence of NUTRITIONAL BACKLASH: participants were presented with six statements used to assess negative beliefs about nutrition recommendations and research and indicated the extent to which they agreed or disagreed on a 5-point Likert scale (higher scores indicate greater nutritional backlash).
  3. Demonstrating MISTRUST IN EXPERTISE: participants were presented with three self-directed statements that assess heir own general skepticism of science and expert opinion and indicated the extent to which they agreed or disagreed on a 5-point Likert scale (higher scores indicate greater mistrust).
  4. Demonstrating a lack of CONFIDENCE IN THE SCIENTIFIC COMMUNITY: participants were asked “How much confidence would you say you have in the scientific community?”. They indicated their response on a 3-point scale (1 = a great deal of confidence; 2 = only some confidence; 3 = hardly any confidence at all).
  5. Positively demonstrating more sophisticated epistemic beliefs surrounding the CERTAINTY OF SCIENTIFIC KNOWLEDGE: participants were presented with six statements that assess their beliefs in a confident right answer in science and indicated the extent to which they agreed or disagreed on a 5-point Likert scale (higher scores indicate a greater awareness that science is uncertain and constantly evolving).
  6. Demonstrating more sophisticated epistemic beliefs surrounding the DEVELOPMENT OF SCIENTIFIC KNOWLEDGE: participants were presented with six statements that assess their beliefs about science as an evolving and changing subject and indicated the extent to which they agreed or disagreed on a 5-point Likert scale (higher scores indicate a greater awareness that scientific knowledge is constantly developing).
  • Given that DVs 1, 2, 5 and 6 adopt six-item scales, and that DV 3 adopts a three-item scale, overall scores will be obtained via calculating the average for each scale (averaging across columns). Overall scores range from 1 - 5 and will be CREATED as new variables using the mutate() function
##New variables: calculate the average for each scale
#nutritional confusion mean
mydata2 <- mydata2 %>%
  mutate(confusion = (NC_1 + NC_2 + NC_3 + NC_4 + NC_5 + NC_6)/6)

#nutritional backlash mean
mydata2 <- mydata2 %>%
  mutate(backlash = (NBS_1 + NBS_2 + NBS_3 + NBS_4 + NBS_5 + NBS_6)/6)

#Mistrust of expertise mean
mydata2 <- mydata2 %>%
  mutate(mistrust = (Mistrust_expertise_1 + Mistrust_expertise_2 +
    Mistrust_expertise_3)/3)

#Certainty of knowledge mean
mydata2 <- mydata2 %>%
  mutate(certainty = (Certainty_sci_know_1 + Certainty_sci_know_2 +
    Certainty_sci_know_3 + Certainty_sci_know_4 + Certainty_sci_know_5 + 
    Certainty_sci_know_6)/6)

#Development of knowledge mean
mydata2 <- mydata2 %>%
  mutate(development = (Development_sci_know_1 + Development_sci_know_2 +
    Development_sci_know_3 + Development_sci_know_4 + Development_sci_know_5 +
    Development_sci_know_6)/6)
  • Note that the ‘Confidence in the scientific community’ DV is a single item scale and thus a single column ‘GSS’ represents its data (no averaging necessary)
  • (Optional step) EXPORTING data to a .csv using the write_csv function (data saved as “MyDataFinalSubset2.csv” in my working directory) as no further adjustments will be made to the dataset
#Export the FINAL data to a .csv
write_csv(mydata2, "MyDataFinalSubset2.csv")

6. Descriptives > Reproducing plots

Violin plots

Figure 3 in Haigh & Birch’s (2021) paper presents descriptive statistics for each variable measured in Experiment 2. Specifically, violin plots are used to visualise the distribution of the data at each point on the DV scale. Horizontal bars with 95% confidence intervals are also added to represent the condition mean, as well as swarm plots layered onto the violins. Coding steps to achieve this are listed below:

As six plots must be created (Nutritional Confusion, Nutritional Backlash, Mistrust of Expertise, Confidence in Scientific Community, Certainty of Knowledge and Development of Knowledge) using the same method, we will be CREATING our own function() in order to apply the same statements to all plots using a single chunk of code (as done in Exp1). The unique aspects of each plot (the Y-axis variable and titles) and a default y-axis limit will be specified upon calling the function. This avoids redundancy in creating the plots separately:

  • function() is used to declare a function, and we assign the output of function to ‘figure.1.fun’ to define the object
    • arguments used in the function declaration enclosed by parentheses ‘y_var, plot_title, y_title’ are the formal arguments that are manually specified for each plot upon calling the function
      • A default value is also assigned to the formal argument ‘lim_2 = 5’, which is applied to each plot unless specified otherwise (EG. the Confidence in Scientific Community plot specifies an alternative value ‘lim_2 = 3’ upon calling the function)
  • The statements within the curly braces ‘{}’ form the body of the function, and they are executed when we run the function for each plot:
    • ggplot() to create plot aesthetics: setting the x-axis data as Conflict, the y-axis as y_var (to be specified for each plot), and filling the violins with colours grouped by Conflict
    • geom_violin() to create violinplots
    • facet_wrap() to group the violins based on the ‘Format’ level that participants were assigned to, and to change facet titles to be positioned at the bottom of the plot
    • stat_summary to add crossbars indicating the condition mean and 95% confidence intervals, and to adjust the colour and transparency of the crossbar fill
    • geom_beeswarm() to layer a swarm plot on top of the violin plot, and to adjust the point spacing of the dots
    • ggtitle() to set the plot title to be specified for each plot
    • easy_center_title() (from the ‘ggeasy’ package) to centre the main title
    • easy_remove_legend() (from the ‘ggeasy’ package) to remove the legend
    • scale_x_discrete(name = NULL) to remove the x-axis title
    • scale_y_continuous() to set the y-axis title and limit 1 to be specified for each plot
    • scale_fill_manual() to set the fill colours manually
  • We will then call the function using unique named arguments and assign them to make the plots.
##Violin ggplots

#Make our own function
figure.2.fun <- function(y_var, plot_title, y_title, lim_2 = 5) {
  ggplot(mydata2, aes(x= Conflict, y = y_var, fill = Conflict)) +
  geom_violin() +
  facet_wrap(vars(Format), strip.position = "bottom") +
  stat_summary(fun.data = "mean_cl_normal",geom = "crossbar", fill = "white",
    alpha = .7) +
  geom_beeswarm(cex = 0.2) +
  ggtitle(label = plot_title) +
  easy_center_title() +
  easy_remove_legend() +
  scale_x_discrete(name = NULL) +
  scale_y_continuous(name = y_title, limits= c(1,lim_2)) +
  scale_fill_manual(values = c("slategray2", "lightpink1")) } 

#Use function to make plots
nutritionalconfusion.plot <- figure.2.fun(y_var = mydata2$confusion, plot_title = "Nutritional Confusion", y_title = "Nutritional Confusion")
nutritionalbacklash.plot <- figure.2.fun(y_var = mydata2$backlash, plot_title = "Nutritional Backlash", y_title = "Nutritional Backlash")
mistrust.plot <- figure.2.fun(y_var = mydata2$mistrust, plot_title = "Mistrust of Expertise", y_title = "Mistrust of Expertise")
confidence.plot <- figure.2.fun(y_var = mydata2$GSS, plot_title = "Confidence in Scientific Community", y_title = "Confidence in Scientific Community", lim_2 = 3)
certainty.plot <- figure.2.fun(y_var = mydata2$certainty, plot_title = "Certainty of Knowledge", y_title = "Certainty of Knowledge")
development.plot <- figure.2.fun(y_var = mydata2$development, plot_title = "Development of Knowledge", y_title = "Development of Knowledge")

print(nutritionalconfusion.plot)

print(nutritionalbacklash.plot)

print(mistrust.plot)

print(confidence.plot)

print(certainty.plot)

print(development.plot)

  • All six plots will now be COMBINED and assigned to ‘combinedplots2’ using the package patchwork() and creating a 2 column plot layout
combinedplots2 <- nutritionalconfusion.plot + nutritionalbacklash.plot + mistrust.plot + confidence.plot + certainty.plot + development.plot + plot_layout(ncol = 2)
print(combinedplots2)

The next steps