Report Details

articleID <- "11-11-2014_PS" # insert the article ID code here e.g., "10-3-2015_PS"
reportType <- "final" # specify whether this is the 'pilot' report or 'final' report
pilotNames <- "Tom Hardwicke" # insert the pilot's name here e.g., "Tom Hardwicke".  If there are multiple cpilots enter both names in a character string e.g., "Tom Hardwicke, Bob Dylan"
copilotNames <- "Michael Frank" # # insert the co-pilot's name here e.g., "Michael Frank". If there are multiple co-pilots enter both names in a character string e.g., "Tom Hardwicke, Bob Dylan"
pilotTTC <- 150 # insert the pilot's estimated time to complete (in minutes, fine to approximate) e.g., 120
copilotTTC <- 180 # insert the co-pilot's estimated time to complete (in minutes, fine to approximate) e.g., 120
pilotStartDate <- as.Date("06/13/18", format = "%m/%d/%y") # insert the pilot's start date in US format e.g., as.Date("01/25/18", format = "%m/%d/%y")
copilotStartDate <- as.Date("10/18/18", format = "%m/%d/%y") # insert the co-pilot's start date in US format e.g., as.Date("01/25/18", format = "%m/%d/%y")
completionDate <- as.Date("04/20/19", format = "%m/%d/%y") # copilot insert the date of final report completion (after any necessary rounds of author assistance) in US format e.g., as.Date("01/25/18", format = "%m/%d/%y")

Methods summary:

The authors examined whether sharing a painful experience with other people in a small group might promote bonding more than sharing a similar but nonpainful social experience. 54 Participants were randomly allocated to either a pain condition (n = 27) or a no-pain condition (n = 27). Participants were asked to rate their feeling of bonding to the other participants and the physical pain of the tasks by rating statements on a likert scale.


Target outcomes:

Manipulation checks revealed that reported pain intensity was higher in the pain condition (M = 6.07, SD = 1.99) than in the no-pain condition (M = 1.67, SD = 0.92), t(52) = 10.41, p < .001. Reported unpleasantness was also greater in the pain condition (M = 6.00, SD = 1.96) than in the no-pain condition (M = 1.74, SD = 1.19), t(52) = 9.63, p = .001. There were no significant differences between conditions in positive affect (pain condition: M = 3.05, SD = 0.82; no-pain condition: M = 2.80, SD = 0.83), t(52) = 1.09, p = .283, or negative affect (pain condition: M = 1.34, SD = 0.45; no-pain condition: M = 1.27, SD = 0.37), t(52) = 0.60, p = .554. Compared with the control tasks, the pain tasks were viewed as marginally more threatening (pain tasks: M = 1.36, SD = 0.58; control tasks: M = 1.11, SD = 0.30), t(52) = 1.97, p = .054, but not more challenging (pain tasks: M = 2.67, SD = 0.87; control tasks: M = 2.37, SD = 0.91), t(52) = 1.22, p = .227. We predicted that participants who shared a painful experience, compared with those who shared a similar but nonpainful social experience, would feel more bonded together. A one-way analysis of variance (ANOVA) revealed that pain had a medium-sized effect on bonding, F(1, 52) = 4.09, p = .048, d = 0.54 (see Fig. 1); participants in the pain condition reported higher bonding (M = 3.71, SD = 1.01, 95% confidence interval, or CI = [3.33, 4.09]) than did those in the no-pain condition (M = 3.14, SD = 1.09, 95% CI = [2.73, 3.55]).


Step 1: Load packages and prepare report object

# load packages
library(tidyverse) # for data munging
library(knitr) # for kable table formating
library(haven) # import and export 'SPSS', 'Stata' and 'SAS' Files
library(readxl) # import excel files
library(ReproReports) # custom report functions
library(ez) # for anova
library(lsr) # for cohens d
# Prepare report object. This will be updated automatically by the reproCheck function each time values are compared
reportObject <- data.frame(dummyRow = TRUE, reportedValue = NA, obtainedValue = NA, valueType = NA, percentageError = NA, comparisonOutcome = NA, eyeballCheck = NA)

Step 2: Load data

d <- read_sav("data/Study_1_Data.sav")

Step 3: Tidy data

Let’s check we have 27 in each condition:

d %>% count(condition)
## # A tibble: 2 x 2
##     condition     n
##     <dbl+lbl> <int>
## 1 0 [Control]    27
## 2 1 [Pain]       27

We have 27 in each condition but the condition labels are not identified i.e., we don’t know which is pain and which is no pain. After calculating the group means (below), we can see that 0 = no pain, 1 = pain.

Step 4: Run analysis

