# How to find the difference between regression line and the points in R?

The difference between regression line and the points on the scatterplot are actually the residuals, thus we need to calculate the residual from the model object. This can be simply done by using residuals function. For example, if we create a linear model defined as Model between x and y then the residuals will be found as residuals(Model).

Consider the below data frame −

## Example

Live Demo

set.seed(999)
x1<-rnorm(100,5,1)
y1<-rnorm(100,5,2)
set.seed(999)
x1<-rnorm(50,5,1)
x1

## Output

[1] 4.718260 3.687440 5.795184 5.270070 4.722694 4.433976 3.121342 3.733209
[9] 4.032250 3.878991 6.325464 5.133977 5.938749 5.172538 5.957650 3.637314
[17] 5.068335 5.100658 5.901345 2.925643 3.771437 5.643044 4.640237 5.294036
[25] 3.874732 5.642266 3.893262 4.115160 3.445905 4.873321 7.382664 5.601276
[33] 5.179361 6.080531 4.753188 2.886263 4.629473 5.522868 5.517806 3.597489
[41] 4.514363 5.008498 3.717887 3.888421 5.300665 5.276479 2.949122 5.014190
[49] 5.582266 4.965274

## Example

Live Demo

y1<-rnorm(50,5,2)
y1

## Output

[1] 6.222789 3.709758 4.657909 2.502828 6.815813 3.366121 5.061378 2.805245
[9] 6.263176 4.886151 2.502289 4.752686 4.920821 4.117212 4.965663 5.664139
[17] 5.903942 4.077208 6.065462 7.370909 4.147725 2.713465 7.280148 5.385931
[25] 3.962250 2.559837 3.806861 1.682934 4.501635 6.555197 3.401010 2.300028
[33] 5.379501 7.656098 3.800852 7.796749 4.400438 9.056425 6.675732 5.027199
[41] 3.768654 6.341022 5.703656 5.280295 3.070839 6.451703 3.750322 7.117050
[49] 4.822037 4.550620

Model1<-lm(y1~x1)

We can find the differences by using residuals function which is the actual description of this difference −

## Example

Difference1<-residuals(Model1) Difference1

## Output

       1          2           3          4           5             6
-0.318821302 -1.329658317 3.355482915 0.622179231 -0.219309849 0.492362522
7 8 9 10 11 12
1.120847727 -2.600159409 0.815723717 -1.179206602 -2.003523096 2.225944847
13 14 15 16 17 18
1.944418528 2.101980331 -0.177708526 -2.331382376 -2.917405743 -0.667140236
19 20 21 22 23 24
-0.973596995 1.987479224 -0.255997620 -0.265385092 1.817375711 -0.944140091
25 26 27 28 29 30
1.899985405 -0.001963328 1.028005379 -4.188344031 0.843900482 -0.412835686
31 32 33 34 35 36
-1.489716807 1.845872066 -2.563126203 0.024431186 -2.495232512 -0.757793692
37 38 39 40 41 42
2.645748932 -0.627006899 1.891963477 0.838600642 3.240642878 -0.043017748
43       44           45          46           47           48
-1.998486011 2.518834654 -2.370852257 1.983021019 -1.162755388 -0.686229669
49       50
-0.607433313 0.343427925

Let’s have a look at another example −

## Example

Live Demo

x2<-rpois(100,5)
x2

## Output

[1]  8 2 6 5 4 4 4 4 2 3 5 5 4 10 3 2 3 5 5 8 9 8 3 6 4
[26] 5 3 2 5 6 5 2 6 8 3 9 11 2 4 4 8 2 8 1 3 2 5 8 2 6
[51] 7 4 3 4 6 2 3 2 8 4 9 4 8 3 6 4 8 9 10 4 9 9 2 7 10
[76] 8 6 7 5 6 1 2 8 8 9 10 5 1 7 3 3 1 7 2 6 2 3 4 2 7

## Example

Live Demo

y2<-rpois(100,10)
y2

## Output

[1] 12 4 13 12 9 7 12 7 14 12 8 6 6 15 10 12 8 14 9 11 8 6 9 7 15
[26] 7 12 15 9 7 13 11 5 2 9 11 8 17 8 15 7 12 7 11 6 12 12 8 12 8
[51] 10 6 7 7 5 9 14 9 9 17 12 12 9 10 5 11 18 9 13 7 13 10 9 11 11
[76] 12 9 8 5 9 5 7 14 10 6 10 9 10 13 11 11 9 10 6 8 16 8 8 6 6

