1 Content

This file containts the statistical analysis presented in to our paper Studying the Role of Haptic Feedback on Virtual Embodiment in a Drawing Task published in Frontiers in Virtual Reality and Human Behaviours. More information available at https://ns.inria.fr/loki/embodiment/

Loading data for analysis

data = read.table("Subjective_Questionnaires_Data.csv", header=TRUE, sep=";")

data_dessin = read.table("Objective_Performance_Data.csv", header=TRUE, sep=";")

2 BoxPlot of all questionnaire items, groupment and overall embodiment (scaled to 5)

HALF_WIDTH = 85
FULL_WIDTH = 178
GOLDEN_RATIO = 1.61803
data_all_long2 <- data_all_long %>% mutate(variable = recode(variable,"Score_Incarnation" = "Embodiment"))
data_meds = ddply(data_all_long2, .(variable, Condition), summarise, med = median(value))
ggplot(data = data_all_long2, aes(x=variable, y=value)) + geom_boxplot((aes(fill=Condition))) +
  labs(x = "Subjective question", y = "Rating")+
  scale_fill_manual(values=c( "#ffffbf", "#DF5E28", "#F6C584")) +
  #coord_flip() +
   theme(
        axis.text.x=element_text(angle=25, hjust=1, size=6),
        legend.box.background = element_rect(size=1, color="black"),
        legend.background = element_rect(size = 0.3, linetype = "solid", colour = "black"),
        panel.background = element_blank(),
        panel.border = element_blank(),
        axis.line = element_line(),
        axis.title = element_text( face="bold", colour="black", size="12"),
        axis.text = element_text( colour="black", size="12"),
        panel.grid.major.y = element_line( size = .1, color = "grey")) +
  ##geom_text(data = data_meds, aes(x = variable, y = med, label = med), size = 3, vjust = -1.5) +
  ggsave("All_Plots_items_groups.pdf", width = FULL_WIDTH - 15, height = (FULL_WIDTH / 5) * GOLDEN_RATIO, units="mm")

3 Embodiment questionnaire

3.1 Friedman and Wilcoxon tests for Overall Embodiment

resFriedEmbo = friedman.test(data.matrix(data_incarnation_fixed))
pander(resFriedEmbo)
Friedman rank sum test: data.matrix(data_incarnation_fixed)
Test statistic df P value
52.05 3 2.916e-11 * * *
resWilEmbo = pairwise.wilcox.test(data_incarnation_fixedwil$value, data_incarnation_fixedwil$Condition , paired = TRUE, p.adj = "bonf")
kable(resWilEmbo$p.value)
CTRL FFB
FFB 0.0041205 NA
VBT 1.0000000 0.0033722

3.2 Friedman and Wilcoxon tests for overall Ownership and particular ownership items

resOfried = friedman.test(data.matrix(dataO))
pander(resOfried)
Friedman rank sum test: data.matrix(dataO)
Test statistic df P value
11.92 2 0.002581 * *
resOwil= pairwise.wilcox.test(dataOwil$value, dataOwil$condition , paired = TRUE, p.adj = "bonf")
kable(resOwil$p.value)
CTRL.Ownership FFB.Ownership
FFB.Ownership 0.0080828 NA
VBT.Ownership 1.0000000 0.0812702
resO1fried = friedman.test(data.matrix(dataO1))
pander(resO1fried)
Friedman rank sum test: data.matrix(dataO1)
Test statistic df P value
9.745 2 0.007652 * *
res01wil = pairwise.wilcox.test(dataO1wil$value, dataO1wil$condition , paired = TRUE, p.adj = "bonf")
kable(res01wil$p.value)
CTRL.O1 FFB.O1
FFB.O1 0.0478279 NA
VBT.O1 0.5492902 0.2544213
resO2fried = friedman.test(data.matrix(dataO2))
pander(resO2fried)
Friedman rank sum test: data.matrix(dataO2)
Test statistic df P value
6.197 2 0.04512 *
res02wil = pairwise.wilcox.test(dataO2wil$value, dataO2wil$condition , paired = TRUE, p.adj = "bonf")
kable(res02wil$p.value)
CTRL.O2 FFB.O2
FFB.O2 0.2939814 NA
VBT.O2 0.9764060 0.0695887
resO3fried = friedman.test(data.matrix(dataO3))
pander(resO3fried)
Friedman rank sum test: data.matrix(dataO3)
Test statistic df P value
2.844 2 0.2412