Manipulation checks revealed that reported pain intensity was higher in the pain condition (M = 6.07, SD = 1.99) than in the no-pain condition (M = 1.67, SD = 0.92),

desc_out <- d %>% 
  group_by(condition) %>% 
  summarise(M = mean(task_intense), 
            SD = sd(task_intense))
reportObject <- reproCheck(reportedValue = "6.07", obtainedValue = filter(desc_out, condition == 1) %>% select(M), valueType = 'mean')
## [1] "MATCH for mean. The reported value (6.07) and the obtained value (6.07) differed by 0%. Note that the obtained value was rounded to 2 decimal places to match the reported value."
reportObject <- reproCheck(reportedValue = "1.99", obtainedValue = filter(desc_out, condition == 1) %>% select(SD), valueType = 'sd')
## [1] "MINOR_ERROR for sd. The reported value (1.99) and the obtained value (2) differed by 0.5%. Note that the obtained value was rounded to 2 decimal places to match the reported value."
reportObject <- reproCheck(reportedValue = "1.67", obtainedValue = filter(desc_out, condition == 0) %>% select(M), valueType = 'mean')
## [1] "MATCH for mean. The reported value (1.67) and the obtained value (1.67) differed by 0%. Note that the obtained value was rounded to 2 decimal places to match the reported value."
reportObject <- reproCheck(reportedValue = "0.92", obtainedValue = filter(desc_out, condition == 0) %>% select(SD), valueType = 'sd')
## [1] "MATCH for sd. The reported value (0.92) and the obtained value (0.92) differed by 0%. Note that the obtained value was rounded to 2 decimal places to match the reported value."

t(52) = 10.41, p < .001

t.out <- t.test(filter(d, condition == 1) %>% 
                  pull(task_intense), filter(d, condition == 0) %>% 
                  pull(task_intense), paired = F, var.equal = T)
reportObject <- reproCheck(reportedValue = "52", 
                           obtainedValue = t.out$parameter, valueType = 'df')
## [1] "MATCH for df. The reported value (52) and the obtained value (52) differed by 0%. Note that the obtained value was rounded to 0 decimal places to match the reported value."
reportObject <- reproCheck(reportedValue = "10.41", 
                           obtainedValue = t.out$statistic, valueType = 't')
## [1] "MATCH for t. The reported value (10.41) and the obtained value (10.41) differed by 0%. Note that the obtained value was rounded to 2 decimal places to match the reported value."
reportObject <- reproCheck(reportedValue = "<.001", 
                           obtainedValue = t.out$p.value, valueType = 'p', 
                           eyeballCheck = TRUE)
## [1] "MATCH for p. Eyeball comparison only."

Reported unpleasantness was also greater in the pain condition (M = 6.00, SD = 1.96) than in the no-pain condition (M = 1.74, SD = 1.19),

desc_out <- d %>% 
  group_by(condition) %>% 
  summarise(M = mean(task_unpleasant), SD = sd(task_unpleasant))
reportObject <- reproCheck(reportedValue = "6.00", 
                           obtainedValue = filter(desc_out, condition == 1) %>% 
                             select(M), valueType = 'mean')
## [1] "MATCH for mean. The reported value (6) and the obtained value (6) differed by 0%. Note that the obtained value was rounded to 2 decimal places to match the reported value."
reportObject <- reproCheck(reportedValue = "1.96", 
                           obtainedValue = filter(desc_out, condition == 1) %>% 
                             select(SD), valueType = 'sd')
## [1] "MATCH for sd. The reported value (1.96) and the obtained value (1.96) differed by 0%. Note that the obtained value was rounded to 2 decimal places to match the reported value."
reportObject <- reproCheck(reportedValue = "1.74", 
                           obtainedValue = filter(desc_out, condition == 0) %>% 
                             select(M), valueType = 'mean')
## [1] "MATCH for mean. The reported value (1.74) and the obtained value (1.74) differed by 0%. Note that the obtained value was rounded to 2 decimal places to match the reported value."
reportObject <- reproCheck(reportedValue = "1.19", 
                           obtainedValue = filter(desc_out, condition == 0) %>% 
                             select(SD), valueType = 'sd')
## [1] "MINOR_ERROR for sd. The reported value (1.19) and the obtained value (1.2) differed by 0.84%. Note that the obtained value was rounded to 2 decimal places to match the reported value."

t(52) = 9.63, p = .001.

t.out <- t.test(filter(d, condition == 1) %>% 
                  pull(task_unpleasant), filter(d, condition == 0) %>% 
                  pull(task_unpleasant), paired = F, var.equal = T)
