#Loading packages
library(tidyverse)
## -- Attaching packages --------------------------------------- tidyverse 1.3.1 --
## v ggplot2 3.3.3 v purrr 0.3.4
## v tibble 3.1.1 v dplyr 1.0.5
## v tidyr 1.1.3 v stringr 1.4.0
## v readr 1.4.0 v forcats 0.5.1
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
library(leaps) #Mallow's Cp
library(BMA) #Bayesian Model
## Loading required package: survival
## Loading required package: robustbase
##
## Attaching package: 'robustbase'
## The following object is masked from 'package:survival':
##
## heart
## Loading required package: inline
## Loading required package: rrcov
## Scalable Robust Estimators with High Breakdown Point (version 1.5-5)
#Backward regression ##x~.= “x is explained by everything else”
FitALL=lm(mpg~., data=mtcars)
step(FitALL,direction = "backward",test="F", k=log(nrow(mtcars)))
## Start: AIC=87.02
## mpg ~ cyl + disp + hp + drat + wt + qsec + vs + am + gear + carb
##
## Df Sum of Sq RSS AIC F value Pr(>F)
## - cyl 1 0.0799 147.57 83.572 0.0114 0.91609
## - vs 1 0.1601 147.66 83.590 0.0228 0.88142
## - carb 1 0.4067 147.90 83.643 0.0579 0.81218
## - gear 1 1.3531 148.85 83.847 0.1926 0.66521
## - drat 1 1.6270 149.12 83.906 0.2317 0.63528
## - disp 1 3.9167 151.41 84.394 0.5576 0.46349
## - hp 1 6.8399 154.33 85.006 0.9739 0.33496
## - qsec 1 8.8641 156.36 85.423 1.2621 0.27394
## - am 1 10.5467 158.04 85.765 1.5016 0.23399
## <none> 147.49 87.021
## - wt 1 27.0144 174.51 88.937 3.8463 0.06325 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Step: AIC=83.57
## mpg ~ disp + hp + drat + wt + qsec + vs + am + gear + carb
##
## Df Sum of Sq RSS AIC F value Pr(>F)
## - vs 1 0.2685 147.84 80.165 0.0400 0.84326
## - carb 1 0.5201 148.09 80.219 0.0775 0.78326
## - gear 1 1.8211 149.40 80.499 0.2715 0.60754
## - drat 1 1.9826 149.56 80.534 0.2956 0.59214
## - disp 1 3.9009 151.47 80.942 0.5815 0.45381
## - hp 1 7.3632 154.94 81.665 1.0977 0.30615
## - qsec 1 10.0933 157.67 82.224 1.5047 0.23292
## - am 1 11.8359 159.41 82.575 1.7645 0.19768
## <none> 147.57 83.572
## - wt 1 27.0280 174.60 85.488 4.0293 0.05716 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Step: AIC=80.16
## mpg ~ disp + hp + drat + wt + qsec + am + gear + carb
##
## Df Sum of Sq RSS AIC F value Pr(>F)
## - carb 1 0.6855 148.53 76.847 0.1066 0.74696
## - gear 1 2.1437 149.99 77.160 0.3335 0.56922
## - drat 1 2.2139 150.06 77.175 0.3444 0.56301
## - disp 1 3.6467 151.49 77.479 0.5673 0.45897
## - hp 1 7.1060 154.95 78.201 1.1055 0.30399
## - am 1 11.5694 159.41 79.110 1.7999 0.19283
## - qsec 1 15.6830 163.53 79.925 2.4398 0.13195
## <none> 147.84 80.165
## - wt 1 27.3799 175.22 82.136 4.2595 0.05049 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Step: AIC=76.85
## mpg ~ disp + hp + drat + wt + qsec + am + gear
##
## Df Sum of Sq RSS AIC F value Pr(>F)
## - gear 1 1.565 150.09 73.717 0.2529 0.619641
## - drat 1 1.932 150.46 73.795 0.3122 0.581508
## - disp 1 10.110 158.64 75.489 1.6337 0.213420
## - am 1 12.323 160.85 75.932 1.9913 0.171042
## - hp 1 14.826 163.35 76.426 2.3956 0.134763
## <none> 148.53 76.847
## - qsec 1 26.408 174.94 78.618 4.2672 0.049815 *
## - wt 1 69.127 217.66 85.610 11.1699 0.002717 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Step: AIC=73.72
## mpg ~ disp + hp + drat + wt + qsec + am
##
## Df Sum of Sq RSS AIC F value Pr(>F)
## - drat 1 3.345 153.44 70.956 0.5571 0.462401
## - disp 1 8.545 158.64 72.023 1.4233 0.244054
## - hp 1 13.285 163.38 72.965 2.2127 0.149381
## <none> 150.09 73.717
## - am 1 20.036 170.13 74.261 3.3372 0.079692 .
## - qsec 1 25.574 175.67 75.286 4.2598 0.049551 *
## - wt 1 67.572 217.66 82.146 11.2550 0.002536 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Step: AIC=70.96
## mpg ~ disp + hp + wt + qsec + am
##
## Df Sum of Sq RSS AIC F value Pr(>F)
## - disp 1 6.629 160.07 68.844 1.1232 0.298972
## - hp 1 12.572 166.01 70.011 2.1303 0.156387
## <none> 153.44 70.956
## - qsec 1 26.470 179.91 72.583 4.4853 0.043908 *
## - am 1 32.198 185.63 73.586 5.4559 0.027488 *
## - wt 1 69.043 222.48 79.380 11.6993 0.002075 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Step: AIC=68.84
## mpg ~ hp + wt + qsec + am
##
## Df Sum of Sq RSS AIC F value Pr(>F)
## - hp 1 9.219 169.29 67.170 1.5551 0.223088
## <none> 160.07 68.844
## - qsec 1 20.225 180.29 69.186 3.4115 0.075731 .
## - am 1 25.993 186.06 70.193 4.3845 0.045791 *
## - wt 1 78.494 238.56 78.147 13.2403 0.001141 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Step: AIC=67.17
## mpg ~ wt + qsec + am
##
## Df Sum of Sq RSS AIC F value Pr(>F)
## <none> 169.29 67.170
## - am 1 26.178 195.46 68.306 4.3298 0.0467155 *
## - qsec 1 109.034 278.32 79.614 18.0343 0.0002162 ***
## - wt 1 183.347 352.63 87.187 30.3258 6.953e-06 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Call:
## lm(formula = mpg ~ wt + qsec + am, data = mtcars)
##
## Coefficients:
## (Intercept) wt qsec am
## 9.618 -3.917 1.226 2.936
#Forward regression
FitStart=lm(mpg~1, data = mtcars)
step(FitStart,mpg~ cyl+disp+hp+drat+wt+qsec+vs+am+gear+carb ,direction="forward",test="F")
## Start: AIC=115.94
## mpg ~ 1
##
## Df Sum of Sq RSS AIC F value Pr(>F)
## + wt 1 847.73 278.32 73.217 91.3753 1.294e-10 ***
## + cyl 1 817.71 308.33 76.494 79.5610 6.113e-10 ***
## + disp 1 808.89 317.16 77.397 76.5127 9.380e-10 ***
## + hp 1 678.37 447.67 88.427 45.4598 1.788e-07 ***
## + drat 1 522.48 603.57 97.988 25.9696 1.776e-05 ***
## + vs 1 496.53 629.52 99.335 23.6622 3.416e-05 ***
## + am 1 405.15 720.90 103.672 16.8603 0.000285 ***
## + carb 1 341.78 784.27 106.369 13.0736 0.001084 **
## + gear 1 259.75 866.30 109.552 8.9951 0.005401 **
## + qsec 1 197.39 928.66 111.776 6.3767 0.017082 *
## <none> 1126.05 115.943
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Step: AIC=73.22
## mpg ~ wt
##
## Df Sum of Sq RSS AIC F value Pr(>F)
## + cyl 1 87.150 191.17 63.198 13.2203 0.001064 **
## + hp 1 83.274 195.05 63.840 12.3813 0.001451 **
## + qsec 1 82.858 195.46 63.908 12.2933 0.001500 **
## + vs 1 54.228 224.09 68.283 7.0177 0.012926 *
## + carb 1 44.602 233.72 69.628 5.5343 0.025646 *
## + disp 1 31.639 246.68 71.356 3.7195 0.063620 .
## <none> 278.32 73.217
## + drat 1 9.081 269.24 74.156 0.9781 0.330854
## + gear 1 1.137 277.19 75.086 0.1189 0.732668
## + am 1 0.002 278.32 75.217 0.0002 0.987915
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Step: AIC=63.2
## mpg ~ wt + cyl
##
## Df Sum of Sq RSS AIC F value Pr(>F)
## + hp 1 14.5514 176.62 62.665 2.3069 0.1400
## + carb 1 13.7724 177.40 62.805 2.1738 0.1515
## <none> 191.17 63.198
## + qsec 1 10.5674 180.60 63.378 1.6383 0.2111
## + gear 1 3.0281 188.14 64.687 0.4507 0.5075
## + disp 1 2.6796 188.49 64.746 0.3980 0.5332
## + vs 1 0.7059 190.47 65.080 0.1038 0.7497
## + am 1 0.1249 191.05 65.177 0.0183 0.8933
## + drat 1 0.0010 191.17 65.198 0.0001 0.9903
##
## Step: AIC=62.66
## mpg ~ wt + cyl + hp
##
## Df Sum of Sq RSS AIC F value Pr(>F)
## <none> 176.62 62.665
## + am 1 6.6228 170.00 63.442 1.0519 0.3142
## + disp 1 6.1762 170.44 63.526 0.9784 0.3314
## + carb 1 2.5187 174.10 64.205 0.3906 0.5372
## + drat 1 2.2453 174.38 64.255 0.3477 0.5603
## + qsec 1 1.4010 175.22 64.410 0.2159 0.6459
## + gear 1 0.8558 175.76 64.509 0.1315 0.7197
## + vs 1 0.0599 176.56 64.654 0.0092 0.9245
##
## Call:
## lm(formula = mpg ~ wt + cyl + hp, data = mtcars)
##
## Coefficients:
## (Intercept) wt cyl hp
## 38.75179 -3.16697 -0.94162 -0.01804
#Stepwise regression
step(FitStart,scope=formula(FitALL),direction="both",test="F",trace=0)
##
## Call:
## lm(formula = mpg ~ wt + cyl + hp, data = mtcars)
##
## Coefficients:
## (Intercept) wt cyl hp
## 38.75179 -3.16697 -0.94162 -0.01804
#Mallow’s Cp
a= regsubsets(mpg~.,nbest=3, data=mtcars)
plot(a, scale="Cp")
#Bayesian Model Average
X=mtcars%>%mutate(mpg=NULL)
Y=mtcars$mpg
search=bicreg(X,Y, strict = FALSE, OR=20)
summary(search)
##
## Call:
## bicreg(x = X, y = Y, strict = FALSE, OR = 20)
##
##
## 86 models were selected
## Best 5 models (cumulative posterior probability = 0.2457 ):
##
## p!=0 EV SD model 1 model 2 model 3
## Intercept 100.0 26.3181386 13.324900 9.61778 39.68626 37.22727
## cyl 37.8 -0.4285797 0.685863 . -1.50779 .
## disp 12.5 0.0004793 0.005408 . . .
## hp 41.1 -0.0104394 0.015618 . . -0.03177
## drat 15.4 0.1988568 0.739629 . . .
## wt 98.8 -3.5386668 1.121556 -3.91650 -3.19097 -3.87783
## qsec 48.8 0.4506877 0.568549 1.22589 . .
## vs 10.6 0.0878027 0.645424 . . .
## am 40.1 1.0835917 1.688212 2.93584 . .
## gear 13.1 0.0964727 0.514582 . . .
## carb 22.9 -0.1294021 0.342176 . . .
##
## nVar 3 2 2
## r2 0.850 0.830 0.827
## BIC -50.23818 -49.81447 -49.17255
## post prob 0.071 0.057 0.042
## model 4 model 5
## Intercept 19.74622 38.75179
## cyl . -0.94162
## disp . .
## hp . -0.01804
## drat . .
## wt -5.04798 -3.16697
## qsec 0.92920 .
## vs . .
## am . .
## gear . .
## carb . .
##
## nVar 2 3
## r2 0.826 0.843
## BIC -49.10426 -48.88168
## post prob 0.040 0.036
imageplot.bma(search)