interpretation d'un p -value

Questions sur les fonctions statistiques de R

Modérateur : Groupe des modérateurs

marie pouget
Messages : 8
Enregistré le : 30 Aoû 2006, 07:15

interpretation d'un p -value

Messagepar marie pouget » 31 Aoû 2006, 12:14

Bonjour !
Alors je m'excuse, car c'est mon 2eme post de suite :)
Mais c'est une question toute simple !

Mes notations :
j'ai deux échantillons :
"pic" et "nbtotal"
et on a
"nbtotal2<-nbtotal^2"
"nbtotal3<-nbtotal^3"
voila pour les notations.

bon 1ere question :
reg3<-lm(pic~nbtotal3+nbtotal2+nbtotal-1)
...
ne donne pas la même chose que
reg<-lm(pic~nbtotal^3+nbtotal2+nbtotal-1)

voila les "summary" :


Call:
lm(formula = pic ~ nbtotal3 + nbtotal2 + nbtotal - 1)

Residuals:
1 2 3 4 5
0.02152 -0.29018 0.97861 -0.22995 -0.47730

Coefficients:
Estimate Std. Error t value Pr(>|t|)
nbtotal3 1.131e-15 1.924e-15 0.588 0.616
nbtotal2 -3.846e-10 6.654e-10 -0.578 0.622
nbtotal 5.716e-05 5.365e-05 1.065 0.398

Residual standard error: 0.8133 on 2 degrees of freedom
Multiple R-Squared: 0.9918, Adjusted R-squared: 0.9795
F-statistic: 80.5 on 3 and 2 DF, p-value: 0.01230


Call:
lm(formula = pic ~ nbtotal^3 + nbtotal2 + nbtotal - 1)

Residuals:
1 2 3 4 5
0.1833 -0.6826 0.9761 -0.1682 -0.2663

Coefficients:
Estimate Std. Error t value Pr(>|t|)
nbtotal 2.670e-05 1.224e-05 2.181 0.117
nbtotal2 4.639e-12 5.628e-11 0.082 0.940

Residual standard error: 0.7191 on 3 degrees of freedom
Multiple R-Squared: 0.9904, Adjusted R-squared: 0.9839
F-statistic: 154.2 on 2 and 3 DF, p-value: 0.0009454

la p-value du 2 eme est beaucoup plus petite !!

Alors
1) je n'ai pas du comprendre les paramètres de lm ..
2) quand on essaye 2 modèles avec lm, la R-squared et la p-value sont
2 bonnes données pour voir lequel est le mieux non ?
plus la R-squared est proche de 1, mieux c'est, et la p-value c'est pour
le test d'hypothèse pour la pertinence de la regression ?
3) si l'on prend la 2 eme régression .. le résultat peut bien se lire :

les observations sont telles que la probabilité de rejeter à tort l'hypothèse que
"la correlation est non polynomiale de degr3" est de 0.0009454 % .

Voila ..
la 3) m'intéresse tout spécialement, car je me sens ridicule à ne pas savoir interpreter
mes résulats :(

Je vous remercie sincérement !
Comprenez moi, c'est en fait la première fois que je peux utiliser mon peu de
connaissances en stat dans un cadre réel !!
ALors j'ai vraiment envie de bien faire :)

Bonne journée!


Marie

Renaud Lancelot
Messages : 2484
Enregistré le : 16 Déc 2004, 08:01
Contact :

Re: interpretation d'un p -value

Messagepar Renaud Lancelot » 31 Aoû 2006, 18:00

marie pouget a écrit :Bonjour !
Alors je m'excuse, car c'est mon 2eme post de suite :)
Mais c'est une question toute simple !

Mes notations :
j'ai deux échantillons :
"pic" et "nbtotal"
et on a
"nbtotal2<-nbtotal^2"
"nbtotal3<-nbtotal^3"
voila pour les notations.

bon 1ere question :
reg3<-lm(pic~nbtotal3+nbtotal2+nbtotal-1)
...
ne donne pas la même chose que
reg<-lm(pic~nbtotal^3+nbtotal2+nbtotal-1)

voila les "summary" :


Call:
lm(formula = pic ~ nbtotal3 + nbtotal2 + nbtotal - 1)

Residuals:
1 2 3 4 5
0.02152 -0.29018 0.97861 -0.22995 -0.47730

Coefficients:
Estimate Std. Error t value Pr(>|t|)
nbtotal3 1.131e-15 1.924e-15 0.588 0.616
nbtotal2 -3.846e-10 6.654e-10 -0.578 0.622
nbtotal 5.716e-05 5.365e-05 1.065 0.398