reportObject <- reproCheck(reportedValue = "52",
                           obtainedValue = t.out$parameter, valueType = 'df')
## [1] "MATCH for df. The reported value (52) and the obtained value (52) differed by 0%. Note that the obtained value was rounded to 0 decimal places to match the reported value."
reportObject <- reproCheck(reportedValue = "9.63", 
                           obtainedValue = t.out$statistic, valueType = 't')
## [1] "MATCH for t. The reported value (9.63) and the obtained value (9.63) differed by 0%. Note that the obtained value was rounded to 2 decimal places to match the reported value."
reportObject <- reproCheck(reportedValue = ".001", 
                           obtainedValue = t.out$p.value, valueType = 'p')
## [1] "MAJOR_ERROR for p. The reported value (0.001) and the obtained value (0) differed by 100%. Note that the obtained value was rounded to 3 decimal places to match the reported value."

There were no significant differences between conditions in positive affect (pain condition: M = 3.05, SD = 0.82; no-pain condition: M = 2.80, SD = 0.83),

desc_out <- d %>% group_by(condition) %>% 
  summarise(M = mean(Pos_PANAS), 
            SD = sd(Pos_PANAS))
reportObject <- reproCheck(reportedValue = "3.05", 
                           obtainedValue = filter(desc_out, condition == 1) %>% 
                             select(M), valueType = 'mean')
## [1] "MATCH for mean. The reported value (3.05) and the obtained value (3.05) differed by 0%. Note that the obtained value was rounded to 2 decimal places to match the reported value."
reportObject <- reproCheck(reportedValue = "0.82", 
                           obtainedValue = filter(desc_out, condition == 1) %>% 
                             select(SD), valueType = 'sd')
## [1] "MATCH for sd. The reported value (0.82) and the obtained value (0.82) differed by 0%. Note that the obtained value was rounded to 2 decimal places to match the reported value."
reportObject <- reproCheck(reportedValue = "2.80", 
                           obtainedValue = filter(desc_out, condition == 0) %>% 
                             select(M), valueType = 'mean')
## [1] "MATCH for mean. The reported value (2.8) and the obtained value (2.8) differed by 0%. Note that the obtained value was rounded to 2 decimal places to match the reported value."
reportObject <- reproCheck(reportedValue = "0.83", 
                           obtainedValue = filter(desc_out, condition == 0) %>% 
                             select(SD), valueType = 'sd')
## [1] "MATCH for sd. The reported value (0.83) and the obtained value (0.83) differed by 0%. Note that the obtained value was rounded to 2 decimal places to match the reported value."

t(52) = 1.09, p = .283,

t.out <- t.test(filter(d, condition == 1) %>% 
                  pull(Pos_PANAS), filter(d, condition == 0) %>% 
                  pull(Pos_PANAS), paired = F, var.equal = T)
reportObject <- reproCheck(reportedValue = "52", 
                           obtainedValue = t.out$parameter, 
                           valueType = 'df')
## [1] "MATCH for df. The reported value (52) and the obtained value (52) differed by 0%. Note that the obtained value was rounded to 0 decimal places to match the reported value."
reportObject <- reproCheck(reportedValue = "1.09", 
                           obtainedValue = t.out$statistic, 
                           valueType = 't')
## [1] "MATCH for t. The reported value (1.09) and the obtained value (1.09) differed by 0%. Note that the obtained value was rounded to 2 decimal places to match the reported value."
reportObject <- reproCheck(reportedValue = ".283", 
                           obtainedValue = t.out$p.value, 
                           valueType = 'p')
## [1] "MATCH for p. The reported value (0.283) and the obtained value (0.283) differed by 0%. Note that the obtained value was rounded to 3 decimal places to match the reported value."

or negative affect (pain condition: M = 1.34, SD = 0.45; no-pain condition: M = 1.27, SD = 0.37),

desc_out <- d %>% 
  group_by(condition) %>% 
  summarise(M = mean(Neg_PANAS), SD = sd(Neg_PANAS))
reportObject <- reproCheck(reportedValue = "1.34", 
                           obtainedValue = filter(desc_out, condition == 1) %>% 
                             select(M), valueType = 'mean')
## [1] "MATCH for mean. The reported value (1.34) and the obtained value (1.34) differed by 0%. Note that the obtained value was rounded to 2 decimal places to match the reported value."
reportObject <- reproCheck(reportedValue = "0.45", 
                           obtainedValue = filter(desc_out, condition == 1) %>% 
                             select(SD), valueType = 'sd')
## [1] "MATCH for sd. The reported value (0.45) and the obtained value (0.45) differed by 0%. Note that the obtained value was rounded to 2 decimal places to match the reported value."
reportObject <- reproCheck(reportedValue = "1.27", 
                           obtainedValue = filter(desc_out, condition == 0) %>% 
                             select(M), valueType = 'mean')
