First, let’s create some data and analyze it:

####class example
library(ggplot2)
height<-c(62,67.8,67.2,68.4,63.6,64.8,69,68)
age<-c(99,65,79,75,74,81,60,62)
dat.class<-data.frame(height,age)
dat.class
fit.height<-lm(height ~ age, data=dat.class) 
summary(fit.height)

Call:
lm(formula = height ~ age, data = dat.class)

Residuals:
    Min      1Q  Median      3Q     Max 
-2.8114 -0.3977 -0.2023  0.6250  2.1523 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  78.5203     3.6373  21.587 6.45e-07 ***
age          -0.1636     0.0483  -3.388   0.0147 *  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.616 on 6 degrees of freedom
Multiple R-squared:  0.6567,    Adjusted R-squared:  0.5995 
F-statistic: 11.48 on 1 and 6 DF,  p-value: 0.01471

Check out residual values and then predicted values (i.e., y^)

dat.class$residuals<- fit.height$residuals
dat.class$residuals
[1] -0.32050452 -0.08407188  1.60680880  2.15227146 -2.81136288 -0.46592254  0.29775645 -0.37497489
dat.class$predicted <- predict(fit.height)
dat.class$predicted
[1] 62.32050 67.88407 65.59319 66.24773 66.41136 65.26592 68.70224 68.37497

scatterplot

ggplot(dat.class, aes(x = age, y = height)) + theme_bw()+theme(axis.text.x = element_text(size=18),axis.text.y = element_text(size=18),axis.title.x = element_text(face="bold",size=22),axis.title.y = element_text(face="bold",size=22))+
  geom_point(pch=18,size=2.5)

scatterplot with y^’s and regression line

ggplot(dat.class, aes(x = age, y = height)) + theme_bw()+theme(axis.text.x = element_text(size=18),axis.text.y = element_text(size=18),axis.title.x = element_text(face="bold",size=22),axis.title.y = element_text(face="bold",size=22))+
  geom_point(pch=18,size=2.5)+
  geom_point(aes(y = predicted), shape = 1,size=2.5)+geom_smooth(method=lm,se=FALSE,color="grey",size=1.2)

scatterplot with residual error

ggplot(dat.class, aes(x = age, y = height)) + theme_bw()+theme(axis.text.x = element_text(size=18),axis.text.y = element_text(size=18),axis.title.x = element_text(face="bold",size=22),axis.title.y = element_text(face="bold",size=22))+
  geom_point(pch=18,size=2.5) +geom_smooth(method=lm,se=FALSE,color="grey",size=1.2)+
  geom_segment(aes(xend = age, yend = predicted),alpha=.6,size=1)

