You are on page 1of 6

Langage R : Corrlation et rgression linaire simple

Dpartement de sciences biologiques Universit de Montral Marie-Hlne Ouellette, Guillaume Blanchet, Daniel Borcard, Sbastien Durand et Guillaume Bourque (par ordre chronologique) 16/11/07 13:31

Les formules
Nous avons vu que les fonctions acceptent comme arguments soit des vecteurs, des matrices ou des data.frames . Or, ils acceptent galement des formules. Les formules sont des lments cls des analyses statistiques avec R : en effet, la notation utilise est la mme pour la majorit des tests statistiques. Une formule est typiquement de la forme y ~ x1 + x2 + x3 o y est la variable rponse analyse, le symbole ~ signifie est dpendant de , et x1 + x2 + x3 sont les termes pour lesquels des paramtres seront estims, pour produire un modle de la forme y = b0 + b1x1 + b2x2 + b3x3 . Dans le cadre de ce cours, vous nutiliserez que des fonctions simples du genre y ~ x .

Approfondissement FACULTATIF
Voici un exemple de la structure de base des formules :
Reponse ~ Op_1 Term_1 Op_2 Term2 Op_3 Term_3

Reponse

~
Op_i

Term_i

Un vecteur ou une matrice (ou une expression) qui dfinit la ou les variable(s) rponse(s). Ce symbole veut dire "en fonction de" Un oprateur (symbole arithmtique), qui a ici une signification particulire (la description des oprateurs est donne plus bas). Notez que le premier oprateur Op_1 est optionnel. Le terme peut tre maintes choses, il peut tre un vecteur, une matrice, un 1, un facteur ou mme une formule (Hey oui, une formule dans une formule).

Bio2041

Corrlation et rgression linaire simple

Approfondissement FACULTATIF (suite)


Les oprateurs des formules et leur signification Les oprateurs utiliss lorsque lon crit une formule sont les suivants : a + b Exprime les effets additifs de a et de b. a : b Exprime leffet interactif entre a et b. a * b Exprime toutes les interactions entre a et b ; cest identique a+b+a:b. poly(a,n) Exprime le polynme de a jusquau degr n; cest--dire que y~poly(x,2) est identique y~1+x+I( x^2 ). ^n Inclut toutes les interactions jusquau niveau n, cest--dire (a+b+c)^2 est identique a+b+c+a:b+a:c+b:c. b %in% a Les effets de b sont hirarchiquement inclus dans a (identique a+a:b) a-b Supprime leffet de b, par exemples : (a+b+c)^n-a:b est identique
a+b+c+a:c+b:c. y~x-1

Par dfaut, loprateur et le terme +1 est inclus dans une formule. Ce +1 dfinit en soi, une colonne pour lordonne lorigine. Dans le cas prsent, le +1 est mis zro ce qui force la rgression passer par lorigine (idem pour y~x+0, ou 0+y~x).

On voit que les oprateurs arithmtiques de R ont dans une formule un sens diffrent de celui quils ont dans une expression classique. Par exemple, la formule y ~ x1 + x2 dfinira le modle y = b1x1 + b2x2 +a , et non pas (si loprateur + avait sa fonction habituelle) y = b(x1 + x2) + a .
I( )

On utilise cette fonction pour inclure des oprations arithmtiques dans une formule ; la formule y~I(x1+x2) dfinira alors le modle y = b(x1 + x2) + a .

Aussi, la formule log(y) ~ x1 + x2 , effectue la rgression multiple de la variable transforme log(y) avec une ordonne lorigine implicite. Finalement, il faut comprendre que lorsquon crit une formule il faut : 1. Que les termes que lon utilise aient t dfinis pralablement 2. Que nous mentionnions la fonction, qui va utiliser la formule, o se trouvent ces termes. Gnralement, les termes seront stocks indpendamment dans la mmoire de la console ou les diffrents termes peuvent tre accumuls sous forme de liste, de data.frame ou de matrice et passs la fonction. Dans votre cas, vous naurez qu utiliser des fonctions simples du genre y ~ x .

Bio2041

Corrlation et rgression linaire simple