## [1] "MATCH for mean. The reported value (1.27) and the obtained value (1.27) differed by 0%. Note that the obtained value was rounded to 2 decimal places to match the reported value."
reportObject <- reproCheck(reportedValue = "0.37", 
                           obtainedValue = filter(desc_out, condition == 0) %>% 
                             select(SD), valueType = 'sd')
## [1] "MATCH for sd. The reported value (0.37) and the obtained value (0.37) differed by 0%. Note that the obtained value was rounded to 2 decimal places to match the reported value."

t(52) = 0.60, p = .554.

t.out <- t.test(filter(d, condition == 1) %>% 
                  pull(Neg_PANAS), filter(d, condition == 0) %>% 
                  pull(Neg_PANAS), paired = F, var.equal = T)
reportObject <- reproCheck(reportedValue = "52", 
                           obtainedValue = t.out$parameter, 
                           valueType = 'df')
## [1] "MATCH for df. The reported value (52) and the obtained value (52) differed by 0%. Note that the obtained value was rounded to 0 decimal places to match the reported value."
reportObject <- reproCheck(reportedValue = "0.60", 
                           obtainedValue = t.out$statistic, 
                           valueType = 't')
## [1] "MATCH for t. The reported value (0.6) and the obtained value (0.6) differed by 0%. Note that the obtained value was rounded to 2 decimal places to match the reported value."
reportObject <- reproCheck(reportedValue = ".554", 
                           obtainedValue = t.out$p.value, 
                           valueType = 'p')
## [1] "MATCH for p. The reported value (0.554) and the obtained value (0.554) differed by 0%. Note that the obtained value was rounded to 3 decimal places to match the reported value."

Compared with the control tasks, the pain tasks were viewed as marginally more threatening (pain tasks: M = 1.36, SD = 0.58; control tasks: M = 1.11, SD = 0.30),

desc_out <- d %>% 
  group_by(condition) %>% 
  summarise(M = mean(Threat_TOT), 
            SD = sd(Threat_TOT))
reportObject <- reproCheck(reportedValue = "1.36", 
                           obtainedValue = filter(desc_out, condition == 1) %>% 
                             select(M), valueType = 'mean')
## [1] "MATCH for mean. The reported value (1.36) and the obtained value (1.36) differed by 0%. Note that the obtained value was rounded to 2 decimal places to match the reported value."
reportObject <- reproCheck(reportedValue = "0.58", 
                           obtainedValue = filter(desc_out, condition == 1) %>% 
                             select(SD), valueType = 'sd')
## [1] "MATCH for sd. The reported value (0.58) and the obtained value (0.58) differed by 0%. Note that the obtained value was rounded to 2 decimal places to match the reported value."
reportObject <- reproCheck(reportedValue = "1.11", 
                           obtainedValue = filter(desc_out, condition == 0) %>% 
                             select(M), valueType = 'mean')
## [1] "MATCH for mean. The reported value (1.11) and the obtained value (1.11) differed by 0%. Note that the obtained value was rounded to 2 decimal places to match the reported value."
reportObject <- reproCheck(reportedValue = "0.30", 
                           obtainedValue = filter(desc_out, condition == 0) %>% 
                             select(SD), valueType = 'sd')
## [1] "MATCH for sd. The reported value (0.3) and the obtained value (0.3) differed by 0%. Note that the obtained value was rounded to 2 decimal places to match the reported value."

t(52) = 1.97, p = .054,

t.out <- t.test(filter(d, condition == 1) %>% 
                  pull(Threat_TOT), filter(d, condition == 0) %>% 
                  pull(Threat_TOT), paired = F, var.equal = T)
reportObject <- reproCheck(reportedValue = "52", 
                           obtainedValue = t.out$parameter, valueType = 'df')
## [1] "MATCH for df. The reported value (52) and the obtained value (52) differed by 0%. Note that the obtained value was rounded to 0 decimal places to match the reported value."
reportObject <- reproCheck(reportedValue = "1.97", 
                           obtainedValue = t.out$statistic, valueType = 't')
## [1] "MATCH for t. The reported value (1.97) and the obtained value (1.97) differed by 0%. Note that the obtained value was rounded to 2 decimal places to match the reported value."
reportObject <- reproCheck(reportedValue = ".054", 
                           obtainedValue = t.out$p.value, valueType = 'p')
## [1] "MATCH for p. The reported value (0.054) and the obtained value (0.054) differed by 0%. Note that the obtained value was rounded to 3 decimal places to match the reported value."

