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

Context and objectives

Do these two groups differ?

Research hypothesis

Means do not differ between groups/conditions.

Statistical hypothesis

H0: mu1 = mu2

H1: mu1 ≠ mu2

Data preparation and exploration

Starting session

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

Group descriptives

group1 <- data[which(data$gender == "Man"), "score"]$score
group2 <- data[which(data$gender == "Woman"), "score"]$score

print("Man")
[1] "Man"
summary(group1)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
   6.36   19.75   29.23   29.33   39.73   53.47 
print("Woman")
[1] "Woman"
summary(group2)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
   7.54   17.61   30.84   31.23   43.01   54.78 

Mean difference

mean(group1)-mean(group2) # ok jamovi
[1] -1.89229

Plot

if(!require(ggplot2)) install.packages("ggplot2")
Le chargement a nécessité le package : ggplot2
library(ggplot2)

Parametric test

Conditions

Independent observations

The independence of observations is guaranteed by the recruitment process.

Normally distributed residuals

Residuals
res <- residuals(lm(score ~ gender, data),type="response")
Plots
par(mfrow=c(1,2))
hist(res, freq=FALSE)
curve(dnorm(x, mean=mean(res), sd=sd(res)), add=TRUE, col="red")
qqnorm(res)
qqline(res, col="red")

Shapiro-Wilk
shapiro.test(res) # ok jamovi

    Shapiro-Wilk normality test

data:  res
W = 0.95743, p-value = 1.052e-05

Equal variances

Bartlett
bartlett.test(score ~ gender, data)

    Bartlett test of homogeneity of variances

data:  score by gender
Bartlett's K-squared = 1.9528, df = 1, p-value = 0.1623
Levene
library(car)
Le chargement a nécessité le package : carData
leveneTest(score ~ as.factor(gender), data, center = mean) # ok jamovi
Levene's Test for Homogeneity of Variance (center = mean)
       Df F value  Pr(>F)  
group   1  4.1426 0.04315 *
      198                  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

In Levene test: if p-value is greater than 0.05, we do not reject H0 and we conclude that the variances of our two groups are homogeneous.

No outliers

outliers <- function(x) {
   qinf <- quantile(x, 0.25) - (IQR(x)*1.5)
   qsup <- quantile(x, 0.75) + (IQR(x)*1.5)
   x[x < qinf | x > qsup]
}

outliers(group1)
numeric(0)
outliers(group2)
numeric(0)

Test

test <- t.test(score ~ gender, data, var.equal = T) # ok in jamovi
test

    Two Sample t-test

data:  score by gender
t = -1.0278, df = 198, p-value = 0.3053
alternative hypothesis: true difference in means between group Man and group Woman is not equal to 0
95 percent confidence interval:
 -5.522961  1.738380
sample estimates:
  mean in group Man mean in group Woman 
           29.33402            31.22631 

Confidence intervals

test$conf.int
[1] -5.522961  1.738380
attr(,"conf.level")
[1] 0.95

This confidence interval encompasses the difference between the means of the groups. If the test is unilateral, one of the limits of the CI will be infinity.

Effect size

if(!require(effsize)) install.packages("effsize")
library(effsize)
(cohentest <- cohen.d(score ~ gender, data)) #ok jamovi

Cohen's d

d estimate: -0.1454193 (negligible)
95 percent confidence interval:
     lower      upper 
-0.4247985  0.1339598 

Cohen’s d est faible si d = .20, modéré si d = .50, important si d = .80 . Le signe + ou - est donné par l’ordre des variables.

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 = "two.sample")

     Two-sample t test power calculation 

              n = 100
              d = 0.1454193
      sig.level = 0.05
          power = 0.1758886
    alternative = two.sided

NOTE: n is number in *each* group

Finding N

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

     Two-sample t test power calculation 

              n = 743.2836
              d = 0.1454193
      sig.level = 0.05
          power = 0.8
    alternative = two.sided

NOTE: n is number in *each* group

Non-parametric test : non-equal variances

Test

t.test(score ~ gender, data, var.equal = F) # ok in jamovi

    Welch Two Sample t-test

data:  score by gender
t = -1.0322, df = 196.72, p-value = 0.3033
alternative hypothesis: true difference in means between group Man and group Woman is not equal to 0
95 percent confidence interval:
 -5.507772  1.723191
sample estimates:
  mean in group Man mean in group Woman 
           29.33402            31.22631 

Effect size

