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)