but not more challenging (pain tasks: M = 2.67, SD = 0.87; control tasks: M = 2.37, SD = 0.91),

desc_out <- d %>% 
  group_by(condition) %>% 
  summarise(M = mean(Challenge_TOT), SD = sd(Challenge_TOT))
reportObject <- reproCheck(reportedValue = "2.67", 
                           obtainedValue = filter(desc_out, condition == 1) %>% 
                             select(M), valueType = 'mean')
## [1] "MATCH for mean. The reported value (2.67) and the obtained value (2.67) differed by 0%. Note that the obtained value was rounded to 2 decimal places to match the reported value."
reportObject <- reproCheck(reportedValue = "0.87", 
                           obtainedValue = filter(desc_out, condition == 1) %>% 
                             select(SD), valueType = 'sd')
## [1] "MATCH for sd. The reported value (0.87) and the obtained value (0.87) differed by 0%. Note that the obtained value was rounded to 2 decimal places to match the reported value."
reportObject <- reproCheck(reportedValue = "2.37", 
                           obtainedValue = filter(desc_out, condition == 0) %>% 
                             select(M), valueType = 'mean')
## [1] "MINOR_ERROR for mean. The reported value (2.37) and the obtained value (2.38) differed by 0.42%. Note that the obtained value was rounded to 2 decimal places to match the reported value."
reportObject <- reproCheck(reportedValue = "0.91", 
                           obtainedValue = filter(desc_out, condition == 0) %>% 
                             select(SD), valueType = 'sd')
## [1] "MATCH for sd. The reported value (0.91) and the obtained value (0.91) differed by 0%. Note that the obtained value was rounded to 2 decimal places to match the reported value."

t(52) = 1.22, p = .227.

t.out <- t.test(filter(d, condition == 1) %>% 
                  pull(Challenge_TOT), filter(d, condition == 0) %>% 
                  pull(Challenge_TOT), paired = F, var.equal = T)
reportObject <- reproCheck(reportedValue = "52", 
                           obtainedValue = t.out$parameter, valueType = 'df')
## [1] "MATCH for df. The reported value (52) and the obtained value (52) differed by 0%. Note that the obtained value was rounded to 0 decimal places to match the reported value."
reportObject <- reproCheck(reportedValue = "1.22", 
                           obtainedValue = t.out$statistic, valueType = 't')
## [1] "MATCH for t. The reported value (1.22) and the obtained value (1.22) differed by 0%. Note that the obtained value was rounded to 2 decimal places to match the reported value."
reportObject <- reproCheck(reportedValue = ".227", 
                           obtainedValue = t.out$p.value, valueType = 'p')
## [1] "MATCH for p. The reported value (0.227) and the obtained value (0.227) differed by 0%. Note that the obtained value was rounded to 3 decimal places to match the reported value."

We predicted that participants who shared a painful experience, compared with those who shared a similar but nonpainful social experience, would feel more bonded together. A one-way analysis of variance (ANOVA) revealed that pain had a medium-sized effect on bonding, F(1, 52) = 4.09, p = .048, d = 0.54 (see Fig. 1);

aov_data <- d %>% select(subid, condition, GroupCohension_TOT)

aov_out <- ezANOVA(aov_data, wid = subid, 
                   dv = GroupCohension_TOT , within = NULL, 
                   between = condition , observed = NULL , diff = NULL, 
                   reverse_diff = FALSE , type = 2)

d.out <- cohensD(filter(aov_data, condition == 0) %>% 
                   pull(GroupCohension_TOT), filter(aov_data, condition == 1) %>% 
                   pull(GroupCohension_TOT))
reportObject <- reproCheck(reportedValue = "1", 
                           obtainedValue = aov_out$ANOVA$DFn, valueType = 'df')
## [1] "MATCH for df. The reported value (1) and the obtained value (1) differed by 0%. Note that the obtained value was rounded to 0 decimal places to match the reported value."
reportObject <- reproCheck(reportedValue = "52", 
                           obtainedValue = aov_out$ANOVA$DFd, valueType = 'df')
## [1] "MATCH for df. The reported value (52) and the obtained value (52) differed by 0%. Note that the obtained value was rounded to 0 decimal places to match the reported value."
reportObject <- reproCheck(reportedValue = "0.048", 
                           obtainedValue = aov_out$ANOVA$p, valueType = 'p')
## [1] "MATCH for p. The reported value (0.048) and the obtained value (0.048) differed by 0%. Note that the obtained value was rounded to 3 decimal places to match the reported value."
reportObject <- reproCheck(reportedValue = "0.54", 
                           obtainedValue = d.out, valueType = 'd')
