# How to Extract Fitted Values in R

Linear regression is a method that we can use in statistics to summarize the relationship between one or more predictor variables and a response variable.

When using a linear regression model, we’re often interested in extracting the fitted values of the model, which are the values that the model predicts for the response value of each observation in a dataset.

To fit a linear regression model in R, we can use the lm() function.

Then, to extract the fitted values of the linear regression model we can use the fitted.values attribute.

The following example shows how to fit a linear regression model and then extract the fitted values of the model in R in practice.

## Example: How to Extract Fitted Values from Regression Model in R

Suppose we have the following data frame in R that contains information about various basketball players:

```#create data frame
df <- data.frame(minutes=c(5, 10, 13, 14, 20, 22, 26, 34, 38, 40),
fouls=c(5, 5, 3, 4, 2, 1, 3, 2, 1, 1),
points=c(6, 8, 8, 7, 14, 10, 22, 24, 28, 30))

#view data frame
df

minutes fouls points
1        5     5      6
2       10     5      8
3       13     3      8
4       14     4      7
5       20     2     14
6       22     1     10
7       26     3     22
8       34     2     24
9       38     1     28
10      40     1     30
```

Suppose we would like to fit the following multiple linear regression model using minutes played and total fouls to predict the number of points scored by each player:

points = β0 + β1(minutes) + β2(fouls)

We can use the lm() function to fit this model:

```#fit multiple linear regression model
fit <- lm(points ~ minutes + fouls, data=df)

#view summary of model
summary(fit)

Call:
lm(formula = points ~ minutes + fouls, data = df)

Residuals:
Min      1Q  Median      3Q     Max
-3.5241 -1.4782  0.5918  1.6073  2.0889

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -11.8949     4.5375  -2.621   0.0343 *
minutes       0.9774     0.1086   9.000 4.26e-05 ***
fouls         2.1838     0.8398   2.600   0.0354 *
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 2.148 on 7 degrees of freedom
Multiple R-squared:  0.959,	Adjusted R-squared:  0.9473
F-statistic: 81.93 on 2 and 7 DF,  p-value: 1.392e-05
```

We can see that the p-values (from the Pr(>|t|) ) for both predictor variables minutes and fouls are less than .05, which means they are both significant predictors of total points scored for a particular player.

Suppose that we would like to extract all of the fitted values from the model.

We can use the fitted.values attribute to do so:

```#extract fitted values from regression model into new column in original data frame
df\$fitted <- fit\$fitted.values

#view updated data frame
df

minutes fouls points    fitted
1        5     5      6  3.911127
2       10     5      8  8.798214
3       13     3      8  7.362896
4       14     4      7 10.524098
5       20     2     14 12.021032
6       22     1     10 11.792082
7       26     3     22 20.069321
8       34     2     24 25.704875
9       38     1     28 27.430760
10      40     1     30 29.385594
```

The new column named fitted contains the fitted values from the regression model.

Note that these are the values that the model predicts for the value in the points column, using the coefficients from the regression model.

For example, we can see:

• The model predicts that the first player will scored 3.91 points. In reality, this player scored 6 points.
• The model predicts that the first player will scored 8.79points. In reality, this player scored 8 points.
• The model predicts that the first player will scored 7.36 points. In reality, this player scored 8 points.

And so on.

By comparing the values from the fitted and points columns, we can get an idea of how well the model was able to predict points using minutes and fouls as predictor variables.