library(tidyverse)
library(psych)
En 1966, Sternberg a mené une étude simple dans laquelle il cherche à étudier la dynamique de la mémoire à court terme. Il a présenté un ensemble d’items (listes d’items de longueur variable de chiffres à mémoriser) sur un écran en face du sujet. Tout de suite après la présentation de cette liste, il présente au sujet un item test pour lequel le sujet doit dire si oui ou non il faisait partie de la liste qui venait d’être présentée. Les donnéesde ce TP ont été recueillies dans une expérience similaire à celle de Sternberg mais avec un seul sujet (Les données se trouvent dans le fichier Tab2-1.dat
).
Les donnéesde ce TP ont été recueillies dans une expérience similaire à celle de Sternberg mais avec un seul sujet (Les données se trouvent dans le fichier Tab2-1.dat
).
Le variables sont les suivantes :
RxTime
: temps moyen de reconnaissanceNStim
: nombre d’items à mémoriserYesNo
: présence (Yes) ou absence de l’item (No).Plutôt que de saisir les commandes directement dans la console, il est tout à fait possible de les enregistrer directement dans un script de commandes R, ce qui permet de reproduire les analyses ultérieurement. Dans l’éditeur interne à R, il suffit d’écrire les commandes telles qu’on les entrerait sous la console et il est possible de transférer directement la ligne sur laquelle le curseur se situe ou une sélection multiple à la console.
2.Acquérir les données et les visualiser par les commandes suivantes
Stimuli <- read.table("Tab2-1.dat",header=TRUE)
head(Stimuli)
## Trial RxTime NStim YesNo
## 1 1 40 1 1
## 2 2 41 1 1
## 3 3 47 1 1
## 4 4 38 1 1
## 5 5 40 1 1
## 6 6 37 1 1
summary(Stimuli)
## Trial RxTime NStim YesNo
## Min. : 1.00 Min. : 36.00 Min. :1 Min. :1.0
## 1st Qu.: 75.75 1st Qu.: 51.00 1st Qu.:1 1st Qu.:1.0
## Median :150.50 Median : 59.50 Median :3 Median :1.5
## Mean :150.50 Mean : 60.26 Mean :3 Mean :1.5
## 3rd Qu.:225.25 3rd Qu.: 67.00 3rd Qu.:5 3rd Qu.:2.0
## Max. :300.00 Max. :125.00 Max. :5 Max. :2.0
Stimuli <- Stimuli %>% mutate(NStim = factor(NStim),
YesNo = factor(YesNo,labels=c("Yes","No")))
summary(Stimuli)
## Trial RxTime NStim YesNo
## Min. : 1.00 Min. : 36.00 1:100 Yes:150
## 1st Qu.: 75.75 1st Qu.: 51.00 3:100 No :150
## Median :150.50 Median : 59.50 5:100
## Mean :150.50 Mean : 60.26
## 3rd Qu.:225.25 3rd Qu.: 67.00
## Max. :300.00 Max. :125.00
RxTime
. Calculer la moyenne, le minimum, le maximum et les trois quartiles de la variable cette variable en exécutant la commande summary(Stimuli$RxTime)
.summary(Stimuli$RxTime)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 36.00 51.00 59.50 60.26 67.00 125.00
Que peut-on en remarquer ?
tab_RxTime <- Stimuli %>% group_by(RxTime) %>% summarise(n=n())
View(tab_RxTime)
Stimuli %>% group_by(NStim) %>% summarise(n=n())
## # A tibble: 3 x 2
## NStim n
## <fct> <int>
## 1 1 100
## 2 3 100
## 3 5 100
Stimuli %>% group_by(NStim) %>% summarise(Moygroupe =mean(RxTime))
## # A tibble: 3 x 2
## NStim Moygroupe
## <fct> <dbl>
## 1 1 53.3
## 2 3 60.6
## 3 5 66.9
StimuliMoygroup <- Stimuli %>% group_by(NStim) %>% summarise(Moygroupe =mean(RxTime))
StimuliMoygroup
## # A tibble: 3 x 2
## NStim Moygroupe
## <fct> <dbl>
## 1 1 53.3
## 2 3 60.6
## 3 5 66.9
Stimuli %>% group_by(NStim) %>% summarise(Moygroupe =mean(RxTime),ETgroupe=sd(RxTime))
## # A tibble: 3 x 3
## NStim Moygroupe ETgroupe
## <fct> <dbl> <dbl>
## 1 1 53.3 13.4
## 2 3 60.6 9.41
## 3 5 66.9 12.3
RxTime
, pour chaque modalité.ggplot(data=Stimuli, aes(x=RxTime, color=NStim, fill=NStim)) +
geom_density(alpha=0.5)
A vous de jouer !
ggplot(data=Stimuli, aes(x=RxTime, color=NStim, fill=NStim)) +
geom_density(alpha=0.5) +
geom_vline(data=StimuliMoygroup , aes(xintercept=Moygroupe, color=NStim),
linetype="dashed")
ggplot(data=Stimuli, aes(x=RxTime)) + geom_density() +
facet_grid(NStim ~ .)
ggplot(data = Stimuli, aes(x = NStim, y = RxTime)) + geom_boxplot()
Nous avons remarqué dans cet experience que le temps de réaction observée (sur l’echantillon) augmente avec le nombre d’items à memoriser. Un modèle linéaire semble-t-il pertinent ? Quel type des questions peut-on se poser ?
Interpréter les résultats des commandes suivantes (pour chaque cas traité).
Qu’est qui se passe si on considère la variable NStim
comme une variable qualitative à 3 modalités ? Est-ce que c’est logique ? Y a-t-il une différence significative entre les temps de réactions des 3 catégories ? Peut-on “expliquer” RxTime
par NStim
?
Le modèle d’Anova à un factor correspond à un modèle linéaire simple avec une variable explicative qualitative.
fit1 <- aov(RxTime ~ NStim, data = Stimuli)
coef(fit1)
## (Intercept) NStim3 NStim5
## 53.27 7.38 13.59
summary(fit1)
## Df Sum Sq Mean Sq F value Pr(>F)
## NStim 2 9257 4629 33.24 9.4e-14 ***
## Residuals 297 41357 139
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
fit2 <- lm(RxTime ~ NStim , data = Stimuli)
coef(fit2)
## (Intercept) NStim3 NStim5
## 53.27 7.38 13.59
anova(fit2)
## Analysis of Variance Table
##
## Response: RxTime
## Df Sum Sq Mean Sq F value Pr(>F)
## NStim 2 9257 4628.6 33.24 9.395e-14 ***
## Residuals 297 41357 139.2
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Qu’est-ce que font fit1
et le fit2
? Qu’est-ce que font summary(fit1)
et anova(fit2)
? Est-ce qu’on obtient les mêmes résultats ?
Rxtime_hat <- predict(fit2,data = Stimuli)
head(Rxtime_hat)
## 1 2 3 4 5 6
## 53.27 53.27 53.27 53.27 53.27 53.27
Normalité
shapiro.test(Stimuli$RxTime[Stimuli$NStim=="1"])
##
## Shapiro-Wilk normality test
##
## data: Stimuli$RxTime[Stimuli$NStim == "1"]
## W = 0.84388, p-value = 7.094e-09
shapiro.test(Stimuli$RxTime[Stimuli$NStim=="3"])
##
## Shapiro-Wilk normality test
##
## data: Stimuli$RxTime[Stimuli$NStim == "3"]
## W = 0.95867, p-value = 0.003236
shapiro.test(Stimuli$RxTime[Stimuli$NStim=="5"])
##
## Shapiro-Wilk normality test
##
## data: Stimuli$RxTime[Stimuli$NStim == "5"]
## W = 0.92433, p-value = 2.406e-05
residus<-residuals(fit2)
shapiro.test(residus)
##
## Shapiro-Wilk normality test
##
## data: residus
## W = 0.90859, p-value = 1.59e-12
Homogeneité des variances
lawstat::levene.test(Stimuli$RxTime,Stimuli$NStim)
##
## modified robust Brown-Forsythe Levene-type test based on the
## absolute deviations from the median
##
## data: Stimuli$RxTime
## Test Statistic = 1.9511, p-value = 0.1439
Le test de Kruskal Wallis, kruskal.test()
, est la forme non paramétrique de l’ANOVA.
kruskal.test(RxTime ~ NStim ,data = Stimuli)
##
## Kruskal-Wallis rank sum test
##
## data: RxTime by NStim
## Kruskal-Wallis chi-squared = 73.704, df = 2, p-value < 2.2e-16