## [1] "MINOR_ERROR for d. The reported value (0.54) and the obtained value (0.55) differed by 1.85%. Note that the obtained value was rounded to 2 decimal places to match the reported value."

participants in the pain condition reported higher bonding (M = 3.71, SD = 1.01, 95% confidence interval, or CI = [3.33, 4.09]) than did those in the no-pain condition (M = 3.14, SD = 1.09, 95% CI = [2.73, 3.55]).

desc_out <- d %>% group_by(condition) %>% 
  summarise(M = mean(GroupCohension_TOT), SD = sd(GroupCohension_TOT))
reportObject <- reproCheck(reportedValue = "3.71", 
                           obtainedValue = filter(desc_out, condition == 1) %>% 
                             select(M), valueType = 'mean')
## [1] "MATCH for mean. The reported value (3.71) and the obtained value (3.71) differed by 0%. Note that the obtained value was rounded to 2 decimal places to match the reported value."
reportObject <- reproCheck(reportedValue = "1.01", 
                           obtainedValue = filter(desc_out, condition == 1) %>% 
                             select(SD), valueType = 'sd')
## [1] "MATCH for sd. The reported value (1.01) and the obtained value (1.01) differed by 0%. Note that the obtained value was rounded to 2 decimal places to match the reported value."
ci.out <- t.test(filter(aov_data, condition == 1) %>% 
                   pull(GroupCohension_TOT))$conf.int

reportObject <- reproCheck(reportedValue = "3.33", 
                           obtainedValue = ci.out[1], valueType = 'ci')
## [1] "MINOR_ERROR for ci. The reported value (3.33) and the obtained value (3.32) differed by 0.3%. Note that the obtained value was rounded to 2 decimal places to match the reported value."
reportObject <- reproCheck(reportedValue = "4.09", 
                           obtainedValue = ci.out[2], valueType = 'ci')
## [1] "MINOR_ERROR for ci. The reported value (4.09) and the obtained value (4.11) differed by 0.49%. Note that the obtained value was rounded to 2 decimal places to match the reported value."
reportObject <- reproCheck(reportedValue = "3.14", 
                           obtainedValue = filter(desc_out, condition == 0) %>% 
                             select(M), valueType = 'mean')
## [1] "MATCH for mean. The reported value (3.14) and the obtained value (3.14) differed by 0%. Note that the obtained value was rounded to 2 decimal places to match the reported value."
reportObject <- reproCheck(reportedValue = "1.09", 
                           obtainedValue = filter(desc_out, condition == 0) %>% 
                             select(SD), valueType = 'sd')
## [1] "MATCH for sd. The reported value (1.09) and the obtained value (1.09) differed by 0%. Note that the obtained value was rounded to 2 decimal places to match the reported value."
ci.out <- t.test(filter(aov_data, condition == 0) %>% 
                   pull(GroupCohension_TOT))$conf.int

reportObject <- reproCheck(reportedValue = "2.73", 
                           obtainedValue = ci.out[1], valueType = 'ci')
## [1] "MINOR_ERROR for ci. The reported value (2.73) and the obtained value (2.71) differed by 0.73%. Note that the obtained value was rounded to 2 decimal places to match the reported value."
reportObject <- reproCheck(reportedValue = "3.55", 
                           obtainedValue = ci.out[2], valueType = 'ci')
## [1] "MINOR_ERROR for ci. The reported value (3.55) and the obtained value (3.57) differed by 0.56%. Note that the obtained value was rounded to 2 decimal places to match the reported value."

Step 5: Conclusion

This reproducibility check was largely a success. There were some difficulties mapping the reported analyses to the variable names in the data file, however these were resolved with a bit of guesswork.

There was one major error where a p value was reported as = .001 but we obtained 3.695211e-13. It seems very likely the authors meant to report p <.001 as the reported t-value is consistent with this significance level (the authors have confirmed over e-mail that it was probably a typo).

Author_Assistance = TRUE # was author assistance provided? (if so, enter TRUE)

Insufficient_Information_Errors <- 0 # how many discrete insufficient information issues did you encounter?

# Assess the causal locus (discrete reproducibility issues) of any reproducibility errors. Note that there doesn't necessarily have to be a one-to-one correspondance between discrete reproducibility issues and reproducibility errors. For example, it could be that the original article neglects to mention that a Greenhouse-Geisser correct was applied to ANOVA outcomes. This might result in multiple reproducibility errors, but there is a single causal locus (discrete reproducibility issue).