Residual standard error: 0.8133 on 2 degrees of freedom
Multiple R-Squared: 0.9918, Adjusted R-squared: 0.9795
F-statistic: 80.5 on 3 and 2 DF, p-value: 0.01230


Call:
lm(formula = pic ~ nbtotal^3 + nbtotal2 + nbtotal - 1)

Residuals:
1 2 3 4 5
0.1833 -0.6826 0.9761 -0.1682 -0.2663

Coefficients:
Estimate Std. Error t value Pr(>|t|)
nbtotal 2.670e-05 1.224e-05 2.181 0.117
nbtotal2 4.639e-12 5.628e-11 0.082 0.940

Residual standard error: 0.7191 on 3 degrees of freedom
Multiple R-Squared: 0.9904, Adjusted R-squared: 0.9839
F-statistic: 154.2 on 2 and 3 DF, p-value: 0.0009454

la p-value du 2 eme est beaucoup plus petite !!


Il faut lire un document de base sur la formulation des modèles dans R. Il y en a de nombreux disponibles en ligne, dont certains sont en français. Voir sur le CRAN:

http://cran.r-project.org/manuals.html
http://cran.r-project.org/other-docs.html

Dans une formule, le symbole "^" est utilisé pour spécifier des interactions entre plusieurs termes:

Code : Tout sélectionner

y ~ (x1 + x2 + x3)^2


signifie "je modélise y avec les effets principaux x1 à x3 et ttes les interactions d'ordre 1 entre x1, x2 et x3: x1 * x2, x1 * x3 et x2 * x3".

Code : Tout sélectionner

y ~ (x1 + x2 + x3)^3

signifie "je modélise y avec les effets principaux x1 à x3 et ttes les interactions d'ordre 1 et 2 entre x1, x2 et x3: x1 * x2, x1 * x3, x2 * x3 et x1 * x2 * x3".

Donc, quand vous faites une formule

Code : Tout sélectionner

pic~nbtotal^3


cela signifie que vous modélisez pic par nbtotal ainsi que ses interactions d'ordre 1 et 2 avec cette même variable, donc 3 fois nbtotal, ce qui est simplifié par l'interpréteur de commande interne de R en tenant compte de nbtotal une seule fois.

Si vous voulez modéliser pic par le cube de nbtotal, il faut utiliser la syntaxe

Code : Tout sélectionner

pic ~ I(nbtotal^3)


où le "I" signifie que l'on fait d'abord l'opération nbtotal^3 avant d'inclure le terme dans la formule. Voir ?I.

Exemple:

Code : Tout sélectionner

> set.seed(1)
> y <- rnorm(20)
> x1 <- -9:10
> x2 <- x1^2
> x3 <- x1^3
>
> summary(lm(y ~ x1 + x2 + x3))

Call:
lm(formula = y ~ x1 + x2 + x3)

Residuals:
     Min       1Q   Median       3Q      Max
-2.13961 -0.44040  0.01362  0.35881  1.39251

Coefficients:
             Estimate Std. Error t value Pr(>|t|)
(Intercept)  0.214446   0.314385   0.682    0.505
x1          -0.094907   0.090224  -1.052    0.308
x2          -0.002231   0.007322  -0.305    0.765
x3           0.001966   0.001399   1.405    0.179

Residual standard error: 0.9295 on 16 degrees of freedom
Multiple R-Squared: 0.1277,     Adjusted R-squared: -0.03585
F-statistic: 0.7808 on 3 and 16 DF,  p-value: 0.5218

>
> summary(lm(y ~ x1 + x1^2 + x1^3))

Call:
lm(formula = y ~ x1 + x1^2 + x1^3)

Residuals:
    Min      1Q  Median      3Q     Max
-2.4808 -0.5168  0.1875  0.4833  1.5450

Coefficients:
            Estimate Std. Error t value Pr(>|t|)
(Intercept)  0.17973    0.20852   0.862    0.400
x1           0.02158    0.03603   0.599    0.557

Residual standard error: 0.9291 on 18 degrees of freedom
Multiple R-Squared: 0.01955,    Adjusted R-squared: -0.03492
F-statistic: 0.3589 on 1 and 18 DF,  p-value: 0.5566

>
> summary(lm(y ~ x1 + I(x1^2) + I(x1^3)))

Call:
lm(formula = y ~ x1 + I(x1^2) + I(x1^3))

Residuals:
     Min       1Q   Median       3Q      Max
-2.13961 -0.44040  0.01362  0.35881  1.39251

Coefficients:
             Estimate Std. Error t value Pr(>|t|)
