[R] extract the p value

Joshua Wiley jwiley.psych at gmail.com
Mon Oct 24 19:58:56 CEST 2011


Hi Jim,

Its a bit of a trick question.  There isn't actually any overall p
value stored in the lm object, or even in the summary.lm object.  It
is calculated from the f statistic by the print methods for
summary.lm.  Of course, none of that helps, per se.  Try this:

summary(lm(mpg ~ hp, data = mtcars))$fstatistic

f <- summary(lm(mpg ~ hp, data = mtcars))$fstatistic

## get p-value
pf(q = f[1], df1 = f[2], df2 = f[3], lower.tail = FALSE)

If you are interested in tracking things "under the hood":

# show methods for summary
methods(summary)
# leads to
summary.lm

## shows the structure of the summary
str(summary(lm(mpg ~ hp, data = mtcars)))

hmm no p value

how is the summary shown? it must be printed, which happens silently

methods(print)

leading us to: print.summary.lm*

the asterisk means it is a non-exported object, so to view the source
will take a bit more work.  From experience I know it is in the stats
package, so:

stats:::print.summary.lm

shows the code for the print method for summary.lm objects.  Towards
the end, you'll see:

    cat(",\tAdjusted R-squared:", formatC(x$adj.r.squared,
            digits = digits), "\nF-statistic:", formatC(x$fstatistic[1L],
            digits = digits), "on", x$fstatistic[2L], "and",
            x$fstatistic[3L], "DF,  p-value:", format.pval(pf(x$fstatistic[1L],
                x$fstatistic[2L], x$fstatistic[3L], lower.tail = FALSE),
                digits = digits), "\n")
    }

which is where it gets and outputs to the console the p value.

HTH,

Josh

On Mon, Oct 24, 2011 at 10:47 AM, Jim Bouldin <bouldinjr at gmail.com> wrote:
> OK, what is the trick to extracting the overall p value from an lm object?
> It shows up in the summary(lm(model)) output but I can't seem to extract it:
>
>> test2 = apply(aa, 1, function(x) summary(lm(x[,1] ~ 0 + x[,3] + x[,6])))
>> test2[[1]]
>
> Call:
> lm(formula = x[, 1] ~ 0 + x[, 3] + x[, 6])
>
> [omitted summary output]
> F-statistic: 40.94 on 2 and 7 DF,  p-value: 0.0001371
>
> It does not seem to be obtainable from anova(lm(model)) either, only the p
> values for the individual predictors.
> Stumped.
>
> Jim Bouldin
> Research Ecologist
>
>        [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>



-- 
Joshua Wiley
Ph.D. Student, Health Psychology
Programmer Analyst II, ATS Statistical Consulting Group
University of California, Los Angeles
https://joshuawiley.com/



More information about the R-help mailing list