locus_typo <- 1 # how many discrete issues did you encounter that related to typographical errors?
locus_specification <- 0 # how many discrete issues did you encounter that related to incomplete, incorrect, or unclear specification of the original analyses?
locus_analysis <- 0 # how many discrete issues did you encounter that related to errors in the authors' original analyses?
locus_data <- 0 # how many discrete issues did you encounter that related to errors in the data files shared by the authors?
locus_unidentified <- 0 # how many discrete issues were there for which you could not identify the cause

# How many of the above issues were resolved through author assistance?
locus_typo_resolved <- 0 # how many discrete issues did you encounter that related to typographical errors?
locus_specification_resolved <- 0 # how many discrete issues did you encounter that related to incomplete, incorrect, or unclear specification of the original analyses?
locus_analysis_resolved <- 0 # how many discrete issues did you encounter that related to errors in the authors' original analyses?
locus_data_resolved <- 0 # how many discrete issues did you encounter that related to errors in the data files shared by the authors?
locus_unidentified_resolved <- 0 # how many discrete issues were there for which you could not identify the cause

Affects_Conclusion <- FALSE # Do any reproducibility issues encounter appear to affect the conclusions made in the original article? TRUE, FALSE, or NA. This is a subjective judgement, but you should taking into account multiple factors, such as the presence/absence of decision errors, the number of target outcomes that could not be reproduced, the type of outcomes that could or could not be reproduced, the difference in magnitude of effect sizes, and the predictions of the specific hypothesis under scrutiny.
reportObject <- reportObject %>%
  filter(dummyRow == FALSE) %>% # remove the dummy row
  select(-dummyRow) %>% # remove dummy row designation
  mutate(articleID = articleID) %>% # add variables to report 
  select(articleID, everything()) # make articleID first column

# decide on final outcome
if(any(!(reportObject$comparisonOutcome %in% c("MATCH", "MINOR_ERROR"))) | Insufficient_Information_Errors > 0){
  finalOutcome <- "Failure without author assistance"
  if(Author_Assistance == T){
    finalOutcome <- "Failure despite author assistance"
  }
}else{
  finalOutcome <- "Success without author assistance"
  if(Author_Assistance == T){
    finalOutcome <- "Success with author assistance"
  }
}

# collate report extra details
reportExtras <- data.frame(articleID, pilotNames, copilotNames, pilotTTC, copilotTTC, pilotStartDate, copilotStartDate, completionDate, Author_Assistance, finalOutcome, Insufficient_Information_Errors, locus_typo, locus_specification, locus_analysis, locus_data, locus_unidentified, locus_typo_resolved, locus_specification_resolved, locus_analysis_resolved, locus_data_resolved, locus_unidentified_resolved)

# save report objects
if(reportType == "pilot"){
  write_csv(reportObject, "pilotReportDetailed.csv")
  write_csv(reportExtras, "pilotReportExtras.csv")
}

if(reportType == "final"){
  write_csv(reportObject, "finalReportDetailed.csv")
  write_csv(reportExtras, "finalReportExtras.csv")
}

Session information

