# Extract Fitted Values from Regression Model in R (2 Examples)

In this tutorial you’ll learn how to **get the fitted values of a linear regression model** in R programming.

The tutorial contains this information:

Here’s how to do it!

## Construction of Example Data

The following data is used as basement for this R tutorial:

set.seed(293675) # Create example data x1 <- rnorm(100) x2 <- rnorm(100) + x1 x3 <- rnorm(100) + 0.2 * x1 - 0.5 * x2 y <- rnorm(100, 10, 10) + x1 + x2 + x3 data <- data.frame(x1, x2, x3, y) head(data) # Print head of example data |

set.seed(293675) # Create example data x1 <- rnorm(100) x2 <- rnorm(100) + x1 x3 <- rnorm(100) + 0.2 * x1 - 0.5 * x2 y <- rnorm(100, 10, 10) + x1 + x2 + x3 data <- data.frame(x1, x2, x3, y) head(data) # Print head of example data

Table 1 illustrates the RStudio console output and shows that our example data contains four columns. The variables x1, x2, and x3 will be used as predictors (independent variables) and the variable y as target variable (dependent variable).

Let’s estimate a linear regression model based on our example data:

my_mod <- lm(y ~ ., data) # Estimate linear regression model summary(my_mod) # Summary of linear regression model # Call: # lm(formula = y ~ ., data = data) # # Residuals: # Min 1Q Median 3Q Max # -25.6855 -6.4824 -0.0359 6.2732 22.5334 # # Coefficients: # Estimate Std. Error t value Pr(>|t|) # (Intercept) 10.1381 1.0170 9.968 < 2e-16 *** # x1 0.6526 1.3744 0.475 0.63600 # x2 2.3580 1.0631 2.218 0.02891 * # x3 2.8050 0.8534 3.287 0.00142 ** # --- # Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 # # Residual standard error: 9.864 on 96 degrees of freedom # Multiple R-squared: 0.1422, Adjusted R-squared: 0.1154 # F-statistic: 5.303 on 3 and 96 DF, p-value: 0.001999 |

my_mod <- lm(y ~ ., data) # Estimate linear regression model summary(my_mod) # Summary of linear regression model # Call: # lm(formula = y ~ ., data = data) # # Residuals: # Min 1Q Median 3Q Max # -25.6855 -6.4824 -0.0359 6.2732 22.5334 # # Coefficients: # Estimate Std. Error t value Pr(>|t|) # (Intercept) 10.1381 1.0170 9.968 < 2e-16 *** # x1 0.6526 1.3744 0.475 0.63600 # x2 2.3580 1.0631 2.218 0.02891 * # x3 2.8050 0.8534 3.287 0.00142 ** # --- # Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 # # Residual standard error: 9.864 on 96 degrees of freedom # Multiple R-squared: 0.1422, Adjusted R-squared: 0.1154 # F-statistic: 5.303 on 3 and 96 DF, p-value: 0.001999

The previous output shows the output of our linear model. In the next examples, I’ll show how to extract the fitted values of this model.

## Example 1: Get Fitted Values of Linear Regression Model Using fitted() Function

This example demonstrates how to find the fitted values of a linear regression model using the fitted() function.

Have a look at the R syntax below:

fit1 <- fitted(my_mod) # Apply fitted function head(fit1) # Print head of resulting values # 1 2 3 4 5 6 # 10.173905 10.457139 9.370953 11.676833 11.420710 14.084482 |

fit1 <- fitted(my_mod) # Apply fitted function head(fit1) # Print head of resulting values # 1 2 3 4 5 6 # 10.173905 10.457139 9.370953 11.676833 11.420710 14.084482

The previous output shows the first six fitted values (i.e. the head) corresponding to the first six observations in our data.

## Example 2: Get Fitted Values of Linear Regression Model Using predict() Function

In this section, I’ll show how to use the predict function instead of the fitted function to return the fitted values of our model.

In the present example, we simply have to use the predict function instead of the fitted function:

fit2 <- predict(my_mod) # Apply predict function head(fit2) # Print head of resulting values # 1 2 3 4 5 6 # 10.173905 10.457139 9.370953 11.676833 11.420710 14.084482 |

fit2 <- predict(my_mod) # Apply predict function head(fit2) # Print head of resulting values # 1 2 3 4 5 6 # 10.173905 10.457139 9.370953 11.676833 11.420710 14.084482

As you can see, the result is the same as in Example 1.

Please note that this is not the case for all types of models. This is because the predict function by default returns predictions on the scale of the linear predictor.

For instance, in case of a binomial logit model the result of the fitted and predict functions would be different.

We could still use the predict function for such models, but we would have to specify the type argument to tell the predict function what kind of output we expect (e.g. predict(my_mod, type = “response”)).

For that reason, I usually prefer to use the fitted function to extract fitted values from a model in R.

## Video, Further Resources & Summary

Have a look at the following video on my YouTube channel. In the video, I’m showing the topics of this tutorial:

**Please accept YouTube cookies to play this video.** By accepting you will be accessing content from YouTube, a service provided by an external third party.

If you accept this notice, your choice will be saved and the page will refresh.

In addition to the video, you may want to have a look at the other articles on this homepage.

- Extract Regression Coefficients of Linear Model
- Extract Standard Error, t-Value & p-Value from Linear Regression Model
- Extract Residuals & Sigma from Linear Regression Model in R
- Extract Multiple & Adjusted R-Squared from Linear Regression Model
- How to Extract the Intercept from a Linear Regression Model
- Introduction to R

In this R programming tutorial you have learned how to **return the fitted values of a linear regression model**, and you have learned about the difference between the fitted and predict functions. Let me know in the comments section below, in case you have any further comments and/or questions. Furthermore, please subscribe to my email newsletter in order to receive updates on the newest articles.

### Statistics Globe Newsletter

## 6 Comments. Leave new

cool thanks

Thank you Lihong, glad you like the tutorial!

Thank you !

You are very welcome Wei Wan!

Thanks for sharing. Can I use this for glm model?

Hey Hanh,

I think this should be possible, but I’m not sure. Maybe you can try it out and let us know 🙂

Regards,

Joachim