3.3 Friedman and Wilcoxon tests for overall Agency and particular agency items

resAfried = friedman.test(data.matrix(dataA))
pander(resAfried)
Friedman rank sum test: data.matrix(dataA)
Test statistic df P value
10.89 2 0.00432 * *
resAwil = pairwise.wilcox.test(dataAwil$value, dataAwil$condition , paired = TRUE, p.adj = "bonf")
kable(resAwil$p.value)
CTRL.Agency FFB.Agency
FFB.Agency 0.1040757 NA
VBT.Agency 0.5328913 0.2777667
## On a besoin de seulement deux conditions, on peut pas le faire direct avec les trois conditions. Après, on veut faire le TOST sur des conditions particulières, donc pas si débile
##resAbis <- wilcox.test(value ~ condition, data = dataAwil,
##                   exact = FALSE)
##resAbis

resA1fried = friedman.test(data.matrix(dataA1))
pander(resA1fried)
Friedman rank sum test: data.matrix(dataA1)
Test statistic df P value
11.66 2 0.002936 * *
resA1wil = pairwise.wilcox.test(dataA1wil$value, dataA1wil$condition , paired = TRUE, p.adj = "bonf")
kable(resA1wil$p.value)
CTRL.A1 FFB.A1
FFB.A1 0.0134145 NA
VBT.A1 0.9543472 0.0511346
resA2fried = friedman.test(data.matrix(dataA2))
pander(resA2fried)
Friedman rank sum test: data.matrix(dataA2)
Test statistic df P value
2 2 0.3679
resA3fried = friedman.test(data.matrix(dataA3))
pander(resA3fried)
Friedman rank sum test: data.matrix(dataA3)
Test statistic df P value
0.1404 2 0.9322
resA4fried = friedman.test(data.matrix(dataA4))
pander(resA4fried)
Friedman rank sum test: data.matrix(dataA4)
Test statistic df P value
0.5625 2 0.7548

3.4 Friedman and Wilcoxon tests for overall Tactile Sensations and particular tactile sensations items

resTfried = friedman.test(data.matrix(dataT))
pander(resTfried)
Friedman rank sum test: data.matrix(dataT)
Test statistic df P value
18.7 2 8.707e-05 * * *
resTwil = pairwise.wilcox.test(dataTwil$value, dataTwil$condition , paired = TRUE, p.adj = "bonf")
kable(resTwil$p.value)
CTRL.Tactile_Sensations FFB.Tactile_Sensations
FFB.Tactile_Sensations 0.0013971 NA
VBT.Tactile_Sensations 0.0294497 0.0134498
resT1fried = friedman.test(data.matrix(dataT1))
pander(resT1fried)
Friedman rank sum test: data.matrix(dataT1)
Test statistic df P value
0.3939 2 0.8212
resT2fried = friedman.test(data.matrix(dataT2))
pander(resT2fried)
Friedman rank sum test: data.matrix(dataT2)
Test statistic df P value
14.14 2 0.0008515 * * *
resT2wil = pairwise.wilcox.test(dataT2wil$value, dataT2wil$condition , paired = TRUE, p.adj = "bonf")
kable(resT2wil$p.value)
CTRL.T2 FFB.T2
FFB.T2 0.0063507 NA
VBT.T2 0.0099834 0.9324137
resT3fried = friedman.test(data.matrix(dataT3))
pander(resT3fried)
Friedman rank sum test: data.matrix(dataT3)
Test statistic df P value
16.12 2 0.0003157 * * *
resT3wil = pairwise.wilcox.test(dataT3wil$value, dataT3wil$condition , paired = TRUE, p.adj = "bonf")
kable(resT3wil$p.value)
CTRL.T3 FFB.T3
FFB.T3 0.0025064 NA
VBT.T3 0.1741369 0.022413
resT4fried = friedman.test(data.matrix(dataT4))
pander(resT4fried)
Friedman rank sum test: data.matrix(dataT4)
Test statistic df P value
11.25 2 0.003613 * *
resT4wil = pairwise.wilcox.test(dataT4wil$value, dataT4wil$condition , paired = TRUE, p.adj = "bonf")
kable(resT4wil$p.value)
CTRL.T4 FFB.T4
FFB.T4 0.0055365 NA
VBT.T4 0.3192144 0.010308

3.5 Friedman and Wilcoxon tests for overall Self-Location and particular self-location items

