Académique Documents
Professionnel Documents
Culture Documents
R Pour Les Statophobes
R Pour Les Statophobes
R
pour les statophobes
Utilisation du logiciel statistique R pour raliser les analyses statistiques de base, lattention des tudiants allergiques aux statistiques en gnral et aux logiciels en particulier
Denis Poinsot
Denis Poinsot (2005). La libre reproduction de ce document est non seulement autorise mais la bienvenue du moment qu'elle a lieu pour un usage personnel ou dans un but pdagogique.
Denis Poinsot
R pour Statophobes
Avant propos
Lorsque jai rdig avec fivre la premire version de Statistiques pour Statophobes en 1998, il sagissait de fournir un support autonome de cours compltant des sances de travaux dirigs effectues dans des salles banalises (sans ordinateurs). Tous les calculs devaient donc (et peuvent toujours) se faire au moyen dune simple calculatrice. Il existait cependant de ce fait un dcalage regrettable entre les exercices prsents et la manire dont les tudiant traitent leurs donnes relles lors de la rdaction d'un rapport de recherche. Dans ce dernier cas, en effet, un logiciel tait systmatiquement utilis. Je dis un mais je devrais dire des tas , et ctait justement un problme dcourageant : fallait-il leur apprendre se servir de Minitab ? SAS Statistica ? Statview ? Et que feraient ils en stage si la structure daccueil navait pas le logiciel hors de prix quils avaient (pniblement) appris utiliser ? Cest alors que des collgues bien plus forts que moi en stats1 mont fait dcouvrir dune part lexistence et dautre part la puissance du logiciel gratuit R, disponible en ligne et utilis par un nombre croissant de chercheurs dans le monde. Pass le premier moment de recul (R a la rputation non mrite dtre difficile daccs) jy ai tremp un orteil, puis lautre, puis jai t tellement convaincu que jai dfinitivement effac tous les autres logiciels de stats qui encombraient mon ordinateur. Tenant enfin la perle rare (puissant, gratuit, tlchargeable partout, flexible), il ne restait plus qu convaincre les tudiants encore-plus-rfractaires-quemoi sy mettre, do le prsent document. Il complte (mais ne remplace pas) le prcdent. L ou Statistiques pour Statophobes explique longuement (peut tre mme trop !) et pas pas les notions statistiques, les prcautions prendre, les erreurs ne pas commettre, pour que vous compreniez ce que vous faites, le prsent document se contente de "montrer comment on fait des tests avec R ", Utiliss ensemble, ces deux ouvrages devraient donc jespre vous permettre non seulement de "faire des tests" mais de comprendre ce que vous faites quand vous utilisez les mthodes statistiques de base.
Denis Poinsot
R pour Statophobes
Sommaire
1. R, cquoidonc ? 2. FONCTIONS DE BASE 2.1 manipulation des objets 2.2. La fonction stripchart( ) : examinez vos donnes individuelles 2.3. La fonction hist( ) : ralisez instantanment un histogramme de la distribution 2.4. La fonction plot( ) : examinez et personnalisez rapidement vos nuages de points 3. INTERVALLES DE CONFIANCE 3.1. Intervalle de confiance dune moyenne, loi normale 3.2 Intervalle de confiance dune moyenne, loi non normale 3.3 Intervalle de confiance dun pourcentage 3.4 Intervalle de confiance de n'importe quoi : le bootstrap 4. COMPARAISONS DE MOYENNES 4.1 Comparaison de deux moyennes, test t de Student 4.2 Comparaison de deux moyennes, test t de Student pour sries apparies 4.3. Comparaison de deux moyennes, test W de Wilcoxon 4.4. Comparaison de deux moyennes, test W de Wilcoxon pour sries apparies 4.5 Comparaison simultane de plus de deux moyennes, ANOVA suivie du test HSD de Tukey 4.6 Comparaison simultane de plus de deux moyennes, test H de Kruskal-Wallis 5. COMPARAISON DE POURCENTAGES 5.1 Comparaison d'un pourcentage observ avec un pourcentage thorique, test binomial exact 5.2 Comparaison dune distribution observe avec une distribution thorique : chi2 de conformit 5.3 Comparaison entre elles de plusieurs distributions observes, chi2 dhomognit 5.4 Comparaison entre elles de plusieurs distributions observes (N petit), test exact de Fisher 6 MESURE DE LA LIAISON ENTRE VARIABLES QUANTITATIVES 6.1 Calcul de la force de la liaison entre deux variables quantitatives distribues normalement l'une par rapport l'autre : le coefficient de corrlation R de Pearson 6.2 Calcul de la force de la liaison entre deux variables quantitatives non distribues normalement l'une par rapport l'autre : le coefficient de corrlation R de Spearman. 6.3 Dtermination de la pente reliant une variable causale X une variable explique Y, avec Y distribue normalement pour un X donn : rgression linaire de Y en X. ANNEXES Annexe 1 : travailler partir de fichier de donnes volumineux saisis initialement dans Excel Annexe 2. Dmonstration de l'impuissance totale du test W de Wilcoxon face deux chantillons vraiment trop petits Annexe 3. Aide mmoire
5 7 8 9
10 11 12 13
16 18 20 21
rdiger
23
24 25 26 27
28 29 30
32 35 36
Denis Poinsot
R pour Statophobes
1.. R, cquoidonc ?
R est un logiciel d'analyse statistique extrmement puissant mais pourtant gratuit, rgulirement mis jour, et dont la version en cours peut tre obtenue sur le web en libre accs (http://cran.cict.fr/). Il est SAS et autres Statistica ce que Linux est Windows : une solution de rechange non seulement crdible mais professionnelle et dont la disponibilit est garantie long terme. En effet, R est largement utilis dans le monde de la recherche scientifique au plus haut niveau et repose sur un trs solide rseau mondial d'informaticiens et de statisticiens bnvoles regroups dans le R core team. Ces bienfaiteurs de l'humanit statistique contribuent chaque jour l'ajout de nouvelles fonctions (chaque utilisateur de R est par ailleurs invit contribuer l'oeuvre commune s'il a mis au point une nouvelle procdure, qui ira enrichir la vaste bibliothque existante). R permet ainsi d'effectuer des analyses statistiques d'une complexit bouriffante sur les sujets les plus divers, et ses possibilits graphiques sont virtuellement infinies. Etant un utilisateur novice (je my suis plong, avec circonspection, en 2004, sur les conseils de collgues trs expriments), je me contenterai ici de vous dcrire par des exemples concrets les quelques fonctions statistiques de base que je sais utiliser et qui permettent d'effectuer les tests les plus courants. Ces fonctions font partie du module nomm justement "base" et qui comme son nom l'indique constitue le module le plus basique de R. Le module "base" est charg en mmoire automatiquement chaque fois que vous ouvrez R, donc vous n'avez vous proccuper de rien au del du simple double-clic sur l'icne R lorsque vous aurez install le logiciel aprs l'avoir tlcharg (c'est trs facile, la preuve tant que j'y suis arriv). Aprs avoir double-cliqu pour ouvrir R, vous vous retrouvez devant une demi page de baratin qui se termine par le prompt (le signe suprieur ) : > Eh oui, pas le moindre menu droulant se mettre sous la souris (en tout cas pas question de lancer une analyse statistique en utilisant ceux que vous verrez dans la barre des tches), il va vous falloir entrer vos instructions " l'ancienne", ligne par ligne, respectant ainsi la fire devise (un brin macho) des informaticien purs et durs, utilisateurs dUnix : Real Men Dont Click . Mais en ralit c'est beaucoup moins compliqu qu'on veut bien le dire. Et maintenant passons aux choses srieuses. Conventions d'criture dans ce document : Times New Roman 12pts, noir Texte explicatif Arial 10pts, bleu Commandes saisir dans R aprs le prompt > Courrier New 10pts, rouge Rponses de R ces commandes
Denis Poinsot
R pour Statophobes
Notez bien les points suivants : 1) on peu nommer les objets librement, donc autant le faire de manire explicite. Le choix de langlais vite dutiliser les lettres accentues (, , ...) que R naimera pas trop si vous utilisez une version anglaise du logiciel, origine anglo-saxonne oblige. Un conseil : dans R, nommez donc vos variables avec des noms anglais, a vous vitera dajouter inconsciemment des accents partout. 2) pour former une liste de donnes qui sera ensuite manipule ventuellement d'un bloc, il suffit de lui donner un nom, de faire suivre ce nom du signe "=" puis de lister les valeurs spares par des virgules, le tout entre parenthses ( ) et prcd de la lettre c (qui est l'abrviation de concatenate c'est dire "faire une chane avec les lments") 3) du fait que la virgule sert de sparateur entre les valeurs, le sparateur dcimal dans R est le point dcimal anglo-saxon et non la virgule. R sait maintenant que les noms men et women dsignent deux objets bien prcis, et il est capable de les manipuler globalement comme deffectuer des oprations sur eux. Il peut videmment lister leur contenu, il suffit de les appeler par leur nom (peut on imaginer plus simple ?) :
Denis Poinsot
R pour Statophobes
> men
Rponse :
[1] 172.5 [2] 175 [3] 176 [4] 177 [5] 177 [6] 178.5 [7] 179 [8] 179 [9] 179.5 [10] 180
Vous remarquerez que le listing est numrot, et vous indique le rang de chaque valeur dans le tableau initial. Pour connatre respectivement la moyenne, la variance, l'cart-type ou tout simplement pour vrifier l'effectif de votre chantillon, les instructions sont les suivantes (en rouge les rponses de R):
> mean(men)
[1] 177.35
=Donner la moyenne de l'objet men Donner la variance de l'objet men Donner l'cart-type (sd=standard deviation) de l'objet men Donner le nombre d'lments (length= longueur) de l'objet men
> var(men)
[1] 5.502778
> sd(men)
[1] 2.3458
> length(men)
[1] 10
Petite remarque : il n'existe pas de fonction "donner l'erreur standard", tout simplement parce que vous pouvez le faire tout seul au moyen de la formule classique "erreur standard de la moyenne=racine(variance/effectif)", donc si vous la voulez, crivez:
> sqrt(var(men)/length(men))
[1] 0.7418071
Calculer la racine carre (sqrt=square root) du ratio entre la variance de men et le nombre d'lments (length) de men.
Supposons maintenant que nous voulions faire un test t de Student entre ces deux moyennes. Avec un logiciel classique, il nous faudrait cliquer sur un menu droulant "tests paramtriques" puis "test de comparaison de moyennes" puis , puis "test t de Student", etc et une dizaine de clics plus tard vous auriez enfin eu ce que vous vouliez. Maintenant comparez avec ceci :
>t.test(men,women)
Alors, c'est compliqu R ? Nous dcouvrirons la rponse de R cette demande de test de Studentdans la section 4.1 consacre au test de Student. Voyons pour l'instant quelques autres fonctions de base trs utiles.
Denis Poinsot
R pour Statophobes
Voici le rsultat, incrust sous forme d'un fichier mtafile partir de la fentre graphique ouverte automatiquement par R quand on rclame une figure : Par dfaut, les numros de l'axe des X dsignent les traitements dans l'ordre de l'instruction list( ). Il faudrait un test pour en tre certain, mais on repre dj ici que les fils (1) sont plutt plus grands que les pres (2) (qui sont eux-mmes sans surprise plus grands que les mres (3)).
1 2 3
Ce type de graphe est dit exploratoire. Il permet en particulier de dceler les erreurs de saisie dans les fichiers (les points aberrants du type "virgule oublie" sautent aux yeux). Surtout, ce type de figure a le grand mrite de vous obliger regarder vos donnes individuelles et donc ne jamais oublier leur variabilit. Vous vitez ainsi de foncer un peu trop vite sur les moyennes, dont le chiffre unique "bien propre", cache parfois un vaste marcage brumeux. Un truc connatre : quand il y a beaucoup de donnes comme ici, il vaut mieux utiliser des symboles "ouverts". Leur empilement noircit alors le fond graduellement, en vous donnant une bonne ide de la densit des individus selon la zone du graphe, autrement dit vous accdez visuellement la notion statistique de densit de probabilit.
150
160
170
180
190
Denis Poinsot
R pour Statophobes
R a choisi automatiquement les intervalles de classe. Cependant, modifier ce paramtre selon vos besoins prcis est un jeu d'enfant, il suffit de spcifier combien de coupures (breaks) vous voulez sur l'axe des X lorsque vous demandez l'histogramme. Supposons que vous vouliez une vingtaine de classes :
160 165 170 175 180 185 190 195 student
Frequency
>hist(student,breaks=20)
10
15
20
25
Histogram of student
12
Et hop l ! C'est tout simplement magique. Explorer une distribution polymodale la recherche de cohortes est nettement facilit avec ce genre d'outils.
Frequency
6 165
10
170
175
180 student
185
190
195
Denis Poinsot
R pour Statophobes
195
155
160 165
170
175 180
185 190
Il est maintenant possible de modifier ce graphe, en examinant par exemple si les points sont rpartis harmonieusement de part et d'autre de la droite de pente 1:1 partant de zro (a n'est pas le cas, il y en a plus au dessus car les fils sont plus grands que les pres en moyenne), et on peut galement facilement crer une "mire" centre sur le centre de gravit du nuage en traant deux droites passant par la moyenne de student et celle de father. Admirez la simplicit des commandes :
student
165
175
185
father
Tracer une droite d'ordonne l'origine 0 et de pente 1 Tracer une horizontale d'ordonne gale la moyenne de
student
Le dcalage du centre de gravit du nuage par rapport la droite de rapport 1:1 (fils et pres de mme taille) saute aux yeux ici. la suite des oprations impliquerait probablement un test statistique, mais on sait dj peu prs o on va.
student
165 155
175
185
160 165
170
175 180
185 190
father
Denis Poinsot
R pour Statophobes
Effectuer un test t de Student de conformit sur men et afficher uniquement l'objet conf.int lIC95% de la taille des hommes de cette population est donc [175,7 179,0cm]
10
Denis Poinsot
R pour Statophobes
Effectuer un test de Wilcoxon sur l'objet men, incluant le calcul d'un intervalle de confiance de la mdiane (conf.int=TRUE), et afficher uniquement le rsultat contenu dans l'objet conf.int. IC95% = [175,5 179,0cm]
Un intervalle de confiance a bien t calcul, et il est remarquablement similaire celui obtenu par la mthode paramtrique du t de Student (voir section 3.1). Rappel : lintervalle de confiance calcul ici nest pas vraiment celui de la moyenne mais celui de la mdiane. Une autre mthode, plus complique, permet de calculer les intervalles de confiance de moyennes ou de nimporte quoi dautre dans nimporte quelle situation (le bootstrap). Elle ncessite d'crire quelques lignes d'instructions et vous la dcouvrirez bientt dans la section 3.4, qui traite du bootstrap.
11
Denis Poinsot
R pour Statophobes
lorsquon fait un test. par dfaut, elle est rgle sur p=0,5) Donc ici (5 mles sur 20 individus), on demande (sans prciser de proportion thorique puisqu'on s'en moque):
> binom.test(5,20)$conf.int
Effectuer un test binomial exact pour savoir si la proportion observe "5 sur 20" s'loigne significativement de la proportion thorique (par dfaut, le test utilisera p=50%) mais afficher seulement l'intervalle de confiance de la proportion observe, contenu dans l'objet conf.int Dou il ressort que le vritable IC95% ntait pas exactement celui de notre calcul approximatif prcdent, il vaut en ralit : [9% 49%].
12
Denis Poinsot
R pour Statophobes
Tirer alatoirement 10 individus dans une loi normale (rnorm=random normal) de moyenne 100 et d'cart type 15 (sd=standard deviation)
81.86443
92.40690
85.90238
82.56055
Un peu difficile lire. J'arrondis grce la commande round en demandant 0 dcimales (c'est juste un prtexte pour vous prsenter aussi cette commande):
> QI=round(QI,0)
Arrondir les valeurs de QI sans aucune dcimale et placer le rsultat nouveau dans QI
80 82 92 86 83 83 96 104
> QI [1]
80 105
Vous remarquerez que les arrondis sont effectus de manire correcte. Que vaut la moyenne ?
>mean(QI) [1] 89.1
Notre groupe semble intellectuellement plus faible que la moyenne thorique de 100. Naturellement a n'est ici qu'un effet purement alatoire (on a seulement 10 individus, les fluctuations d'chantillonnage sont donc importantes). Notre mission: calculer un intervalle de confiance autour de la moyenne observe (89,1) pour savoir dans quelle zone se cache la vritable moyenne de la population (dont on sait dj ici qu'elle vaut 100 mais dans la ralit on ne le saurait videmment pas, sinon pourquoi chantillonner ?)
13
Denis Poinsot
R pour Statophobes
Mthode paramtrique habituelle : l'IC95% de la moyenne via le test t (cf section 3.1)
> t.test(QI)$conf.int [1] 82.22653 95.97347 attr(,"conf.level") [1] 0.95
Donner l'intervalle de confiance de QI calcul par la mthode paramtrique du t de student IC95%=[82 96 points de QI]
Au passage, nous avons droit ici une trs belle2 dmonstration du fait qu'un intervalle de confiance 95% manque parfois sa cible (pour tre prcis, il la manque videment dans... 5% des cas, soit quand mme une fois sur vingt): ici il n'a pas russi capturer la vritable moyenne de la population chantillonne (qui vaut 100), mme si elle lui chappe de justesse. Mthode 2, le bootstrap (qui implique d'utiliser quelques brves lignes d'instructions, mais on va tout expliquer au fur et mesure) Crer un vecteur (tableau une seule range) nomm table devant accueillir 1000 valeurs numriques. Il contiendra les 1000 valeurs de moyennes obtenues par tirage avec remise au sein mme du jeu de donnes. Initialement, il ne contient que des zros. >for(i in 1:1000) Annonce d'une boucle utilisant un compteur i et qui va tourner 1000 fois +{ Accolade annonant une suite d'instructions. Ici, dbut de la boucle Placer dans la case de table de rang [i] la moyenne +table[i]=mean(sample(QI,10,replace=T)) (mean) obtenue en tirant 10 individus avec remise (replace=T pour TRUE) dans QI +} Accolade de fin de boucle. Vous remarquez que tant que l'accolade de fin de boucle n'apparat pas, le prompt > est remplac par un signe + si vous passez la ligne. R s'attend une suite d'instructions, il attend patiemment l'accolade de fin.
>table=numeric(1000)
La mthode du bootstrap vous parat naturellement plus complique que l'autre, mais elle a l'norme avantage de pouvoir tre applique absolument n'importe quoi et pas seulement aux moyennes. C'est tout son intrt. Vous pourriez par exemple ici calculer facilement l'intervalle de confiance de la variance en remplaant "mean" par "var" sur la ligne 4 de ce Histogram of table "programme". En attendant, vous pouvez visualiser la distribution obtenue par le bootstrap en demandant hist(table) cf ci-contre.
150 200 250 0 80 50 100
Frequency
85
90 table
95
100
14
Denis Poinsot
R pour Statophobes
Ne reste plus qu' dterminer les bornes de l'intervalle de confiance 95%. Il nous faut pour cela exclure de chaque ct 2,5% des valeurs, soit (sur 1000 valeurs) les 25 valeurs les plus basses (la borne est au rang 25) et les 25 valeurs les plus haute (la borne est au rang 975, condition de ranger les valeurs par ordre croissant, videmment) :
>table.sorted=sort(table) > c(table.sorted[25], table.sorted[975]) [1] 84.2 95.0
Trier table par ordre croissant de ses valeurs et placer le rsultat dans table.sorted Afficher les lments de table.sorted de rang [25] et
[975]
L'intervalle de confiance obtenu par bootstrap est trs similaire au prcdent (et lui aussi passe ct de la vritable valeur 100).
15
Denis Poinsot
R pour Statophobes
4. COMPARAISONS DE MOYENNES
4.1 Comparaison de deux moyennes, test t de Student L'utilisation de ce test suppose soit que la variable tudie suive au moins approximativement une loi normale soit que vous ayez plus de 30 individus par chantillon. Nous retrouvons nos deux chantillons de tailles men et women (cf 1.2). Comme la taille dans l'espce humaine est notoirement distribue selon une loi normale, le fait que nous n'ayons que 10 et 8 individus respectivement par chantillon n'est vraiment pas un problme, le test t de Student s'applique. Sa syntaxe est:
> t.test(men,women)
On peut difficilement faire plus sobre La rponse de R est assez riche, on va l'examiner ligne par ligne.
Welch Two Sample t-test
data: men and women Rappel de la source des donnes t = 4.1368, df = 11.628, p-value = Valeur du t, nombre de degrs de libert 0.001472 (df=degree of freedom), valeur de la probabilit P associe au test (p-value) alternative hypothesis: true Lhypothse "alternative" (H1) est que les difference in means is not equal to 0
moyenne sont diffrentes (sous entendu : l'hypothse nulle Ho est "les moyennes sont gales") Intervalle de confiance 95% de la diffrence entre les deux moyennes (cest ce genre de dtails quon voit que R a t conu par des gens qui comprennent ce qui est vraiment important en sciences) Rappel des moyennes compares
Le nombre de degrs de libert dcimal (df = 11.628 ?!?) peut en bouriffer certains (en tout cas il ma sacrment interpell au niveau du vcu la premire fois) mais rsulte dune approximation, due Welsh, qui tient compte du fait que les variances ne sont pas supposes tre gales dans loption par dfaut du test t utilis par R, ce qui reprsente lapproche la plus prudente possible. Le test t de Welsh nest donc pas le test t classique . Il est cependant ais dutiliser le test t canal historique (autrement dit le t de Student), il suffit de prciser R que les variances sont supposes tre gales :
> t.test(men,women, var.equal=TRUE)
16
Denis Poinsot
R pour Statophobes
Attention bien utiliser les majuscules pour TRUE. Par contre, inutile dcrire TRUE en entier, vous pouvez utiliser seulement linitiale, comme ceci :
> t.test(men,women, var.equal=T)
Vous aurez remarqu que le nombre de ddl est maintenant plus lev (16 au lieu de 11,6) et entier, et que le test est encore plus affirmatif que tout lheure (P = 0,00051229 vs P = 0.001472, avec un intervalle de confiance de la diffrence entre les deux moyennes qui est plus prcis. Cest normal, on a fait une hypothse supplmentaire (lgalit des variances) qui permet de gagner de la puissance ( condition qu'elle soit vrifie !).
17
Denis Poinsot
R pour Statophobes
La simple comparaison des moyennes ne rvle rien de bien spectaculaire, et on peut la calculer directement ainsi :
> mean(after)-mean(before) [1] 2.5
A peine plus de deux points dcart en moyenne sur plus dune centaine, pas de quoi fouetter un chat. Si on reste focalis sur les moyennes, on se dit que cela pourrait facilement sexpliquer par les fluctuations alatoires de score dune fois sur lautre (le mme individu nobtiendra jamais exactement le mme score deux fois de suite). Cependant, la comparaison des donnes apparies suggre fortement que le traitement a eu un effet positif: tous les scores individuels ont boug dans le mme sens, progressant de 1 5 points, cest tout de mme louche ! C'est la situation dans laquelle un test appari dmontre sa supriorit sur un test non appari. Jugez plutt. Voil ce que donnerait le test de Student non appari :
> t.test(before,after,var.equal=TRUE) Two Sample t-test data: before and after t = -0.7558, df = 14, p-value = 0.4623
18
Denis Poinsot
R pour Statophobes
alternative hypothesis: true difference in means is not equal to 0 95 percent confidence interval: -9.594663 4.594663 sample estimates: mean of x mean of y 135.125 137.625
la valeur de P est 0,46 donc le test est largement non significatif, et vous constatez que lintervalle de confiance de la diffrence entre les moyennes est large (la diffrence avant aprs pourrait tout aussi bien tre nettement ngative que nettement positive). Le test non appari na rien vu. Cependant, le test appari ne va pas se laisser berner si facilement (pour rendre le test t appari il suffit dajouter linstruction paired=TRUE :
> t.test(avant,aprs,var.equal=TRUE,paired=TRUE) Paired t-test data: before and after t = -5.4006, df = 7, p-value = 0.001008 alternative hypothesis: true difference in means is not equal to 0 95 percent confidence interval: -3.594608 -1.405392 sample estimates: mean of x mean of y 135.125 137.625
Cette fois, fini de rire, on dtecte bien une diffrence hautement significative (P = 0,001) dont le sens est ngatif ( savoir : les valeurs avant sont en moyenne significativement infrieures aux valeurs aprs ). On voit ici limportance dutiliser un test adapt la situation traite. Nous serions pass compltement ct de leffet en utilisant un test non appari.
19
Denis Poinsot
R pour Statophobes
Wilcoxon rank sum test with continuity correction data: men and women W = 74.5, p-value = 0.00243 alternative hypothesis: true mu is not equal to 0 Warning message: Cannot compute exact p-value with ties in: wilcox.test.default(men, women)
Ne vous inquitez pas de ce dernier message davertissement, il indique simplement quil y a des ex-aequo qui empchent de calculer la valeur de P exacte dans sa plus parfaite puret mathmatique (a nest pas grave) Ici encore, on dcle un cart nettement significatif (P = 0,002).
20
Denis Poinsot
R pour Statophobes
21
Denis Poinsot
R pour Statophobes
4.5 Comparaison simultane de plus de deux moyennes, ANOVA suivie du test HSD de Tukey
Grands chantillons (N>30) ou petits chantillons si la variable tudie suit une loi normale :
ICI, prochainement, la rponse cette passionnante question (si vous tes impatients, allez dans l'aide de R et faites >help(aov) si vous l'osez). Prcisons toutefois que 1) l'ANOVA vous est inutile pour le rapport mare 2) je pense qu'il en est de mme pour les rapports thologie 3) dans tous les cas ou une ANOVA un facteur est applicable, le test H de Kruskal-Wallis (dcrit en 4.6) fonctionne et donnera des rsultats similaires, au prix d'une trs modeste perte de puissance).
22
Denis Poinsot
R pour Statophobes
Si vous avez peu de valeurs et peu d'chantillons, le moyen le plus rapide est de les saisir directement dans autant d'objets qu'il y a d'chantillons. Exemple de trois chantillons x, y et z de 5, 5 et 4 individus :
>x=c(1,2,5,8,12) > y=c(5,8,12,25,32) > z=c(25,33,39,42)
Pour indiquer sa cible R, il suffit de former une liste contenant x, y et z par l'instruction list. Le test est alors :
> kruskal.test(list(x,y,z))
Effectuer un test H de Kruskal-Wallis comparant les chantillons de la liste forme par x, y et z Test significatif, au moins une des trois mdianes est diffrente des deux autres (ou bien elles sont toutes diffrentes les unes des autres).
Kruskal-Wallis rank sum test data: list(x, y, z) Kruskal-Wallis chi-squared = 8.6712, df = 2, p-value = 0.01309
L'autre syntaxe ncessite d'avoir les donnes listes la queue-leu-leu dans un premier objet, et la liste (dans l'ordre !) des numros de groupes (traitements) auxquels ils appartiennent dans un autre objet. Dans la pratique, cela permet de dsigner comme objet deux colonnes de tableaux, l'une contenant les donnes et l'autre les numros de groupes.
23
Denis Poinsot
R pour Statophobes
5. COMPARAISON DE POURCENTAGES
5.1 Comparaison d'un pourcentage observ avec un pourcentage thorique, le test binomial exact.
Taille de l'chantillon quelconque Ce test fonctionne en utilisant la formule de la loi binomiale et en calculant la probabilit exacte d'obtenir sous l'effet du hasard un pourcentage encore plus loign du pourcentage thorique p que le pourcentage pobs que nous observons. Contrairement au test du chi2 de conformit, le test binomial exact fonctionne mme avec des effectifs minuscules (mais n'attendez pas de miracles : il ne pourra alors dceler que des carts importants par rapport la thorie) Sa syntaxe est :
>binom.test(x, n, p = < indiquer>) x le nombre dindividus de la catgorie qui vous intresse n leffectif total p la proportion thorique de lhypothse Ho (exprime entre 0 et 1, rgle automatiquement sur 0.5 si vous
nindiquez rien) Exemple : En thorie, une population humaine compte 10% de gauchers. Or, ayant chantillonn alatoirement 10 tudiants de master scientifique, vous trouvez 3 gauchers. Les tudiants de ce type de master sont plus souvent gauchers que la population gnrale ? Le test demand est alors :
>binom.test(3, 10, p=0.1)
Tester par un test binomial exact la proportion 3 succs sur 10 essais, la probabilit thorique de succs chaque tirage tant 0.1 Exact binomial test Test non significatif (P = 0,070), mais le data: 3 and 10 calcul de l'intervalle de confiance du number of successes = 3, number of pourcentage de gauchers nous prvient trs trials = 10, p-value = 0.07019 alternative hypothesis: true clairement de la grande imprcision de probability of success is not equal to l'information disponible : 0.1 IC95% = [6,7% 65,2%]
95 percent confidence interval: 0.06673951 0.65245285 sample estimates: probability of success 0.3
En clair nous pouvons simplement affirmer que le pourcentage rel de gauchers dans cette population tudiante est vraisemblablement... compris entre 6,7% et 65,2% ! Il serait donc sage d'accumuler davantage de donnes si nous voulons vraiment rpondre notre question...
24
Denis Poinsot
R pour Statophobes
5.2 Comparaison dune distribution observe avec une distribution thorique : le test du chi2 de conformit
ATTENTION, dans ce cas particulier, R exige bizarrement que les valeurs thoriques soient donnes sous forme des proportions attendues (entre zro et 1) alors que les valeurs observes doivent tre donnes sous forme deffectifs (entre zro et linfini).
Dans le cas ou il y a plus de deux catgories, le test binomial exact vu plus haut dclare forfait. Il faut utiliser un test du chi2, qui a le dfaut de vous obliger avoir des effectifs thoriques minimaux de n = 5 dans chaque case. Pour en savoir la raison, et savoir que faire si vous tes dans cette situation dsagrable, ouvrez un livre de stats ou lisez le chapitre sur le chi2 de Statistiques pour statophobes. La syntaxe dans R est :
>chisq.test(liste des effectifs,p=liste des proportions thoriques)
Exemple : parmi les 89 individus obtenus lors dun croisement, la rpartition des homozygotes et htrozygotes est 25 AA, 59 Aa mais 5 aa seulement, alors que les proportions Mendliennes attendues sont respectivement 0,25 : 0,5 : 0,25. On observe ici un dficit en htrozygotes aa tout fait suspect. Une vrification rapide nous confirme quon peut bien utiliser le chi2 puisque le plus petit de nos trois effectifs thoriques est : 0,25 89 = 22,25 >> 5 Rappel, dans R il faut crire pour les valeurs observes, des effectifs :
> observed=c(25, 59, 5)
Mais pour les proportions thoriques, des proportions (entre zro et 1):
>theo=c(0.25,0.5,0.25)
Rponse :
Chi-squared test for given probabilities data: observed X-squared = 18.4382, df = 2, p-value = 9.913e-05
La mention for given probabilities vous indique bien que cest un test de conformit une distribution thorique de probabilits que vous avez fournies. Nous avions raison de nous inquiter, il se passe quelque chose de tout fait anormal. La probabilit dobserver une telle distribution si vraiment on est dans une population suivant les lois de Mendel est P < 0,0001.
25
Denis Poinsot
R pour Statophobes
5.3 Comparaison entre elles de plusieurs distributions observes, le test du chi2 dhomognit (ou dindpendance)
Condition : pas plus de 20% des effectifs thoriques (obtenus par calcul) infrieurs 5 (rgle de Cochran) Dans cette seconde situation, pas de distribution thorique fournie lavance, rien que des observations. Vous avez deux (ou plus) chantillons avec chaque fois (les mmes) k catgories mutuellement exclusives. Pour savoir si vos chantillons sont homognes (ou encore, pour dterminer si les lignes sont indpendantes des colonnes), le test de choix est habituellement le chi2 dhomognit. Sa syntaxe est alors:
>chisq.test(nom du tableau analyser)
La mthode la plus fruste (donc ma prfre) pour fabriquer ce tableau est de le saisir ligne ligne puis de lier les lignes par la commance rbind (row bind), ce qui forme un tableau. Voyez vous mmes :
> males=c(0,12,25) > females=c(12,16,45) > juveniles=c(15,43,1) > table=rbind(males,females,juveniles)
Les noms [,1] [,2] [,3]sont les noms que R donne par dfaut aux colonnes. Ils pourraient tre (par exemple) le haut, le milieu et le bas dun estran. Le test est alors :
> chisq.test(table) Pearson's Chi-squared test data: table X-squared = 65.7, df = 4, p-value = 1.832e-13
La probabilit dobserver un tableau aussi dsquilibr simplement sous leffet du hasard est microscopiquement faible ( P < 1,8 1013). On sen doutait un peu, soit dit en passant... Rappel . Ce test est soumis aux limitations habituelles des chi2 : on peut tolrer seulement 20% des effectifs thoriques infrieurs 5. Le calcul des effectifs thoriques en question est expliqu en dtail dans tous les bouquins, y compris dans le chapitre de Statistiques pour statophobes qui porte sur le chi2. Si vous tes coincs car vos effectifs thoriques (pas ceux de votre tableau de donnes !) sont trop petits, utilisez le test exact de Fisher (section suivante).
26
Denis Poinsot
R pour Statophobes
5.4 Comparaison entre elles de plusieurs distributions observes quels que soient les effectifs, le test exact de Fisher
Aucune condition sur la taille des chantillons. Ce test s'utilise dans les mmes situations que le chi2 d'homognit (cf 5.3), mais sans aucune contrainte de taille d'chantillon. Son seul inconvnient qui explique l'hgmonie historique du chi2 est de ncessiter un ordinateur alors que le chi2 peut facilement s'effectuer avec une simple calculette. Le principe du test exact de Fisher consiste en effet gnrer les dizaines, centaines, ou centaines de milliers de tableaux possibles avec les totaux de vos lignes et de vos colonnes, puis de calculer la proportion exacte (d'ou son nom) de ceux qui sont encore plus loigns de l'hypothse nulle "le tableau est quilibr" que vos propres rsultats. Cette probabilit est celle d'obtenir sous le seul effet du hasard des rsultats encore plus loigns que les vtres de lhypothse nulle. Si cette probabilit est faible, on conclut que le hasard n'a pas pu faire a tout seul, et qu'il y a donc un effet rel. Sa syntaxe est simplement >fisher.test(nom du tableau de donnes) Comme vu pour le chi2, le tableau peut tre facilement rentr ligne par ligne, en liant ensuite les lignes par la commande rbind (pour row bind) suivi du nom des lignes lier. Exemple.
> males=c(2,1,1) > females=c(1,2,2) > juveniles=c(0,0,3) > tableau=rbind(males,females,juveniles) > tableau males females juveniles [,1] [,2] [,3] 2 1 1 1 2 2 0 0 3
On demande le test :
> fisher.test(tableau) Fisher's Exact Test for Count Data data: tableau p-value = 0.5909 alternative hypothesis: two.sided
Le test est largement non significatif ici : P = 0,59 (prs de 60% de chances d'obtenir un tableau encore plus dsquilibr que le tableau de donnes simplement sous l'effet du hasard). A titre de comparaison, le chi2 (utilis ici hors de son domaine de validit) serait trop optimiste puisqu'il obtient une probabilit P = 0,28 ; avec toutefois la mme conclusion qualitative : test non significatif (voir ci-dessous, et notez l'avertissement signalant que le chi2 donne un rsultat probablement trs approximatif puisquil est utilis hors de son domaine normal) :
> chisq.test(tableau) Pearson's Chi-squared test data: tableau X-squared = 5.1, df = 4, p-value = 0.2772 Warning message: Chi-squared approximation may be incorrect in: chisq.test(tableau)
27
Denis Poinsot
R pour Statophobes
6 MESURE DE QUANTITATIVES
LA
LIAISON
ENTRE
VARIABLES
6.1 Calcul de la force de la liaison entre deux variables quantitatives distribues normalement l'une par rapport l'autre : le coefficient de corrlation "R" de Pearson.
La condition impressionnante cite dans le titre (nomme "binormalit") signifie que pour un X d'une valeur donne, les valeurs Y observes doivent tre distribues peu prs normalement, et vice versa. Comme d'habitude, elle est d'autant plus importante que l'effectif est faible. Si vous avez beaucoup de donnes, a n'est pas un souci. Le coefficient de corrlation R que vous allez obtenir variera de 1 (liaison parfaite, Y augmente linairement avec X) 1 (idem mais Y diminue linairement avec X). Une valeur de zro signifierait une totale indpendance entre X et Y. le problme est bien sr que dans la ralit, les R parfaitement nuls n'existent pas cause des fluctuations d'chantillonnage, d'o la ncessit d'un test statistique pour vrifier si le R calcul est significativement diffrent de zro. Exemple : y a t-il un lien statistique entre la longueur et la largeur des feuilles de gougnafier fleurs bleues ? Dans cet exemple simpliste on saisit les donnes directement dans R (dans la ralit il y en aura probablement beaucoup plus, voir en Annexe 1 comment importer les donnes partir d'un fichier)
> length=c(1,5,10,15,20) > width=c(3,7,25,20,50)
Cette valeur de 0,917 est trs proche de 1, mais est-ce significativement diffrent de zro ? La question peut sembler absurde mais mfiance : on a ici trs peu de donnes. Il vaut mieux vrifier en faisant un test qui permettra de dterminer l'intervalle de confiance de notre R.
> cor.test(length,width) Pearson's product-moment correlation data: length and width t = 3.9748, df = 3, p-value = 0.02847 alternative hypothesis: true correlation is not equal to 0 95 percent confidence interval: 0.1803332 0.9945810 sample estimates: cor 0.9167439
Nous voil rassurs car le test est significatif (P = 0,028). Cependant, l'intervalle de confiance extrmement large de ce coefficient de corrlation nous appelle la prudence puisqu'il vaut [0,18 0,99]. la force de la liaison n'est peut tre pas si grande que a...:
Pour concrtiser la force de cette liaison, petit rappel : il faut lever ces R au carr. la borne infrieure donne un pitoyable (0,18)2 = 0,0324, soit 3%. Avec cet extrme, fixer X permettrait seulement de rduire la variabilit de Y de 3%...
28
Denis Poinsot
R pour Statophobes
6.2 Calcul de la force de la liaison entre deux variables quantitatives non distribues normalement l'une par rapport l'autre : le coefficient de corrlation "R" de Spearman.
Ce coefficient doit tre utilis la place du R de Pearson lorsque la condition de binormalit des variables tudies est fausse, ce qui pourrait causer des distorsions nuisibles en particulier si l'effectif est faible. Exemple :
>table=data.frame(size=c(166,175,180,185,190,195),weight=c(68,80,75,82,84,92)) > table size weight weight 1 166 68 2 175 80 3 180 75 90 4 185 82 5 190 84 85 6 195 92 > attach(table) 80 > plot(size,weight)
75 70
165
170
175
180
185
190
195
size
>cor.test(size,weight,method="spearman") Spearman's rank correlation rho data: size and weight S = 2, p-value = 0.01667 alternative hypothesis: true rho is not equal to 0 sample estimates: rho 0.9428571
Effectuer un test du coefficient de corrlation de Spearman sur la liaison entre size et weight
29
Denis Poinsot
R pour Statophobes
6.3 Dtermination de la pente reliant une variable causale X une variable explique Y, avec Y distribue normalement pour un X donn : rgression linaire de Y en X.
Cas typique: on s'intresse une relation dose/effet (peu importe les units, rsultats fictifs). J'en profite pour illustrer la mthode permettant d'obtenir en une seule tape un tableau de donnes pouvant tre trait par une analyse par rgression linaire3 :
>table=data.frame(dose=c(1,2,5,10,20),effect=c(2 Stocker dans table un tableau de donnes ,3,6,15,30)) (data.frame) comportant une colonne nomme dose contenant les valeurs 1,2,5,10,20et une colonne nomme effet avec les valeurs 2,3,6,15,30.
Vrification du contenu :
> table dose 1 1 2 2 3 5 4 10 5 20 effect 2 3 6 15 30
Stocker dans myresult le rsultat d'une rgression linaire (lm = linear model) tudiant effect en fonction de (symbole ~) dose, les donnes analyser (data) se trouvant dans table
Residual standard error: 0.8753 on 3 degrees of freedom Multiple R-Squared: 0.9958, Adjusted R-squared: 0.9944 F-statistic: 710.7 on 1 and 3 DF, p-value: 0.0001158
voir en annexe comment utiliser un volumineux fichier de donnes sans avoir le saisir nouveau dans R.
30
Denis Poinsot
R pour Statophobes
Les Residuals (rsidus) sont les carts rsiduels subsistant entre chaque donn et la droite de rgression. Si les rsidus sont systmatiquement positifs d'abord puis ngatifs par la suite (ou l'inverse), cela met en doute la linarit de vos donnes (en clair, vos donnes dessinent une courbe, et non une droite), et une rgression linaire n'est pas la bonne mthode. Aucun souci dans notre cas (mais inutile de mettre des drapeaux aux fentres, avec si peu de donnes seul un cart monstrueux la linarit aurait pu tre dtect). La suite est un tableau d'analyse proche dans sa structure de celui d'une ANOVA. Deux tests t sont effectus (avant dernire colonne) avec les probabilits associes ranges dans la dernire colonne. L'effet intercept (ordonne l'origine de la droite, valeur -0.21891) est non significatif (P = 0,73) donc l'ordonne l'origine n'est pas significativement diffrente de zro. Dans notre cas, cela signifie que pour une dose nulle, l'effet pourrait tre nul. Ca n'a rien de systmatique : si la dose d'engrais artificiel apport dans un champs est nulle, le rendement obtenu ne sera pas gal zro. L'effet dose (pente de 1.50249) est hautement significatif (P < 0,001), ce qui (dans une situation exprimentale ou X est le seul facteur variable) dmontrerait bien une liaison de cause effet entre X et Y. Notre droite de rgression linaire peut donc s'crire :
effect = 1.50249 dose -0.21891
Vous noterez que le tableau vous fournit aussi le coefficient de corrlation de Pearson qui vaut R=0,9944.
31
Denis Poinsot
R pour Statophobes
Annexe 1 : travailler partir de fichier de donnes volumineux saisies initialement dans Excel
Les manoeuvres suivantes nont dintrt que si vous avez dj saisi dimpressionnantes colonnes de chiffres. Si cest juste pour vous viter de saisir nouveau une quinzaine de valeurs, sachez que vous allez perdre largement plus de temps quen saisissant nouveau vos valeurs dans des objets R directement lcran. Nous allons commencer par spcifier dans quel rpertoire R ira puiser vos donnes si ncessaire. Pour viter la pagaille dans vos fichiers, il vous est vivement conseill de crer un dossier qui contiendra les fichiers de donnes de votre projet au lieu de les enfouir dans le rpertoire par dfaut lorsque R s'ouvre. En supposant que le chemin d'accs de votre dossier de travail soit D:/mondossier, la manoeuvre effectuer est simplement de saisir ceci aprs le prompt :
> setwd( d:/mondossier )
Ce qui est l'abrviation de "set working directory as d:/mondossier", cest dire "utiliser d:/mondossier comme rpertoire de travail". Respectez les guillemets. Si vous les oubliez, R fera la source oreille. En matire de respect des usages, R est encore plus psychorigide que moi (comme quoi il ne faut jamais dsesprer, on trouve toujours pire). Pendant quon en parle, souvenez-vous bien des choses suivantes, sinon je vous prdis bien des messages d'erreur: 1) le sparateur dcimal de R est le point dcimal, pas la virgule. 2) il faudra toujours prciser si la premire ligne du tableau contient les titres des colonnes (par dfaut, R essaiera de les lire comme des donnes) 3) NE FAITES PAS comme dans Excel, des tableaux compltement htroclites avec des colonnes moiti vides et des effectifs diffrents et mme plusieurs tableaux sans aucun lien dans le mme fichier (et des figures au milieu par dessus le march). R ne peut avaler que des jeux de donnes bien propres et bien carrs (pas de cases vides). Supposons que votre tableau Excel ressemble ceci :
Donnes de notre super sortie Penvins, qu'est ce qu'on a rigol ! Supra mdioinf infra 20,5 20,2 20,8 12,6 15 15,2 3 0 14,3 15 0 7 15,256 0 5 13,2712 7,04 12,46 Ne pas oublier : dentiste 17h30 mdiosup
0 0,25 0
moyenne
32
Denis Poinsot
R pour Statophobes
Naturellement votre vritable tableau serait beaucoup plus grand mais inutile de gcher du papier pour rien. Il va maintenant falloir faire le mnage. On commence par vrifier visuellement la vraisemblance des donnes saisies, ce qui permet de constater que la moyenne de la colonne infra est manifestement fausse. Une fois cette vrification effectue, on dcoupe la souris la seule partie utiliser pour lanalyse (encadre en pointills bleu cidessus), quon colle par exemple dans le presse-papier ou nimporte quel diteur de texte de base :
Supra mdiosup 20,5 20,2 20,8 12,6 15 15,2 3 0 14,3 15 0 7 15,256 0 mdioinf 0 0,25 0 5 infra
Le nombre de dcimales gagnerait tre harmonis, et le nom de nos colonnes est trop long, De plus, il contient des lettres accentues (dconseill) et des mlanges de majuscules et de minuscules (vous avez 99 chances sur 100 de ne plus vous souvenir que cest Supra seulement que vous avez mis la majuscule, ce qui vous garantit des messages exasprants car incomprhensibles quand vous voudrez utiliser le nom de vos colonnes). Enfin, mais cest le plus important) il faut imprativement remplacer ces virgules par des points, et placer la mention NA (not available, donne manquante) dans les cases vides. R veut des tableaux carrs . La fonction dition/remplacer du bloc-notes le fera sans problmes, et finalement vous obtiendrez ceci :
supr 20.5 12.6 3 15 15.3 msup 20.2 15 0 0 0 minf 20.8 15.2 14.3 7 5 infr 0 0.25 0 NA NA
Vous sauvegardez alors ce fichier (le bloc notes le fera automatiquement au format .txt que R sait lire sans problmes) dans votre rpertoire de travail, sous un nom si possible explicite. En effet, votre rpertoire de travail sera bientt encombr de dizaines de fichiers portant tous sur votre manip. Donc, vitez les titres flous du style moules.txt Ne reste plus qu charger les donnes dans R, ce qui se fait semble t-il de tas de manires diffrentes, dont la seule que je comprenne pour linstant est linstruction read.table ( ). Syntaxe
>densityperzone=read.table( estran.txt , header=TRUE)
Mettre dans lobjet densityperzone un tableau de donnes (table) construit partir du fichier estran.txt (contenu dans le rpertoire actif actuellement), sans tenir compte de la premire ligne du fichier car elle contient des titres (headers) et non des donnes.
33
Denis Poinsot
R pour Statophobes
Vous tes maintenant prts travailler. Pour effectuer par exemple un test de Wilcoxon sur les deux premires colonnes, vous demanderez :
>wilcox.test(densityperzone$supr,densityperzone$msup)
Plutt compliqu crire, javoue . Lautre option, plus raffine, consiste attacher votre objet densityperzone dabord (pour signaler R que cest propos de lui que vous posez la question) ce qui permet de simplifier la syntaxe du test en tant plus oblig de rappeler le nom de lobjet suivi du signe $ chaque variable :
>attach(densityperzone)
L'objet tant attach, c'est comme si votre radar de tir avait accroch la cible, tout devient facile :
>wilcox.test(supr, msup)
Effectuera le test sans se tromper de donnes (et surtout en sachant o les chercher). Pour travailler ensuite sur un autre fichier sans vous mlanger les variables, il faut dtacher le prcdent :
>detach(densityperzone)
Vous voil libres. Et si (enfer !) vous naviez pas donn de nom vos colonnes dans votre tableau de dpart ? Pas de panique, par dfaut elles se nomment [,1], [,2] etc., donc :
>wilcox.test(densityperzone[,1],densityperzone[,2])
fera un test de wilcoxon comparant les mdianes des deux premires colonnes.
34
Denis Poinsot
R pour Statophobes
Annexe 2; Dmonstration de l'impuissance totale du test W de Wilcoxon face deux chantillons vraiment trop petits
Comparaison de deux chantillons de 3 individus (ou 3 valeurs)
> A=c(0,1,2) > B=c(100,150,5000)
Le test n'est mme pas significatif 5% ! (ici, P = 0,1). On augmente la taille de B (4 individus)
> B=c(100,150,5000,6000) > wilcox.test(A,B) Wilcoxon rank sum test data: a and b W = 0, p-value = 0.05714 alternative hypothesis: true mu is not equal to 0
Toujours pas significatif (bien que de justesse) si on veut respecter = 0,05 On augmente A (4 vs 4)
> A=c(0,1,2,3,4) > wilcox.test(A,B) Wilcoxon rank sum test data: A and B W = 0, p-value = 0.02857 alternative hypothesis: true mu is not equal to 0
Enfin une proba < 0,05 !!! . Retenez donc qu'un test de Wilcoxon est compltement aveugle tant que vous n'avez pas au moins 4 individus dans chacun de vos deux chantillons. Et encore faudra t-il pour atteindre la significativit dans ces conditions que les 4 individus d'un des chantillons aient tous une valeur infrieure celle du plus faible de l'chantillon oppos.
35
Denis Poinsot
R pour Statophobes
Aide-mmoire
Intervalle de confiance d'une moyenne (grand chantillon sample, ou variable suivant une loi proche de la loi normale) >t.test(sample)$conf.int Intervalle de confiance d'une mdiane (petit chantillon sample, variable suivant une loi inconnue ou connue pour tre loigne de la loi normale) >wilcox.test(sample,conf.int=T)$conf.int Intervalle de confiance d'un pourcentage (n individus parmi N) >binom.test(n,N)$conf.int Comparaison de deux moyennes (grands chantillons sampleA, sampleB ou petits chantillons mais variable suivant une loi normale) : Test t de Student >t.test(sampleA, sampleB, var.equal=T) Comparaison de deux mdianes (petits chantillons sampleA, sampleB variable suivant une loi inconnue ou connue pour tre loigne de la loi normale) : Test W de Wilcoxon (= U de Mann et Whitney) >wilcox.test(sampleA, sampleB) Comparaison d'un nombre quelconque de mdianes (exemple : trois petits chantillons sampleA, sampleB, sampleC suivant une loi inconnue ou connue pour tre loigne de la loi normale) : Test H de Kruskal-Wallis. >kruskal.test(list(sampleA, sampleB, sampleC)) Comparaison d'un pourcentages observ (n individus parmi N) avec une frquence thorique F (exprime entre 0 et 1). Test binomial exact. >binom.test(n,N,p=F) Comparaison d'une distribution observe (effectifs a,b,c,d) avec une distribution thorique. (proportions attendues F1, F2, F3, F4 exprimes entre 0 et 1). Grand chantillon. Test du Chi2 de conformit. >table=data.frame(obs=c(a,b,c,d), p=c(F1,F2,F3,F4)) >chisq.test(table) <pas d'quivalent si petit chantillon. Regrouper des classes est la seule solution> Comparaison entre elles de plusieurs distributions observes (ex. D1, D2, D3, contenant des suites d'effectifs a, b, c, d... ). Grands chantillons. Test du Chi2 d'homognit (=d'indpendance). >table=data.frame(D1=c(a,b,c,d), D2=c(e,f,g,h),D3=c(i,j,k,l)) >chisq.test(table) Comparaison entre elles de plusieurs distributions observes (ex. D1, D2, D3, contenant des suites d'effectifs a, b, c, d... ). Echantillons de taille quelconque. Test exact de Fisher. >table=data.frame(D1=c(a,b,c,d), D2=c(e,f,g,h),D3=c(i,j,k,l)) >fisher.test(table) Corrlation entre variables quantitatives X et Y distribues normalement l'une par rapport l'autre. Test du R de Pearson. >cor.test(X,Y) Corrlation entre variables X et Y quelconques mais pouvant donner lieu des rangs. Test du R de Spearman.. >cor.test(X,Y, method="spearman") Rgression linaire de Y (variable suppose explique) en X (variable suppose causale). >myresult=(lm(X~Y)) >summary(myresult)
36