set.seed(1092024)
Caregivers <- read.csv("C:/Users/casey/Downloads/Caregivers.csv")
train = Caregivers %>% dplyr::sample_frac(0.70)

test = dplyr::anti_join(Caregivers, train) 
## Joining with `by = join_by(CGAGE, CGINCOME, CGDUR, ADL, MEM, COG, SOCIALSU,
## BURDEN)`
my.x = train[,1:7]

my.y = train$BURDEN
model1 = leaps(x= my.x, y = my.y, nbest = 3)
model1.r2 = leaps(x= my.x, y = my.y, nbest = 3, method = "r2")
model1.adj2 = leaps(x= my.x, y = my.y, nbest = 3, method = "adjr2")
model1
## $which
##       1     2     3     4     5     6     7
## 1 FALSE FALSE FALSE FALSE  TRUE FALSE FALSE
## 1 FALSE FALSE FALSE FALSE FALSE FALSE  TRUE
## 1 FALSE FALSE FALSE  TRUE FALSE FALSE FALSE
## 2 FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE
## 2 FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE
## 2 FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
## 3  TRUE FALSE FALSE FALSE  TRUE FALSE  TRUE
## 3 FALSE FALSE FALSE  TRUE  TRUE FALSE  TRUE
## 3 FALSE FALSE  TRUE FALSE  TRUE FALSE  TRUE
## 4  TRUE FALSE FALSE  TRUE  TRUE FALSE  TRUE
## 4 FALSE FALSE  TRUE  TRUE  TRUE FALSE  TRUE
## 4  TRUE FALSE  TRUE FALSE  TRUE FALSE  TRUE
## 5  TRUE FALSE  TRUE  TRUE  TRUE FALSE  TRUE
## 5  TRUE  TRUE FALSE  TRUE  TRUE FALSE  TRUE
## 5  TRUE FALSE FALSE  TRUE  TRUE  TRUE  TRUE
## 6  TRUE  TRUE  TRUE  TRUE  TRUE FALSE  TRUE
## 6  TRUE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE
## 6  TRUE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE
## 7  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
## 
## $label
## [1] "(Intercept)" "1"           "2"           "3"           "4"          
## [6] "5"           "6"           "7"          
## 
## $size
##  [1] 2 2 2 3 3 3 4 4 4 5 5 5 6 6 6 7 7 7 8
## 
## $Cp
##  [1] 21.210836 23.212989 28.372540  3.619600 13.575792 18.468613  3.515622
##  [8]  3.765534  4.631528  3.195153  4.797823  4.812578  4.540811  4.696635
## [15]  5.193270  6.003077  6.522241  6.695260  8.000000
model1.r2
## $which
##       1     2     3     4     5     6     7
## 1 FALSE FALSE FALSE FALSE  TRUE FALSE FALSE
## 1 FALSE FALSE FALSE FALSE FALSE FALSE  TRUE
## 1 FALSE FALSE FALSE  TRUE FALSE FALSE FALSE
## 2 FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE
## 2 FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE
## 2 FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
## 3  TRUE FALSE FALSE FALSE  TRUE FALSE  TRUE
## 3 FALSE FALSE FALSE  TRUE  TRUE FALSE  TRUE
## 3 FALSE FALSE  TRUE FALSE  TRUE FALSE  TRUE
## 4  TRUE FALSE FALSE  TRUE  TRUE FALSE  TRUE
## 4 FALSE FALSE  TRUE  TRUE  TRUE FALSE  TRUE
## 4  TRUE FALSE  TRUE FALSE  TRUE FALSE  TRUE
## 5  TRUE FALSE  TRUE  TRUE  TRUE FALSE  TRUE
## 5  TRUE  TRUE FALSE  TRUE  TRUE FALSE  TRUE
## 5  TRUE FALSE FALSE  TRUE  TRUE  TRUE  TRUE
## 6  TRUE  TRUE  TRUE  TRUE  TRUE FALSE  TRUE
## 6  TRUE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE
## 6  TRUE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE
## 7  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
## 
## $label
## [1] "(Intercept)" "1"           "2"           "3"           "4"          
## [6] "5"           "6"           "7"          
## 
## $size
##  [1] 2 2 2 3 3 3 4 4 4 5 5 5 6 6 6 7 7 7 8
## 
## $r2
##  [1] 0.2144407 0.1964061 0.1499310 0.3909105 0.3012292 0.2571567 0.4098622
##  [8] 0.4076111 0.3998106 0.4307641 0.4163279 0.4161950 0.4366581 0.4352545
## [15] 0.4307810 0.4415018 0.4368254 0.4352669 0.4415295
model1.adj2
## $which
##       1     2     3     4     5     6     7
## 1 FALSE FALSE FALSE FALSE  TRUE FALSE FALSE
## 1 FALSE FALSE FALSE FALSE FALSE FALSE  TRUE
## 1 FALSE FALSE FALSE  TRUE FALSE FALSE FALSE
## 2 FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE
## 2 FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE
## 2 FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
## 3  TRUE FALSE FALSE FALSE  TRUE FALSE  TRUE
## 3 FALSE FALSE FALSE  TRUE  TRUE FALSE  TRUE
## 3 FALSE FALSE  TRUE FALSE  TRUE FALSE  TRUE
## 4  TRUE FALSE FALSE  TRUE  TRUE FALSE  TRUE
## 4 FALSE FALSE  TRUE  TRUE  TRUE FALSE  TRUE
## 4  TRUE FALSE  TRUE FALSE  TRUE FALSE  TRUE
## 5  TRUE FALSE  TRUE  TRUE  TRUE FALSE  TRUE
## 5  TRUE  TRUE FALSE  TRUE  TRUE FALSE  TRUE
## 5  TRUE FALSE FALSE  TRUE  TRUE  TRUE  TRUE
## 6  TRUE  TRUE  TRUE  TRUE  TRUE FALSE  TRUE
## 6  TRUE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE
## 6  TRUE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE
## 7  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
## 
## $label
## [1] "(Intercept)" "1"           "2"           "3"           "4"          
## [6] "5"           "6"           "7"          
## 
## $size
##  [1] 2 2 2 3 3 3 4 4 4 5 5 5 6 6 6 7 7 7 8
## 
## $adjr2
##  [1] 0.2028883 0.1845886 0.1374300 0.3727287 0.2803704 0.2349823 0.3830378
##  [8] 0.3806844 0.3725293 0.3957342 0.3804096 0.3802685 0.3926470 0.3911338
## [15] 0.3863108 0.3883115 0.3831897 0.3814828 0.3784764
my.best = data.frame(cbind(model1$which, model1$Cp, model1.r2$r2, model1.adj2$adjr2))

