tdata <- read_csv("exp_data.csv")
## Rows: 111 Columns: 20
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (13): subj_code, desktop_conf, attent_conf, intro_check, structure, fir...
## dbl (6): condition, red_caused_rating, yellow_caused_rating, red_maintaine...
## dttm (1): recorded_at
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
Exclude subjects who failed at least one control questions
tdata <- subset(tdata, intro_check == "2: A green ball lies on a brown wooden board. Then a yellow ball falls down onto the wooden board. The green ball then shoots into the air.")
tdata <- subset(tdata, timing_check_correct == "correct")
tdata <- subset(tdata, learning_check_correct == "correct")
# demographics
min(tdata$age)
## [1] 19
max(tdata$age)
## [1] 76
mean(tdata$age)
## [1] 41.83
sd(tdata$age)
## [1] 13.3038
# 1 = male, 2 = female, 3 = other
table(tdata$gender)
##
## 1: male 2: female 3: non-binary
## 55 44 1
1 = male, 2 = female, 3 = non-binary, 4 = prefer not to say
Check n in each condition:
table(tdata$structure, tdata$first_object)
##
## red yellow
## irreversible 25 25
## reversible 25 25
Factorize:
tdata$structure <- factor(tdata$structure, levels = c("irreversible", "reversible"), labels = c("irreversible", "reversible"))
Relabel rating columns for red and yellow entity according to “first object” (so that they are called first_obj_rating and second_obj_rating):
red_first <- subset(tdata, first_object == "red")
colnames(red_first)[10] ="first_caused_rating"
colnames(red_first)[11] ="second_caused_rating"
colnames(red_first)[12] = "first_maintained_rating"
colnames(red_first)[13] = "second_maintained_rating"
yellow_first <- subset(tdata, first_object == "yellow")
colnames(yellow_first)[10] ="second_caused_rating"
colnames(yellow_first)[11] ="first_caused_rating"
colnames(yellow_first)[12] = "second_maintained_rating"
colnames(yellow_first)[13] = "first_maintained_rating"
tdata <- rbind(red_first, yellow_first)
Make a subset containing only the columns relevant for analyses and turn into long format:
# Subset:
tdata_sub <- subset(tdata, select = c("subj_code","structure","first_caused_rating", "second_caused_rating", "first_maintained_rating", "second_maintained_rating"))
# into long format:
library(tidyr)
tdata_long <- gather(tdata_sub, statement, rating, 3:6)
# factorize entity
tdata_long$statement <- factor(tdata_long$statement, levels = c("first_caused_rating", "second_caused_rating", "first_maintained_rating", "second_maintained_rating")
, labels = c("first \ncaused", "second \ncaused", "first \nmaintained", "second \nmaintained"))
# load stringr library
library(stringr)
# Split name column into firstname and last name
tdata_long[c('cause', 'role')] <- str_split_fixed(tdata_long$statement, ' ', 2)
tdata_long$role<- factor(tdata_long$role, levels = c("\ncaused", "\nmaintained")
, labels = c("caused", "maintained"))
tdata_long$cause<- factor(tdata_long$cause, levels = c("first", "second")
, labels = c("first", "second"))
myTheme <- theme(plot.title = element_text(face="bold", size = 22),
axis.title.x = element_text(size = 20),
axis.title.y = element_text(size = 20),
axis.text.x = element_text(size = 14, angle = 0),
axis.text.y = element_text(size = 16, angle = 0),
legend.text = element_text(size = 18),
legend.title = element_text(face = "bold", size = 18),
strip.text.x = element_text(size = 18),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.background = element_blank(),
axis.line.x = element_line(colour = "black"),
axis.line.y = element_line(colour = "black"),
axis.text = element_text(colour ="black"),
axis.ticks = element_line(colour ="black"))
tdata_sub <- tdata_long
library(see)
## first, turn sID into a factor
tdata_sub$subj_code <- factor(tdata_sub$subj_code)
pd <- position_dodge(width = 0.3)
tdata_sub$valueJitter <- jitter(tdata_sub$rating, factor = 0.01, amount = 0.004)
theme_set(theme_light(base_size = 20, base_family = "Poppins"))
g <- ggplot(tdata_sub, aes(x = statement, y = valueJitter)) +
guides(fill=FALSE)+
facet_grid( ~ structure,labeller = label_both)+
scale_y_continuous(limits = c(-0.3, 10.3), breaks=seq(0, 10, 1), expand = c(0,0)) +
geom_jitter(aes(color = structure), alpha = 0.5, width = 0.15, height = 0.2) +
stat_summary(aes(y = rating, group=1), fun.data = mean_cl_boot,
geom = "errorbar", width = 0, size = 1) +
stat_summary(aes(y = rating, group=1, color = structure), fun.y=mean, geom="line",
shape = 22, size = 1.5, alpha = .7)+
stat_summary(aes(y = rating, group=1, fill = structure), fun.y=mean, geom="point",
color = "black", shape = 22, size = 3, group=1, alpha = 1)+
stat_summary(aes(y = rating,group=1), fun.y=median, geom="point", color = "black", shape = 3, size = 4,
group=1, alpha = 1, position = position_dodge(width = 0.5))+
labs(x = "Causal statement", y = "Agreement Rating") +
scale_color_manual(name = "Strength",values=c("#66c2a5", "#e78ac3", "#8da0cb", "#a6d854"))+
scale_fill_manual(name = "Strength",values=c("#66c2a5", "#e78ac3", "#8da0cb", "#a6d854"))+
annotate("text", x = 0.5, y = 2, label = c("completely disagree"), angle = 90)+
annotate("text", x = 0.5, y = 8.2, label = c("completely agree"), angle = 90)+
theme(legend.position = "none")+
myTheme+
theme(panel.grid.major = element_line(color = "lightgrey",
size = 0.5,
linetype = 'dotted'))+
stat_summary(aes(label=round(after_stat(y),2)), fun.y=mean, geom="text", size=5,
vjust = -4)
## Warning: The `<scale>` argument of `guides()` cannot be `FALSE`. Use "none" instead as
## of ggplot2 3.3.4.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
## Warning: The `fun.y` argument of `stat_summary()` is deprecated as of ggplot2 3.3.0.
## ℹ Please use the `fun` argument instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
## Warning in stat_summary(aes(y = rating, group = 1, color = structure), fun.y =
## mean, : Ignoring unknown parameters: `shape`
## Warning: The `size` argument of `element_line()` is deprecated as of ggplot2 3.4.0.
## ℹ Please use the `linewidth` argument instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
g
#ggsave("results_means_mainDV.svg",width=12,height=5)
#ggsave("results_means_mainDV.pdf",width=12,height=5)
g
library(ggridges)
## Warning: Paket 'ggridges' wurde unter R Version 4.2.3 erstellt
g2 <- ggplot(tdata_long, aes(x = rating, y = statement, fill = structure)) +
facet_grid( ~ structure,labeller = label_both)+
scale_x_continuous(breaks = seq(0, 10, 1))+
geom_density_ridges(alpha = 0.5)+
scale_fill_manual(values=c("#66c2a5", "#e78ac3", "#8da0cb", "#a6d854"))+
labs(x = "Agreement Rating", y = "Causal Statement") +
scale_y_discrete(limits=rev)+
myTheme+
theme_light(base_family = "Poppins", base_size = 20)+
theme(panel.grid = element_blank(), axis.text = element_text(colour ="black"))+
theme(legend.position="none",
legend.title=element_blank(),legend.key.width = unit(1.95, 'cm'))+
theme(axis.text.y = element_text(size = 14, angle = 0))+
annotate("text", y = 0.5, x = 1, label = c("completely disagree"), angle = 0)+
annotate("text", y = 0.5, x = 9, label = c("completely agree"), angle = 0)
g2
## Picking joint bandwidth of 0.946
## Picking joint bandwidth of 0.702
#ggsave("results_dist.svg",width=12,height=5)
#ggsave("results_dist.pdf",width=12,height=5)
library(afex)
## Lade nötiges Paket: lme4
## Lade nötiges Paket: Matrix
##
## Attache Paket: 'Matrix'
## Die folgenden Objekte sind maskiert von 'package:tidyr':
##
## expand, pack, unpack
## Das folgende Objekt ist maskiert 'package:reshape':
##
## expand
## ************
## Welcome to afex. For support visit: http://afex.singmann.science/
## - Functions for ANOVAs: aov_car(), aov_ez(), and aov_4()
## - Methods for calculating p-values with mixed(): 'S', 'KR', 'LRT', and 'PB'
## - 'afex_aov' and 'mixed' objects can be passed to emmeans() for follow-up tests
## - NEWS: emmeans() for ANOVA models now uses model = 'multivariate' as default.
## - Get and set global package options with: afex_options()
## - Set orthogonal sum-to-zero contrasts globally: set_sum_contrasts()
## - For example analyses see: browseVignettes("afex")
## ************
##
## Attache Paket: 'afex'
## Das folgende Objekt ist maskiert 'package:lme4':
##
## lmer
library(emmeans)
a1 <- aov_car(rating ~ structure*statement + Error(subj_code/statement), tdata_long, anova_table = list(es = "pes"))
## Contrasts set to contr.sum for the following variables: structure
a1
## Anova Table (Type 3 tests)
##
## Response: rating
## Effect df MSE F pes p.value
## 1 structure 1, 98 9.68 26.61 *** .214 <.001
## 2 statement 2.67, 261.70 9.23 142.29 *** .592 <.001
## 3 structure:statement 2.67, 261.70 9.23 10.65 *** .098 <.001
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '+' 0.1 ' ' 1
##
## Sphericity correction method: GG
Predicted interaction effect is significant, but other main effects should also be visualized.
Visualize Main effect of structure (causal reversibility):
tdata_sub <- tdata_long
library(see)
## first, turn sID into a factor
tdata_sub$subj_code <- factor(tdata_sub$subj_code)
pd <- position_dodge(width = 0.3)
tdata_sub$valueJitter <- jitter(tdata_sub$rating, factor = 0.01, amount = 0.004)
theme_set(theme_light(base_size = 20, base_family = "Poppins"))
g <- ggplot(tdata_sub, aes(x = structure, y = valueJitter)) +
guides(fill=FALSE)+
scale_y_continuous(limits = c(-0.3, 10.3), breaks=seq(0, 10, 1), expand = c(0,0)) +
geom_jitter(aes(color = structure), alpha = 0.5, width = 0.15, height = 0.2) +
stat_summary(aes(y = rating, group=1), fun.data = mean_cl_boot,
geom = "errorbar", width = 0, size = 1) +
stat_summary(aes(y = rating, group=1, fill = structure), fun.y=mean, geom="point",
color = "black", shape = 22, size = 3, group=1, alpha = 1)+
stat_summary(aes(y = rating,group=1), fun.y=median, geom="point", color = "black", shape = 3, size = 4,
group=1, alpha = 1, position = position_dodge(width = 0.5))+
labs(x = "Causal Structure", y = "Agreement Rating") +
scale_color_manual(name = "Strength",values=c("#66c2a5", "#e78ac3", "#8da0cb", "#a6d854"))+
scale_fill_manual(name = "Strength",values=c("#66c2a5", "#e78ac3", "#8da0cb", "#a6d854"))+
annotate("text", x = 0.5, y = 2, label = c("completely disagree"), angle = 90)+
annotate("text", x = 0.5, y = 8.2, label = c("completely agree"), angle = 90)+
theme(legend.position = "none")+
myTheme+
theme(panel.grid.major = element_line(color = "lightgrey",
size = 0.5,
linetype = 'dotted'))+
stat_summary(aes(label=round(after_stat(y),2)), fun.y=mean, geom="text", size=5,
vjust = -4)
g
Main effect of statement:
tdata_sub <- tdata_long
library(see)
## first, turn sID into a factor
tdata_sub$subj_code <- factor(tdata_sub$subj_code)
pd <- position_dodge(width = 0.3)
tdata_sub$valueJitter <- jitter(tdata_sub$rating, factor = 0.01, amount = 0.004)
theme_set(theme_light(base_size = 20, base_family = "Poppins"))
g <- ggplot(tdata_sub, aes(x = statement, y = valueJitter)) +
guides(fill=FALSE)+
scale_y_continuous(limits = c(-0.3, 10.3), breaks=seq(0, 10, 1), expand = c(0,0)) +
geom_jitter(aes(color = statement), alpha = 0.5, width = 0.15, height = 0.2) +
stat_summary(aes(y = rating, group=1), fun.data = mean_cl_boot,
geom = "errorbar", width = 0, size = 1) +
#stat_summary(aes(y = rating, group=1, color = structure), fun.y=mean, geom="line",
# shape = 22, size = 1.5, alpha = .7)+
stat_summary(aes(y = rating, group=1, fill = statement), fun.y=mean, geom="point",
color = "black", shape = 22, size = 3, group=1, alpha = 1)+
stat_summary(aes(y = rating,group=1), fun.y=median, geom="point", color = "black", shape = 3, size = 4,
group=1, alpha = 1, position = position_dodge(width = 0.5))+
labs(x = "Causal statement", y = "Agreement Rating") +
scale_color_manual(name = "Strength",values=c("#66c2a5", "#e78ac3", "#8da0cb", "#a6d854"))+
scale_fill_manual(name = "Strength",values=c("#66c2a5", "#e78ac3", "#8da0cb", "#a6d854"))+
annotate("text", x = 0.5, y = 2, label = c("completely disagree"), angle = 90)+
annotate("text", x = 0.5, y = 8.2, label = c("completely agree"), angle = 90)+
theme(legend.position = "none")+
myTheme+
theme(panel.grid.major = element_line(color = "lightgrey",
size = 0.5,
linetype = 'dotted'))+
stat_summary(aes(label=round(after_stat(y),2)), fun.y=mean, geom="text", size=5,
vjust = -4)
g
library(lsmeans)
## The 'lsmeans' package is now basically a front end for 'emmeans'.
## Users are encouraged to switch the rest of the way.
## See help('transition') for more information, including how to
## convert old 'lsmeans' objects and scripts to work with 'emmeans'.
# means
ls2 <- lsmeans(a1, c("structure", "statement"))
ls2
## structure statement lsmean SE df lower.CL upper.CL
## irreversible first..caused 9.62 0.131 98 9.361 9.88
## reversible first..caused 9.80 0.131 98 9.541 10.06
## irreversible second..caused 1.16 0.420 98 0.327 1.99
## reversible second..caused 1.86 0.420 98 1.027 2.69
## irreversible first..maintained 6.44 0.508 98 5.431 7.45
## reversible first..maintained 7.64 0.508 98 6.631 8.65
## irreversible second..maintained 3.60 0.485 98 2.638 4.56
## reversible second..maintained 7.94 0.485 98 6.978 8.90
##
## Confidence level used: 0.95
contrasts <- emmeans(a1, ~ statement|structure)
s <- pairs(contrasts, adjust = "none")
s
## structure = irreversible:
## contrast estimate SE df t.ratio p.value
## first..caused - second..caused 8.46 0.471 98 17.960 <.0001
## first..caused - first..maintained 3.18 0.513 98 6.202 <.0001
## first..caused - second..maintained 6.02 0.511 98 11.774 <.0001
## second..caused - first..maintained -5.28 0.630 98 -8.386 <.0001
## second..caused - second..maintained -2.44 0.645 98 -3.785 0.0003
## first..maintained - second..maintained 2.84 0.643 98 4.420 <.0001
##
## structure = reversible:
## contrast estimate SE df t.ratio p.value
## first..caused - second..caused 7.94 0.471 98 16.856 <.0001
## first..caused - first..maintained 2.16 0.513 98 4.213 0.0001
## first..caused - second..maintained 1.86 0.511 98 3.638 0.0004
## second..caused - first..maintained -5.78 0.630 98 -9.180 <.0001
## second..caused - second..maintained -6.08 0.645 98 -9.432 <.0001
## first..maintained - second..maintained -0.30 0.643 98 -0.467 0.6416
confint(s, level = 0.95)
## structure = irreversible:
## contrast estimate SE df lower.CL upper.CL
## first..caused - second..caused 8.46 0.471 98 7.525 9.395
## first..caused - first..maintained 3.18 0.513 98 2.163 4.197
## first..caused - second..maintained 6.02 0.511 98 5.005 7.035
## second..caused - first..maintained -5.28 0.630 98 -6.530 -4.030
## second..caused - second..maintained -2.44 0.645 98 -3.719 -1.161
## first..maintained - second..maintained 2.84 0.643 98 1.565 4.115
##
## structure = reversible:
## contrast estimate SE df lower.CL upper.CL
## first..caused - second..caused 7.94 0.471 98 7.005 8.875
## first..caused - first..maintained 2.16 0.513 98 1.143 3.177
## first..caused - second..maintained 1.86 0.511 98 0.845 2.875
## second..caused - first..maintained -5.78 0.630 98 -7.030 -4.530
## second..caused - second..maintained -6.08 0.645 98 -7.359 -4.801
## first..maintained - second..maintained -0.30 0.643 98 -1.575 0.975
##
## Confidence level used: 0.95
Planned contrasts in the list above are “first caused - second caused” in each reversibility condition. Both are significant.
Get effect standardized effect sizes for the contrasts
First get the SDs that need to be pooled (and also the correlations between measures for the within-comparisons)
library(dplyr)
tdata_long %>%
group_by(structure, statement) %>%
summarise_at(vars(rating), list(name=sd))
## # A tibble: 8 × 3
## # Groups: structure [2]
## structure statement name
## <fct> <fct> <dbl>
## 1 irreversible "first \ncaused" 1.12
## 2 irreversible "second \ncaused" 2.48
## 3 irreversible "first \nmaintained" 3.74
## 4 irreversible "second \nmaintained" 3.59
## 5 reversible "first \ncaused" 0.670
## 6 reversible "second \ncaused" 3.39
## 7 reversible "first \nmaintained" 3.44
## 8 reversible "second \nmaintained" 3.26
library(dplyr)
tdata %>%
group_by(structure) %>%
summarize(cor=cor(first_caused_rating, second_caused_rating))
## # A tibble: 2 × 2
## structure cor
## <fct> <dbl>
## 1 irreversible -0.337
## 2 reversible -0.219
# using the functions from the MOTE package (see https://matthewbjane.quarto.pub/guide-to-effect-sizes-and-confidence-intervals/Standardized-Mean-Differences.html#sec-repeated-measures-drm)
library(MOTE)
## Warning: Paket 'MOTE' wurde unter R Version 4.2.3 erstellt
# irreversible condition
#structure statement lsmean SE df lower.CL upper.CL
# irreversible first..caused 9.62 0.131 98 9.361 9.88
# irreversible second..caused 1.16 0.420 98 0.327 1.99
stats <- d.dep.t.rm(
m1 = 9.62,
m2 = 1.16,
sd1 = 1.1228608,
sd2 = 2.4773257,
n = 50,
a = 0.05,
r = -0.3371902
)
stats$estimate
## [1] "$d_{rm}$ = 4.54, 95\\% CI [3.60, 5.46]"
# reversible condition
#structure statement lsmean SE df lower.CL upper.CL
# reversible first..caused 9.80 0.131 98 9.541 10.06
# reversible second..caused 1.86 0.420 98 1.027 2.69
stats <- d.dep.t.rm(
m1 = 9.80,
m2 = 1.86,
sd1 = 0.6700594,
sd2 = 3.3867087,
n = 50,
a = 0.05,
r = -0.2194333
)
stats$estimate
## [1] "$d_{rm}$ = 3.45, 95\\% CI [2.71, 4.18]"
Now contrast testing the maintainer ratings in each reversibility condition. The code below will produce a long list from which the correct contrast must be looked up.
contrasts <- emmeans(a1, ~ statement*structure)
s <- pairs(contrasts, adjust = "none")
s
## contrast estimate
## first..caused irreversible - second..caused irreversible 8.46
## first..caused irreversible - first..maintained irreversible 3.18
## first..caused irreversible - second..maintained irreversible 6.02
## first..caused irreversible - first..caused reversible -0.18
## first..caused irreversible - second..caused reversible 7.76
## first..caused irreversible - first..maintained reversible 1.98
## first..caused irreversible - second..maintained reversible 1.68
## second..caused irreversible - first..maintained irreversible -5.28
## second..caused irreversible - second..maintained irreversible -2.44
## second..caused irreversible - first..caused reversible -8.64
## second..caused irreversible - second..caused reversible -0.70
## second..caused irreversible - first..maintained reversible -6.48
## second..caused irreversible - second..maintained reversible -6.78
## first..maintained irreversible - second..maintained irreversible 2.84
## first..maintained irreversible - first..caused reversible -3.36
## first..maintained irreversible - second..caused reversible 4.58
## first..maintained irreversible - first..maintained reversible -1.20
## first..maintained irreversible - second..maintained reversible -1.50
## second..maintained irreversible - first..caused reversible -6.20
## second..maintained irreversible - second..caused reversible 1.74
## second..maintained irreversible - first..maintained reversible -4.04
## second..maintained irreversible - second..maintained reversible -4.34
## first..caused reversible - second..caused reversible 7.94
## first..caused reversible - first..maintained reversible 2.16
## first..caused reversible - second..maintained reversible 1.86
## second..caused reversible - first..maintained reversible -5.78
## second..caused reversible - second..maintained reversible -6.08
## first..maintained reversible - second..maintained reversible -0.30
## SE df t.ratio p.value
## 0.471 98 17.960 <.0001
## 0.513 98 6.202 <.0001
## 0.511 98 11.774 <.0001
## 0.185 98 -0.973 0.3328
## 0.440 98 17.656 <.0001
## 0.525 98 3.773 0.0003
## 0.502 98 3.347 0.0012
## 0.630 98 -8.386 <.0001
## 0.645 98 -3.785 0.0003
## 0.440 98 -19.658 <.0001
## 0.593 98 -1.180 0.2410
## 0.659 98 -9.832 <.0001
## 0.641 98 -10.577 <.0001
## 0.643 98 4.420 <.0001
## 0.525 98 -6.402 <.0001
## 0.659 98 6.949 <.0001
## 0.719 98 -1.669 0.0982
## 0.702 98 -2.136 0.0352
## 0.502 98 -12.352 <.0001
## 0.641 98 2.714 0.0078
## 0.702 98 -5.753 <.0001
## 0.685 98 -6.332 <.0001
## 0.471 98 16.856 <.0001
## 0.513 98 4.213 0.0001
## 0.511 98 3.638 0.0004
## 0.630 98 -9.180 <.0001
## 0.645 98 -9.432 <.0001
## 0.643 98 -0.467 0.6416
confint(s, level = 0.95)
## contrast estimate
## first..caused irreversible - second..caused irreversible 8.46
## first..caused irreversible - first..maintained irreversible 3.18
## first..caused irreversible - second..maintained irreversible 6.02
## first..caused irreversible - first..caused reversible -0.18
## first..caused irreversible - second..caused reversible 7.76
## first..caused irreversible - first..maintained reversible 1.98
## first..caused irreversible - second..maintained reversible 1.68
## second..caused irreversible - first..maintained irreversible -5.28
## second..caused irreversible - second..maintained irreversible -2.44
## second..caused irreversible - first..caused reversible -8.64
## second..caused irreversible - second..caused reversible -0.70
## second..caused irreversible - first..maintained reversible -6.48
## second..caused irreversible - second..maintained reversible -6.78
## first..maintained irreversible - second..maintained irreversible 2.84
## first..maintained irreversible - first..caused reversible -3.36
## first..maintained irreversible - second..caused reversible 4.58
## first..maintained irreversible - first..maintained reversible -1.20
## first..maintained irreversible - second..maintained reversible -1.50
## second..maintained irreversible - first..caused reversible -6.20
## second..maintained irreversible - second..caused reversible 1.74
## second..maintained irreversible - first..maintained reversible -4.04
## second..maintained irreversible - second..maintained reversible -4.34
## first..caused reversible - second..caused reversible 7.94
## first..caused reversible - first..maintained reversible 2.16
## first..caused reversible - second..maintained reversible 1.86
## second..caused reversible - first..maintained reversible -5.78
## second..caused reversible - second..maintained reversible -6.08
## first..maintained reversible - second..maintained reversible -0.30
## SE df lower.CL upper.CL
## 0.471 98 7.525 9.395
## 0.513 98 2.163 4.197
## 0.511 98 5.005 7.035
## 0.185 98 -0.547 0.187
## 0.440 98 6.888 8.632
## 0.525 98 0.939 3.021
## 0.502 98 0.684 2.676
## 0.630 98 -6.530 -4.030
## 0.645 98 -3.719 -1.161
## 0.440 98 -9.512 -7.768
## 0.593 98 -1.878 0.478
## 0.659 98 -7.788 -5.172
## 0.641 98 -8.052 -5.508
## 0.643 98 1.565 4.115
## 0.525 98 -4.401 -2.319
## 0.659 98 3.272 5.888
## 0.719 98 -2.626 0.226
## 0.702 98 -2.894 -0.106
## 0.502 98 -7.196 -5.204
## 0.641 98 0.468 3.012
## 0.702 98 -5.434 -2.646
## 0.685 98 -5.700 -2.980
## 0.471 98 7.005 8.875
## 0.513 98 1.143 3.177
## 0.511 98 0.845 2.875
## 0.630 98 -7.030 -4.530
## 0.645 98 -7.359 -4.801
## 0.643 98 -1.575 0.975
##
## Confidence level used: 0.95
The planned contrast from this list is the one comparing the maintainer ratings between the reversibility conditions: “second..maintained irreversible - second..maintained reversible”, which is significant.
Get effect size
#structure statement lsmean SE df lower.CL upper.CL
#reversible second..maintained 7.94 0.485 98 6.978 8.90
#irreversible second..maintained 3.60 0.485 98 2.638 4.56
#SDs
#reversible second \nmaintained 3.2602116
#irreversible second \nmaintained 3.5856858
stats <- d.ind.t(
m1 = 7.94,
m2 = 3.60,
sd1 = 3.2602116,
sd2 = 3.5856858,
n1 = 50,
n2 = 50,
a = 0.05
)
stats$estimate
## [1] "$d_s$ = 1.27, 95\\% CI [0.83, 1.69]"