(Intercept)  0.214446   0.314385   0.682    0.505
x1          -0.094907   0.090224  -1.052    0.308
I(x1^2)     -0.002231   0.007322  -0.305    0.765
I(x1^3)      0.001966   0.001399   1.405    0.179

Residual standard error: 0.9295 on 16 degrees of freedom
Multiple R-Squared: 0.1277,     Adjusted R-squared: -0.03585
F-statistic: 0.7808 on 3 and 16 DF,  p-value: 0.5218


Alors
1) je n'ai pas du comprendre les paramètres de lm ..
2) quand on essaye 2 modèles avec lm, la R-squared et la p-value sont
2 bonnes données pour voir lequel est le mieux non ?
plus la R-squared est proche de 1, mieux c'est, et la p-value c'est pour
le test d'hypothèse pour la pertinence de la regression ?


Non. R2 donne la proportion de variance expliquée par le modèle. Par construction, R2 augmente avec le nb de variables dans le modèle. Vous pouvez avoir un très bon R2 avec des régresseurs indépendants de la variable à expliquer. La valeur de P donne la probabilité associée à l'hypothèse nulle que la variance résiduelle = la variance expliquée par le modèle. R2 et P sont peu informatives en elles-mêmes.

Exemple: on modélise une variable (10 observations) par 8 autres dont les valeurs sont tirées au sort dans une loi uniforme (les 8 var sont dans une matrice):

Code : Tout sélectionner

> y <- rnorm(10)
> x <- matrix(runif(80), ncol = 8)
> summary(lm(y ~ x))

Call:
lm(formula = y ~ x)

Residuals:
        1         2         3         4         5         6         7         8         9        10
 0.015445 -0.038323 -0.018800 -0.002881 -0.007630  0.001901  0.012474  0.039340  0.011452 -0.012978

Coefficients:
            Estimate Std. Error t value Pr(>|t|) 
(Intercept)   1.5321     0.1847   8.297   0.0764 .
x1           -2.5177     0.8826  -2.853   0.2147 
x2           -0.1047     2.0182  -0.052   0.9670 
x3            1.0771     1.1040   0.976   0.5078 
x4            1.0809     1.0568   1.023   0.4928 
x5            0.1355     1.2147   0.112   0.9293 
x6            0.5379     0.8536   0.630   0.6421 
x7           -2.6685     0.7606  -3.508   0.1768 
x8           -0.8721     0.7915  -1.102   0.4692 
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.06429 on 1 degrees of freedom
Multiple R-Squared: 0.9996,     Adjusted R-squared: 0.9964
F-statistic: 311.7 on 8 and 1 DF,  p-value: 0.04378


Vous avez un excellent R2 et une valeur de P "significative", mais votre modèle n'est pas du tout informatif...

3) si l'on prend la 2 eme régression .. le résultat peut bien se lire :

les observations sont telles que la probabilité de rejeter à tort l'hypothèse que
"la correlation est non polynomiale de degr3" est de 0.0009454 % .


Non... Il faut revoir votre cours et/ou un bon doc sur la régression.

Bon courage,

Renaud

marie pouget
Messages : 8
Enregistré le : 30 Aoû 2006, 07:15

Merci

Messagepar marie pouget » 01 Sep 2006, 07:19

D'accord !!
C'était tres clair comme expliquation, merci ..
je retourne à mes docs/cours ..
peut etre à tout à l'heure :)

Mercie encore !

Marie

marie pouget
Messages : 8
Enregistré le : 30 Aoû 2006, 07:15

quoi que ..

Messagepar marie pouget » 01 Sep 2006, 08:39

Bon,
Le coup du


> y <- rnorm(10)
> x <- matrix(runif(80), ncol = 8)
> summary(lm(y ~ x))


m'a impressioné ..


mais j'ai essayé, pour me convaincre que la R squared et p-value ne sont pas des bons indicateurs de modèles, de faire ceci, pour être plus proche de mon cas :

> y <- rnorm(10)
> x <- runif(10)
> summary(lm(y ~ x))


et la j'ai bien :

Call:
lm(formula = y ~ x)

Residuals:
Min 1Q Median 3Q Max
-2.2019 -0.2156 0.3649 0.5496 1.1596

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.3631 0.5712 0.636 0.543
x -0.4600 1.0417 -0.442 0.670

Residual standard error: 1.042 on 8 degrees of freedom
Multiple R-Squared: 0.0238, Adjusted R-squared: -0.09822
F-statistic: 0.1951 on 1 and 8 DF, p-value: 0.6704


et donc la j'ai bien des R-squared et p-value tres mauvaises ..

