Interpeting R significance codes for ANOVA table?

DeltaIV picture DeltaIV · Aug 2, 2016 · Viewed 20.1k times · Source

test data frame:

> foo
      x     y     z
1 0.191 0.324 0.620
2 0.229 0.302 0.648
3 0.191 0.351 0.626
4 0.229 0.324 0.630
5 0.152 0.374 0.656
6 0.191 0.295 0.609
7 0.229 0.267 0.665
8 0.152 0.353 0.657
9 0.152 0.355 0.655

Two linear models:

model1 <- lm(z~polym(x,y,degree = 1),data=foo)
model2 <- lm(z~polym(x,y,degree = 2),data=foo)

ANOVA for the two models returns:

> anova(model1,model2)
Analysis of Variance Table

Model 1: z ~ polym(x, y, degree = 1)
Model 2: z ~ polym(x, y, degree = 2)
  Res.Df      RSS Df Sum of Sq    F Pr(>F)  
1      6 0.002988                           
2      3 0.000169  3   0.00282 16.6  0.023 *
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Why the single *? 0.05 > 0.023 > 0.01, so shouldn't it print a . symbol?

Answer

李哲源 picture 李哲源 · Aug 2, 2016

There is nothing wrong.

0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

means:

annotation          p-value          significance level
   ***            [0, 0.001]                0.001
    **         (0.001, 0.01]                0.01
     *          (0.01, 0.05]                0.05
     .           (0.05, 0.1]                0.1
                    (0.1, 1]                1

0.023 is within (0.01, 0.05], so it should be annotated by *.