resL = friedman.test(data.matrix(dataL))
pander(resL)
Friedman rank sum test: data.matrix(dataL)
Test statistic df P value
4.083 2 0.1298
resL1fried = friedman.test(data.matrix(dataL1))
pander(resL1fried)
Friedman rank sum test: data.matrix(dataL1)
Test statistic df P value
5.045 2 0.08027
resL2fried = friedman.test(data.matrix(dataL2))
pander(resL2fried)
Friedman rank sum test: data.matrix(dataL2)
Test statistic df P value
2.627 2 0.2688
resL3fried = friedman.test(data.matrix(dataL3))
pander(resL3fried)
Friedman rank sum test: data.matrix(dataL3)
Test statistic df P value
0.16 2 0.9231

4 Workload questionnaire

4.1 Friedman tests for NASA TLX items

restlx1 = friedman.test(data.matrix(dataTLX_Mental))
pander(restlx1)
Friedman rank sum test: data.matrix(dataTLX_Mental)
Test statistic df P value
7.284 2 0.02621 *
restlx2 = friedman.test(data.matrix(dataTLX_Physical))
pander(restlx2)
Friedman rank sum test: data.matrix(dataTLX_Physical)
Test statistic df P value
2.259 2 0.3232
restlx3 = friedman.test(data.matrix(dataTLX_Temporal))
pander(restlx3)
Friedman rank sum test: data.matrix(dataTLX_Temporal)
Test statistic df P value
9.234 2 0.009882 * *
restlx4 = friedman.test(data.matrix(dataTLX_Performance))
pander(restlx4)
Friedman rank sum test: data.matrix(dataTLX_Performance)
Test statistic df P value
9.508 2 0.008618 * *
restlx5 = friedman.test(data.matrix(dataTLX_Effort))
pander(restlx5)
Friedman rank sum test: data.matrix(dataTLX_Effort)
Test statistic df P value
9.524 2 0.008549 * *
restlx6 = friedman.test(data.matrix(dataTLX_Frustration))
pander(restlx6)
Friedman rank sum test: data.matrix(dataTLX_Frustration)
Test statistic df P value
10.75 2 0.004631 * *

4.2 Wilcoxon test for NASA TLX items

resTLX1 = pairwise.wilcox.test(dataTLX_Mentalwil$value, dataTLX_Mentalwil$condition , paired = TRUE, p.adj = "bonf")
kable(resTLX1$p.value)
CTRL.TLX1 FFB.TLX1
FFB.TLX1 0.0490675 NA
VBT.TLX1 1.0000000 0.034517
resTLX2 = pairwise.wilcox.test(dataTLX_Physicalwil$value, dataTLX_Physicalwil$condition , paired = TRUE, p.adj = "bonf")
kable(resTLX2$p.value)
CTRL.TLX2 FFB.TLX2
FFB.TLX2 1 NA
VBT.TLX2 1 1
resTLX3 = pairwise.wilcox.test(dataTLX_Temporalwil$value, dataTLX_Temporalwil$condition , paired = TRUE, p.adj = "bonf")
kable(resTLX3$p.value)
CTRL.TLX3 FFB.TLX3
FFB.TLX3 1.0000000 NA
VBT.TLX3 0.0276166 0.0496289
resTLX4 = pairwise.wilcox.test(dataTLX_Performancewil$value, dataTLX_Performancewil$condition , paired = TRUE, p.adj = "bonf")
kable(resTLX4$p.value)
CTRL.TLX4 FFB.TLX4
FFB.TLX4 1.0000000 NA
VBT.TLX4 0.1484883 0.0148417
resTLX5 = pairwise.wilcox.test(dataTLX_Effortwil$value, dataTLX_Effortwil$condition , paired = TRUE, p.adj = "bonf")
kable(resTLX5$p.value)
CTRL.TLX5 FFB.TLX5
FFB.TLX5 0.0231635 NA
VBT.TLX5 1.0000000 0.0308577
resTLX6 = pairwise.wilcox.test(dataTLX_Frustrationwil$value, dataTLX_Frustrationwil$condition , paired = TRUE, p.adj = "bonf")
kable(resTLX6$p.value)
CTRL.TLX6 FFB.TLX6
FFB.TLX6 0.0490675 NA
VBT.TLX6 1.0000000 0.0103015

5 Performance over the drawings: Metrics analysis

5.1 Normality test over the Drawings metrics

m <- aov(Precision ~ Condition, data=data_dessin_acute)
##pander(normalCheck(m))

