YouTube “Multiple Regression” videos
Route Delivery Schedule is as followed:
rds <- data.frame(miles=c(89,66,78,111,44,77,80,66,109,76),
numDelivers=c(4,1,3,6,1,3,3,2,5,3),
gasPrice=c(3.84,3.19,3.78,3.89,3.57,3.57,3.03,3.51,3.54,3.25),
travelTime=c(7,5.4,6.6,7.4,4.8,6.4,7,5.6,7.3,6.4))
rds
## miles numDelivers gasPrice travelTime
## 1 89 4 3.84 7.0
## 2 66 1 3.19 5.4
## 3 78 3 3.78 6.6
## 4 111 6 3.89 7.4
## 5 44 1 3.57 4.8
## 6 77 3 3.57 6.4
## 7 80 3 3.03 7.0
## 8 66 2 3.51 5.6
## 9 109 5 3.54 7.3
## 10 76 3 3.25 6.4
Single variable linear regression
fit.miles <- lm(travelTime ~ miles, data=rds)
summary(fit.miles)
##
## Call:
## lm(formula = travelTime ~ miles, data = rds)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.4425 -0.2512 -0.0211 0.2124 0.5939
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 3.185560 0.466951 6.822 0.000135 ***
## miles 0.040257 0.005706 7.055 0.000107 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.3423 on 8 degrees of freedom
## Multiple R-squared: 0.8615, Adjusted R-squared: 0.8442
## F-statistic: 49.77 on 1 and 8 DF, p-value: 0.0001067
Estimate travel time for 84 miles trip (95% confidence interval):
predict(fit.miles, data.frame(miles=84), interval="predict")
## fit lwr upr
## 1 6.56713 5.737214 7.397046
Single variable linear regression
fit.numdel <- lm(travelTime ~ numDelivers, data=rds)
summary(fit.numdel)
##
## Call:
## lm(formula = travelTime ~ numDelivers, data = rds)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.54367 -0.19061 0.05808 0.13614 0.65983
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 4.84541 0.26535 18.261 8.32e-08 ***
## numDelivers 0.49825 0.07692 6.478 0.000193 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.3681 on 8 degrees of freedom
## Multiple R-squared: 0.8399, Adjusted R-squared: 0.8199
## F-statistic: 41.96 on 1 and 8 DF, p-value: 0.0001926
Estimate travel time for 4 deliveries (95% confidence interval):
predict(fit.numdel, data.frame(numDelivers=4), interval="predict")
## fit lwr upr
## 1 6.838428 5.933978 7.742878
Single variable linear regression
fit.gas <- lm(travelTime ~ gasPrice, data=rds)
summary(fit.gas)
##
## Call:
## lm(formula = travelTime ~ gasPrice, data = rds)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.6330 -0.5518 0.1116 0.6175 1.0051
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 3.5365 3.6490 0.969 0.361
## gasPrice 0.8113 1.0345 0.784 0.455
##
## Residual standard error: 0.8864 on 8 degrees of freedom
## Multiple R-squared: 0.0714, Adjusted R-squared: -0.04467
## F-statistic: 0.6151 on 1 and 8 DF, p-value: 0.4555
data <- sapply(list(fit.miles, fit.numdel, fit.gas), function(f) {
s <- summary(f)
formula_name <- gsub("travelTime ~ ", "", deparse(f$call$formula))
p_value <- pf(s$fstat[1], s$fstat[2], s$fstat[3], lower.tail=F)
list(name=formula_name,
fstat=s$fstatistic[1],
pvalue=p_value,
sigma=s$sigma,
adj.rsq=s$adj.r.squared)
})
t(data)
## name fstat pvalue sigma adj.rsq
## [1,] "miles" 49.76813 0.0001066757 0.3423088 0.8442047
## [2,] "numDelivers" 41.95894 0.0001926088 0.3680914 0.8198521
## [3,] "gasPrice" 0.6151381 0.4554534 0.8864028 -0.04467275
```