Cours 6 : Les statistiques avec R XVII- Généralités XVIII- Les formules XIX- Les sorties XX- Les fonctions génériques
XVII- Généralités Fonctions d analyse statistique disponibles Package «stats» : contient les fonctions d'analyse statistique classiques (tests d hypothèses classiques, modèles linéaires, distributions, résumés statistiques, séries temporelles, analyses multivariées). Il est chargé au démarrage. Accessibles avec library(help="stats") Packages spécifiques : d'autres packages de méthodes statistiques sont disponibles, distribués avec R ou à télécharger. Exemples : class : fonctions pour classification boot : fonctions bootstrap stats4: fonctions stats utilisant S4 survival : analyse de survie
Quelques fonctions dans «stats»: XVII- Généralités Modélisation SSlogis Modèle logistique aov Analyse de variance glm Modèles linéaires généralisés lm Modèles linéaires manova Analyse de variance multivariée ksmooth Kernel Regression Smoother step Choix d un modèle par l algorithme Stepwise Tests bartlett.test Test de Bartlett d homogénéité de variances binom.test Test Binomial exact chisq.test Test du Chi2 cor.test Test d Association/Correlation t.test t-test de Student de comparaison de moyennes var.test F Test de Fisher de comparaison de Variances wilcox.test Test de rang de Wilcoxon ks.test Tests de Kolmogorov-Smirnov
XVII- Généralités Estimation density Estimation de densité par noyaux ecdf Fonction de répartition empirique Analyse des données hclust Classifications hiérarchiques kmeans Classifications par partitionnement princomp Analyse en composantes principales prccomp Analyse en composantes principales dist Calcul de matrices de distance
XVIII- Les formules Syntaxe des principales fonctions : les formules Certaines fonctions statistiques (en particulier les fonctions de modélisation) travaillent sur des formules (?formula): fonction (formula=, data = ) formula= de type réponse ~ prédicteurs data= tableau de données éventuel dans lequel se trouvent les variables dans la formule. réponse = variable à expliquer predicteurs=ensemble des variables explicatives, séparées par des symboles arithmétiques qui ont ici une signification particulière.
XVIII- Les formules Exemple de formules : y~a : prédicteur a y~a+b : prédicteurs a et b y~m : autant de modèles que de predicteurs dans M (matrice) y ~ x - 1 ( ou y ~ 0 + x) : modèle sans terme constant. y~log(b) y ~ a + I(b+c) : predicteurs a et (b+c) y~a:b : interactions de a et b y~a*b : a+b+a:b effets principaux et interaction entre a et b y~(a+b)^2 : effets principaux a et b et interactions du second ordre a+b+a:b y=a*b-a:b : a+b
XVIII- Les formules Exemples de fonctions travaillant sur des formules Exemple 1 : Régression linéaire simple (RLS) de y sur x ( x et y quantitatives) >x=sample(s,200,replace=true);y=3+7*x+rnorm(200,0,100) > regression=lm(y~x) Exemple 2 : Régression linéaire multiple (RLM) de la fertilité sur l éducation et la mortalité infantile (toutes les variables sont quantitatives) > data(swiss) >fit = lm(fertility~ Education+Infant.Mortality,swiss) Exemple 3 : Analyse de variance à un facteur. Ici, analyse de l effet du facteur insecticide à 6 niveaux (spray) sur la réponse nombre d insectes (count), basée sur l observation de 12 cultures, tour à tour pulvérisées par les 6 insecticides (la réponse est quantitative, le facteur est un facteur) > data(insectsprays) >anov=aov(sqrt(count) ~ spray, data = InsectSprays);anov
XVIII- Les formules Autres syntaxes : D autres fonctions travaillent sur des matrices, des vecteurs ou des data.frame (tests statistiques, analyse des données)
XVIII- Les formules Exemples de fonctions ne travaillant pas sur les formules Exemple 4 : Test du chi2 : On veut tester le lien existant entre de variables qualitatives X et Y à partir d un échantillon sous forme de table de contingence (de croisement) >O=matrix(c(442,514,38,6),nrow=2,byrow=TRUE) > colnames(o)=c("homme","femme"); rownames(o)=c("voyant","aveugle") X2=chisq.test(O,correct=FALSE) Exemple 5 : Test de student : on veut tester l egalité entre deux moyennes au vu d un échantillon de chaque sous-population x= (X1,..., Xn1) et y=(y1,..., Yn2) : >x = rnorm(100,1,1); y = rexp(200,1) >st=t.test(x,y) #Test de student (resp. de Welch) d égalité de moyennes si variances des #variables égales (resp. diff érentes) >x = rnorm(100,1,1); #avec sous populations identifiées par un facteur à deux niveaux >z=rep(c(t,f),50) # de stratification >st2=t.test(x~z)
XIX- Les Sorties Pour afficher un bref résumé de l analyse, taper le nom de l objet créé par la fonction: >regression #exemple 1 Call: lm(formula = Y ~ X) Coefficients: (paramètres estimés) (Intercept) X -30.53 10.91 Paramètres estimés. Droite de régression : y = 10.91x 30.53 Nbre de degres de libertés >anov Call: aov(formula = sqrt(count) ~ spray, data = InsectSprays) Terms: (table d analyse variance) spray Residuals Sum of Squares 88.43787 26.05798 Deg. of Freedom 5 66 Residual standard error: 0.6283453 Estimated effects may be unbalanced Somme des carrés intra-classe Somme des carrés inter-classes (résiduels) Ecart-type estimé des résidus
XIX- Les Sorties > X2 Pearson's Chi-squared test data: tab Valeur de la statistique de test du chi2 X-squared = 27.1387, df = 1, p-value = 1.894e-07 P(X>X-squared ) P(X>X-squared ) X v.a. de loi X²(1)
XIX- Les Sorties > st Test t pour variances inégales Welch Two Sample t-test data: x and y t = -0.2178, df = 178.446, p-value = 0.8278 P(T>t ) T v.a. de loi T(178.446) alternative hypothesis: true difference in means is not equal to 0 95 percent confidence interval: -0.2648092 0.2121608 sample estimates: mean of x : 0.9544127 mean of y : 0.9807369 x et y
XIX- Les Sorties Les fonctions statistiques de R retournent un objet de classe empruntée au nom de la fonction (aov retourne un objet de classe "aov", lm retourne un objet de classe "lm", les tests retournent des objets de classe "htest " ). Cet objet contient les résultats de l analyse. C est généralement une liste dont l'affichage est déterminé par sa classe (aov() et lm() produisent des listes différentes). On peut regarder les éléments de l'objet liste crée et afficher les noms de la liste associée par les fonctions attributes() et names().
XIX- Les Sorties >names(regression) #ou names(fit) [1] "coefficients" "residuals" "effects" "rank" [5] "fitted.values" "assign" "qr" "df.residual" [9] "xlevels" "call" "terms" "model" > names(anov) [1] "coefficients" "residuals" "effects" "rank" [5] "fitted.values" "assign" "qr" "df.residual" [9] "contrasts" "xlevels" "call" "terms" "model"
XIX- Les Sorties >attributes(x2) $names [1] "statistic" "parameter" "p.value" "method" "data.name" "observed" [7] "expected" "residuals" $class [1] "htest
XIX- Les Sorties Pour extraire les éléments de la liste, on utilise les fonctions du même nom que ces éléments : >coefficients(fit) # ou fit$coefficients #coefficients de la regression (Intercept) Education Infant.Mortality 48.8212736-0.8166573 1.5187190 >regression$residuals #ou residuals(regression) #residus observés 1 2 3 4 5 6-123.946168 191.916329-208.535569 64.916267 133.420840 84.429343 7 8 9 10 11 12 62.864581 46.774152 59.915367-57.501492-124.808049 166.122648 13 14 15 16 17 18-31.454873 68.544191 15.157573-84.833735-8.562422-85.613688 19 20 21 22 23 24-23.749085-90.788796 50.403354 39.877642-53.584722 8.778597 25 26 27 28 29 30 1.148411 94.606969 28.210454 21.132875-162.464691-82.376306
XIX- Les Sorties > X2$expected #tableau des effectifs théoriques homme femme voyant 458.88 497.12 aveugle 21.12 22.88 >X2$residuals homme femme voyant -0.787994 0.7570801 aveugle 3.673039-3.5289413 >sum(x2$residuals^2) 27.13874 la somme des carrés des résidus est la valeur du chi-deux
XX- Les fonctions génériques Certaines fonctions sont aussi utilisées pour extraire les résultats désirés : les fonctions génériques. Elles agissent spécifiquement en fonction de la classe de l'objet. Les fonctions génériques ont une syntaxe unique pour tous les cas.
XX- Les fonctions génériques Principales fonctions génériques permettant d'extraire des informations d'un objet qui résulte d'une analyse: print() : retourne un résumé succint de l analyse summary() : retourne un résumé détaillé de l analyse df.residual() : retourne le nombre de degrés de libertés du résidu coef (): retourne les coefficients estimés avec parfois leurs erreurs-standard residuals() : retourne les résidus fitted() : retourne les valeurs ajustées par le modèle loglik() : calcule la vraisemblance et le nombre de paramètres d un modèle AIC() : calcule le critère d information d Akaike anova():table d analyse de la variance plot() : graphique adapté à l analyse. Résidus du modèle pour modélisation.
XX- Les fonctions génériques Exemple : summary() permet d'afficher un résumé détaillé de l analyse, spécifique à la classe de l objet. > apropos("^summary") [1] "summary.aov" "summary.aovlist" "summary.glm" [4] "summary.infl" "summary.lm" "summary.manova" [7] "summary.mlm" "summary.stepfun" "summaryrprof" [10] "summary" "summary.connection" "summary.data.frame" [13] "summary.date" "summary.default" "summary.factor" [16] "summary.matrix" "summary.posixct" "summary.posixlt" [19] "summary.table" >
XX- Les fonctions génériques > summary(regression) Call: lm(formula = Y ~ X) Coefficient de détermination (=r²) Residuals: Min 1Q Median 3Q Max -206.89-76.47 12.28 61.42 192.04 Tests de student de nullité des coefficients Coefficients: Estimate Std. Error t value Pr(> t ) Ecart-type résiduel et nombre (Intercept) -30.2553 34.3536-0.881 0.386 de dl des residus (n-2) X 7.4199 0.5869 12.642 4.31e-13 *** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 Residual standard error: 96.41 on 28 degrees of freedom Multiple R-Squared: 0.8509, Adjusted R-squared: 0.8456 F-statistic: 159.8 on 1 and 28 DF, p-value: 4.312e-13 Test de fisher de Significativite du modèle
XX- Les fonctions génériques >summary(anov) Somme des carrés inter-classe Variance inter-classe Df Sum Sq Mean Sq F value Pr(>F) spray 5 88.438 17.688 44.799 < 2.2e-16 *** Residuals 66 26.058 0.395 Test de Fisher de --- significativité du modèle Signif. codes: 0 `***' 0.001 `**' 0.01 `*' 0.05 `.' 0.1 ` ' 1 Variance intra-classe Somme des carrés intra-classe
XX- Les fonctions génériques Exemple : plot() retourne des graphes choisis pour l analyse en question >apropos("^plot") [1] "plot.density" "plot.ecdf" "plot.lm" [4] "plot.mlm" "plot.spec" "plot.spec.coherency" [7] "plot.spec.phase" "plot.stepfun" "plot.ts" [10] "plot.tukeyhsd" "plot" "plot.default" [13] "plot.design" "plot.new" "plot.window" [16] "plot.xy"
XX- Les fonctions génériques > par(mfrow=c(2,2)) > plot(anov)
> par(mfrow=c(2,2)) > plot(anov)