m2 <- aov(Completeness ~ Condition, data=data_dessin_compl)
##pander(normalCheck(m2))

5.2 ANOVA on ART for Completeness & Accuracy

mCompl = art(Completeness ~ factor(Condition) + (1|participant), data = data_dessin_compl)
kable(anova(mCompl))
Term F Df Df.res Pr(>F)
factor(Condition) factor(Condition) 2.21607 2 46 0.120548
mAcute = art(Precision ~ factor(Condition) + (1|participant), data = data_dessin_acute)
kable(anova(mAcute))
Term F Df Df.res Pr(>F)
factor(Condition) factor(Condition) 3.983055 2 46 0.0253889

6 ANOVA on ART

6.1 Overall Embodiment

mEmbo = art(Score_Incarnation ~ factor(passation) * factor(Condition) + (1|participant), data = data_art)
kable(anova(mEmbo))
Term F Df Df.res Pr(>F)
factor(passation) factor(passation) 2.1191420 5 18 0.1099136
factor(Condition) factor(Condition) 9.3460131 2 36 0.0005380
factor(passation):factor(Condition) factor(passation):factor(Condition) 0.9099805 10 36 0.5344932

6.2 Groupment of Ownership

mO = art(Ownership ~ factor(passation) * factor(Condition) + (1|participant), data = data_art)
kable(anova(mO))
Term F Df Df.res Pr(>F)
factor(passation) factor(passation) 1.3080741 5 18 0.3044646
factor(Condition) factor(Condition) 5.2446392 2 36 0.0100252
factor(passation):factor(Condition) factor(passation):factor(Condition) 0.8788101 10 36 0.5608743

6.2.1 Item O1

mO1 = art(O1 ~ factor(passation) * factor(Condition) + (1|participant), data = data1)
kable(anova(mO1))
Term F Df Df.res Pr(>F)
factor(passation) factor(passation) 2.055169 5 18 0.1189762
factor(Condition) factor(Condition) 5.638673 2 36 0.0074078
factor(passation):factor(Condition) factor(passation):factor(Condition) 1.000878 10 36 0.4610882

6.2.2 Item O2

mO2 = art(O2 ~ factor(passation) * factor(Condition) + (1|participant), data = data1)
kable(anova(mO2))
Term F Df Df.res Pr(>F)
factor(passation) factor(passation) 1.8729831 5 18 0.1493384
factor(Condition) factor(Condition) 3.3085841 2 36 0.0479648
factor(passation):factor(Condition) factor(passation):factor(Condition) 0.4232263 10 36 0.9258307

6.2.3 Item O3

mO3 = art(O3 ~ factor(passation) * factor(Condition) + (1|participant), data = data1)
kable(anova(mO3))
Term F Df Df.res Pr(>F)
factor(passation) factor(passation) 0.6447526 5 18 0.6689026
factor(Condition) factor(Condition) 0.6298155 2 36 0.5384571
factor(passation):factor(Condition) factor(passation):factor(Condition) 0.9981040 10 36 0.4632403

6.3 Groupment of Agency

mA = art(Agency ~ factor(passation) * factor(Condition) + (1|participant), data = data_art)
kable(anova(mA))
Term F Df Df.res Pr(>F)
factor(passation) factor(passation) 1.152553 5 18 0.3697116
factor(Condition) factor(Condition) 3.433788 2 36 0.0431643
factor(passation):factor(Condition) factor(passation):factor(Condition) 1.078264 10 36 0.4035621

6.3.1 Item A1

mA1 = art(A1 ~ factor(passation) * factor(Condition) + (1|participant), data = data1)
kable(anova(mA1))
Term F Df Df.res Pr(>F)
factor(passation) factor(passation) 1.045195 5 18 0.4218926
factor(Condition) factor(Condition) 6.068108 2 36 0.0053574
factor(passation):factor(Condition) factor(passation):factor(Condition) 1.125009 10 36 0.3712721

6.3.2 Item A2

mA2 = art(A2 ~ factor(passation) * factor(Condition) + (1|participant), data = data1)
kable(anova(mA2))
Term F Df Df.res Pr(>F)
factor(passation) factor(passation) 0.2908477 5 18 0.9118236
factor(Condition) factor(Condition) 1.8615571 2 36 0.1700849
factor(passation):factor(Condition) factor(passation):factor(Condition) 4.4155410 10 36 0.0004448

6.3.3 Item A3

