Cours 6 : Les statistiques avec R
Transcription
Cours 6 : Les statistiques avec R
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 XVII- Généralités Quelques fonctions dans « stats »: Modélisation SSlogis aov glm lm manova ksmooth step Modèle logistique Analyse de variance Modèles linéaires généralisés Modèles linéaires Analyse de variance multivariée Kernel Regression Smoother Choix d’un modèle par l’algorithme Stepwise Tests bartlett.test binom.test chisq.test cor.test t.test var.test wilcox.test ks.test Test de Bartlett d’homogénéité de variances Test Binomial exact Test du Chi2 Test d’ Association/Correlation t-Test de Student de comparaison de moyennes F Test de Fisher de comparaison de Variances Test de rang de Wilcoxon Tests de Kolmogorov-Smirnov XVII- Généralités Estimation density ecdf Estimation de densité par noyaux 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) Paramètres estimés. Droite de régression : y = 10.91x − 30.53 Coefficients: (paramètres estimés) (Intercept) X -30.53 10.91 >anov Nbre de degres de libertés Call: aov(formula = sqrt(count) ~ spray, data = InsectSprays) Terms: (table d’analyse variance) Somme des carrés intra-classe spray Residuals Sum of Squares 88.43787 26.05798 Deg. of Freedom 5 66 Somme des carrés inter-classes Residual standard error: 0.6283453 (résiduels) Estimated effects may be unbalanced Ecart-type estimé des résidus XIX- Les Sorties > X2 Pearson's Chi-squared test Valeur de la statistique de test du chi2 data: tab X-squared = 27.1387, df = 1, p-value = 1.894e-07 P(X>X-squared ) X v.a. de loi X²(1) XIX- Les Sorties > st Test t pour variances inégales P(T>t ) Welch Two Sample t-test T v.a. de loi T(178.446) data: x and y t = -0.2178, df = 178.446, p-value = 0.8278 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) (Intercept) 48.8212736 # ou fit$coefficients Education -0.8166573 #coefficients de la regression Infant.Mortality 1.5187190 >regression$residuals #ou residuals(regression) #residus observés 1 -123.946168 7 62.864581 13 -31.454873 19 -23.749085 25 1.148411 2 3 191.916329 -208.535569 8 9 46.774152 59.915367 14 15 68.544191 15.157573 20 21 -90.788796 50.403354 26 27 94.606969 28.210454 4 5 64.916267 133.420840 10 11 -57.501492 -124.808049 16 17 -84.833735 -8.562422 22 23 39.877642 -53.584722 28 29 21.132875 -162.464691 6 84.429343 12 166.122648 18 -85.613688 24 8.778597 30 -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) Residuals: Min 1Q -206.89 -76.47 Median 12.28 Coefficient de détermination (=r²) 3Q 61.42 Max 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 Somme des carrés inter-classe >summary(anov) 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)