LS0tDQp0aXRsZTogIlIgTm90ZWJvb2siDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQogDQpGaXJzdCwgbGV0J3MgY3JlYXRlIHNvbWUgZGF0YSBhbmQgYW5hbHl6ZSBpdDoNCmBgYHtyfQ0KDQpsaWJyYXJ5KGdncGxvdDIpICNsb2FkIHBsb3R0aW5nIGxpYnJhcnkNCg0KaGVpZ2h0PC1jKDYyLDY3LjgsNjcuMiw2OC40LDYzLjYsNjQuOCw2OSw2OCkNCmFnZTwtYyg5OSw2NSw3OSw3NSw3NCw4MSw2MCw2MikNCg0KZGF0LmNsYXNzPC1kYXRhLmZyYW1lKGhlaWdodCxhZ2UpICNtZXJnZSB2ZWN0b3JzIGludG8gYSBkYXRhZnJhbWUNCmRhdC5jbGFzcyAjdGFrZSBhIHBlZWsNCg0KZml0LmhlaWdodDwtbG0oaGVpZ2h0IH4gYWdlLCBkYXRhPWRhdC5jbGFzcykgI2ZpdCBhIHNpbXBsZSBsaW5lYXIgbW9kZWwNCnN1bW1hcnkoZml0LmhlaWdodCkgIyBnZXQgc3VtbWFyeSBpbmZvDQoNCg0KDQoNCmBgYA0KQ2hlY2sgb3V0IHJlc2lkdWFsIHZhbHVlcyBhbmQgdGhlbiBwcmVkaWN0ZWQgdmFsdWVzIChpLmUuLCB5XikNCmBgYHtyfQ0KZGF0LmNsYXNzJHJlc2lkdWFsczwtIGZpdC5oZWlnaHQkcmVzaWR1YWxzIA0KZGF0LmNsYXNzJHJlc2lkdWFscw0KDQoNCmRhdC5jbGFzcyRwcmVkaWN0ZWQgPC0gcHJlZGljdChmaXQuaGVpZ2h0KQ0KZGF0LmNsYXNzJHByZWRpY3RlZA0KYGBgDQoNCnNjYXR0ZXJwbG90DQpgYGB7cn0NCmdncGxvdChkYXQuY2xhc3MsIGFlcyh4ID0gYWdlLCB5ID0gaGVpZ2h0KSkgKyB0aGVtZV9idygpK3RoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KHNpemU9MTgpLGF4aXMudGV4dC55ID0gZWxlbWVudF90ZXh0KHNpemU9MTgpLGF4aXMudGl0bGUueCA9IGVsZW1lbnRfdGV4dChmYWNlPSJib2xkIixzaXplPTIyKSxheGlzLnRpdGxlLnkgPSBlbGVtZW50X3RleHQoZmFjZT0iYm9sZCIsc2l6ZT0yMikpKw0KICBnZW9tX3BvaW50KHBjaD0xOCxzaXplPTIuNSkNCg0KYGBgDQoNCg0Kc2NhdHRlcnBsb3Qgd2l0aCB5XidzIGFuZCByZWdyZXNzaW9uIGxpbmUNCmBgYHtyfQ0KDQpnZ3Bsb3QoZGF0LmNsYXNzLCBhZXMoeCA9IGFnZSwgeSA9IGhlaWdodCkpICsgdGhlbWVfYncoKSt0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChzaXplPTE4KSxheGlzLnRleHQueSA9IGVsZW1lbnRfdGV4dChzaXplPTE4KSxheGlzLnRpdGxlLnggPSBlbGVtZW50X3RleHQoZmFjZT0iYm9sZCIsc2l6ZT0yMiksYXhpcy50aXRsZS55ID0gZWxlbWVudF90ZXh0KGZhY2U9ImJvbGQiLHNpemU9MjIpKSsNCiAgZ2VvbV9wb2ludChwY2g9MTgsc2l6ZT0yLjUpKw0KICBnZW9tX3BvaW50KGFlcyh5ID0gcHJlZGljdGVkKSwgc2hhcGUgPSAxLHNpemU9Mi41KStnZW9tX3Ntb290aChtZXRob2Q9bG0sc2U9RkFMU0UsY29sb3I9ImdyZXkiLHNpemU9MS4yKQ0KYGBgDQoNCnNjYXR0ZXJwbG90IHdpdGggcmVzaWR1YWwgZXJyb3INCmBgYHtyfQ0KZ2dwbG90KGRhdC5jbGFzcywgYWVzKHggPSBhZ2UsIHkgPSBoZWlnaHQpKSArIHRoZW1lX2J3KCkrdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoc2l6ZT0xOCksYXhpcy50ZXh0LnkgPSBlbGVtZW50X3RleHQoc2l6ZT0xOCksYXhpcy50aXRsZS54ID0gZWxlbWVudF90ZXh0KGZhY2U9ImJvbGQiLHNpemU9MjIpLGF4aXMudGl0bGUueSA9IGVsZW1lbnRfdGV4dChmYWNlPSJib2xkIixzaXplPTIyKSkrDQogIGdlb21fcG9pbnQocGNoPTE4LHNpemU9Mi41KSArZ2VvbV9zbW9vdGgobWV0aG9kPWxtLHNlPUZBTFNFLGNvbG9yPSJncmV5IixzaXplPTEuMikrDQogIGdlb21fc2VnbWVudChhZXMoeGVuZCA9IGFnZSwgeWVuZCA9IHByZWRpY3RlZCksYWxwaGE9LjYsc2l6ZT0xKQ0KYGBgDQo=