quelques commandes qui lui sont nécessaires

Transcription

quelques commandes qui lui sont nécessaires
M1 IUP
TP spécifiques de statistiques
Université de Poitiers
Année 2009-2010
Quelques commandes spécifiques au TP1
1
Calculs des statistiques usuelles
R peut calculer les statistiques usuelles associées à une variable :
x=rnorm(100)
mean(x)
var(x)
sd(x)
median(x)
quantile(x)
summary(x)
Ces commandes sont explicites exceptées pour sd qui demande l’écart-type (racine de la
variance) et summary qui affiche les quantiles et la moyenne de la variable.
2
Représentation graphique
On obtient une boite à moustache par la commande boxplot :
x=rnorm(100)
boxplot(x,main=‘‘La boite à moustache de la variable x’’)
On peut demander la juxtaposition de plusieurs boites à moustaches en regroupant
les variables dans une table :
x=rnorm(100)
y=rnorm(100)
z= 2 + 4*rnorm(100)
table = data.frame(Var1=x,Var2=y,Var3=z)
boxplot(table,main=‘‘Une série de boites à moustache’’)
Les histogrammes sont obtenus par la commande hist. On peut imposer le nombre de
classes par l’option nclass :
x=rnorm(100)
hist(x)
hist(x,nclass=4)
1
3
3.1
Tests de normalité
QQ-plot
Le QQ-plot d’une variable permet de tester graphiquement sa normalité. On l’obtient
par les commandes qqnorm et qqline. Elles produisent un nuage de points et une droite.
Plus le nuage est proche de la droite, plus la variable peut-être considérée comme normale.
On essaiera le code suivant pour calibrer les interprétations que l’on peut faire d’un tel
QQ-plot :
x=rnorm(100) #Génération de 100 échantillons d’une loi normale
X11()
hist(x)
X11()
qqnorm(x)
qqline(x)
y=x^2 #Le carré d’une variable normale n’est plus une variable normale
X11()
hist(y)
X11()
qqnorm(y)
qqline(y)
z = runif(100) #La loi uniforme ne ressemble pas à une loi normale
X11()
hist(z)
X11()
qqnorm(z)
qqline(z)
a = rt(100,10) #La loi de Student à 10 ddl ressemble à une loi normale
X11()
hist(a)
X11()
qqnorm(a)
qqline(a)
3.2
Test de Shapiro-Wilk
Il s’agit d’un test permettant d’étudier la normalité d’une variable. Il s’obtient par la
commande shapiro.test. On pourra reprendre les exemples précédents :
2
x=rnorm(100) #Génération de 100 échantillons d’une loi normale
shapiro.test(x)
y=x^2 #Le carré d’une variable normale n’est plus une variable normale
shapiro.test(y)
z = runif(100) #La loi uniforme ne ressemble pas à une loi normale
shapiro.test(z)
a = rt(100,10) #La loi de Student à 10 ddl ressemble à une loi normale
shapiro.test(a)
L’hypothèse nulle de ce test est H0 : la variable est normale. R calcule la valeur W de la
statistique du test et la p-valeur qui lui est associée.
Cette p-valeur représente la probabilité que l’on a de se tromper en rejetant H0 .
Habituellement, on effectue des tests à un seuil de 5%, cela signifie que l’on ne souhaite
pas avoir plus de 5% de chance de se tromper en rejetant H0 . On compare donc la p-valeur
à 0.05. Si p-valeur < 0.05, on peut rejeter H0 . Sinon, nous nous devons de la conserver.
Cette interprétation de la p-valeur est valable dans tous les tests statistiques usuels.
4
4.1
Tests de Student d’égalité des moyennes
Remarques préalables au test de Student
En toute rigueur, avant d’effectuer un test de Student, il est souhaitable de vérifier
que les variables en question ont une allure normale et présente des variances similaires.
Pour la normalité, on peut faire appel aux techniques de la section précédente. Cependant, le test de Student est robuste et se comporte bien même si les variables laissent
un doute quant à leur normalité.
Pour l’égalité des variances, on peut faire appel à un test de Fisher. Encore une fois,
le test de Student est robuste et se comporte bien même si les variances présentent une
certaine disparité.
4.2
Test de Student dans le cas d’échantillons indépendants
Effectuons dans un premier temps un test sur deux échantillons indépendants (par
exemple un échantillon témoin et un échantillon ayant subi un traitement) :
x = c(1.83, 0.50, 1.62, 2.48, 1.68, 1.88, 1.55, 3.06, 1.30)
y = c(0.878, 0.647, 0.598, 2.05, 1.06, 1.29, 1.06, 3.14, 1.29)
t.test(x,y)
L’hypothèse nulle du test de Student est toujours H0 : les moyennes µX et µY des variables
X et Y sont identiques. L’hypothèse alternative H1 st donc µX −µY 6= 0, comme le rappelle
R lors du test. Le logiciel calcule la valeur t de la statistique du test, le nombre de degré de
liberté, un intervalle de confiance pour µX −µY et surtout la p-valeur de ce test (p.value).
3
4.3
Test de Student dans le cas d’échantillons appariés
Supposons maintenant que les échantillons soient appariés. Cela signifie qu’ils ont été
mesurés sur les mêmes individus, avant et après une certaine manipulation (on peut penser
à la mesure du rythme cardiaque de patients avant et après un effort physique). On signifie
à R que les échantillons sont appariés par l’option paired=TRUE :
x = c(1.83, 0.50, 1.62, 2.48, 1.68, 1.88, 1.55, 3.06, 1.30)
y = c(0.878, 0.647, 0.598, 2.05, 1.06, 1.29, 1.06, 3.14, 1.29)
t.test(x,y,paired=TRUE)
Les sorties de R, hypothèse nulle H0 et interprétation de la p-valeur sont les mêmes
que dans les tests précédents.
4.4
Une dernière remarque
Il appartient à l’utilisateur de déterminer si les échantillons qu’il possède sont appariés
ou non. Dans notre exemple, on remarque que, sur les mêmes échantillons, le test dans le
cas apparié ne donne pas le même résultat que le test dans le cas indépendant.
De manière générale, il appartient à l’utilisateur de connaitre les hypothèses nulles
associées aux tests statistiques usuels de manière à pouvoir interpréter correctement les
calculs effectués par R.
5
Script type
Le script suivant est un exemple de ce qui pourrait être demandé lors du TP1 :
#Entrée des données
x = c(1.83, 0.50, 1.62, 2.48, 1.68, 1.88, 1.55, 3.06, 1.30)
y = c(0.878, 0.647, 0.598, 2.05, 1.06, 1.29, 1.06, 3.14, 1.29)
#Sauvegarde des calculs effectués par R
sink(‘‘Résultats.txt’’)
print(‘‘La moyenne et la variance de x’’)
print(mean(x))
print(var(x))
print(‘‘Le test apparié d’égalité des moyennes’’)
print(t.test(x,y,paired=TRUE))
sink()
#Sauvegarde des graphiques
postscript(‘‘Graphiques.ps’’)
boxplot(y,main=‘‘La boite à moustache de la variable y’’)
qqnorm(y,main=‘‘La QQ-plot de y’’)
qqline(y)
dev.off()
4