Model2<-lm(y2~x2)

Finding the residuals using model object Model2 −

## Example

Difference2<-residuals(Model2)
Difference2

## Output

       1        2       3            4           5          6
3.34416495 4.13956424 -0.06503647 1.93496353 2.24186460 -1.16733682
7       8           9         10        11          12
-0.75813540 4.24186460 3.62806246 -2.16733682 0.54876566 -0.16733682
13       14         15           16        17       18
-3.96273611 0.24186460 3.73036282 3.03726389 -2.65583505 0.24186460
19       20          21           22        23        24
-3.75813540 0.24186460 0.13956424 0.44646531 -0.65583505 -5.16733682
25          26         27           28        29        30
-0.75813540 3.03726389 -0.75813540 -4.75813540 2.13956424 1.52576211
31          32         33          34           35         36
-1.75813540 1.03726389 -6.16733682 -2.16733682 -6.26963718 -1.55353469
37        38         39         40            41         42
2.34416495 -1.16733682 -1.06503647 -2.96273611 -2.86043576 -3.75813540
43         44           45         46         47             48
-0.96273611 -0.47423789 -1.55353469 -3.86043576 1.44646531 2.03726389
49         50           51      52          53           54
1.73036282 0.24186460 -2.96273611 2.34416495 -0.96273611 -0.16733682
55        56           57        58           59          60
1.03726389 -0.06503647 -2.16733682 1.24186460 -4.96273611 0.13956424
61          62        63            64          65         66
-2.86043576 -0.65583505 -0.86043576 -1.06503647 -0.06503647 0.24186460
67     68         69          70          71           72
1.13956424 0.13956424 1.24186460 -2.06503647 1.93496353 0.93496353
73       74         75         76         77            78
0.34416495 -4.96273611 1.24186460 -5.06503647 -0.75813540 3.93496353
79        80         81        82             83         84
4.83266318 -1.65583505 7.03726389 4.93496353 6.73036282 2.03726389
85        86         87         88        89        90
-3.96273611 1.13956424 3.83266318 1.34416495 -2.06503647 -2.86043576
91        92       93           94         95         96
9.13956424 2.93496353 -0.16733682 -0.26963718 -0.96273611 0.03726389
97        98             99 100
3.24186460 2.13956424 -3.16733682 -0.86043576

An example with uniformly distributed data −

## Example

Live Demo

x3<-round(runif(50,2,5))
x3

## Output

[1] 3 5 2 2 4 4 4 2 3 4 4 4 3 4 3 4 4 3 2 5 5 2 3 5 4 4 3 5 3 5 3 3 3 5 4 3 4 5
[39] 5 4 3 4 5 3 5 3 3 3 5 2

## Example

Live Demo

y3<-round(runif(50,2,10))
y3

## Output

[1] 5 5 2 2 8 9 8 4 7 6 6 7 3 4 5 3 5 5 7 9 10 10 6 3 4
[26] 2 6 4 3 10 7 6 8 8 9 8 7 5 3 2 9 3 8 3 9 5 3 3 2 4

Model3<-lm(y3~x3)

Finding the residuals using model object Model3 −

## Example

Difference3<-residuals(Model3)
Difference3

## Output

       1 2 3 4 5 6
-1.09603340 -0.13883090 -4.05323591 2.86116910 0.90396660 -3.18162839
7 8 9 10 11 12
-0.05323591 -3.13883090 -1.13883090 -1.13883090 2.90396660 2.86116910
13 14 15 16 17 18
1.86116910 -1.13883090 -2.09603340 0.86116910 -0.09603340 -1.13883090
19 20 21 22 23 24
-0.05323591 1.86116910 -0.13883090 0.90396660 2.81837161 -2.13883090
25 26 27 28 29 30
-1.13883090 0.90396660 2.81837161 -0.09603340 2.81837161 -0.09603340
31 32 33 34 35 36
-0.13883090 -1.05323591 -2.09603340 3.86116910 1.86116910 2.86116910
37 38 39 40 41 42
2.90396660 1.86116910 1.90396660 -3.09603340 0.90396660 -4.18162839
43 44 45 46 47 48
-2.18162839 2.94676409 -4.09603340 -4.18162839 -2.05323591 2.90396660
49 50
1.90396660 -3.13883090

Updated on: 10-Oct-2020

158 Views