Corrlation de Kendall et de Pearson


Pour calculer la corrlation de Kendall ou de Pearson, dans le cadre de ce cours, nous utiliserons la fonction cor.test( ) . Cette fonction permet dobtenir la valeur de la statistique calcule et un test paramtrique de signification. En voici un petit exemple : 1. Supposons que nous tudions la corrlation entre le nombre de germes sur des patates et la longueur des patates. Notre tableau de donnes, une fois import dans R, pourrait avoir la forme suivante (vous pouvez obtenir ce tableau partir du fichier Patate.txt sur la page web) :
> Patate Nb_germes Longueur 1 1 4 2 2 5 3 3 7 4 4 6

2. Supposons maintenant que notre hypothse H1 est qu'il y a une corrlation positive entre les deux variables (test unilatral droite), puisque des patates plus grosses auraient plus de germes. Pour calculer la corrlation de Kendall entre nos deux variables, voici deux faons d'crire la mme commande :
cor.test(Patate[,1], Patate[,2], alternative = "greater", method="kendall")

ou
cor.test(Patate$Nb_germes, Patate$Longueur, alternative = "greater", method="kendall")

Je vous suggre ardemment daller consulter laide de la fonction cor.test afin que vous puissiez aller chercher plus dinformation concernant lutilisation de ses arguments (spcialement pour les arguments alternative et method ). Voici la sortie produite par R :
Kendall's rank correlation tau data: Patate$Nb_germes and Patate$Longueur T = 5, p-value = 0.1667 alternative hypothesis: true tau is greater than 0 sample estimates: tau 0.6666667

Et voil, la statistique est calcule et teste!! Le de Kendall vaut donc 0.6667 et la probabilit sous H0 associe la statistique calcule est 0.1667 . Selon de ce rsultat, doit-on rejeter H0 ou non ?

Bio2041

Corrlation et rgression linaire simple

Description de laffichage de la fonction cor.test pour une corrlation de Pearson Sur ce mme exemple, le rsultat pour la corrlation de Pearson est le suivant:
Pearson's product-moment correlation data: Patate$Nb_germes and Patate$Longueur t = 1.8856, df = 2, p-value = 0.1 alternative hypothesis: true correlation is greater than 0 95 percent confidence interval: -0.4976979 1.0000000 sample estimates: cor 0.8

Le r de Pearson vaut donc 0.8 , son intervalle de confiance 95% est [0.4977, 1.0000] , la statistique t associe au r vaut 1.8856 et sa probabilit sous H0 vaut 0.1 . Doit-on rejeter l'hypothse nulle ? votre tour dy rflchir !

Rgression linaire simple


Pour ce qui est de la rgression linaire, on utilise la fonction lm( ) (pour linear model). M. Parmentier prtend que les germes gnrent des hormones de croissance qui allongent les patates. Pour tester son hypothse, faisons une rgression linaire de la longueur des patates en fonction du nombre de germes (ce qui signifie que la longueur des patates est la variable dpendante). On fait la rgression linaire simple de la faon suivante :
Patate.lm <- lm( Longueur ~ Nb_germes, data = Patate )

Pour de l'information sur les paramtres de la fonction, consultez laide de la fonction lm( ) . Notez lutilisation de largument data : il dit la fonction dans quel data.frame aller chercher les colonnes Longueur et Nb_germes. Si on affiche les rsultats de cette fonction en appelant simplement l'objet Patate.lm, on obtient les valeurs de lordonne lorigine (Intercept) et la pente pour la variable Nb_germes. Pour obtenir plus dinformations sur les rsultats de la rgression (ce qui sera sans doute trs utile pour vous !!), utilisez la fonction summary( ) sur lobjet Patate.lm .
summary( Patate.lm )

Bio2041

Corrlation et rgression linaire simple

La sortie de R aprs que la fonction summary( ) a fait sont travail :


