Formulaire de fonctions statistiques pour R
Transcription
Formulaire de fonctions statistiques pour R
Formulaire de fonctions statistiques pour R Le logiciel R est un logiciel libre de statistique. De l’aide et de nombreuses informations sur R peuvent être trouvées sur le site web : http://www.r-project.org. Pour appeler l’aide sur les fonctions utilisées: help(nomfonction). AFFECTATION D’UN OBJET À UNE VARIABLE On peut utiliser indifféremment: X <- commande X = commande X reçoit la valeur de commande. mean(y),. . . commande désigne n’importe quel type d’objet, ex: 2, 2+3, IMPORT/EXPORT DES DONNÉES 2.1 Importer un tableau d’un fichier texte read.table(fichier, header = FALSE, sep = "\t",dec = ".",na.strings = "NA") Le fichier est lu sous la forme d’un data.frame (cf section suivante). Plusieurs options sont spécifiables, entre autres: • fichier: nom du fichier à mettre entre guillemets (attention ne pas oublier l’extension), • sep: type de séparateur (\t signifie tabulation), • na.strings: indique comment sont spécifiés les valeurs manquantes (NA: Not Available). 2.2 Exporter un objet, X, sous forme de fichier texte write.table(X, file = "nom_du_fichier") 1 TYPE D’OBJET 3.1 Vecteur • La commande c() crée un vecteur avec les arguments que l’on lui transmet. Ex: z = c(1.25, 0.25, 5.34) • Séquence de nombres entiers (avec un pas de 1). Ex: x=1:10 Pour extraire • le i-ème élément du vecteur x: x[i] • les éléments 1,6 et 10: x[c(1,6,10)] • les éléments 5 à 10: x[5:10] 3.2 Tableau de données: data.frame • Le data.frame est le format “naturel” de stockage des données sur lesquelles on désire procéder à des traitements statistiques. Ses colonnes sont des vecteurs représentant des variables. • On accède aux variables composant un data.frame D à partir du nom de la variable: D$femme ou à partir du numéro de la colonne: D[,2]. • Pour extraire le sous-tableau composé des lignes i à j et des colonnes k à l d’un tableau de données D, on procédera comme suit: D[i:j,k:l]. • Dimension de D: dim(D). • Pour afficher les premières lignes d’un data.frame D: head(D). • Pour obtenir la nature des différentes colonnes de D: str(D). Il peut s’agir d’entiers (int), de numériques (num), de facteurs (factor), i.e. des variables qualitatives à modalités fixées (levels). RÉSUMÉ STATISTIQUE DES DONNÉES 4.1 En univarié Quelques fonctions statistiques s’appliquant à une distribution codée sous forme de vecteur: • length(x): nombre de valeurs stockées dans le vecteur. • mean(x): moyenne des valeurs du vecteur. • sd(x): écart-type des valeurs du vecteur. • var(x): variance des valeurs du vecteur. • quantile(x): donne les quantiles (par défaut les quartiles). • summary(x): donne un résumé de la distribution des données. 2 4.2 En bivarié • cor(x,y): corrélation entre x et y. GRAPHIQUES 5.1 Distribution d’une variable continue • Histogramme: hist(x) • Boîte à moustaches: boxplot(x) 5.2 Distribution d’une variable discrète • Camembert: pie(x) • Barres: barplot(x) Le vecteur contient les effectifs correspondant aux modalités de la variable; si x est le vecteur contenant les valeurs de la variable pour les observations, il est nécessaire de créer le vecteur des effectifs à l’aide de la commande: table(x). On peut donc utiliser la commande pie(table(x))). 5.3 Distribution jointe de deux variables continues • Nuage de points: plot(x,y) identify(x, y, labels = noms) – x et y: vecteurs de variables continues. – labels: vecteurs d’identifiants. • points(xbis, ybis,col=2) superpose les points (xbis,ybis) en rouge sur le graphique précédent. CALCUL DES USUELLES QUANTILES DES DISTRIBUTIONS • Pour obtenir le quantile d’ordre α = p d’une distribution Gaussienne N (µ, σ 2 ): qnorm(p, mean = mu, sd = sigma) où mu est la valeur de µ et sigma la valeur de σ. • Pour obtenir le quantile d’ordre α = p d’une distribution χ2df : qchisq(p, df) • Pour obtenir le quantile d’ordre α = p d’une distribution de Fisher F(df 1, df 2): 3 qf(p, df1, df2) • Pour obtenir le quantile d’ordre α = p d’une distribution de Student Sdf : qt(p, df) TESTS STATISTIQUES 7.1 Test de Student: t.test La commande t.test permet d’effectuer un test de Student sur un ou deux échantillons. 7.1.1 Cas d’un échantillon: estimation de l’espérance (variance inconnue) et test de comparaison de moyenne à une valeur, H0 : µ = µ0 On suppose que les données sont des réalisations de v.a. gaussiennes indépendantes et identiquement distribuées. On souhaite tester l’hypothèse selon laquelle l’espérance µ d’une variable aléatoire gaussienne est égale à une certaine valeur µ0 . Les arguments de t.test à déterminer sont: • x: le vecteur de données (premier argument); • µ = µ0 : la valeur de l’espérance sous l’hypothèse nulle, i.e. H0 : µ = µ0 . Par défaut, égal à 0. • alternative=: le type d’hypothèse alternative, 3 possibles: – two.sided pour H1 : µ 6= µ0 – greater pour H1 : µ > µ0 – lower pour H1 : µ < µ0 7.1.2 Cas de deux échantillons indépendants: test de comparaison des moyennes de 2 populations, H0 : µx − µy = 0 On suppose les données issues de deux populations de v.a. gaussiennes indépendantes et identiquement distribuées au sein de chaque population. Dans ce cas, les arguments à donner sont: • x= et y= les deux vecteurs d’observations des deux échantillons; • µ = µ0 , la valeur de la différence des espérances des deux échantillons sous H0 , i.e. H0 = E(X − Y ) = µ0 ; • var.equal=TRUE, si les variances des deux échantillons sont supposées égales. 7.1.3 Cas de deux échantillons appariés: test de comparaison de la différence des moyennes de 2 populations, H0 : E(X − Y ) = µ0 On suppose que les différences observées entre chaque paire sont la réalisation de v.a. gaussiennes indépendantes et identiquement distribuées. En plus des arguments précédents, • paired=TRUE, précise que les deux échantillons sont appariés; • µ = µ0 indique l’espérance de la différence des mesures sous H0 , i.e. E(Xi − Yi ) = µ0 . 4 7.2 Test de comparaison de variances On suppose les données issues de deux populations de v.a. gaussiennes indépendantes et identiquement distribuées au sein de chaque population. var.test(x, y, ratio = 1, alternative = c("two.sided", "less", "greater")) • x= et y=: les deux vecteurs d’observations des deux échantillons; • ratio: valeur de r0 telle que sous H0 : s2x /s2y = r0 , par défaut r0 = 1; • alternative= le type d’hypothèse alternative. 7.3 Test de proportion: prop.test La commande prop.test permet d’effectuer un test sur les proportions de données issues d’un ou deux échantillons. 7.3.1 Cas d’un échantillon On suppose que les données sont des réalisations de v.a. indépendantes et identiquement distribuées selon une loi de Bernoulli. prop.test(N, n, p=p0, alternative = alternative) • N, le nombre de succès; • n, l’effectif de l’échantillon; • p, la probabilité sous H0 , par défaut p0 = 0.5; • alternative = – two.sided pour H1 : p 6= p0 – greater pour H1 : p > p0 – lower pour H1 : p < p0 (two.sided par défaut). . . 7.3.2 Cas de deux échantillons indépendants On suppose que les données sont des réalisations de deux populations de v.a. indépendantes et identiquement distribuées selon une loi de Bernoulli au sein de chaque population. Dans ce cas, les arguments à donner sont: • N, le vecteur des succès, c(N1,N2); • n, le vecteur des effectifs des échantillons, c(n1,n2). On ne définit pas p. 5 7.4 7.4.1 Test du χ2 : chisq.test Test d’ajustement du χ2 H0 : “X suit la loi L” contre H1 : “X ne suit pas la loi L”. Les données sont supposées indépendantes. On définit arbitrairement k classes. Pour que le test basé sur une approximation soit valide, il faut que les effectifs de chaque classe soient supérieurs à 5. chisq.test(x,p) avec: • x, le vecteur des effectifs par classes; • p, le vecteur des probabilités théoriques des classes. 7.4.2 Test d’indépendance du χ2 X et Y , deux variables qualitatives à p et q modalités, mesurées sur une population de taille n. chisq.test(Tab) avec Tab la table de contingence de X et Y . Cette table peut être décrite (si calculée auparavant) avec la fonction matrix ou calculée avec la fonction table. ESTIMATION D’UN MODÈLE LINÉAIRE Les commandes R pour l’analyse d’un modèle linéaire sont les mêmes, qu’il s’agisse d’une régression linéaire, d’une ANOVA ou d’une ANCOVA. 8.1 8.1.1 Rappels sur les modèles linéaires La régression linéaire Y (variable à expliquer) et X (variable(s) explicative(s)) sont des variables quantitatives. On suppose que: Yi µ+ = p X βj xj,i + Ei j=1 Ei N (0, σ 2 ), indépendants et identiquement distribués ∼ Lorsque le modèle n’inclut qu’une variable explicative (p = 1), on parle de régression linéaire simple. Si p > 1, on parle de régression linéaire multiple. 8.1.2 ANOVA (Analyse de la variance) Y est quantitative et X est qualitatif. ANOVA à 1 facteur Le modèle s’écrit: Yi,j = µ + αj + Ei,j Ei,j ∼ N (0, σ 2 ), indépendants et identiquement distribués où αj désigne l’effet spécifique associé à la modalité j du facteur (j = 1, . . . , J). 6 ANOVA à 2 facteurs Le modèle s’écrit: Yi,j,k = µ + αj + βk + γj,k + Ei,j,k Ei,j,k ∼ N (0, σ 2 ), indépendants et identiquement distribués où • αj désigne l’effet spécifique associé à la modalité j du premier facteur (j = 1, . . . , J), • βk désigne l’effet spécifique associé à la modalité k du deuxième facteur (k = 1, . . . , K), • γj,k sont les termes d’interaction. S’il n’y a pas d’interaction entre les deux facteurs (ANOVA à deux facteurs sans interaction), le modèle se simplifie de la façon suivante: 8.1.3 Yi,j,k = µ + αj + βk + Ei,j,k Ei,j,k ∼ N (0, σ 2 ), indépendants et identiquement distribués ANCOVA (Analyse de la covariance) Y est quantitative, X contient à la fois des variables explicatives quantitatives et qualitatives. Lorsque le modèle contient une variable explicative qualitative et une variable explicative quantitative, le modèle s’écrit: 8.2 Yi,j = (µ + αj ) + (γ + βj )xi + Ei,j Ei,j ∼ N (0, σ 2 ), indépendants et identiquement distribués Commandes de base Modèle linéaire y expliqué par x: NomDuModele= lm(y~x) où x et y sont les noms des vecteurs des observations des variables X et Y . 8.3 Fonctions associées • Vérifications graphiques des hypothèses (homoscédasticité, linéarité, normalité des résidus) plot(NomDuModele) • Tableau d’analyse de la variance et tests de type 1 des variables explicatives anova(NomDuModele) • Tableau d’analyse de la variance et tests de type 2 des variables explicatives ANOVA(NomDuModele) Cette commande nécessite le chargement du package car. Pour installer le package: install.packages(car), pour charger le package pour la session courante: library(car). • Estimations des coefficients et tests associés summary(NomDuModele) • Coefficients estimés coef(NomduModele) 7 ELÉMENTS DE PROGRAMMATION R 9.1 La boucle for La boucle for permet de répéter les mêmes instructions plusieurs fois lorsque le nombre de répétitions à réaliser est connu. Les répétitions sont gérées au moyen d’un compteur dont la valeur est incrémentée à chaque itération de la boucle. Sous R, la boucle for se structure comme suit: for (\ldots) { \ldots } Les parenthèses (\ldots) servent à définir le compteur et les valeurs qu’il va prendre successivement à chaque tour de boucle. Les accolades {\ldots} servent à délimiter les actions à répéter pour chacune des valeurs prises par le compteur. Par exemple, le code for (i in 1:10) { print(i) } permettra d’afficher tour à tour les valeurs de tous les entiers allant de 1 à 10 dans la console. 9.2 La fonction apply La fonction apply() permet d’appliquer une fonction (par exemple une moyenne, une somme) à chaque ligne ou chaque colonne d’un tableau de données. Cette fonction prend 3 arguments dans l’ordre suivant: • nom du tableau de données, • un nombre pour dire si la fonction doit s’appliquer aux lignes (1), aux colonnes (2) ou aux deux (c(1,2)), • le nom de la fonction à appliquer. Par exemple, apply(Tab,2,mean) permet de calculer la moyenne pour chaque variable (colonne) du tableau de données Tab. 9.3 La fonction by La fonction by permet d’appliquer un même traitement à tous les niveaux d’un facteur. Sa syntaxe est la suivante: by(variablefacteur,fonction) où • variable est le nom de la variable sur laquelle porte le calcul, • facteur est le nom du facteur selon les niveaux duquel on répète le traitement, • fonction est le nom de la fonction utilisée. Par exemple, by(data$age,data$sexe,mean) permettrait de calculer un âge moyen par sexe à partir des données du data.frame data. 8