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

Context and objectives

Does the population mean or median differ from a predefined value?

Research hypothesis

Statistical hypothesis

H0:

H1:

Data preparation and exploration

Starting session

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

Defining null hypothesis mean

mu0 <- 34

Group descriptives

print("Score")
[1] "Score"
summary(data$score)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
   6.36   18.75   30.25   30.31   41.45   54.78 

Difference between means

mean(data$score)-mu0 # ok jamovi
[1] -3.69145

Parametric test

Conditions

Independent observations

The independence of observations is guaranteed by the recruitment process.

Normally distributed data

Plots
par(mfrow=c(1,2))
hist(data$score, freq=FALSE)
curve(dnorm(x, mean=mean(data$score), sd=sd(data$score)), add=TRUE, col="red")
qqnorm(data$score)
qqline(data$score, col="red")

Kolmogorov-Smirnov
ks.test(data$score, "pnorm", mean(data$score), sd(data$score)) # ok in jamovi
Warning in ks.test(data$score, "pnorm", mean(data$score), sd(data$score)) :
  ties should not be present for the Kolmogorov-Smirnov test

    One-sample Kolmogorov-Smirnov test

data:  data$score
D = 0.083478, p-value = 0.1231
alternative hypothesis: two-sided
Shapiro-Wilk
shapiro.test(data$score) # ok in jamovi

    Shapiro-Wilk normality test

data:  data$score
W = 0.95916, p-value = 1.607e-05

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(data$score)
numeric(0)

Test

t.test(data$score, mu = mu0) # ok in jamovi

    One Sample t-test

data:  data$score
t = -4.0113, df = 199, p-value = 8.542e-05
alternative hypothesis: true mean is not equal to 34
95 percent confidence interval:
 28.49383 32.12327
sample estimates:
mean of x 
 30.30855 

Effect size

if(!require(effsize)) install.packages("effsize")
Le chargement a nécessité le package : effsize
library(effsize)
(cohentest <- cohen.d(data$score, NA, mu = mu0)) #ok jamovi

Cohen's d (single sample)

d estimate: -0.2836416 (small)
Reference mu: 34
95 percent confidence interval:
       lower        upper 
-0.563917120 -0.003366054 

Power analysis

Finding power

if(!require(pwr)) install.packages("pwr")
Le chargement a nécessité le package : pwr
library(pwr)
pwr.t.test(d = cohentest$estimate, n = length(data$score), sig.level = 0.05, type = "one.sample", alternative = "two.sided")

     One-sample t test power calculation 

              n = 200
              d = 0.2836416
      sig.level = 0.05
          power = 0.9789182
    alternative = two.sided

Finding N

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

     One-sample t test power calculation 

              n = 99.4967
              d = 0.2836416
      sig.level = 0.05
          power = 0.8
    alternative = two.sided

Non-parametric test

Conditions

Independent observations

The independence of observations is guaranteed by the recruitment process.

N > 30

length(data$score) > 30
[1] TRUE

Test

wilcox.test(data$score, mu = mu0) # ok jamovi

    Wilcoxon signed rank test with continuity correction

data:  data$score
V = 6951, p-value = 0.0001564
alternative hypothesis: true location is not equal to 34

Effect size

if(!require(effectsize)) install.packages("effectsize")
Le chargement a nécessité le package : effectsize
Registered S3 method overwritten by 'parameters':
  method                         from      
  format.parameters_distribution datawizard
library(effectsize)

rank_biserial(data$score, mu = mu0)
r (rank biserial) |         95% CI
----------------------------------
-0.31             | [-0.45, -0.16]

- Deviation from a difference of 34.

Results and recommendations