mA3 = art(A3 ~ factor(passation) * factor(Condition) + (1|participant), data = data1)
kable(anova(mA3))
Term F Df Df.res Pr(>F)
factor(passation) factor(passation) 0.8824209 5 18 0.5127435
factor(Condition) factor(Condition) 0.1010823 2 36 0.9041142
factor(passation):factor(Condition) factor(passation):factor(Condition) 1.0017260 10 36 0.4604317

6.3.4 Item A4

mA4 = art(A4 ~ factor(passation) * factor(Condition) + (1|participant), data = data1)
kable(anova(mA4))
Term F Df Df.res Pr(>F)
factor(passation) factor(passation) 1.0711703 5 18 0.4087097
factor(Condition) factor(Condition) 0.6527931 2 36 0.5266419
factor(passation):factor(Condition) factor(passation):factor(Condition) 0.7074177 10 36 0.7114534

6.4 Groupment of Self-Location

mSL = art(Self_Location ~ factor(passation) * factor(Condition) + (1|participant), data = data_art)
kable(anova(mSL))
Term F Df Df.res Pr(>F)
factor(passation) factor(passation) 1.501649 5 18 0.2385168
factor(Condition) factor(Condition) 1.607882 2 36 0.2143644
factor(passation):factor(Condition) factor(passation):factor(Condition) 1.279717 10 36 0.2781018

6.4.1 Item L1

mL1 = art(L1 ~ factor(passation) * factor(Condition) + (1|participant), data = data1)
kable(anova(mL1))
Term F Df Df.res Pr(>F)
factor(passation) factor(passation) 2.5224352 5 18 0.0672680
factor(Condition) factor(Condition) 2.1379655 2 36 0.1326247
factor(passation):factor(Condition) factor(passation):factor(Condition) 0.9843199 10 36 0.4740208

6.4.2 Item L2

mL2 = art(L2 ~ factor(passation) * factor(Condition) + (1|participant), data = data1)
kable(anova(mL2))
Term F Df Df.res Pr(>F)
factor(passation) factor(passation) 0.7402051 5 18 0.6032919
factor(Condition) factor(Condition) 0.2678938 2 36 0.7665005
factor(passation):factor(Condition) factor(passation):factor(Condition) 1.3236833 10 36 0.2553947

6.4.3 Item L3

mL3 = art(L3 ~ factor(passation) * factor(Condition) + (1|participant), data = data1)
kable(anova(mL3))
Term F Df Df.res Pr(>F)
factor(passation) factor(passation) 0.3318429 5 18 0.8870724
factor(Condition) factor(Condition) 0.2044999 2 36 0.8159951
factor(passation):factor(Condition) factor(passation):factor(Condition) 1.8404964 10 36 0.0882413

6.5 Groupment of Tactile sensations

mT = art(Tactile_Sensations ~ factor(passation) * factor(Condition) + (1|participant), data = data_art)
kable(anova(mT))
## boundary (singular) fit: see ?isSingular
## boundary (singular) fit: see ?isSingular
## boundary (singular) fit: see ?isSingular
Term F Df Df.res Pr(>F)
factor(passation) factor(passation) 2.3631066 5 18 0.0815170
factor(Condition) factor(Condition) 14.6441560 2 36 0.0000222
factor(passation):factor(Condition) factor(passation):factor(Condition) 0.7787407 10 36 0.6482996

6.5.1 Item T1

mT1 = art(T1 ~ factor(passation) * factor(Condition) + (1|participant), data = data1)
kable(anova(mT1))
## boundary (singular) fit: see ?isSingular
## boundary (singular) fit: see ?isSingular
## boundary (singular) fit: see ?isSingular
Term F Df Df.res Pr(>F)
factor(passation) factor(passation) 1.9240618 5 18 0.1400870
factor(Condition) factor(Condition) 0.4965391 2 36 0.6127404
factor(passation):factor(Condition) factor(passation):factor(Condition) 0.7280084 10 36 0.6932765

6.5.2 Item T2

mT2 = art(T2 ~ factor(passation) * factor(Condition) + (1|participant), data = data1)
kable(anova(mT2))
## boundary (singular) fit: see ?isSingular
## boundary (singular) fit: see ?isSingular
## boundary (singular) fit: see ?isSingular
Term F Df Df.res Pr(>F)
factor(passation) factor(passation) 1.9204673 5 18 0.1407181
factor(Condition) factor(Condition) 9.4622245 2 36 0.0004985
factor(passation):factor(Condition) factor(passation):factor(Condition) 0.7192226 10 36 0.7010435

