This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Function to extract the overall ANOVA p-value out of a linear model object | |
lmp <- function (modelobject) { | |
if (class(modelobject) != "lm") stop("Not an object of class 'lm' ") | |
f <- summary(modelobject)$fstatistic | |
p <- pf(f[1],f[2],f[3],lower.tail=F) | |
attributes(p) <- NULL | |
return(p) | |
} | |
# simulate some data | |
set.seed(42) | |
n=20 | |
d=data.frame(x1=rbinom(n,2,.5), x2=rbinom(n,2,.5)) | |
d=transform(d, y=x1+x2+rnorm(n)) | |
#fit the linear model | |
fit=lm(y ~ x1 + x2, data=d) | |
summary(fit) #shows that the F-test is 0.006641 | |
names(summary(fit)) #can't access that p-value using this! | |
names(fit) # this doesn't work either | |
lmp(fit) # uses the above function to capture the F-test p-value. |
That's the way you need to do it. In fact, that's how it is calculated in the source code to print.summary.lm(x,...):
ReplyDeletepf(x$fstatistic[1L], x$fstatistic[2L], x$fstatistic[3L],lower.tail = FALSE)
I could be totally wrong but I thing that
ReplyDeletecoef(summary(modelobject))["termname", "Pr(>|t|)"]
should pull out only the pvalue of the model.
Sorry if this isn't what you are looking for.
exactly what i was looking for! thanks :)
ReplyDeleteThis is great. Thanks
ReplyDeleteWhat about the cor.test function?
ReplyDelete> x <- c(44.4, 45.9, 41.9, 53.3, 44.7, 44.1, 50.7, 45.2, 60.1)
> y <- c( 2.6, 3.1, 2.5, 5.0, 3.6, 4.0, 5.2, 2.8, 3.8)
> lmp(lm(x~y))
[1] 0.1081731
> cor.test(x,y)$p.value
[1] 0.1081731
thanks for sharing
ReplyDelete