LS0tDQp0aXRsZTogIk1lYW4gZGlmZmVycyBmcm9tIGEgdmFsdWUiDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQpBIG5vdGVib29rIG1hZGUgYnkgUGF1bCBBbWF0LCBbYW1hdC1kZXNpZ24uY29tXShhbWF0LWRlc2lnbi5jb20pDQoNCiMjIENvbnRleHQgYW5kIG9iamVjdGl2ZXMNCg0KPiBEb2VzIHRoZSBwb3B1bGF0aW9uIG1lYW4gb3IgbWVkaWFuIGRpZmZlciBmcm9tIGEgcHJlZGVmaW5lZCB2YWx1ZT8NCg0KIyMjIFJlc2VhcmNoIGh5cG90aGVzaXMNCg0KIyMjIFN0YXRpc3RpY2FsIGh5cG90aGVzaXMNCg0KSDA6DQoNCkgxOg0KDQojIyBEYXRhIHByZXBhcmF0aW9uIGFuZCBleHBsb3JhdGlvbg0KDQojIyMgU3RhcnRpbmcgc2Vzc2lvbg0KDQpgYGB7cn0NCmxpYnJhcnkocmVhZHIpDQpkYXRhIDwtIHJlYWRfY3N2KCJkYXRhLmNzdiIsIHNob3dfY29sX3R5cGVzID0gRkFMU0UpDQpgYGANCg0KIyMjIERlZmluaW5nIG51bGwgaHlwb3RoZXNpcyBtZWFuDQoNCmBgYHtyfQ0KbXUwIDwtIDM0DQpgYGANCg0KIyMjIEdyb3VwIGRlc2NyaXB0aXZlcw0KDQpgYGB7cn0NCnByaW50KCJTY29yZSIpDQpzdW1tYXJ5KGRhdGEkc2NvcmUpDQpgYGANCg0KIyMjIERpZmZlcmVuY2UgYmV0d2VlbiBtZWFucw0KDQpgYGB7cn0NCm1lYW4oZGF0YSRzY29yZSktbXUwICMgb2sgamFtb3ZpDQpgYGANCg0KIyMgUGFyYW1ldHJpYyB0ZXN0DQoNCiMjIyBDb25kaXRpb25zDQoNCiMjIyMgSW5kZXBlbmRlbnQgb2JzZXJ2YXRpb25zDQoNClRoZSBpbmRlcGVuZGVuY2Ugb2Ygb2JzZXJ2YXRpb25zIGlzIGd1YXJhbnRlZWQgYnkgdGhlIHJlY3J1aXRtZW50IHByb2Nlc3MuDQoNCiMjIyMgTm9ybWFsbHkgZGlzdHJpYnV0ZWQgZGF0YQ0KDQojIyMjIyBQbG90cw0KDQpgYGB7cn0NCnBhcihtZnJvdz1jKDEsMikpDQpoaXN0KGRhdGEkc2NvcmUsIGZyZXE9RkFMU0UpDQpjdXJ2ZShkbm9ybSh4LCBtZWFuPW1lYW4oZGF0YSRzY29yZSksIHNkPXNkKGRhdGEkc2NvcmUpKSwgYWRkPVRSVUUsIGNvbD0icmVkIikNCnFxbm9ybShkYXRhJHNjb3JlKQ0KcXFsaW5lKGRhdGEkc2NvcmUsIGNvbD0icmVkIikNCmBgYA0KDQojIyMjIyBLb2xtb2dvcm92LVNtaXJub3YNCg0KYGBge3J9DQprcy50ZXN0KGRhdGEkc2NvcmUsICJwbm9ybSIsIG1lYW4oZGF0YSRzY29yZSksIHNkKGRhdGEkc2NvcmUpKSAjIG9rIGluIGphbW92aQ0KYGBgDQoNCiMjIyMjIFNoYXBpcm8tV2lsaw0KDQpgYGB7cn0NCnNoYXBpcm8udGVzdChkYXRhJHNjb3JlKSAjIG9rIGluIGphbW92aQ0KYGBgDQoNCiMjIyMgTm8gb3V0bGllcnMNCg0KYGBge3J9DQpvdXRsaWVycyA8LSBmdW5jdGlvbih4KSB7DQogICBxaW5mIDwtIHF1YW50aWxlKHgsIDAuMjUpIC0gKElRUih4KSoxLjUpDQogICBxc3VwIDwtIHF1YW50aWxlKHgsIDAuNzUpICsgKElRUih4KSoxLjUpDQogICB4W3ggPCBxaW5mIHwgeCA+IHFzdXBdDQp9DQoNCm91dGxpZXJzKGRhdGEkc2NvcmUpDQpgYGANCg0KIyMjIFRlc3QNCg0KYGBge3J9DQp0LnRlc3QoZGF0YSRzY29yZSwgbXUgPSBtdTApICMgb2sgaW4gamFtb3ZpDQpgYGANCg0KIyMjIEVmZmVjdCBzaXplDQoNCmBgYHtyfQ0KaWYoIXJlcXVpcmUoZWZmc2l6ZSkpIGluc3RhbGwucGFja2FnZXMoImVmZnNpemUiKQ0KbGlicmFyeShlZmZzaXplKQ0KKGNvaGVudGVzdCA8LSBjb2hlbi5kKGRhdGEkc2NvcmUsIE5BLCBtdSA9IG11MCkpICNvayBqYW1vdmkNCmBgYA0KDQojIyMgUG93ZXIgYW5hbHlzaXMNCg0KIyMjIyBGaW5kaW5nIHBvd2VyDQoNCmBgYHtyfQ0KaWYoIXJlcXVpcmUocHdyKSkgaW5zdGFsbC5wYWNrYWdlcygicHdyIikNCmxpYnJhcnkocHdyKQ0KcHdyLnQudGVzdChkID0gY29oZW50ZXN0JGVzdGltYXRlLCBuID0gbGVuZ3RoKGRhdGEkc2NvcmUpLCBzaWcubGV2ZWwgPSAwLjA1LCB0eXBlID0gIm9uZS5zYW1wbGUiLCBhbHRlcm5hdGl2ZSA9ICJ0d28uc2lkZWQiKQ0KYGBgDQoNCiMjIyMgRmluZGluZyBODQoNCmBgYHtyfQ0KcHdyLnQudGVzdChkID0gY29oZW50ZXN0JGVzdGltYXRlLCBwb3dlciA9IDAuOCwgc2lnLmxldmVsID0gMC4wNSwgdHlwZSA9ICJvbmUuc2FtcGxlIiwgYWx0ZXJuYXRpdmUgPSAidHdvLnNpZGVkIikNCmBgYA0KDQojIyBOb24tcGFyYW1ldHJpYyB0ZXN0DQoNCiMjIyBDb25kaXRpb25zDQoNCiMjIyMgSW5kZXBlbmRlbnQgb2JzZXJ2YXRpb25zDQoNClRoZSBpbmRlcGVuZGVuY2Ugb2Ygb2JzZXJ2YXRpb25zIGlzIGd1YXJhbnRlZWQgYnkgdGhlIHJlY3J1aXRtZW50IHByb2Nlc3MuDQoNCiMjIyMgTiBcPiAzMA0KDQpgYGB7cn0NCmxlbmd0aChkYXRhJHNjb3JlKSA+IDMwDQpgYGANCg0KIyMjIFRlc3QNCg0KYGBge3J9DQp3aWxjb3gudGVzdChkYXRhJHNjb3JlLCBtdSA9IG11MCkgIyBvayBqYW1vdmkNCmBgYA0KDQojIyMgRWZmZWN0IHNpemUNCg0KYGBge3J9DQppZighcmVxdWlyZShlZmZlY3RzaXplKSkgaW5zdGFsbC5wYWNrYWdlcygiZWZmZWN0c2l6ZSIpDQpsaWJyYXJ5KGVmZmVjdHNpemUpDQoNCnJhbmtfYmlzZXJpYWwoZGF0YSRzY29yZSwgbXUgPSBtdTApDQpgYGANCg0KIyMgUmVzdWx0cyBhbmQgcmVjb21tZW5kYXRpb25zDQo=