library(dplyr)
# Get data
mouse.data <- data.frame(
weight=c(0.9, 1.8, 2.4, 3.5, 3.9, 4.4, 5.1, 5.6, 6.3),
size=c(1.4, 2.6, 1.0, 3.7, 5.5, 3.2, 3.0, 4.9, 6.3))

## plot a x/y scatter plot with the data
plot(mouse.data$weight, mouse.data$size)

## create a "linear model" - that is, do the regression
## where y = intercept + slope * x
mouse.regression <- lm(size ~ weight, data=mouse.data)

## add the regression line to our x/y scatter plot
abline(mouse.regression, col="blue")

## Interpret the results ยง

## generate a summary of the regression
summary(mouse.regression)

Call:
lm(formula = size ~ weight, data = mouse.data)

Residuals:
Min      1Q  Median      3Q     Max
-1.5482 -0.8037  0.1186  0.6186  1.8852

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept)   0.5813     0.9647   0.603   0.5658
weight        0.7778     0.2334   3.332   0.0126 *
---
Signif. codes:  0 โ***โ 0.001 โ**โ 0.01 โ*โ 0.05 โ.โ 0.1 โ โ 1

Residual standard error: 1.19 on 7 degrees of freedom
Multiple R-squared:  0.6133,	Adjusted R-squared:  0.558
F-statistic:  11.1 on 1 and 7 DF,  p-value: 0.01256
• Call: This just show the function that was called
• Residuals: Same as the one in box plot
• Coefficients: When looking at the p-value in the coefficients table (shown as Pr(>|t|)), generally the one in intercept does not matter. On the other hand, we want the p-value of slope (weight in this example) to be < 0.05 in order to be statistically significant.
• Residual standard error: The square root of the denominator in the equation for F-value
• Multiple R-squared: Equals R-squared
• Adjusted R-squared: R-squared scaled by the number of parameters
• F-statistic(F-value): the value of F, DF = degree of freedom
• P-value: in this case p-value < 0.05, meaning the x(weight) gives us a reliable estimate for y(size)