A notebook made by Paul Amat, amat-design.com

Context and objectives

Is this treatment effective?

Research hypothesis

Statistical hypothesis

H0:

H1:

Data preparation and exploration

Starting session

library(readr)
data <- read_csv("data.csv", show_col_types = FALSE)

Data overview

summary(data$score)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
   6.36   18.75   30.25   30.31   41.45   54.78 
summary(data$score.after)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  10.73   25.77   36.77   35.66   44.20   59.82 

Mean difference

mean(data$score.after)-mean(data$score)
[1] 5.3547

Parametric test

Conditions

Independent observationss

Normally distributed data of difference vector between groups

Variable of interest
groups.diff <- data$score.after-data$score
Plots
par(mfrow=c(1,2))
hist(groups.diff, freq=FALSE)
curve(dnorm(x, mean=mean(groups.diff), sd=sd(groups.diff)), add=TRUE, col="red")
qqnorm(groups.diff)
qqline(groups.diff, col="red")

Shapiro-Wilk
shapiro.test(groups.diff) # ok in jamovi

    Shapiro-Wilk normality test

data:  groups.diff
W = 0.98985, p-value = 0.1698
Kolmogorov-Smirnov
ks.test(groups.diff, "pnorm", mean(groups.diff), sd(groups.diff)) # ok in jamovi
Warning in ks.test(groups.diff, "pnorm", mean(groups.diff), sd(groups.diff)) :
  ties should not be present for the Kolmogorov-Smirnov test

    One-sample Kolmogorov-Smirnov test

data:  groups.diff
D = 0.042962, p-value = 0.8541
alternative hypothesis: two-sided

No outliers

boxplot(data$score, data$score.after)

Test

t.test(data$score, data$score.after, paired=TRUE) # ok in jamovi

    Paired t-test

data:  data$score and data$score.after
t = -4.005, df = 199, p-value = 8.754e-05
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 -7.991207 -2.718193
sample estimates:
mean of the differences 
                -5.3547 

Effect size

if(!require(effsize)) install.packages("effsize")
library(effsize)
(cohentest <- cohen.d(data$score.after, data$score, within = F, paired = T)) #ok jamovi

Cohen's d

d estimate: 0.2831969 (small)
95 percent confidence interval:
    lower     upper 
0.1414240 0.4249699 

Power analysis

Finding power

if(!require(pwr)) install.packages("pwr")
library(pwr)
pwr.t.test(sig.level = 0.05, n = length(data$score)/2, d = cohentest$estimate, type = "paired")

     Paired t test power calculation 

              n = 100
              d = 0.2831969
      sig.level = 0.05
          power = 0.8007871
    alternative = two.sided

NOTE: n is number of *pairs*

Finding N

pwr.t.test(sig.level = 0.05, power = 0.8, d = cohentest$estimate, type = "paired")

     Paired t test power calculation 

              n = 99.80326
              d = 0.2831969
      sig.level = 0.05
          power = 0.8
    alternative = two.sided

NOTE: n is number of *pairs*

Non-parametric test

Conditions

Independent observations

The independence of observations is guaranteed by the recruitment process.

N in each group > 20

length(data$score) > 20
[1] TRUE
length(data$score.after) > 20
[1] TRUE

Test

wilcox.test(data$score, data$score.after, correct = F, paired=TRUE) # ok jamovi

    Wilcoxon signed rank test

data:  data$score and data$score.after
V = 6932.5, p-value = 0.0002076
alternative hypothesis: true location shift is not equal to 0

Wilcoxon rank: to be used when the conditions are not respected and especially in the presence of extreme data.

Effect size

if(!require(effectsize)) install.packages("effectsize")
library(effectsize)

rank_biserial(data$score, data$score.after) # to check
r (rank biserial) |         95% CI
----------------------------------
-0.23             | [-0.33, -0.12]

Results and recommendations