devtools::session_info()
## ─ Session info ───────────────────────────────────────────────────────────────
##  setting  value                       
##  version  R version 4.0.0 (2020-04-24)
##  os       macOS Catalina 10.15.4      
##  system   x86_64, darwin17.0          
##  ui       X11                         
##  language (EN)                        
##  collate  en_US.UTF-8                 
##  ctype    en_US.UTF-8                 
##  tz       Europe/London               
##  date     2020-05-06                  
## 
## ─ Packages ───────────────────────────────────────────────────────────────────
##  package      * version  date       lib
##  abind          1.4-5    2016-07-21 [1]
##  assertthat     0.2.1    2019-03-21 [1]
##  backports      1.1.6    2020-04-05 [1]
##  boot           1.3-24   2019-12-20 [1]
##  broom          0.5.6    2020-04-20 [1]
##  callr          3.4.3    2020-03-28 [1]
##  car            3.0-7    2020-03-11 [1]
##  carData        3.0-3    2019-11-16 [1]
##  cellranger     1.1.0    2016-07-27 [1]
##  cli            2.0.2    2020-02-28 [1]
##  colorspace     1.4-1    2019-03-18 [1]
##  crayon         1.3.4    2017-09-16 [1]
##  curl           4.3      2019-12-02 [1]
##  data.table     1.12.8   2019-12-09 [1]
##  DBI            1.1.0    2019-12-15 [1]
##  dbplyr         1.4.3    2020-04-19 [1]
##  desc           1.2.0    2018-05-01 [1]
##  devtools       2.3.0    2020-04-10 [1]
##  digest         0.6.25   2020-02-23 [1]
##  dplyr        * 0.8.5    2020-03-07 [1]
##  ellipsis       0.3.0    2019-09-20 [1]
##  evaluate       0.14     2019-05-28 [1]
##  ez           * 4.4-0    2016-11-02 [1]
##  fansi          0.4.1    2020-01-08 [1]
##  forcats      * 0.5.0    2020-03-01 [1]
##  foreign        0.8-78   2020-04-13 [1]
##  fs             1.4.1    2020-04-04 [1]
##  generics       0.0.2    2018-11-29 [1]
##  ggplot2      * 3.3.0    2020-03-05 [1]
##  glue           1.4.0    2020-04-03 [1]
##  gtable         0.3.0    2019-03-25 [1]
##  haven        * 2.2.0    2019-11-08 [1]
##  hms            0.5.3    2020-01-08 [1]
##  htmltools      0.4.0    2019-10-04 [1]
##  httr           1.4.1    2019-08-05 [1]
##  jsonlite       1.6.1    2020-02-02 [1]
##  knitr        * 1.28     2020-02-06 [1]
##  lattice        0.20-41  2020-04-02 [1]
##  lifecycle      0.2.0    2020-03-06 [1]
##  lme4           1.1-23   2020-04-07 [1]
##  lsr          * 0.5      2015-03-02 [1]
##  lubridate      1.7.8    2020-04-06 [1]
##  magrittr       1.5      2014-11-22 [1]
##  MASS           7.3-51.5 2019-12-20 [1]
##  Matrix         1.2-18   2019-11-27 [1]
##  memoise        1.1.0    2017-04-21 [1]
##  mgcv           1.8-31   2019-11-09 [1]
##  minqa          1.2.4    2014-10-09 [1]
##  modelr         0.1.7    2020-04-30 [1]
##  munsell        0.5.0    2018-06-12 [1]
##  nlme           3.1-147  2020-04-13 [1]
##  nloptr         1.2.2.1  2020-03-11 [1]
##  openxlsx       4.1.4    2019-12-06 [1]
##  pillar         1.4.4    2020-05-05 [1]
##  pkgbuild       1.0.7    2020-04-25 [1]
##  pkgconfig      2.0.3    2019-09-22 [1]
##  pkgload        1.0.2    2018-10-29 [1]
##  plyr           1.8.6    2020-03-03 [1]
##  prettyunits    1.1.1    2020-01-24 [1]
##  processx       3.4.2    2020-02-09 [1]
##  ps             1.3.2    2020-02-13 [1]
##  purrr        * 0.3.4    2020-04-17 [1]
##  R6             2.4.1    2019-11-12 [1]
##  Rcpp           1.0.4.6  2020-04-09 [1]
##  readr        * 1.3.1    2018-12-21 [1]
##  readxl       * 1.3.1    2019-03-13 [1]
##  remotes        2.1.1    2020-02-15 [1]
##  reprex         0.3.0    2019-05-16 [1]
##  ReproReports * 0.1      2020-05-06 [1]
##  reshape2       1.4.4    2020-04-09 [1]
##  rio            0.5.16   2018-11-26 [1]
##  rlang          0.4.6    2020-05-02 [1]
##  rmarkdown      2.1      2020-01-20 [1]
##  rprojroot      1.3-2    2018-01-03 [1]
##  rstudioapi     0.11     2020-02-07 [1]
##  rvest          0.3.5    2019-11-08 [1]
##  scales         1.1.0    2019-11-18 [1]
##  sessioninfo    1.1.1    2018-11-05 [1]
##  statmod        1.4.34   2020-02-17 [1]
##  stringi        1.4.6    2020-02-17 [1]
##  stringr      * 1.4.0    2019-02-10 [1]
##  testthat       2.3.2    2020-03-02 [1]
##  tibble       * 3.0.1    2020-04-20 [1]
##  tidyr        * 1.0.2    2020-01-24 [1]
##  tidyselect     1.0.0    2020-01-27 [1]
##  tidyverse    * 1.3.0    2019-11-21 [1]
##  usethis        1.6.1    2020-04-29 [1]
##  utf8           1.1.4    2018-05-24 [1]
##  vctrs          0.2.4    2020-03-10 [1]
##  withr          2.2.0    2020-04-20 [1]
##  xfun           0.13     2020-04-13 [1]
##  xml2           1.3.2    2020-04-23 [1]
##  yaml           2.2.1    2020-02-01 [1]
##  zip            2.0.4    2019-09-01 [1]
##  source                                     
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  Github (METRICS-CARPS/CARPSreports@3277f85)
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
##  CRAN (R 4.0.0)                             
## 
## [1] /Library/Frameworks/R.framework/Versions/4.0/Resources/library