colnames(my.best)[8:10] = c("Cp", "R2", "R2Adj")
my.best
##      X1 X2 X3 X4 X5 X6 X7        Cp        R2     R2Adj
## X1    0  0  0  0  1  0  0 21.210836 0.2144407 0.2028883
## X1.1  0  0  0  0  0  0  1 23.212989 0.1964061 0.1845886
## X1.2  0  0  0  1  0  0  0 28.372540 0.1499310 0.1374300
## X2    0  0  0  0  1  0  1  3.619600 0.3909105 0.3727287
## X2.1  0  0  0  1  0  0  1 13.575792 0.3012292 0.2803704
## X2.2  0  0  0  0  0  1  1 18.468613 0.2571567 0.2349823
## X3    1  0  0  0  1  0  1  3.515622 0.4098622 0.3830378
## X3.1  0  0  0  1  1  0  1  3.765534 0.4076111 0.3806844
## X3.2  0  0  1  0  1  0  1  4.631528 0.3998106 0.3725293
## X4    1  0  0  1  1  0  1  3.195153 0.4307641 0.3957342
## X4.1  0  0  1  1  1  0  1  4.797823 0.4163279 0.3804096
## X4.2  1  0  1  0  1  0  1  4.812578 0.4161950 0.3802685
## X5    1  0  1  1  1  0  1  4.540811 0.4366581 0.3926470
## X5.1  1  1  0  1  1  0  1  4.696635 0.4352545 0.3911338
## X5.2  1  0  0  1  1  1  1  5.193270 0.4307810 0.3863108
## X6    1  1  1  1  1  0  1  6.003077 0.4415018 0.3883115
## X6.1  1  0  1  1  1  1  1  6.522241 0.4368254 0.3831897
## X6.2  1  1  0  1  1  1  1  6.695260 0.4352669 0.3814828
## X7    1  1  1  1  1  1  1  8.000000 0.4415295 0.3784764
model.caregivers1 <- lm(BURDEN ~ MEM + SOCIALSU, data = train)
summary(model.caregivers1)
## 
## Call:
## lm(formula = BURDEN ~ MEM + SOCIALSU, data = train)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -34.45 -11.63   0.41  12.39  34.81 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 117.3212    14.9191   7.864 4.24e-11 ***
## MEM           0.5852     0.1265   4.626 1.76e-05 ***
## SOCIALSU     -0.4807     0.1091  -4.406 3.89e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 16.66 on 67 degrees of freedom
## Multiple R-squared:  0.3909, Adjusted R-squared:  0.3727 
## F-statistic:  21.5 on 2 and 67 DF,  p-value: 6.121e-08
plot(model.caregivers1, 1:2)

vif(model.caregivers1)
##      MEM SOCIALSU 
## 1.002613 1.002613
test_new = dplyr::select(test, MEM, SOCIALSU)
my.yhat = predict(model.caregivers1, newdata = test_new, type = "response")
cor(my.yhat, test$BURDEN)^2
## [1] 0.5084713
0.4373-0.3683508
## [1] 0.0689492