6.5.3 Item T3

mT3 = art(T3 ~ factor(passation) * factor(Condition) + (1|participant), data = data1)
kable(anova(mT3))
Term F Df Df.res Pr(>F)
factor(passation) factor(passation) 3.6284144 5 18 0.0191057
factor(Condition) factor(Condition) 14.1288696 2 36 0.0000296
factor(passation):factor(Condition) factor(passation):factor(Condition) 0.8917027 10 36 0.5498986

6.5.4 Post-hoc pairwise test for T3

attach(data0)
pw = pairwise.t.test(T3, interaction(passation), p.adj = "bonferroni")
detach(data0)
kable(pw$p.value)
1 2 3 4 5
2 1.0000000 NA NA NA NA
3 0.3835758 1.0000000 NA NA NA
4 1.0000000 1.0000000 0.9925147 NA NA
5 1.0000000 1.0000000 0.1501001 1 NA
6 1.0000000 0.1654441 0.0107491 1 1

6.5.5 Item T4

mT4 = art(T4 ~ factor(passation) * factor(Condition) + (1|participant), data = data1)
kable(anova(mT4))
Term F Df Df.res Pr(>F)
factor(passation) factor(passation) 1.3759227 5 18 0.2795490
factor(Condition) factor(Condition) 6.9665199 2 36 0.0027699
factor(passation):factor(Condition) factor(passation):factor(Condition) 0.4481359 10 36 0.9117118

6.6 ANOVA on ART for NASA TLX

6.6.1 Item Mental Load

mTLXMental = art(TLX1 ~ factor(passation) * factor(Condition) + (1|participant), data = data1)
kable(anova(mTLXMental))
Term F Df Df.res Pr(>F)
factor(passation) factor(passation) 0.0948647 5 18 0.9919041
factor(Condition) factor(Condition) 4.5433592 2 36 0.0174008
factor(passation):factor(Condition) factor(passation):factor(Condition) 0.8856484 10 36 0.5550420

6.6.2 Item Physical Load

mTLXPhysical = art(TLX2 ~ factor(passation) * factor(Condition) + (1|participant), data = data1)
kable(anova(mTLXPhysical))
Term F Df Df.res Pr(>F)
factor(passation) factor(passation) 0.5801659 5 18 0.7147635
factor(Condition) factor(Condition) 0.2068773 2 36 0.8140793
factor(passation):factor(Condition) factor(passation):factor(Condition) 1.4490536 10 36 0.1991452

6.6.3 Item Temporal Load

mTLXTemporal = art(TLX3 ~ factor(passation) * factor(Condition) + (1|participant), data = data1)
kable(anova(mO1))
Term F Df Df.res Pr(>F)
factor(passation) factor(passation) 2.055169 5 18 0.1189762
factor(Condition) factor(Condition) 5.638673 2 36 0.0074078
factor(passation):factor(Condition) factor(passation):factor(Condition) 1.000878 10 36 0.4610882

6.6.4 Item Performance

mTLXPerformance = art(TLX4 ~ factor(passation) * factor(Condition) + (1|participant), data = data1)
kable(anova(mTLXPerformance))
Term F Df Df.res Pr(>F)
factor(passation) factor(passation) 0.4501301 5 18 0.8076809
factor(Condition) factor(Condition) 5.6579321 2 36 0.0073000
factor(passation):factor(Condition) factor(passation):factor(Condition) 1.4101081 10 36 0.2153278

6.6.5 Item Effort

mTLXEffort = art(TLX5 ~ factor(passation) * factor(Condition) + (1|participant), data = data1)
kable(anova(mTLXEffort))
Term F Df Df.res Pr(>F)
factor(passation) factor(passation) 0.6042859 5 18 0.6975429
factor(Condition) factor(Condition) 6.2034376 2 36 0.0048430
factor(passation):factor(Condition) factor(passation):factor(Condition) 1.6135557 10 36 0.1422062

6.6.6 Item Frustration

mTLXFrustration = art(TLX6 ~ factor(passation) * factor(Condition) + (1|participant), data = data1)
kable(anova(mTLXFrustration))
Term F Df Df.res Pr(>F)
factor(passation) factor(passation) 2.0113458 5 18 0.1256352
factor(Condition) factor(Condition) 7.2227285 2 36 0.0023049
factor(passation):factor(Condition) factor(passation):factor(Condition) 0.9659337 10 36 0.4886218