Call: lm(formula = Longueur ~ Nb_germes, data = Patate) Residuals: 1 2 3 4 -0.3 -0.1 1.1 -0.7 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 3.5000 1.1619 3.012 0.0948 . Nb_germes 0.8000 0.4243 1.886 0.2000 --Signif. codes: 0 *** 0.001 ** 0.01 * 0.05 . 0.1 1 Residual standard error: 0.9487 on 2 degrees of freedom Multiple R-Squared: 0.64, Adjusted R-squared: 0.46 F-statistic: 3.556 on 1 and 2 DF, p-value: 0.2 Call Residuals

Cest la commande que vous avez lance pour obtenir le rsultat affich. Ce tableau nous donne les rsidus de la rgression, c'est--dire la diffrence entre les valeurs observes (relles) de y et les valeurs prdites par le modle de rgression. Par exemple, pour la premire ligne de notre tableau, o Nb_germes (x) = 1 et Longueur (y) = 4, ont obtient ici : y observ: y=4 y prdit: y-chapeau = ax + b = 0.8 * 1 + 3.5 = 4.3 rsidu: y y-chapeau = 4 4.3 = 0.3 La liste exhaustive des rsidus n'apparat que lorsque l'effectif (n) est plus petit que 8 (8 paires de x et y). Pour n 8, ce sont les minimum, premier quartile (1/4 des donnes ordonnes), mdiane (1/2), troisime quartile (3/4) et maximum qui sont retourns par la fonction summary( ). Ceci permet de voir la distribution des rsidus. Voici un exemple :
Residuals: Min 1Q Median -4.2816 -1.8269 -0.2371 3Q 1.9454 Max 4.7184

D'aprs vous, pourquoi est-ce que la moyenne n'est par retourne ?


Coefficients: Estimate

La valeur des coefficients b (ligne "Intercept", = l'ordonne l'origine) et a (ligne "Nb_germes", = la pente pour la variable Nb_germes); dans cet exemple, l'quation de rgression (y = ax + b) est donc : y-chapeau = 0.8x + 3.5 Std. Error Lerreur type de l'ordonne l'origine et de la pente, qui servent pour calculer les intervalles de confiance de ces paramtres. t value La valeur de la statistique t associe l'ordonne l'origine et la pente, pour en tester la signification. Pr (>|t|) La probabilit bilatrale de chaque coefficient sous H0. Cest la probabilit qu'on puisse rencontrer de telles valeurs absolues de a ou b si H0 est vraie. Si la probabilit est 0.05, une ou plusieurs toiles apparatrons sa droite suivant la lgende donne.
Corrlation et rgression linaire simple

Bio2041

Multiple R-Squared & Ajusted R-Squared

La valeur du coefficient de dtermination R2 ainsi que la valeur corrige qui tient compte de la proportion entre le nombre d'observations et le nombre de variables explicatives. La statistique F du rapport entre variance explique et variance rsiduelle de la rgression, et la probabilit de F sous H0, qui est donc le test de signification global du modle de rgression. Observez que dans ce cas-ci (rgression linaire simple seulement), la valeur de F (3.556) est le carr de la valeur de t associe la pente (1.886).

F-statistic

Laffichage de vos donnes et de votre rgression linaire simple Dans un premier temps, il faut trouver o sont stockes les donnes de sortie de la rgression. Ouvrez laide de la fonction lm( ) . Lisez la section Value afin de trouver lobjet qui contient la courbe de rgression. Sil vous plat, faites ltape prcdente. Lobjet en question est fitted.values Vous pouvez regarder les donnes de cet objet en tapant :
Patate.lm$fitted.values

Donc, pour obtenir un graphique de votre rgression, procder comme suit :


# Ajuste la marge du graphique qui sera cr par(mar =c(10.1, 4.1, 4.1, 2.1)) # Ceci affiche vos donnes plot(Patate, main= NULL, col= "red") # Ajoute la droite de rgression lines(x = Patate$Nb_germes, y = Patate.lm$fitted.values)

Noubliez pas dajouter votre titre gnral; pour ce faire, consulter le document GuideMacTextWranglerR.pdf la section Produire un histogramme de frquences . Pour changer le nom des axes, utilisez les arguments xlab et ylab dans la fonction plot( ) (voir la section sur l'histogramme pour plus de dtails).

Bio2041

Corrlation et rgression linaire simple

You might also like