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