if(!require(effsize)) install.packages("effsize")
library(effsize)
(cohentest <- cohen.d(score ~ gender, data, var.equal = F))

Cohen's d

d estimate: -0.1454193 (negligible)
95 percent confidence interval:
     lower      upper 
-0.4247985  0.1339598 

Non-parametric test : non-normally distributed residuals

Conditions

Independent observations

The independence of observations is guaranteed by the recruitment process.

N in each group > 20

length(group1) > 20 & length(group2) > 20
[1] TRUE

Test

wilcox.test(score ~ gender, data, correct = F) # ok in jamovi

    Wilcoxon rank sum test

data:  score by gender
W = 4625, p-value = 0.3651
alternative hypothesis: true location shift is not equal to 0

Effect size

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

rank_biserial(data$score, data$gender)
r (rank biserial) |        95% CI
---------------------------------
-0.07             | [-0.23, 0.09]

Results and recommendations

LS0tDQp0aXRsZTogIk1lYW5zIGRpZmZlcnMgaW4gdHdvIGluZGVwZW5kYW50IGdyb3VwcyINCm91dHB1dDogaHRtbF9ub3RlYm9vaw0KLS0tDQoNCkEgbm90ZWJvb2sgbWFkZSBieSBQYXVsIEFtYXQsIFthbWF0LWRlc2lnbi5jb21dKGFtYXQtZGVzaWduLmNvbSkNCg0KIyMgQ29udGV4dCBhbmQgb2JqZWN0aXZlcw0KDQo+IERvIHRoZXNlIHR3byBncm91cHMgZGlmZmVyPw0KDQojIyMgUmVzZWFyY2ggaHlwb3RoZXNpcw0KDQpNZWFucyBkbyBub3QgZGlmZmVyIGJldHdlZW4gZ3JvdXBzL2NvbmRpdGlvbnMuDQoNCiMjIyBTdGF0aXN0aWNhbCBoeXBvdGhlc2lzDQoNCkgwOiBtdTEgPSBtdTINCg0KSDE6IG11MSDiiaAgbXUyDQoNCiMjIERhdGEgcHJlcGFyYXRpb24gYW5kIGV4cGxvcmF0aW9uDQoNCiMjIyBTdGFydGluZyBzZXNzaW9uDQoNCmBgYHtyfQ0KbGlicmFyeShyZWFkcikNCmRhdGEgPC0gcmVhZF9jc3YoImRhdGEuY3N2Iiwgc2hvd19jb2xfdHlwZXMgPSBGQUxTRSkNCmBgYA0KDQojIyMgR3JvdXAgZGVzY3JpcHRpdmVzDQoNCmBgYHtyfQ0KZ3JvdXAxIDwtIGRhdGFbd2hpY2goZGF0YSRnZW5kZXIgPT0gIk1hbiIpLCAic2NvcmUiXSRzY29yZQ0KZ3JvdXAyIDwtIGRhdGFbd2hpY2goZGF0YSRnZW5kZXIgPT0gIldvbWFuIiksICJzY29yZSJdJHNjb3JlDQoNCnByaW50KCJNYW4iKQ0Kc3VtbWFyeShncm91cDEpDQoNCnByaW50KCJXb21hbiIpDQpzdW1tYXJ5KGdyb3VwMikNCmBgYA0KDQojIyMgTWVhbiBkaWZmZXJlbmNlDQoNCmBgYHtyfQ0KbWVhbihncm91cDEpLW1lYW4oZ3JvdXAyKSAjIG9rIGphbW92aQ0KYGBgDQoNCiMjIyBQbG90DQoNCmBgYHtyfQ0KaWYoIXJlcXVpcmUoZ2dwbG90MikpIGluc3RhbGwucGFja2FnZXMoImdncGxvdDIiKQ0KbGlicmFyeShnZ3Bsb3QyKQ0KYGBgDQoNCiMjIFBhcmFtZXRyaWMgdGVzdA0KDQojIyMgQ29uZGl0aW9ucw0KDQojIyMjIEluZGVwZW5kZW50IG9ic2VydmF0aW9ucw0KDQpUaGUgaW5kZXBlbmRlbmNlIG9mIG9ic2VydmF0aW9ucyBpcyBndWFyYW50ZWVkIGJ5IHRoZSByZWNydWl0bWVudCBwcm9jZXNzLg0KDQojIyMjIE5vcm1hbGx5IGRpc3RyaWJ1dGVkIHJlc2lkdWFscw0KDQojIyMjIyBSZXNpZHVhbHMNCg0KYGBge3J9DQpyZXMgPC0gcmVzaWR1YWxzKGxtKHNjb3JlIH4gZ2VuZGVyLCBkYXRhKSx0eXBlPSJyZXNwb25zZSIpDQpgYGANCg0KIyMjIyMgUGxvdHMNCg0KYGBge3J9DQpwYXIobWZyb3c9YygxLDIpKQ0KaGlzdChyZXMsIGZyZXE9RkFMU0UpDQpjdXJ2ZShkbm9ybSh4LCBtZWFuPW1lYW4ocmVzKSwgc2Q9c2QocmVzKSksIGFkZD1UUlVFLCBjb2w9InJlZCIpDQpxcW5vcm0ocmVzKQ0KcXFsaW5lKHJlcywgY29sPSJyZWQiKQ0KYGBgDQoNCiMjIyMjIFNoYXBpcm8tV2lsaw0KDQpgYGB7cn0NCnNoYXBpcm8udGVzdChyZXMpICMgb2sgamFtb3ZpDQpgYGANCg0KIyMjIyBFcXVhbCB2YXJpYW5jZXMNCg0KIyMjIyMgQmFydGxldHQNCg0KYGBge3J9DQpiYXJ0bGV0dC50ZXN0KHNjb3JlIH4gZ2VuZGVyLCBkYXRhKQ0KYGBgDQoNCiMjIyMjIExldmVuZQ0KDQpgYGB7cn0NCmxpYnJhcnkoY2FyKQ0KbGV2ZW5lVGVzdChzY29yZSB+IGFzLmZhY3RvcihnZW5kZXIpLCBkYXRhLCBjZW50ZXIgPSBtZWFuKSAjIG9rIGphbW92aQ0KYGBgDQoNCkluIExldmVuZSB0ZXN0OiBpZiBwLXZhbHVlIGlzIGdyZWF0ZXIgdGhhbiAwLjA1LCB3ZSBkbyBub3QgcmVqZWN0IEgwIGFuZCB3ZSBjb25jbHVkZSB0aGF0IHRoZSB2YXJpYW5jZXMgb2Ygb3VyIHR3byBncm91cHMgYXJlIGhvbW9nZW5lb3VzLg0KDQojIyMjIE5vIG91dGxpZXJzDQoNCmBgYHtyfQ0Kb3V0bGllcnMgPC0gZnVuY3Rpb24oeCkgew0KICAgcWluZiA8LSBxdWFudGlsZSh4LCAwLjI1KSAtIChJUVIoeCkqMS41KQ0KICAgcXN1cCA8LSBxdWFudGlsZSh4LCAwLjc1KSArIChJUVIoeCkqMS41KQ0KICAgeFt4IDwgcWluZiB8IHggPiBxc3VwXQ0KfQ0KDQpvdXRsaWVycyhncm91cDEpDQpvdXRsaWVycyhncm91cDIpDQpgYGANCg0KIyMjIFRlc3QNCg0KYGBge3J9DQp0ZXN0IDwtIHQudGVzdChzY29yZSB+IGdlbmRlciwgZGF0YSwgdmFyLmVxdWFsID0gVCkgIyBvayBpbiBqYW1vdmkNCnRlc3QNCmBgYA0KDQojIyMgQ29uZmlkZW5jZSBpbnRlcnZhbHMNCg0KYGBge3J9DQp0ZXN0JGNvbmYuaW50DQpgYGANCg0KVGhpcyBjb25maWRlbmNlIGludGVydmFsIGVuY29tcGFzc2VzIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIG1lYW5zIG9mIHRoZSBncm91cHMuIElmIHRoZSB0ZXN0IGlzIHVuaWxhdGVyYWwsIG9uZSBvZiB0aGUgbGltaXRzIG9mIHRoZSBDSSB3aWxsIGJlIGluZmluaXR5Lg0KDQojIyMgRWZmZWN0IHNpemUNCg0KYGBge3J9DQppZighcmVxdWlyZShlZmZzaXplKSkgaW5zdGFsbC5wYWNrYWdlcygiZWZmc2l6ZSIpDQpsaWJyYXJ5KGVmZnNpemUpDQooY29oZW50ZXN0IDwtIGNvaGVuLmQoc2NvcmUgfiBnZW5kZXIsIGRhdGEpKSAjb2sgamFtb3ZpDQpgYGANCg0KQ29oZW4ncyBkIGVzdCBmYWlibGUgc2kgZCA9IC4yMCwgbW9kw6lyw6kgc2kgZCA9IC41MCwgaW1wb3J0YW50IHNpIGQgPSAuODAgLiBMZSBzaWduZSArIG91IC0gZXN0IGRvbm7DqSBwYXIgbCdvcmRyZSBkZXMgdmFyaWFibGVzLg0KDQojIyMgUG93ZXIgYW5hbHlzaXMNCg0KIyMjIyBGaW5kaW5nIHBvd2VyDQoNCmBgYHtyfQ0KaWYoIXJlcXVpcmUocHdyKSkgaW5zdGFsbC5wYWNrYWdlcygicHdyIikNCmxpYnJhcnkocHdyKQ0KcHdyLnQudGVzdChzaWcubGV2ZWwgPSAwLjA1LCBuID0gbGVuZ3RoKGRhdGEkc2NvcmUpLzIsIGQgPSBjb2hlbnRlc3QkZXN0aW1hdGUsIHR5cGUgPSAidHdvLnNhbXBsZSIpDQpgYGANCg0KIyMjIyBGaW5kaW5nIE4NCg0KYGBge3J9DQpwd3IudC50ZXN0KHNpZy5sZXZlbCA9IDAuMDUsIHBvd2VyID0gMC44LCBkID0gY29oZW50ZXN0JGVzdGltYXRlLCB0eXBlID0gInR3by5zYW1wbGUiKQ0KYGBgDQoNCiMjIE5vbi1wYXJhbWV0cmljIHRlc3QgOiBub24tZXF1YWwgdmFyaWFuY2VzDQoNCiMjIyBUZXN0DQoNCmBgYHtyfQ0KdC50ZXN0KHNjb3JlIH4gZ2VuZGVyLCBkYXRhLCB2YXIuZXF1YWwgPSBGKSAjIG9rIGluIGphbW92aQ0KYGBgDQoNCiMjIyBFZmZlY3Qgc2l6ZQ0KDQpgYGB7cn0NCmlmKCFyZXF1aXJlKGVmZnNpemUpKSBpbnN0YWxsLnBhY2thZ2VzKCJlZmZzaXplIikNCmxpYnJhcnkoZWZmc2l6ZSkNCihjb2hlbnRlc3QgPC0gY29oZW4uZChzY29yZSB+IGdlbmRlciwgZGF0YSwgdmFyLmVxdWFsID0gRikpDQpgYGANCg0KIyMgTm9uLXBhcmFtZXRyaWMgdGVzdCA6IG5vbi1ub3JtYWxseSBkaXN0cmlidXRlZCByZXNpZHVhbHMNCg0KIyMjIENvbmRpdGlvbnMNCg0KIyMjIyBJbmRlcGVuZGVudCBvYnNlcnZhdGlvbnMNCg0KVGhlIGluZGVwZW5kZW5jZSBvZiBvYnNlcnZhdGlvbnMgaXMgZ3VhcmFudGVlZCBieSB0aGUgcmVjcnVpdG1lbnQgcHJvY2Vzcy4NCg0KIyMjIyBOIGluIGVhY2ggZ3JvdXAgXD4gMjANCg0KYGBge3J9DQpsZW5ndGgoZ3JvdXAxKSA+IDIwICYgbGVuZ3RoKGdyb3VwMikgPiAyMA0KYGBgDQoNCiMjIyBUZXN0DQoNCmBgYHtyfQ0Kd2lsY294LnRlc3Qoc2NvcmUgfiBnZW5kZXIsIGRhdGEsIGNvcnJlY3QgPSBGKSAjIG9rIGluIGphbW92aQ0KYGBgDQoNCiMjIyBFZmZlY3Qgc2l6ZQ0KDQpgYGB7cn0NCmlmKCFyZXF1aXJlKGVmZmVjdHNpemUpKSBpbnN0YWxsLnBhY2thZ2VzKCJlZmZlY3RzaXplIikNCmxpYnJhcnkoZWZmZWN0c2l6ZSkNCg0KcmFua19iaXNlcmlhbChkYXRhJHNjb3JlLCBkYXRhJGdlbmRlcikNCmBgYA0KDQojIyBSZXN1bHRzIGFuZCByZWNvbW1lbmRhdGlvbnMNCg==