LS0tDQp0aXRsZTogIk1lYW5zIGRpZmZlcnMgaW4gdHdvIHBhaXJlZCBncm91cHMiDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQpBIG5vdGVib29rIG1hZGUgYnkgUGF1bCBBbWF0LCBbYW1hdC1kZXNpZ24uY29tXShhbWF0LWRlc2lnbi5jb20pDQoNCiMjIENvbnRleHQgYW5kIG9iamVjdGl2ZXMNCg0KPiBJcyB0aGlzIHRyZWF0bWVudCBlZmZlY3RpdmU/DQoNCiMjIyBSZXNlYXJjaCBoeXBvdGhlc2lzDQoNCiMjIyBTdGF0aXN0aWNhbCBoeXBvdGhlc2lzDQoNCkgwOg0KDQpIMToNCg0KIyMgRGF0YSBwcmVwYXJhdGlvbiBhbmQgZXhwbG9yYXRpb24NCg0KIyMjIFN0YXJ0aW5nIHNlc3Npb24NCg0KYGBge3J9DQpsaWJyYXJ5KHJlYWRyKQ0KZGF0YSA8LSByZWFkX2NzdigiZGF0YS5jc3YiLCBzaG93X2NvbF90eXBlcyA9IEZBTFNFKQ0KYGBgDQoNCiMjIyBEYXRhIG92ZXJ2aWV3DQoNCmBgYHtyfQ0Kc3VtbWFyeShkYXRhJHNjb3JlKQ0KYGBgDQoNCmBgYHtyfQ0Kc3VtbWFyeShkYXRhJHNjb3JlLmFmdGVyKQ0KYGBgDQoNCiMjIyBNZWFuIGRpZmZlcmVuY2UNCg0KYGBge3J9DQptZWFuKGRhdGEkc2NvcmUuYWZ0ZXIpLW1lYW4oZGF0YSRzY29yZSkNCmBgYA0KDQojIyBQYXJhbWV0cmljIHRlc3QNCg0KIyMjIENvbmRpdGlvbnMNCg0KIyMjIyBJbmRlcGVuZGVudCBvYnNlcnZhdGlvbnNzDQoNCiMjIyMgTm9ybWFsbHkgZGlzdHJpYnV0ZWQgZGF0YSBvZiBkaWZmZXJlbmNlIHZlY3RvciBiZXR3ZWVuIGdyb3Vwcw0KDQojIyMjIyBWYXJpYWJsZSBvZiBpbnRlcmVzdA0KDQpgYGB7cn0NCmdyb3Vwcy5kaWZmIDwtIGRhdGEkc2NvcmUuYWZ0ZXItZGF0YSRzY29yZQ0KYGBgDQoNCiMjIyMjIFBsb3RzDQoNCmBgYHtyfQ0KcGFyKG1mcm93PWMoMSwyKSkNCmhpc3QoZ3JvdXBzLmRpZmYsIGZyZXE9RkFMU0UpDQpjdXJ2ZShkbm9ybSh4LCBtZWFuPW1lYW4oZ3JvdXBzLmRpZmYpLCBzZD1zZChncm91cHMuZGlmZikpLCBhZGQ9VFJVRSwgY29sPSJyZWQiKQ0KcXFub3JtKGdyb3Vwcy5kaWZmKQ0KcXFsaW5lKGdyb3Vwcy5kaWZmLCBjb2w9InJlZCIpDQpgYGANCg0KIyMjIyMgU2hhcGlyby1XaWxrDQoNCmBgYHtyfQ0Kc2hhcGlyby50ZXN0KGdyb3Vwcy5kaWZmKSAjIG9rIGluIGphbW92aQ0KYGBgDQoNCiMjIyMjIEtvbG1vZ29yb3YtU21pcm5vdg0KDQpgYGB7cn0NCmtzLnRlc3QoZ3JvdXBzLmRpZmYsICJwbm9ybSIsIG1lYW4oZ3JvdXBzLmRpZmYpLCBzZChncm91cHMuZGlmZikpICMgb2sgaW4gamFtb3ZpDQpgYGANCg0KIyMjIyBObyBvdXRsaWVycw0KDQpgYGB7cn0NCmJveHBsb3QoZGF0YSRzY29yZSwgZGF0YSRzY29yZS5hZnRlcikNCmBgYA0KDQojIyMgVGVzdA0KDQpgYGB7cn0NCnQudGVzdChkYXRhJHNjb3JlLCBkYXRhJHNjb3JlLmFmdGVyLCBwYWlyZWQ9VFJVRSkgIyBvayBpbiBqYW1vdmkNCmBgYA0KDQojIyMgRWZmZWN0IHNpemUNCg0KYGBge3J9DQppZighcmVxdWlyZShlZmZzaXplKSkgaW5zdGFsbC5wYWNrYWdlcygiZWZmc2l6ZSIpDQpsaWJyYXJ5KGVmZnNpemUpDQooY29oZW50ZXN0IDwtIGNvaGVuLmQoZGF0YSRzY29yZS5hZnRlciwgZGF0YSRzY29yZSwgd2l0aGluID0gRiwgcGFpcmVkID0gVCkpICNvayBqYW1vdmkNCmBgYA0KDQojIyMgUG93ZXIgYW5hbHlzaXMNCg0KIyMjIyBGaW5kaW5nIHBvd2VyDQoNCmBgYHtyfQ0KaWYoIXJlcXVpcmUocHdyKSkgaW5zdGFsbC5wYWNrYWdlcygicHdyIikNCmxpYnJhcnkocHdyKQ0KcHdyLnQudGVzdChzaWcubGV2ZWwgPSAwLjA1LCBuID0gbGVuZ3RoKGRhdGEkc2NvcmUpLzIsIGQgPSBjb2hlbnRlc3QkZXN0aW1hdGUsIHR5cGUgPSAicGFpcmVkIikNCmBgYA0KDQojIyMjIEZpbmRpbmcgTg0KDQpgYGB7cn0NCnB3ci50LnRlc3Qoc2lnLmxldmVsID0gMC4wNSwgcG93ZXIgPSAwLjgsIGQgPSBjb2hlbnRlc3QkZXN0aW1hdGUsIHR5cGUgPSAicGFpcmVkIikNCmBgYA0KDQojIyBOb24tcGFyYW1ldHJpYyB0ZXN0DQoNCiMjIyBDb25kaXRpb25zDQoNCiMjIyMgSW5kZXBlbmRlbnQgb2JzZXJ2YXRpb25zDQoNClRoZSBpbmRlcGVuZGVuY2Ugb2Ygb2JzZXJ2YXRpb25zIGlzIGd1YXJhbnRlZWQgYnkgdGhlIHJlY3J1aXRtZW50IHByb2Nlc3MuDQoNCiMjIyMgTiBpbiBlYWNoIGdyb3VwIFw+IDIwDQoNCmBgYHtyfQ0KbGVuZ3RoKGRhdGEkc2NvcmUpID4gMjANCmxlbmd0aChkYXRhJHNjb3JlLmFmdGVyKSA+IDIwDQpgYGANCg0KIyMjIFRlc3QNCg0KYGBge3J9DQp3aWxjb3gudGVzdChkYXRhJHNjb3JlLCBkYXRhJHNjb3JlLmFmdGVyLCBjb3JyZWN0ID0gRiwgcGFpcmVkPVRSVUUpICMgb2sgamFtb3ZpDQpgYGANCg0KV2lsY294b24gcmFuazogdG8gYmUgdXNlZCB3aGVuIHRoZSBjb25kaXRpb25zIGFyZSBub3QgcmVzcGVjdGVkIGFuZCBlc3BlY2lhbGx5IGluIHRoZSBwcmVzZW5jZSBvZiBleHRyZW1lIGRhdGEuDQoNCiMjIyBFZmZlY3Qgc2l6ZQ0KDQpgYGB7cn0NCmlmKCFyZXF1aXJlKGVmZmVjdHNpemUpKSBpbnN0YWxsLnBhY2thZ2VzKCJlZmZlY3RzaXplIikNCmxpYnJhcnkoZWZmZWN0c2l6ZSkNCg0KcmFua19iaXNlcmlhbChkYXRhJHNjb3JlLCBkYXRhJHNjb3JlLmFmdGVyKSAjIHRvIGNoZWNrDQpgYGANCg0KIyMgUmVzdWx0cyBhbmQgcmVjb21tZW5kYXRpb25zDQo=