et j'ai relu mon cours, et, pour une regression avec un modèle
Y = a + b*X + epsilon ,
on a bien R-squared proche de 1 equivalent à les points sont bien alignés.

et pour savoir si la R-squared est proche de 1, on rmq que r-squared proche de 0 <=> b proche de 0,
on dont on construit le test "b=0" contre "b!=0", on obtient le test de pertinence de la regression..
et la p-valeur de ce test est le "p-value" donné par R ..

tout ça c'est SUR, mais c'est pour le cas d'un modèle en
Y = a + b*X + epsilon ,

mais je ne sais pas si cela s'applique quand on essaye
lm(Y~I(X^3)+I(X^2)+I(X)-1)

(ce qui correspond bien à un modèle en
Y = a+b3*X^3+b2*X^2+b1*X+epsilon non ? :)

voila mon pb en fait ..
je sais tres bien ce que signifient R-squared et p-value dans le cas du premier modèle, mais pour le second, je ne sais pas si je peux les interpreter de la même façon..

Renaud Lancelot
Messages : 2484
Enregistré le : 16 Déc 2004, 08:01
Contact :

Messagepar Renaud Lancelot » 02 Sep 2006, 08:43

Le R2 est un indicateur de la qualité globale de l'ajustement du modèle (proportion de la variance expliquée par le modèle). Il augmente forcément avec le nombre de variables dans le modèle. On ne peut donc pas s'en servir pour juger de l'intérêt d'inclure une variable supplémentaire dans le modèle.

Sans revenir sur la théorie, vous avez plusieurs outils complémentaires pour juger de cet intérêt:

1) la statistique de Wald (rapport du coef et de son écart-type) donnée dans le summary des modèles linéaires :

Code : Tout sélectionner

> summary(cars)
     speed           dist       
 Min.   : 4.0   Min.   :  2.00 
 1st Qu.:12.0   1st Qu.: 26.00 
 Median :15.0   Median : 36.00 
 Mean   :15.4   Mean   : 42.98 
 3rd Qu.:19.0   3rd Qu.: 56.00 
 Max.   :25.0   Max.   :120.00 
> fm1 <- lm(dist ~ -1 + speed, data = cars)
> fm2 <- lm(dist ~ -1 + speed + I(speed^2), data = cars)
> summary(fm2)

Call:
lm(formula = dist ~ -1 + speed + I(speed^2), data = cars)

Residuals:
    Min      1Q  Median      3Q     Max
-28.836  -9.071  -3.152   4.570  44.986

Coefficients:
           Estimate Std. Error t value Pr(>|t|)   
speed       1.23903    0.55997   2.213  0.03171 *
I(speed^2)  0.09014    0.02939   3.067  0.00355 **
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 15.02 on 48 degrees of freedom
Multiple R-Squared: 0.9133,     Adjusted R-squared: 0.9097
F-statistic: 252.8 on 2 and 48 DF,  p-value: < 2.2e-16


Vous pouvez également calculer la table d'analyse de variance avec la fonction anova:

Code : Tout sélectionner

> anova(fm2)
Analysis of Variance Table

Response: dist
           Df Sum Sq Mean Sq  F value    Pr(>F)   
speed       1 111949  111949 496.1227 < 2.2e-16 ***
I(speed^2)  1   2123    2123   9.4069  0.003546 **
Residuals  48  10831     226                       
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1


Attention, cette analyse est séquentielle: dépend de l'ordre dans lequel les variables sont introduites dans le modèle:

Code : Tout sélectionner

> fm2bis <- lm(dist ~ -1 + I(speed^2) + speed, data = cars)
> anova(fm2bis)
Analysis of Variance Table

Response: dist
           Df Sum Sq Mean Sq  F value  Pr(>F)   
I(speed^2)  1 112967  112967 500.6337 < 2e-16 ***
speed       1   1105    1105   4.8959 0.03171 * 
Residuals  48  10831     226                     
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1


Voir le package car et la fonction Anova pour des alternatives.

Enfin, vous pouvez comparer les deux modèles concurrents, toujours à l'aide de la fonction anova: c'est la solution à privilégier dans le cas le plus général (pas celui-ci !):

Code : Tout sélectionner

> anova(fm1, fm2)
Analysis of Variance Table

Model 1: dist ~ -1 + speed
Model 2: dist ~ -1 + speed + I(speed^2)
  Res.Df     RSS Df Sum of Sq      F   Pr(>F)   
1     49 12953.8                               
2     48 10831.1  1    2122.7 9.4069 0.003546 **
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1


Renaud


Retourner vers « Archives : Fonctions statistiques »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité