# How to Get *F* Statistics and *p* Value From `lm`

in R

In R, the `summary()`

function provides detailed summary results of the fitted regression model obtained from the
`lm()`

function.

Sometimes, we are interested in only getting ** F statistics** and

**from the fitted model instead of getting detailed summary statistics.**

*p*valueYou can use the following syntax to get *F* statistics and *p* value from `lm`

summary statistics,

```
# F statistic
summary(model)$fstatistic[1]
# p value
pf(summary(model)$fstatistic[1], summary(model)$fstatistic[2], summary(model)$fstatistic[3], lower.tail = FALSE)
```

The multiple regression example below illustrates how to get the *F* statistics and *p* value based on the
fitted model.

Load blood pressure example dataset to fit the regression model,

```
df = read.csv("https://reneshbedre.github.io/assets/posts/reg/bp.csv")
# view first 5 rows
head(df)
BP Age Weight BSA Dur Pulse Stress
1 105 47 85.4 1.75 5.1 63 33
2 115 49 94.2 2.10 3.8 70 14
3 116 49 95.3 1.98 8.2 72 10
4 117 50 94.7 2.01 5.8 73 99
5 112 51 89.4 1.89 7.0 72 95
6 121 48 99.5 2.25 9.3 71 10
```

Fit the multiple regression model using the `lm()`

function with `BP`

as a dependent variable,

```
model <- lm(BP ~ ., data = df)
# summary statistics
summary(model)
# output
Call:
lm(formula = BP ~ ., data = df)
Residuals:
Min 1Q Median 3Q Max
-0.93213 -0.11314 0.03064 0.21834 0.48454
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -12.870476 2.556650 -5.034 0.000229 ***
Age 0.703259 0.049606 14.177 2.76e-09 ***
Weight 0.969920 0.063108 15.369 1.02e-09 ***
BSA 3.776491 1.580151 2.390 0.032694 *
Dur 0.068383 0.048441 1.412 0.181534
Pulse -0.084485 0.051609 -1.637 0.125594
Stress 0.005572 0.003412 1.633 0.126491
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.4072 on 13 degrees of freedom
Multiple R-squared: 0.9962, Adjusted R-squared: 0.9944
F-statistic: 560.6 on 6 and 13 DF, p-value: 6.395e-15
```

The summary statistics provide values of *F* statistics (560.6) and *p* value (6.395e-15) along with other
regression model statistics such as regression coefficients and residuals.

*F* statistics and *p* value are used to assess the significant relationship between the independent variables and dependent variable.
The significant *p* value (*p* < 0.05) indicates statistically significant relationship and suggests independent variables reliably
predict the dependent variable.

If you only want to get *F* statistics and *p* value from summary statistics, you can extract those values as below,

Extract *F* statistics,

```
summary(model)$fstatistic[1]
value
560.641
```

The `summary()`

function does not explicitly return the *p* value. But *p* value can be calculated using *F* statistics
and degrees of freedom.

```
pf(summary(model)$fstatistic[1], summary(model)$fstatistic[2], summary(model)$fstatistic[3], lower.tail = FALSE)
value
6.395226e-15
```

In the above code, `summary(model)$fstatistic[2]`

and `summary(model)$fstatistic[3]`

return the numerator and denominator
degree of freedoms, respectively.

The `lower.tail`

is set to `FALSE`

for getting the right-sided probability of the *F* distribution

## Enhance your skills with statistical courses using R

- Statistics with R Specialization
- Data Science: Foundations using R Specialization
- Data Analysis with R Specialization
- Understanding Clinical Research: Behind the Statistics
- Introduction to Statistics
- R Programming
- Getting Started with Rstudio

This work is licensed under a Creative Commons Attribution 4.0 International License

Some of the links on this page may be affiliate links, which means we may get an affiliate commission on a valid purchase. The retailer will pay the commission at no additional cost to you.