message=FALSE
echo=FALSE
warnings=FALSE
error=FALSE
suppressWarnings({
  suppressMessages({
  
  options(scipen = 9999, digits=3, max.print=999999, show.signif.stars=TRUE)
  
  data<-read_sav("C:/Users/vasil/Desktop/User-Avatar-Bond Gaming Disorder Paper AI/ARCUN1SF.sav")
  
  
  data1<-data[c("Age_W1", "Yearsofplay_W1","Averagetime_weekday_W1","Averagetime_weekend_W1", "Avatar_no_W1","PresenceQ1_W1", "PresenceQ2_W1", "PresenceQ3_W1", "PresenceQ4_W1", "PresenceQ5_W1", "PresenceQ6_W1", "PresenceQ7_W1", "PresenceQ8_W1", "PresenceQ9_W1", "PresenceQ10_W1","PresenceQ11_W1", "PresenceQ12_W1", "PresenceQ13_W1", "PresenceQ14_W1","FlowQ1_W1", "FlowQ2_W1", "FlowQ3_W1", "FlowQ4_W1", "FlowQ5_W1", "UABQ1_W1", "UABQ2_W1", "UABQ3_W1", "UABQ4_W1", "UABQ5_W1", "UABQ6_W1", "UABQ7_W1", "UABQ8_W1", "UABQ9_W1", "UABQ10_W1","UABQ11_W1", "UABQ12_W1", "PEQ_Q1_W1", "PEQ_Q2_W1", "PEQ_Q3_W1", "PEQ_Q4_W1", "PEQ_Q5_W1", "PEQ_Q6_W1","GD_Q1_W1", "GD_Q2_W1", "GD_Q3_W1", "GD_Q4_W1", "IGD9_Q1_W1", "IGD9_Q2_W1", "IGD9_Q3_W1","IGD9_Q4_W1","IGD9_Q5_W1", "IGD9_Q6_W1","IGD9_Q7_W1", "IGD9_Q8_W1", "IGD9_Q9_W1", "DASS_Q1_W1", "DASS_Q2_W1","DASS_Q3_W1",
"DASS_Q4_W1", "DASS_Q5_W1", "DASS_Q6_W1" ,"DASS_Q7_W1", "DASS_Q8_W1","DASS_Q9_W1","DASS_Q10_W1","DASS_Q11_W1","DASS_Q12_W1","DASS_Q13_W1","DASS_Q14_W1","DASS_Q15_W1","DASS_Q16_W1","DASS_Q17_W1","DASS_Q18_W1","DASS_Q19_W1","DASS_Q20_W1","DASS_Q21_W1")]
  
DataN<-data1%>%mutate(GD_Q1_W1=case_when(GD_Q1_W1>2~1,
                                      GD_Q1_W1<3~0,
                                      TRUE~NA_real_),
                       GD_Q2_W1=case_when(GD_Q2_W1>2~1,
                                      GD_Q2_W1<3~0,
                                      TRUE~NA_real_),
                       GD_Q3_W1=case_when(GD_Q3_W1>2~1,
                                      GD_Q3_W1<3~0,
                                      TRUE~NA_real_),
                       GD_Q4_W1=case_when(GD_Q4_W1>2~1,
                                      GD_Q4_W1<3~0,
                                      TRUE~NA_real_),
                       IGD9_Q1_W1=case_when(IGD9_Q1_W1>2~1,
                                      IGD9_Q1_W1<3~0,
                                      TRUE~NA_real_),
                       IGD9_Q2_W1=case_when(IGD9_Q2_W1>2~1,
                                      IGD9_Q2_W1<3~0,
                                      TRUE~NA_real_),
                       IGD9_Q3_W1=case_when(IGD9_Q3_W1>2~1,
                                      IGD9_Q3_W1<3~0,
                                      TRUE~NA_real_),
                       IGD9_Q4_W1=case_when(IGD9_Q4_W1>2~1,
                                      IGD9_Q4_W1<3~0,
                                      TRUE~NA_real_),
                       IGD9_Q5_W1=case_when(IGD9_Q5_W1>2~1,
                                      IGD9_Q5_W1<3~0,
                                      TRUE~NA_real_),
                       IGD9_Q6_W1=case_when(IGD9_Q6_W1>2~1,
                                      IGD9_Q6_W1<3~0,
                                      TRUE~NA_real_),
                       IGD9_Q7_W1=case_when(IGD9_Q7_W1>2~1,
                                      IGD9_Q7_W1<3~0,
                                      TRUE~NA_real_),
                       IGD9_Q8_W1=case_when(IGD9_Q8_W1>2~1,
                                      IGD9_Q8_W1<3~0,
                                      TRUE~NA_real_),
                       IGD9_Q9_W1=case_when(IGD9_Q9_W1>2~1,
                                      IGD9_Q9_W1<3~0,
                                      TRUE~NA_real_),
                      PEQ_Q1_W1=case_when(PEQ_Q1_W1>3~1,
                                      PEQ_Q1_W1<4~0,
                                      TRUE~NA_real_),
                       PEQ_Q2_W1=case_when(PEQ_Q2_W1>3~1,
                                      PEQ_Q2_W1<4~0,
                                      TRUE~NA_real_),
                       PEQ_Q3_W1=case_when(PEQ_Q3_W1>3~1,
                                      PEQ_Q3_W1<4~0,
                                      TRUE~NA_real_),
                       PEQ_Q4_W1=case_when(PEQ_Q4_W1>3~1,
                                      PEQ_Q4_W1<4~0,
                                      TRUE~NA_real_),
                      PEQ_Q5_W1=case_when(PEQ_Q5_W1>3~1,
                                      PEQ_Q5_W1<4~0,
                                      TRUE~NA_real_),
                       PEQ_Q6_W1=case_when(PEQ_Q6_W1>3~1,
                                      PEQ_Q6_W1<4~0,
                                      TRUE~NA_real_))
DataM<-DataN%>%mutate(GDTTotal=GD_Q1_W1+GD_Q2_W1+GD_Q3_W1+GD_Q4_W1)%>%mutate(IGDTTotal=IGD9_Q1_W1+IGD9_Q9_W1+IGD9_Q3_W1+IGD9_Q4_W1+IGD9_Q5_W1+IGD9_Q6_W1+IGD9_Q7_W1+IGD9_Q8_W1+IGD9_Q9_W1)%>%mutate(PQTotal=PresenceQ1_W1+PresenceQ2_W1+PresenceQ3_W1+PresenceQ4_W1+PresenceQ5_W1+PresenceQ6_W1+PresenceQ7_W1+PresenceQ8_W1+PresenceQ9_W1+PresenceQ10_W1+PresenceQ11_W1+PresenceQ12_W1+PresenceQ13_W1+PresenceQ14_W1)%>%mutate(FTotal=FlowQ1_W1+FlowQ2_W1+FlowQ3_W1+FlowQ4_W1+FlowQ5_W1)%>%mutate(IDTotal=UABQ1_W1+UABQ2_W1+UABQ3_W1+UABQ4_W1)%>%mutate(IMTotal=UABQ5_W1+UABQ6_W1+UABQ7_W1+UABQ8_W1+UABQ9_W1)%>%mutate(COMPTotal=UABQ10_W1+UABQ11_W1+UABQ12_W1)%>%mutate(PETotal1=PEQ_Q1_W1+PEQ_Q2_W1+PEQ_Q3_W1+PEQ_Q4_W1+PEQ_Q5_W1+PEQ_Q6_W1)%>%mutate(DEPTot=DASS_Q3_W1+DASS_Q5_W1+DASS_Q10_W1+DASS_Q13_W1+DASS_Q16_W1+DASS_Q17_W1+DASS_Q21_W1)%>%mutate(AnxTot=DASS_Q2_W1+DASS_Q4_W1+DASS_Q7_W1+DASS_Q9_W1+DASS_Q15_W1+DASS_Q19_W1+DASS_Q20_W1)%>%mutate(StressTot=DASS_Q1_W1+DASS_Q6_W1+DASS_Q8_W1+DASS_Q11_W1+DASS_Q12_W1+DASS_Q14_W1+DASS_Q18_W1)})
  
})   
suppressWarnings({
  suppressMessages({
  
  options(scipen = 9999, digits=3, max.print=999999, show.signif.stars=TRUE)
    
DataMD<-DataM%>%mutate(DEPTot = case_when(DEPTot>20~1,
                              DEPTot<21~0,
                                      TRUE~NA_real_))%>%mutate(AnxTot = case_when(AnxTot>20~1,
                              AnxTot<21~0,
                                      TRUE~NA_real_))%>%mutate(StressTot = case_when(StressTot>20~1,
                              StressTot<21~0,
                                      TRUE~NA_real_))%>% 
  mutate(GDTTotal = case_when(GDTTotal>2~1,
                              GDTTotal<3~0, TRUE~NA_real_))%>%mutate(IGDTTotal=case_when(IGDTTotal>3~1,
                                      IGDTTotal<4~0,
                                      TRUE~NA_real_))%>% 
  mutate(PETotal1 = case_when(PETotal1>3~1,
                              PETotal1<4~0,
                                      TRUE~NA_real_))

DATAAIGDF<-DataMD[c("Age_W1", "Yearsofplay_W1","IDTotal", "IMTotal", "COMPTotal", "GDTTotal")]
DATAAIGD1 <- scale(DATAAIGDF[,1:5],center=TRUE,scale=TRUE)
DATAAIGDD<-DataMD[c("GDTTotal")]
DATAAIGD<- cbind(DATAAIGD1,DATAAIGDD)
 

DATAAIIGD<-DataMD[c("Age_W1", "Yearsofplay_W1", "IDTotal", "IMTotal", "COMPTotal","IGDTTotal")]
DATAAIIGD <- scale(DATAAIIGD[,1:5],center=TRUE,scale=TRUE)
DATAAIIGDD1<-DataMD[c("IGDTTotal")]
DATAAIIGDD<- cbind(DATAAIIGD,DATAAIIGDD1)

GDTD<-na.omit(DATAAIGD)
IGDD<-na.omit(DATAAIIGDD)


GDTD<-GDTD%>% 
  mutate(GDTTotal = factor(GDTTotal, levels = c("1","0")))
GDTD<-GDTD %>% 
  mutate(GDTTotal = case_when(GDTTotal == 1 ~ "Yes",
                             GDTTotal == 0 ~ "No"))

IGDD<-IGDD %>% 
  mutate(IGDTTotal = factor(IGDTTotal, levels = c("1","0")))

IGDD<-IGDD %>% 
  mutate(IGDTTotal = case_when(IGDTTotal == 1 ~ "Yes",
                             IGDTTotal == 0 ~ "No"))

  GDTDiagg<-GDTD%>%setNames(c("AGE","Gameyears","IDTotal", "IMTotal", "COMPTotal","GDDiag")) 

  IGDDiagg<-IGDD%>%setNames(c("AGE", "Gameyears", "IDTotal", "IMTotal","COMPTotal","IGDDiag"))
  
  WHOT<-table(GDTDiagg$GDDiag)
  APAT<-table(IGDDiagg$IGDDiag)
   }) 
  
  
})   
WHOT
## 
##  No Yes 
## 430 106
APAT
## 
##  No Yes 
## 413 123
message=FALSE
echo=TRUE
warnings=FALSE
error=FALSE

#Identifying the pattern of missing values
md.pattern(DATAAIGD, rotate.names = TRUE)

##     Age_W1 GDTTotal Yearsofplay_W1 IDTotal COMPTotal IMTotal    
## 536      1        1              1       1         1       1   0
## 7        1        1              1       1         1       0   1
## 1        1        1              1       1         0       1   1
## 8        1        1              1       0         0       0   3
## 7        1        1              0       1         1       1   1
## 1        1        0              1       1         1       1   1
## 2        1        0              1       0         0       0   4
## 1        0        1              1       1         1       1   1
## 53       0        0              0       0         0       0   6
##         54       56             60      63        64      70 367
#Plotting Missing Values
message=FALSE
echo=TRUE
warnings=FALSE
error=FALSE

mice_plot <- aggr(DATAAIGD, col=c('navyblue','yellow'),
                    numbers=TRUE, sortVars=TRUE,
                    labels=names(DataM), cex.axis=.7,
                    gap=3, ylab=c("Missing data","Pattern"))

## 
##  Variables sorted by number of missings: 
##                Variable  Count
##  Averagetime_weekend_W1 0.1136
##            Avatar_no_W1 0.1039
##  Averagetime_weekday_W1 0.1023
##          Yearsofplay_W1 0.0974
##           PresenceQ1_W1 0.0909
##                  Age_W1 0.0877
set.seed(123)
mcar_test(DATAAIGD)
## # A tibble: 1 x 4
##   statistic    df p.value missing.patterns
##       <dbl> <dbl>   <dbl>            <int>
## 1      38.4    30   0.140                9

Compare WHO and APA Classifications

ComparisonWHOandAPA<-rbind(WHOT, APAT)
  kable(ComparisonWHOandAPA)
No Yes
WHOT 430 106
APAT 413 123
  ChiSqu<-chisq.test(ComparisonWHOandAPA)
  Cram<-cramer_v(ComparisonWHOandAPA)
  
  ChiSqu
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  ComparisonWHOandAPA
## X-squared = 1, df = 1, p-value = 0.2
  Cram
## [1] 0.0364
echo=FALSE
error=FALSE
warning=FALSE
options(scipen = 999, digits=3, max.print=999999, show.signif.stars=TRUE)

GDTDiagg$GDDiag=as_factor(GDTDiagg$GDDiag)

GDTDiag <- SMOTE(GDDiag~ ., GDTDiagg, perc.over = 400, perc.under = 125)

table(GDTDiag$GDDiag)
## 
##  No Yes 
## 530 530
echo=FALSE
error=FALSE
warning=FALSE
options(scipen = 999, digits=3, max.print=999999, show.signif.stars=TRUE)
GDTDiag$GDDiag=as_factor(GDTDiag$GDDiag)
suppressWarnings({
  
  suppressMessages({
prior_dist <- rstanarm::student_t(df = 7, location = 0, scale = 2.5)
set.seed(123)
data_split <- initial_split(GDTDiag, prop = 4/5, strata = GDDiag, breaks = 4, pool = 0.1)
# Create data frames for the two sets:
train_data_GD <- training(data_split)
test_data_GD  <- testing(data_split)
#Crossvalidation split
set.seed(123)
folds <- vfold_cv(train_data_GD, v = 10)
TRGDTab<-table(train_data_GD$GDDiag)
TESTGDTab<-table(test_data_GD$GDDiag)
})
})
summary(train_data_GD)
##       AGE          Gameyears        IDTotal          IMTotal      
##  Min.   :-1.62   Min.   :-1.25   Min.   :-1.318   Min.   :-1.726  
##  1st Qu.:-0.67   1st Qu.:-0.69   1st Qu.:-0.822   1st Qu.:-0.562  
##  Median :-0.18   Median :-0.14   Median :-0.049   Median : 0.137  
##  Mean   :-0.08   Mean   : 0.00   Mean   : 0.006   Mean   : 0.182  
##  3rd Qu.: 0.36   3rd Qu.: 0.52   3rd Qu.: 0.761   3rd Qu.: 0.875  
##  Max.   : 3.64   Max.   : 5.43   Max.   : 2.671   Max.   : 2.700  
##    COMPTotal      GDDiag   
##  Min.   :-1.935   No :424  
##  1st Qu.:-0.610   Yes:424  
##  Median : 0.061            
##  Mean   : 0.094            
##  3rd Qu.: 0.949            
##  Max.   : 2.042
summary(test_data_GD)
##       AGE           Gameyears        IDTotal          IMTotal      
##  Min.   :-1.625   Min.   :-1.03   Min.   :-1.318   Min.   :-1.726  
##  1st Qu.:-0.590   1st Qu.:-0.77   1st Qu.:-0.819   1st Qu.:-0.448  
##  Median :-0.117   Median :-0.19   Median : 0.022   Median : 0.137  
##  Mean   :-0.047   Mean   :-0.02   Mean   : 0.040   Mean   : 0.127  
##  3rd Qu.: 0.445   3rd Qu.: 0.51   3rd Qu.: 0.926   3rd Qu.: 0.804  
##  Max.   : 2.702   Max.   : 4.32   Max.   : 2.671   Max.   : 2.234  
##    COMPTotal      GDDiag   
##  Min.   :-1.935   No :106  
##  1st Qu.:-0.610   Yes:106  
##  Median : 0.332            
##  Mean   : 0.154            
##  3rd Qu.: 1.048            
##  Max.   : 2.042
ComparisonTrainingandTesting<-rbind(TRGDTab, TESTGDTab)
  kable(ComparisonTrainingandTesting)
No Yes
TRGDTab 424 424
TESTGDTab 106 106
  ComparisonTrainingandTesting
##            No Yes
## TRGDTab   424 424
## TESTGDTab 106 106
  TTChiSqu<-chisq.test(ComparisonTrainingandTesting)
  TTCram<-cramer_v(ComparisonTrainingandTesting)
  
  TTChiSqu
## 
##  Pearson's Chi-squared test
## 
## data:  ComparisonTrainingandTesting
## X-squared = 0, df = 1, p-value = 1
  TTCram
## [1] 0
echo=FALSE
error=FALSE
warning=FALSE
options(scipen = 9999, digits=3, max.print=9999999, show.signif.stars=TRUE)
set.seed(123)

GD_rec <- recipe(GDDiag~ ., data = train_data_GD)%>% step_smote(GDDiag, over_ratio = 0.50)%>%step_zv(all_predictors())%>%step_nzv(all_predictors())%>%step_corr(all_predictors())%>%prep


train_data_GD_b<-bake(GD_rec, new_data = train_data_GD)
test_data_GD_b<-bake(GD_rec, new_data = test_data_GD)
Whole_data_GD_b<-bake(GD_rec, new_data=GDTDiag)
 describe(train_data_GD_b)
##           vars   n  mean   sd median trimmed  mad   min  max range  skew
## AGE          1 848 -0.08 0.91  -0.18   -0.14 0.75 -1.62 3.64  5.27  0.86
## Gameyears    2 848  0.00 0.94  -0.14   -0.12 0.86 -1.25 5.43  6.69  1.84
## IDTotal      3 848  0.01 0.97  -0.05   -0.03 1.19 -1.32 2.67  3.99  0.12
## IMTotal      4 848  0.18 0.98   0.14    0.18 1.04 -1.73 2.70  4.43  0.06
## COMPTotal    5 848  0.09 1.02   0.06    0.15 0.99 -1.94 2.04  3.98 -0.37
## GDDiag*      6 848  1.50 0.50   1.50    1.50 0.74  1.00 2.00  1.00  0.00
##           kurtosis   se
## AGE           1.07 0.03
## Gameyears     5.84 0.03
## IDTotal      -1.14 0.03
## IMTotal      -0.76 0.03
## COMPTotal    -0.68 0.04
## GDDiag*      -2.00 0.02
 describe(test_data_GD_b)
##           vars   n  mean   sd median trimmed  mad   min  max range  skew
## AGE          1 212 -0.05 0.87  -0.12   -0.08 0.78 -1.62 2.70  4.33  0.53
## Gameyears    2 212 -0.02 0.95  -0.19   -0.15 0.91 -1.03 4.32  5.35  1.59
## IDTotal      3 212  0.04 1.00   0.02    0.00 1.32 -1.32 2.67  3.99  0.16
## IMTotal      4 212  0.13 0.93   0.14    0.14 0.91 -1.73 2.23  3.96 -0.05
## COMPTotal    5 212  0.15 1.09   0.33    0.20 1.38 -1.94 2.04  3.98 -0.31
## GDDiag*      6 212  1.50 0.50   1.50    1.50 0.74  1.00 2.00  1.00  0.00
##           kurtosis   se
## AGE           0.56 0.06
## Gameyears     3.68 0.07
## IDTotal      -1.09 0.07
## IMTotal      -0.52 0.06
## COMPTotal    -0.87 0.07
## GDDiag*      -2.01 0.03
 describe(Whole_data_GD_b)
##           vars    n  mean   sd median trimmed  mad   min  max range  skew
## AGE          1 1060 -0.07 0.90  -0.13   -0.13 0.79 -1.62 3.64  5.27  0.80
## Gameyears    2 1060  0.00 0.94  -0.14   -0.13 0.89 -1.25 5.43  6.69  1.79
## IDTotal      3 1060  0.01 0.98  -0.05   -0.02 1.23 -1.32 2.67  3.99  0.13
## IMTotal      4 1060  0.17 0.97   0.14    0.17 1.04 -1.73 2.70  4.43  0.04
## COMPTotal    5 1060  0.11 1.03   0.09    0.16 1.06 -1.94 2.04  3.98 -0.35
## GDDiag*      6 1060  1.50 0.50   1.50    1.50 0.74  1.00 2.00  1.00  0.00
##           kurtosis   se
## AGE           0.99 0.03
## Gameyears     5.41 0.03
## IDTotal      -1.12 0.03
## IMTotal      -0.71 0.03
## COMPTotal    -0.71 0.03
## GDDiag*      -2.00 0.02
echo=FALSE
error=FALSE
warning=FALSE
options(scipen = 9999, digits=3, max.print=9999999, show.signif.stars=TRUE)
set.seed(123)
train_boot <- bootstraps(train_data_GD, strata = GDDiag)
echo=FALSE
error=FALSE
warning=FALSE
options(scipen = 9999, digits=3, max.print=9999999, show.signif.stars=TRUE)
set.seed(123)
## token model
twt_null <- null_model()%>%
  set_engine("parsnip")%>%
  set_mode("classification")
## model specification LASSO
lasso_spec <- multinom_reg(penalty = 0.1, mixture = 1)%>%
  set_mode("classification")%>%
  set_engine("glmnet")
# model specification Naive Bayes
nb_spec <- naive_Bayes()%>%
  set_mode("classification")%>%
  set_engine("naivebayes")
# model spec random forest
ranger_spec<-rand_forest()%>% 
  set_engine("ranger", importance = "impurity")%>% 
  set_mode("classification")
##model spec log_regression
logreg_spec <- logistic_reg()%>% 
  set_engine("glm")%>% 
  set_mode("classification")
##model spec Kernel
svm_spec <- svm_rbf(mode = "classification", 
                    engine = "kernlab",
            cost = 1, rbf_sigma = 0.01)
echo=FALSE
error=FALSE
warning=FALSE
options(scipen = 999, digits=3, max.print=999999, show.signif.stars=TRUE)
set.seed(123)
#Null
Null_workflow <- workflow() %>% 
  add_recipe(GD_rec) %>% 
  add_model(twt_null)
#Lasso 
lasso_workflow <- workflow()%>% 
  add_recipe(GD_rec)%>% 
  add_model(lasso_spec)
#Naive Bayes 
NB_workflow <- workflow()%>% 
  add_recipe(GD_rec) %>% 
  add_model(nb_spec)
#Random Forests 
RF_workflow <- workflow()%>% 
  add_recipe(GD_rec) %>% 
  add_model(ranger_spec)
#Log_GLM_Workflow
LOGGLM_workflow <- workflow()%>% 
  add_recipe(GD_rec) %>% 
  add_model(logreg_spec)
#Kernel
Kernel_workflow<-workflow()%>% 
  add_recipe(GD_rec)%>% 
  add_model(svm_spec)
echo=FALSE
error=FALSE
warning=FALSE
options(scipen = 9999, digits=3, max.print=9999999, show.signif.stars=TRUE)
Null_fit<-Null_workflow%>%fit(train_data_GD_b)
Null_fit  
## == Workflow [trained] ==========================================================
## Preprocessor: Recipe
## Model: null_model()
## 
## -- Preprocessor ----------------------------------------------------------------
## 4 Recipe Steps
## 
## * step_smote()
## * step_zv()
## * step_nzv()
## * step_corr()
## 
## -- Model -----------------------------------------------------------------------
## Null Regression Model
## Predicted Value: No
Lasso_fit<-lasso_workflow%>%fit(train_data_GD_b)
Lasso_fit
## == Workflow [trained] ==========================================================
## Preprocessor: Recipe
## Model: multinom_reg()
## 
## -- Preprocessor ----------------------------------------------------------------
## 4 Recipe Steps
## 
## * step_smote()
## * step_zv()
## * step_nzv()
## * step_corr()
## 
## -- Model -----------------------------------------------------------------------
## 
## Call:  glmnet::glmnet(x = maybe_matrix(x), y = y, family = "multinomial",      alpha = ~1) 
## 
##    Df %Dev Lambda
## 1   0 0.00 0.0928
## 2   1 0.42 0.0846
## 3   1 0.77 0.0771
## 4   1 1.06 0.0702
## 5   1 1.31 0.0640
## 6   2 1.99 0.0583
## 7   2 2.59 0.0531
## 8   2 3.10 0.0484
## 9   2 3.53 0.0441
## 10  2 3.89 0.0402
## 11  2 4.18 0.0366
## 12  2 4.44 0.0334
## 13  2 4.65 0.0304
## 14  2 4.82 0.0277
## 15  3 5.00 0.0252
## 16  3 5.15 0.0230
## 17  4 5.29 0.0209
## 18  4 5.45 0.0191
## 19  4 5.58 0.0174
## 20  4 5.69 0.0158
## 21  4 5.78 0.0144
## 22  4 5.86 0.0132
## 23  4 5.92 0.0120
## 24  4 5.98 0.0109
## 25  4 6.02 0.0100
## 26  4 6.06 0.0091
## 27  4 6.09 0.0083
## 28  4 6.12 0.0075
## 29  4 6.14 0.0069
## 30  4 6.16 0.0063
## 31  4 6.17 0.0057
## 32  4 6.19 0.0052
## 33  5 6.20 0.0047
## 34  5 6.21 0.0043
## 35  5 6.22 0.0039
## 36  5 6.22 0.0036
## 37  5 6.23 0.0033
## 38  5 6.23 0.0030
## 39  5 6.24 0.0027
## 40  5 6.24 0.0025
## 41  5 6.24 0.0022
## 42  5 6.24 0.0021
## 43  5 6.25 0.0019
## 44  5 6.25 0.0017
## 45  5 6.25 0.0015
## 46  5 6.25 0.0014
## 
## ...
## and 1 more lines.
RF_fit<-RF_workflow%>%fit(train_data_GD_b)
RF_fit
## == Workflow [trained] ==========================================================
## Preprocessor: Recipe
## Model: rand_forest()
## 
## -- Preprocessor ----------------------------------------------------------------
## 4 Recipe Steps
## 
## * step_smote()
## * step_zv()
## * step_nzv()
## * step_corr()
## 
## -- Model -----------------------------------------------------------------------
## Ranger result
## 
## Call:
##  ranger::ranger(x = maybe_data_frame(x), y = y, importance = ~"impurity",      num.threads = 1, verbose = FALSE, seed = sample.int(10^5,          1), probability = TRUE) 
## 
## Type:                             Probability estimation 
## Number of trees:                  500 
## Sample size:                      848 
## Number of independent variables:  5 
## Mtry:                             2 
## Target node size:                 10 
## Variable importance mode:         impurity 
## Splitrule:                        gini 
## OOB prediction error (Brier s.):  0.0865
LogReg_fit<-LOGGLM_workflow%>%fit(train_data_GD_b)
LogReg_fit
## == Workflow [trained] ==========================================================
## Preprocessor: Recipe
## Model: logistic_reg()
## 
## -- Preprocessor ----------------------------------------------------------------
## 4 Recipe Steps
## 
## * step_smote()
## * step_zv()
## * step_nzv()
## * step_corr()
## 
## -- Model -----------------------------------------------------------------------
## 
## Call:  stats::glm(formula = ..y ~ ., family = stats::binomial, data = data)
## 
## Coefficients:
## (Intercept)          AGE    Gameyears      IDTotal      IMTotal    COMPTotal  
##     -0.1157      -0.1046      -0.0183      -0.5053       0.6997      -0.1600  
## 
## Degrees of Freedom: 847 Total (i.e. Null);  842 Residual
## Null Deviance:       1180 
## Residual Deviance: 1100  AIC: 1110
Kernel_fit<-Kernel_workflow%>%fit(train_data_GD_b)
Kernel_fit
## == Workflow [trained] ==========================================================
## Preprocessor: Recipe
## Model: svm_rbf()
## 
## -- Preprocessor ----------------------------------------------------------------
## 4 Recipe Steps
## 
## * step_smote()
## * step_zv()
## * step_nzv()
## * step_corr()
## 
## -- Model -----------------------------------------------------------------------
## Support Vector Machine object of class "ksvm" 
## 
## SV type: C-svc  (classification) 
##  parameter : cost C = 1 
## 
## Gaussian Radial Basis kernel function. 
##  Hyperparameter : sigma =  0.01 
## 
## Number of Support Vectors : 750 
## 
## Objective Function Value : -704 
## Training error : 0.349057 
## Probability model included.
NB_fit<-NB_workflow%>%fit(train_data_GD_b)
NB_fit
## == Workflow [trained] ==========================================================
## Preprocessor: Recipe
## Model: naive_Bayes()
## 
## -- Preprocessor ----------------------------------------------------------------
## 4 Recipe Steps
## 
## * step_smote()
## * step_zv()
## * step_nzv()
## * step_corr()
## 
## -- Model -----------------------------------------------------------------------
## 
## ================================== Naive Bayes ================================== 
##  
##  Call: 
## naive_bayes.default(x = maybe_data_frame(x), y = y, usekernel = TRUE)
## 
## --------------------------------------------------------------------------------- 
##  
## Laplace smoothing: 0
## 
## --------------------------------------------------------------------------------- 
##  
##  A priori probabilities: 
## 
##  No Yes 
## 0.5 0.5 
## 
## --------------------------------------------------------------------------------- 
##  
##  Tables: 
## 
## --------------------------------------------------------------------------------- 
##  ::: AGE::No (KDE)
## --------------------------------------------------------------------------------- 
## 
## Call:
##  density.default(x = x, na.rm = TRUE)
## 
## Data: x (424 obs.);  Bandwidth 'bw' = 0.2685
## 
##        x               y        
##  Min.   :-2.43   Min.   :0.000  
##  1st Qu.:-0.71   1st Qu.:0.020  
##  Median : 1.01   Median :0.090  
##  Mean   : 1.01   Mean   :0.145  
##  3rd Qu.: 2.73   3rd Qu.:0.256  
##  Max.   : 4.45   Max.   :0.421  
## 
## --------------------------------------------------------------------------------- 
##  ::: AGE::Yes (KDE)
## --------------------------------------------------------------------------------- 
## 
## Call:
##  density.default(x = x, na.rm = TRUE)
## 
## Data: x (424 obs.);  Bandwidth 'bw' = 0.1763
## 
##        x                y        
##  Min.   :-2.060   Min.   :0.000  
##  1st Qu.:-0.761   1st Qu.:0.015  
## 
## ...
## and 143 more lines.
echo=FALSE
error=FALSE
warning=FALSE
options(scipen = 999, digits=3, max.print=999999, show.signif.stars=TRUE)
#Null_Model
results_NF <- test_data_GD_b%>%select(GDDiag)%>% 
  bind_cols(Null_fit%>% 
              predict(new_data = test_data_GD_b))%>% 
  bind_cols(Null_fit%>% 
              predict(new_data = test_data_GD_b, type = "prob"))
kable(results_NF)
GDDiag .pred_class .pred_No .pred_Yes
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
describe(results_NF)
##              vars   n mean  sd median trimmed  mad min max range skew kurtosis
## GDDiag*         1 212  1.5 0.5    1.5     1.5 0.74 1.0 2.0     1    0    -2.01
## .pred_class*    2 212  1.0 0.0    1.0     1.0 0.00 1.0 1.0     0  NaN      NaN
## .pred_No        3 212  0.5 0.0    0.5     0.5 0.00 0.5 0.5     0  NaN      NaN
## .pred_Yes       4 212  0.5 0.0    0.5     0.5 0.00 0.5 0.5     0  NaN      NaN
##                se
## GDDiag*      0.03
## .pred_class* 0.00
## .pred_No     0.00
## .pred_Yes    0.00
echo=FALSE
error=FALSE
warning=FALSE
options(scipen = 999, digits=3, max.print=999999, show.signif.stars=TRUE)
#Collect precision metrics concurrently
ev_met1<-metric_set(ppv, f_meas)

results_NF %>% 
  conf_mat(truth = GDDiag, estimate = .pred_class)
##           Truth
## Prediction  No Yes
##        No  106 106
##        Yes   0   0
#Visualise Results_NF
update_geom_defaults(geom = "rect", new = list(fill = "midnightblue", alpha = 0.7))
results_NF%>% 
  conf_mat(GDDiag,.pred_class) %>% 
  autoplot()

ev_met1_NF<-ev_met1(results_NF,truth = GDDiag, estimate = .pred_class)
Acc_NF<-yardstick::accuracy(results_NF, GDDiag,.pred_class)
Rec_NF<-yardstick::recall(results_NF, GDDiag, .pred_class)
#Plot Roc_Curve
curve_NF <- results_NF %>% 
  roc_curve(GDDiag, .pred_No) %>% 
  autoplot
## Warning: Returning more (or less) than 1 row per `summarise()` group was deprecated in
## dplyr 1.1.0.
## i Please use `reframe()` instead.
## i When switching from `summarise()` to `reframe()`, remember that `reframe()`
##   always returns an ungrouped data frame and adjust accordingly.
## i The deprecated feature was likely used in the yardstick package.
##   Please report the issue at <https://github.com/tidymodels/yardstick/issues>.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
curve_NF

auc_NF <- results_NF %>% 
  roc_auc(GDDiag, .pred_Yes)
NFMET<-list(auc_NF,ev_met1_NF, Rec_NF, Acc_NF)
kable(NFMET)
.metric .estimator .estimate
roc_auc binary 0.5
.metric .estimator .estimate
ppv binary 0.500
f_meas binary 0.667
.metric .estimator .estimate
recall binary 1
.metric .estimator .estimate
accuracy binary 0.5
results_RF <- test_data_GD_b %>% select(GDDiag)%>% 
  bind_cols(RF_fit %>% 
              predict(new_data = test_data_GD_b))%>% 
  bind_cols(RF_fit%>% 
             predict(new_data = test_data_GD_b, type = "prob"))
kable(results_RF)
GDDiag .pred_class .pred_No .pred_Yes
No No 0.818 0.182
No No 0.861 0.139
No No 0.954 0.046
No No 0.868 0.132
No No 0.708 0.292
No No 0.966 0.034
No No 0.956 0.044
No No 0.676 0.324
No No 0.990 0.010
No No 0.970 0.030
No No 0.735 0.265
No No 0.847 0.153
No No 0.826 0.174
No No 0.962 0.038
No No 0.826 0.174
No No 0.616 0.384
No No 0.973 0.027
No No 0.722 0.278
No No 0.995 0.005
No No 0.721 0.279
No No 0.831 0.169
No No 0.982 0.018
No No 0.994 0.006
No No 0.861 0.139
No No 0.946 0.054
No No 0.809 0.191
No No 0.988 0.012
No No 0.820 0.180
No No 0.769 0.231
No No 0.946 0.054
No No 0.879 0.121
No No 0.821 0.179
No Yes 0.261 0.739
No No 0.945 0.055
No No 0.924 0.076
No No 0.821 0.179
No No 0.831 0.169
No No 0.882 0.118
No No 0.735 0.265
No No 0.882 0.118
No No 0.892 0.108
No No 0.643 0.357
No No 0.953 0.047
No No 0.774 0.226
No No 0.959 0.041
No No 0.674 0.326
No No 0.687 0.313
No No 0.708 0.292
No No 0.536 0.464
No No 0.629 0.371
No No 0.963 0.037
No No 0.982 0.018
No No 0.933 0.067
No No 0.859 0.141
No No 0.858 0.142
No No 0.781 0.219
No No 0.925 0.075
No No 0.505 0.495
No No 0.693 0.307
No No 0.879 0.121
No No 0.695 0.305
No No 0.693 0.307
No No 0.861 0.139
No No 0.989 0.011
No No 0.847 0.153
No No 0.973 0.027
No No 0.913 0.087
No Yes 0.211 0.789
No No 0.813 0.187
No No 0.949 0.051
No Yes 0.458 0.542
No No 0.822 0.178
No No 0.928 0.072
No No 0.956 0.044
No No 0.995 0.005
No No 0.933 0.067
No No 0.959 0.041
No No 0.708 0.292
No No 0.949 0.051
No No 0.945 0.055
No No 0.793 0.207
No No 0.755 0.245
No No 0.820 0.180
No No 0.637 0.363
No No 0.887 0.113
No No 0.554 0.446
No Yes 0.464 0.536
No No 0.557 0.443
No No 0.901 0.099
No No 0.949 0.051
No No 0.813 0.187
No Yes 0.410 0.590
No No 0.755 0.245
No No 0.966 0.034
No No 0.931 0.069
No No 0.764 0.236
No No 0.831 0.169
No Yes 0.261 0.739
No Yes 0.319 0.681
No No 0.954 0.046
No No 0.972 0.028
No Yes 0.404 0.596
No No 0.899 0.101
No No 0.718 0.282
No No 0.813 0.187
No No 0.859 0.141
Yes No 0.712 0.288
Yes No 0.961 0.039
Yes Yes 0.308 0.692
Yes Yes 0.245 0.755
Yes Yes 0.161 0.839
Yes Yes 0.270 0.730
Yes Yes 0.296 0.704
Yes Yes 0.377 0.623
Yes Yes 0.402 0.598
Yes No 0.526 0.474
Yes Yes 0.476 0.524
Yes No 0.503 0.497
Yes Yes 0.145 0.855
Yes Yes 0.243 0.757
Yes Yes 0.159 0.841
Yes No 0.562 0.438
Yes Yes 0.358 0.642
Yes Yes 0.450 0.550
Yes Yes 0.213 0.787
Yes Yes 0.173 0.827
Yes Yes 0.385 0.615
Yes Yes 0.100 0.900
Yes Yes 0.167 0.833
Yes No 0.617 0.383
Yes Yes 0.033 0.967
Yes Yes 0.091 0.909
Yes Yes 0.218 0.782
Yes Yes 0.086 0.914
Yes Yes 0.267 0.733
Yes Yes 0.236 0.764
Yes Yes 0.047 0.953
Yes Yes 0.134 0.866
Yes Yes 0.254 0.746
Yes Yes 0.072 0.928
Yes Yes 0.151 0.849
Yes Yes 0.039 0.961
Yes Yes 0.142 0.858
Yes Yes 0.406 0.594
Yes Yes 0.079 0.921
Yes Yes 0.184 0.816
Yes Yes 0.205 0.795
Yes Yes 0.225 0.775
Yes Yes 0.155 0.845
Yes Yes 0.210 0.790
Yes Yes 0.062 0.938
Yes Yes 0.104 0.896
Yes Yes 0.171 0.829
Yes Yes 0.264 0.736
Yes Yes 0.170 0.830
Yes Yes 0.183 0.817
Yes Yes 0.071 0.929
Yes Yes 0.144 0.856
Yes Yes 0.106 0.894
Yes Yes 0.127 0.873
Yes Yes 0.185 0.815
Yes Yes 0.434 0.566
Yes Yes 0.052 0.948
Yes Yes 0.204 0.796
Yes Yes 0.105 0.895
Yes Yes 0.206 0.794
Yes Yes 0.159 0.841
Yes Yes 0.107 0.893
Yes Yes 0.391 0.609
Yes Yes 0.171 0.829
Yes Yes 0.434 0.566
Yes Yes 0.157 0.843
Yes Yes 0.367 0.633
Yes Yes 0.139 0.861
Yes Yes 0.064 0.936
Yes Yes 0.037 0.963
Yes Yes 0.195 0.805
Yes Yes 0.205 0.795
Yes Yes 0.356 0.644
Yes Yes 0.155 0.845
Yes Yes 0.072 0.928
Yes Yes 0.228 0.772
Yes Yes 0.065 0.935
Yes Yes 0.489 0.511
Yes Yes 0.087 0.913
Yes Yes 0.211 0.789
Yes Yes 0.111 0.889
Yes Yes 0.041 0.959
Yes Yes 0.112 0.888
Yes Yes 0.265 0.735
Yes Yes 0.211 0.789
Yes Yes 0.304 0.696
Yes Yes 0.311 0.689
Yes Yes 0.088 0.912
Yes Yes 0.190 0.810
Yes Yes 0.333 0.667
Yes Yes 0.145 0.855
Yes Yes 0.324 0.676
Yes Yes 0.332 0.668
Yes Yes 0.433 0.567
Yes Yes 0.135 0.865
Yes Yes 0.251 0.749
Yes Yes 0.113 0.887
Yes Yes 0.063 0.937
Yes Yes 0.340 0.660
Yes Yes 0.221 0.779
Yes Yes 0.146 0.854
Yes Yes 0.083 0.917
Yes Yes 0.050 0.950
Yes Yes 0.116 0.884
Yes Yes 0.079 0.921
Yes Yes 0.033 0.967
describe(results_RF)
##              vars   n mean   sd median trimmed  mad  min  max range  skew
## GDDiag*         1 212 1.50 0.50   1.50    1.50 0.74 1.00 2.00  1.00  0.00
## .pred_class*    2 212 1.51 0.50   2.00    1.51 0.00 1.00 2.00  1.00 -0.04
## .pred_No        3 212 0.51 0.34   0.47    0.51 0.49 0.03 1.00  0.96  0.05
## .pred_Yes       4 212 0.49 0.34   0.53    0.49 0.49 0.00 0.97  0.96 -0.05
##              kurtosis   se
## GDDiag*         -2.01 0.03
## .pred_class*    -2.01 0.03
## .pred_No        -1.63 0.02
## .pred_Yes       -1.63 0.02
results_RF%>% 
  conf_mat(truth = GDDiag, estimate = .pred_class)
##           Truth
## Prediction  No Yes
##        No   98   6
##        Yes   8 100
#Visualise Results_RF
update_geom_defaults(geom = "rect", new = list(fill = "midnightblue", alpha = 0.7))
results_RF%>% 
  conf_mat(GDDiag,.pred_class) %>% 
  autoplot()

ev_met1_RF<-ev_met1(results_RF,truth = GDDiag, estimate = .pred_class)
Rec_RF<-yardstick::recall(results_RF, GDDiag, .pred_class)
ACC_RF<-yardstick::accuracy(results_RF, GDDiag, .pred_class)
#Plot Roc_Curve
curve_RF <- results_RF %>% 
  roc_curve(GDDiag, .pred_No) %>% 
  autoplot
curve_RF

auc_RF <- results_RF %>% 
  roc_auc(GDDiag, .pred_No)
RFMET<-list(auc_RF,ev_met1_RF, Rec_RF, ACC_RF)
kable(RFMET)
.metric .estimator .estimate
roc_auc binary 0.975
.metric .estimator .estimate
ppv binary 0.942
f_meas binary 0.933
.metric .estimator .estimate
recall binary 0.925
.metric .estimator .estimate
accuracy binary 0.934
RFMETCurVe<-list(RFMET, curve_RF)
RFMETCurVe
## [[1]]
## [[1]][[1]]
## # A tibble: 1 x 3
##   .metric .estimator .estimate
##   <chr>   <chr>          <dbl>
## 1 roc_auc binary         0.975
## 
## [[1]][[2]]
## # A tibble: 2 x 3
##   .metric .estimator .estimate
##   <chr>   <chr>          <dbl>
## 1 ppv     binary         0.942
## 2 f_meas  binary         0.933
## 
## [[1]][[3]]
## # A tibble: 1 x 3
##   .metric .estimator .estimate
##   <chr>   <chr>          <dbl>
## 1 recall  binary         0.925
## 
## [[1]][[4]]
## # A tibble: 1 x 3
##   .metric  .estimator .estimate
##   <chr>    <chr>          <dbl>
## 1 accuracy binary         0.934
## 
## 
## [[2]]

RF_fit_Test<-RF_workflow%>%fit(test_data_GD_b)
RF_fit_Test
## == Workflow [trained] ==========================================================
## Preprocessor: Recipe
## Model: rand_forest()
## 
## -- Preprocessor ----------------------------------------------------------------
## 4 Recipe Steps
## 
## * step_smote()
## * step_zv()
## * step_nzv()
## * step_corr()
## 
## -- Model -----------------------------------------------------------------------
## Ranger result
## 
## Call:
##  ranger::ranger(x = maybe_data_frame(x), y = y, importance = ~"impurity",      num.threads = 1, verbose = FALSE, seed = sample.int(10^5,          1), probability = TRUE) 
## 
## Type:                             Probability estimation 
## Number of trees:                  500 
## Sample size:                      212 
## Number of independent variables:  5 
## Mtry:                             2 
## Target node size:                 10 
## Variable importance mode:         impurity 
## Splitrule:                        gini 
## OOB prediction error (Brier s.):  0.153
RF_fit_Test %>% 
  extract_fit_parsnip() %>% 
 #Make VIP plot
 vip()

results_RFW <- Whole_data_GD_b %>% select(GDDiag)%>% 
  bind_cols(RF_fit %>% 
              predict(new_data = Whole_data_GD_b))%>% 
  bind_cols(RF_fit%>% 
             predict(new_data = Whole_data_GD_b, type = "prob"))
kable(results_RFW)
GDDiag .pred_class .pred_No .pred_Yes
No No 0.818 0.182
No No 0.861 0.139
No No 0.863 0.137
No No 0.728 0.272
No No 0.577 0.423
No No 0.929 0.071
No No 0.854 0.146
No No 0.871 0.129
No No 0.954 0.046
No No 0.927 0.073
No No 0.822 0.178
No No 0.964 0.036
No No 0.961 0.039
No No 0.991 0.009
No No 0.868 0.132
No No 0.820 0.180
No No 0.708 0.292
No No 0.966 0.034
No No 0.956 0.044
No No 0.990 0.010
No No 0.989 0.011
No Yes 0.431 0.569
No No 0.892 0.108
No No 0.979 0.021
No No 0.857 0.143
No No 0.966 0.034
No No 0.988 0.012
No No 0.676 0.324
No No 0.922 0.078
No No 0.831 0.169
No No 0.977 0.023
No No 0.759 0.241
No No 0.937 0.063
No No 0.983 0.017
No No 0.962 0.038
No No 0.945 0.055
No No 0.990 0.010
No No 0.846 0.154
No No 0.861 0.139
No No 0.923 0.077
No No 0.990 0.010
No No 0.999 0.001
No No 0.733 0.267
No No 0.970 0.030
No No 0.968 0.032
No No 0.735 0.265
No No 0.847 0.153
No No 0.776 0.224
No No 0.826 0.174
No No 0.695 0.305
No No 0.879 0.121
No No 0.887 0.113
No No 0.899 0.101
No No 0.956 0.044
No No 0.852 0.148
No No 0.962 0.038
No No 0.927 0.073
No No 0.826 0.174
No No 0.802 0.198
No No 0.616 0.384
No No 0.994 0.006
No No 0.973 0.027
No No 0.718 0.282
No No 0.822 0.178
No No 0.722 0.278
No No 0.548 0.452
No No 0.728 0.272
No No 0.995 0.005
No No 0.771 0.229
No No 0.945 0.055
No No 0.721 0.279
No No 0.771 0.229
No No 0.744 0.256
No No 0.982 0.018
No No 0.809 0.191
No No 0.963 0.037
No No 0.832 0.168
No No 0.831 0.169
No No 0.968 0.032
No No 0.927 0.073
No No 0.966 0.034
No No 0.945 0.055
No No 0.959 0.041
No No 0.718 0.282
No No 0.909 0.091
No No 0.976 0.024
No No 0.968 0.032
No No 0.923 0.077
No No 0.991 0.009
No No 0.695 0.305
No No 0.884 0.116
No No 0.964 0.036
No No 0.939 0.061
No No 0.859 0.141
No No 0.982 0.018
No No 0.656 0.344
No No 0.830 0.170
No No 0.813 0.187
No No 0.994 0.006
No No 0.942 0.058
No No 0.861 0.139
No No 0.671 0.329
No No 0.946 0.054
No No 0.616 0.384
No No 0.977 0.023
No No 0.646 0.354
No No 0.930 0.070
No No 0.925 0.075
No No 0.813 0.187
No Yes 0.458 0.542
No No 0.769 0.231
No No 0.695 0.305
No No 0.971 0.029
No No 0.966 0.034
No No 0.831 0.169
No No 0.995 0.005
No No 0.901 0.099
No No 0.936 0.064
No No 0.704 0.296
No No 0.834 0.166
No No 0.929 0.071
No No 0.687 0.313
No No 0.809 0.191
No No 0.988 0.012
No No 0.810 0.190
No No 0.820 0.180
No No 0.825 0.175
No No 0.897 0.103
No No 0.966 0.034
No No 0.818 0.182
No No 0.769 0.231
No No 0.946 0.054
No No 0.879 0.121
No No 0.930 0.070
No No 0.990 0.010
No No 0.899 0.101
No No 0.820 0.180
No No 0.821 0.179
No No 0.764 0.236
No Yes 0.494 0.506
No No 0.882 0.118
No Yes 0.261 0.739
No No 0.870 0.130
No No 0.945 0.055
No No 0.959 0.041
No No 0.929 0.071
No No 0.754 0.246
No No 0.925 0.075
No No 0.924 0.076
No No 0.821 0.179
No No 0.876 0.124
No No 0.959 0.041
No No 0.999 0.001
No No 0.669 0.331
No No 0.976 0.024
No No 0.677 0.323
No No 0.887 0.113
No No 0.852 0.148
No No 0.882 0.118
No No 0.972 0.028
No No 0.901 0.099
No No 0.831 0.169
No No 0.982 0.018
No No 0.963 0.037
No No 0.899 0.101
No No 0.952 0.048
No No 0.956 0.044
No No 0.937 0.063
No No 0.857 0.143
No No 0.921 0.079
No No 0.882 0.118
No No 0.741 0.259
No No 0.735 0.265
No No 0.908 0.092
No No 0.923 0.077
No No 0.904 0.096
No No 0.813 0.187
No No 0.741 0.259
No No 0.888 0.112
No No 0.820 0.180
No No 0.882 0.118
No No 0.892 0.108
No No 0.643 0.357
No No 0.943 0.057
No No 0.968 0.032
No No 0.709 0.291
No No 0.953 0.047
No No 0.999 0.001
No No 0.917 0.083
No No 0.975 0.025
No No 0.736 0.264
No No 0.774 0.226
No No 0.959 0.041
No No 0.917 0.083
No No 0.602 0.398
No No 0.846 0.154
No No 0.966 0.034
No No 0.622 0.378
No No 0.902 0.098
No No 0.933 0.067
No No 0.824 0.176
No No 0.882 0.118
No No 0.908 0.092
No No 0.955 0.045
No No 0.936 0.064
No No 0.674 0.326
No No 0.920 0.080
No No 0.837 0.163
No No 0.902 0.098
No No 0.719 0.281
No No 0.797 0.203
No No 0.796 0.204
No No 0.687 0.313
No No 0.966 0.034
No No 0.929 0.071
No No 0.708 0.292
No No 0.929 0.071
No No 0.982 0.018
No No 0.934 0.066
No No 0.536 0.464
No No 0.629 0.371
No No 0.957 0.043
No No 0.933 0.067
No No 0.831 0.169
No No 0.831 0.169
No No 0.945 0.055
No No 0.963 0.037
No No 0.982 0.018
No No 0.851 0.149
No No 0.933 0.067
No No 0.901 0.099
No No 0.942 0.058
No No 0.769 0.231
No No 0.852 0.148
No No 0.995 0.005
No No 0.741 0.259
No No 0.853 0.147
No No 0.897 0.103
No No 0.859 0.141
No No 0.994 0.006
No No 0.988 0.012
No No 0.787 0.213
No No 0.920 0.080
No No 0.876 0.124
No No 0.945 0.055
No No 0.858 0.142
No No 0.781 0.219
No No 0.925 0.075
No No 0.988 0.012
No No 0.539 0.461
No No 0.980 0.020
No No 0.879 0.121
No No 0.837 0.163
No No 0.863 0.137
No No 0.769 0.231
No No 0.832 0.168
No No 0.750 0.250
No No 0.972 0.028
No No 0.505 0.495
No No 0.834 0.166
No No 0.693 0.307
No No 0.925 0.075
No No 0.981 0.019
No No 0.964 0.036
No No 0.905 0.095
No No 0.959 0.041
No No 0.899 0.101
No No 0.966 0.034
No No 0.879 0.121
No No 0.946 0.054
No No 0.695 0.305
No No 0.884 0.116
No No 0.955 0.045
No No 0.693 0.307
No No 0.861 0.139
No No 0.989 0.011
No No 0.771 0.229
No No 0.897 0.103
No No 0.934 0.066
No No 0.966 0.034
No No 0.936 0.064
No No 0.945 0.055
No No 0.556 0.444
No No 0.982 0.018
No No 0.990 0.010
No No 0.988 0.012
No No 0.993 0.007
No No 0.818 0.182
No No 0.897 0.103
No No 0.936 0.064
No No 0.904 0.096
No No 0.673 0.327
No No 0.897 0.103
No No 0.822 0.178
No No 0.847 0.153
No No 0.973 0.027
No No 0.981 0.019
No No 0.793 0.207
No No 0.820 0.180
No No 0.868 0.132
No No 0.619 0.381
No No 0.878 0.122
No No 0.913 0.087
No Yes 0.211 0.789
No No 0.673 0.327
No No 0.884 0.116
No No 0.824 0.176
No No 0.904 0.096
No No 0.775 0.225
No No 0.930 0.070
No No 0.991 0.009
No No 0.813 0.187
No No 0.887 0.113
No No 0.897 0.103
No No 0.722 0.278
No No 0.890 0.110
No No 0.949 0.051
No Yes 0.458 0.542
No No 0.677 0.323
No No 0.719 0.281
No No 0.894 0.106
No No 0.828 0.172
No No 0.822 0.178
No No 0.928 0.072
No No 0.970 0.030
No No 0.879 0.121
No No 0.963 0.037
No No 0.956 0.044
No No 0.976 0.024
No No 0.826 0.174
No No 0.768 0.232
No No 0.728 0.272
No No 0.883 0.117
No No 0.995 0.005
No No 0.972 0.028
No No 0.674 0.326
No No 0.946 0.054
No No 0.987 0.013
No No 0.901 0.099
No No 0.842 0.158
No No 0.892 0.108
No No 0.963 0.037
No No 0.695 0.305
No No 0.993 0.007
No No 0.928 0.072
No No 0.847 0.153
No No 0.964 0.036
No No 0.862 0.138
No No 0.899 0.101
No No 0.933 0.067
No No 0.655 0.345
No No 0.933 0.067
No No 0.879 0.121
No No 0.903 0.097
No No 0.677 0.323
No No 0.951 0.049
No No 0.908 0.092
No No 0.759 0.241
No No 0.959 0.041
No No 0.831 0.169
No No 0.708 0.292
No No 0.978 0.022
No No 0.897 0.103
No No 0.987 0.013
No No 0.927 0.073
No No 0.760 0.240
No No 0.923 0.077
No No 0.964 0.036
No No 0.755 0.245
No No 0.949 0.051
No No 0.945 0.055
No No 0.839 0.161
No No 0.943 0.057
No No 0.982 0.018
No No 0.818 0.182
No No 0.949 0.051
No No 0.882 0.118
No No 0.708 0.292
No No 0.946 0.054
No No 0.902 0.098
No No 0.897 0.103
No No 0.839 0.161
No No 0.964 0.036
No No 0.990 0.010
No No 0.630 0.370
No No 0.972 0.028
No No 0.818 0.182
No No 0.826 0.174
No No 0.824 0.176
No No 0.936 0.064
No No 0.929 0.071
No No 0.534 0.466
No No 0.929 0.071
No No 0.860 0.140
No No 0.959 0.041
No No 0.798 0.202
No No 0.982 0.018
No No 0.902 0.098
No No 0.906 0.094
No No 0.793 0.207
No No 0.952 0.048
No No 0.843 0.157
No No 0.755 0.245
No No 0.936 0.064
No No 0.717 0.283
No No 0.820 0.180
No No 0.964 0.036
No No 0.879 0.121
No No 0.861 0.139
No No 0.703 0.297
No No 0.942 0.058
No No 0.766 0.234
No No 0.637 0.363
No No 0.899 0.101
No No 0.714 0.286
No No 0.673 0.327
No No 0.901 0.099
No No 0.870 0.130
No No 0.964 0.036
No No 0.995 0.005
No No 0.887 0.113
No No 0.784 0.216
No No 0.970 0.030
No No 0.949 0.051
No No 0.839 0.161
No No 0.735 0.265
No No 0.960 0.040
No No 0.771 0.229
No No 0.554 0.446
No No 0.879 0.121
No No 0.961 0.039
No No 0.988 0.012
No No 0.989 0.011
No No 0.960 0.040
No No 0.505 0.495
No No 0.913 0.087
No No 0.822 0.178
No No 0.945 0.055
No No 0.834 0.166
No No 0.764 0.236
No No 0.952 0.048
No No 0.666 0.334
No No 0.713 0.287
No No 0.989 0.011
No No 0.802 0.198
No No 0.917 0.083
No No 0.548 0.452
No No 0.771 0.229
No No 0.902 0.098
No No 0.854 0.146
No Yes 0.464 0.536
No No 0.655 0.345
No No 0.949 0.051
No No 0.764 0.236
No No 0.858 0.142
No No 0.876 0.124
No No 0.557 0.443
No No 0.901 0.099
No No 0.793 0.207
No No 0.949 0.051
No No 0.924 0.076
No No 0.968 0.032
No No 0.871 0.129
No No 0.879 0.121
No No 0.964 0.036
No No 0.948 0.052
No No 0.894 0.106
No No 0.813 0.187
No No 0.628 0.372
No No 0.799 0.201
No No 0.973 0.027
No No 0.862 0.138
No No 0.924 0.076
No No 0.942 0.058
No No 0.765 0.235
No Yes 0.410 0.590
No No 0.990 0.010
No No 0.994 0.006
No No 0.894 0.106
No No 0.925 0.075
No No 0.955 0.045
No No 0.897 0.103
No No 0.957 0.043
No No 0.755 0.245
No No 0.705 0.295
No No 0.989 0.011
No No 0.797 0.203
No No 0.966 0.034
No No 0.892 0.108
No No 0.862 0.138
No No 0.822 0.178
No No 0.931 0.069
No No 0.886 0.114
No No 0.721 0.279
No No 0.764 0.236
No No 0.994 0.006
No No 0.831 0.169
No No 0.964 0.036
No No 0.901 0.099
No No 0.763 0.237
No No 0.822 0.178
No No 0.824 0.176
No No 0.721 0.279
No No 0.827 0.173
No Yes 0.261 0.739
No No 0.820 0.180
No No 0.853 0.147
No Yes 0.319 0.681
No No 0.954 0.046
No No 0.972 0.028
No No 0.674 0.326
No No 0.929 0.071
No No 0.982 0.018
No No 0.643 0.357
No No 0.769 0.231
No No 0.769 0.231
No No 0.884 0.116
No No 0.629 0.371
No Yes 0.404 0.596
No No 0.826 0.174
No No 0.899 0.101
No No 0.676 0.324
No No 0.718 0.282
No No 0.813 0.187
No No 0.987 0.013
No No 0.962 0.038
No No 0.654 0.346
No No 0.680 0.320
No No 0.931 0.069
No No 0.859 0.141
Yes No 0.712 0.288
Yes Yes 0.231 0.769
Yes No 0.961 0.039
Yes No 0.517 0.483
Yes Yes 0.202 0.798
Yes Yes 0.155 0.845
Yes Yes 0.308 0.692
Yes Yes 0.471 0.529
Yes Yes 0.236 0.764
Yes Yes 0.160 0.840
Yes Yes 0.083 0.917
Yes Yes 0.245 0.755
Yes Yes 0.183 0.817
Yes Yes 0.281 0.719
Yes Yes 0.153 0.847
Yes Yes 0.161 0.839
Yes Yes 0.448 0.552
Yes Yes 0.428 0.572
Yes No 0.522 0.478
Yes Yes 0.015 0.985
Yes Yes 0.166 0.834
Yes Yes 0.390 0.610
Yes Yes 0.277 0.723
Yes Yes 0.206 0.794
Yes Yes 0.169 0.831
Yes Yes 0.270 0.730
Yes Yes 0.296 0.704
Yes Yes 0.377 0.623
Yes Yes 0.167 0.833
Yes Yes 0.402 0.598
Yes Yes 0.243 0.757
Yes No 0.526 0.474
Yes Yes 0.178 0.822
Yes Yes 0.220 0.780
Yes Yes 0.476 0.524
Yes No 0.503 0.497
Yes Yes 0.269 0.731
Yes Yes 0.305 0.695
Yes Yes 0.180 0.820
Yes Yes 0.162 0.838
Yes Yes 0.289 0.711
Yes Yes 0.244 0.756
Yes Yes 0.427 0.573
Yes Yes 0.273 0.727
Yes No 0.583 0.417
Yes Yes 0.313 0.687
Yes Yes 0.145 0.855
Yes Yes 0.294 0.706
Yes Yes 0.392 0.608
Yes Yes 0.168 0.832
Yes Yes 0.243 0.757
Yes Yes 0.365 0.635
Yes Yes 0.299 0.701
Yes Yes 0.159 0.841
Yes Yes 0.393 0.607
Yes Yes 0.303 0.697
Yes No 0.562 0.438
Yes Yes 0.098 0.902
Yes Yes 0.227 0.773
Yes Yes 0.314 0.686
Yes Yes 0.275 0.725
Yes Yes 0.500 0.500
Yes Yes 0.249 0.751
Yes Yes 0.460 0.540
Yes Yes 0.100 0.900
Yes Yes 0.358 0.642
Yes Yes 0.083 0.917
Yes No 0.511 0.489
Yes Yes 0.351 0.649
Yes Yes 0.450 0.550
Yes Yes 0.348 0.652
Yes Yes 0.342 0.658
Yes Yes 0.355 0.645
Yes Yes 0.453 0.547
Yes Yes 0.095 0.905
Yes Yes 0.347 0.653
Yes Yes 0.337 0.663
Yes Yes 0.279 0.721
Yes Yes 0.134 0.866
Yes Yes 0.256 0.744
Yes Yes 0.333 0.667
Yes Yes 0.089 0.911
Yes Yes 0.349 0.651
Yes Yes 0.264 0.736
Yes Yes 0.302 0.698
Yes Yes 0.210 0.790
Yes Yes 0.285 0.715
Yes Yes 0.339 0.661
Yes Yes 0.220 0.780
Yes Yes 0.179 0.821
Yes No 0.612 0.388
Yes Yes 0.101 0.899
Yes No 0.586 0.414
Yes Yes 0.308 0.692
Yes Yes 0.144 0.856
Yes Yes 0.085 0.915
Yes Yes 0.213 0.787
Yes No 0.508 0.492
Yes Yes 0.344 0.656
Yes Yes 0.207 0.793
Yes Yes 0.066 0.934
Yes Yes 0.107 0.893
Yes Yes 0.163 0.837
Yes Yes 0.173 0.827
Yes Yes 0.281 0.719
Yes Yes 0.091 0.909
Yes Yes 0.055 0.945
Yes Yes 0.385 0.615
Yes Yes 0.385 0.615
Yes Yes 0.438 0.562
Yes Yes 0.040 0.960
Yes Yes 0.074 0.926
Yes Yes 0.100 0.900
Yes Yes 0.113 0.887
Yes Yes 0.086 0.914
Yes Yes 0.315 0.685
Yes Yes 0.167 0.833
Yes No 0.617 0.383
Yes Yes 0.404 0.596
Yes Yes 0.416 0.584
Yes Yes 0.202 0.798
Yes Yes 0.143 0.857
Yes Yes 0.007 0.993
Yes Yes 0.046 0.954
Yes Yes 0.068 0.932
Yes Yes 0.033 0.967
Yes Yes 0.066 0.934
Yes Yes 0.007 0.993
Yes Yes 0.049 0.951
Yes Yes 0.088 0.912
Yes Yes 0.030 0.970
Yes Yes 0.153 0.847
Yes Yes 0.091 0.909
Yes Yes 0.161 0.839
Yes Yes 0.115 0.885
Yes Yes 0.065 0.935
Yes Yes 0.204 0.796
Yes Yes 0.204 0.796
Yes Yes 0.058 0.942
Yes Yes 0.218 0.782
Yes Yes 0.048 0.952
Yes Yes 0.103 0.897
Yes Yes 0.130 0.870
Yes Yes 0.086 0.914
Yes Yes 0.137 0.863
Yes Yes 0.073 0.927
Yes Yes 0.017 0.983
Yes Yes 0.038 0.962
Yes Yes 0.030 0.970
Yes Yes 0.267 0.733
Yes Yes 0.140 0.860
Yes Yes 0.146 0.854
Yes Yes 0.049 0.951
Yes Yes 0.126 0.874
Yes Yes 0.120 0.880
Yes Yes 0.082 0.918
Yes Yes 0.236 0.764
Yes Yes 0.115 0.885
Yes Yes 0.052 0.948
Yes Yes 0.122 0.878
Yes Yes 0.203 0.797
Yes Yes 0.154 0.846
Yes Yes 0.047 0.953
Yes Yes 0.034 0.966
Yes Yes 0.038 0.962
Yes Yes 0.028 0.972
Yes Yes 0.057 0.943
Yes Yes 0.126 0.874
Yes Yes 0.019 0.981
Yes Yes 0.134 0.866
Yes Yes 0.138 0.862
Yes Yes 0.065 0.935
Yes Yes 0.385 0.615
Yes Yes 0.325 0.675
Yes Yes 0.254 0.746
Yes Yes 0.072 0.928
Yes Yes 0.151 0.849
Yes Yes 0.204 0.796
Yes Yes 0.065 0.935
Yes Yes 0.069 0.931
Yes Yes 0.106 0.894
Yes Yes 0.087 0.913
Yes Yes 0.039 0.961
Yes Yes 0.012 0.988
Yes Yes 0.007 0.993
Yes Yes 0.030 0.970
Yes Yes 0.060 0.940
Yes Yes 0.091 0.909
Yes Yes 0.074 0.926
Yes Yes 0.153 0.847
Yes Yes 0.031 0.969
Yes Yes 0.142 0.858
Yes Yes 0.099 0.901
Yes Yes 0.406 0.594
Yes Yes 0.086 0.914
Yes Yes 0.049 0.951
Yes Yes 0.028 0.972
Yes Yes 0.053 0.947
Yes Yes 0.044 0.956
Yes Yes 0.044 0.956
Yes Yes 0.066 0.934
Yes Yes 0.051 0.949
Yes Yes 0.164 0.836
Yes Yes 0.079 0.921
Yes Yes 0.184 0.816
Yes Yes 0.071 0.929
Yes Yes 0.113 0.887
Yes Yes 0.205 0.795
Yes Yes 0.174 0.826
Yes Yes 0.268 0.732
Yes Yes 0.048 0.952
Yes Yes 0.225 0.775
Yes Yes 0.155 0.845
Yes Yes 0.089 0.911
Yes Yes 0.116 0.884
Yes Yes 0.078 0.922
Yes Yes 0.156 0.844
Yes Yes 0.244 0.756
Yes Yes 0.036 0.964
Yes Yes 0.021 0.979
Yes Yes 0.076 0.924
Yes Yes 0.171 0.829
Yes Yes 0.210 0.790
Yes Yes 0.251 0.749
Yes Yes 0.162 0.838
Yes Yes 0.248 0.752
Yes Yes 0.080 0.920
Yes Yes 0.073 0.927
Yes Yes 0.069 0.931
Yes Yes 0.152 0.848
Yes Yes 0.082 0.918
Yes Yes 0.227 0.773
Yes Yes 0.062 0.938
Yes Yes 0.137 0.863
Yes Yes 0.072 0.928
Yes Yes 0.104 0.896
Yes Yes 0.029 0.971
Yes Yes 0.083 0.917
Yes Yes 0.079 0.921
Yes Yes 0.171 0.829
Yes Yes 0.042 0.958
Yes Yes 0.146 0.854
Yes Yes 0.227 0.773
Yes Yes 0.345 0.655
Yes Yes 0.143 0.857
Yes Yes 0.256 0.744
Yes Yes 0.060 0.940
Yes Yes 0.142 0.858
Yes Yes 0.264 0.736
Yes Yes 0.170 0.830
Yes Yes 0.213 0.787
Yes Yes 0.058 0.942
Yes Yes 0.058 0.942
Yes Yes 0.157 0.843
Yes Yes 0.141 0.859
Yes Yes 0.256 0.744
Yes Yes 0.183 0.817
Yes Yes 0.113 0.887
Yes Yes 0.041 0.959
Yes Yes 0.075 0.925
Yes Yes 0.071 0.929
Yes Yes 0.144 0.856
Yes Yes 0.029 0.971
Yes Yes 0.019 0.981
Yes Yes 0.019 0.981
Yes Yes 0.024 0.976
Yes Yes 0.097 0.903
Yes Yes 0.129 0.871
Yes Yes 0.047 0.953
Yes Yes 0.142 0.858
Yes Yes 0.057 0.943
Yes Yes 0.106 0.894
Yes Yes 0.007 0.993
Yes Yes 0.124 0.876
Yes Yes 0.126 0.874
Yes Yes 0.109 0.891
Yes Yes 0.127 0.873
Yes Yes 0.040 0.960
Yes Yes 0.181 0.819
Yes Yes 0.145 0.855
Yes Yes 0.165 0.835
Yes Yes 0.185 0.815
Yes Yes 0.263 0.737
Yes Yes 0.091 0.909
Yes Yes 0.087 0.913
Yes Yes 0.434 0.566
Yes Yes 0.160 0.840
Yes Yes 0.161 0.839
Yes Yes 0.187 0.813
Yes Yes 0.185 0.815
Yes Yes 0.024 0.976
Yes Yes 0.038 0.962
Yes Yes 0.084 0.916
Yes Yes 0.052 0.948
Yes Yes 0.103 0.897
Yes Yes 0.204 0.796
Yes Yes 0.105 0.895
Yes Yes 0.054 0.946
Yes Yes 0.157 0.843
Yes Yes 0.186 0.814
Yes Yes 0.248 0.752
Yes Yes 0.011 0.989
Yes Yes 0.062 0.938
Yes Yes 0.090 0.910
Yes Yes 0.036 0.964
Yes Yes 0.139 0.861
Yes Yes 0.170 0.830
Yes Yes 0.206 0.794
Yes Yes 0.180 0.820
Yes Yes 0.159 0.841
Yes Yes 0.152 0.848
Yes Yes 0.080 0.920
Yes Yes 0.107 0.893
Yes Yes 0.391 0.609
Yes Yes 0.108 0.892
Yes Yes 0.037 0.963
Yes Yes 0.054 0.946
Yes Yes 0.171 0.829
Yes Yes 0.032 0.968
Yes Yes 0.434 0.566
Yes Yes 0.066 0.934
Yes Yes 0.054 0.946
Yes Yes 0.157 0.843
Yes Yes 0.153 0.847
Yes Yes 0.367 0.633
Yes Yes 0.029 0.971
Yes Yes 0.046 0.954
Yes Yes 0.068 0.932
Yes Yes 0.139 0.861
Yes Yes 0.033 0.967
Yes Yes 0.340 0.660
Yes Yes 0.281 0.719
Yes Yes 0.208 0.792
Yes Yes 0.078 0.922
Yes Yes 0.064 0.936
Yes Yes 0.099 0.901
Yes Yes 0.037 0.963
Yes Yes 0.195 0.805
Yes Yes 0.149 0.851
Yes Yes 0.208 0.792
Yes Yes 0.127 0.873
Yes Yes 0.107 0.893
Yes Yes 0.205 0.795
Yes Yes 0.144 0.856
Yes Yes 0.146 0.854
Yes Yes 0.173 0.827
Yes Yes 0.077 0.923
Yes Yes 0.189 0.811
Yes Yes 0.266 0.734
Yes Yes 0.058 0.942
Yes Yes 0.074 0.926
Yes Yes 0.225 0.775
Yes Yes 0.356 0.644
Yes Yes 0.242 0.758
Yes Yes 0.159 0.841
Yes Yes 0.115 0.885
Yes Yes 0.019 0.981
Yes Yes 0.178 0.822
Yes Yes 0.155 0.845
Yes Yes 0.202 0.798
Yes Yes 0.107 0.893
Yes Yes 0.144 0.856
Yes Yes 0.072 0.928
Yes Yes 0.055 0.945
Yes Yes 0.031 0.969
Yes Yes 0.228 0.772
Yes Yes 0.070 0.930
Yes Yes 0.150 0.850
Yes Yes 0.137 0.863
Yes Yes 0.133 0.867
Yes Yes 0.062 0.938
Yes Yes 0.065 0.935
Yes Yes 0.075 0.925
Yes Yes 0.093 0.907
Yes Yes 0.256 0.744
Yes Yes 0.489 0.511
Yes Yes 0.243 0.757
Yes Yes 0.261 0.739
Yes Yes 0.099 0.901
Yes Yes 0.087 0.913
Yes Yes 0.124 0.876
Yes Yes 0.038 0.962
Yes Yes 0.211 0.789
Yes Yes 0.279 0.721
Yes Yes 0.329 0.671
Yes Yes 0.246 0.754
Yes Yes 0.218 0.782
Yes Yes 0.111 0.889
Yes Yes 0.191 0.809
Yes Yes 0.111 0.889
Yes Yes 0.042 0.958
Yes Yes 0.069 0.931
Yes Yes 0.110 0.890
Yes Yes 0.041 0.959
Yes Yes 0.190 0.810
Yes Yes 0.041 0.959
Yes Yes 0.102 0.898
Yes Yes 0.147 0.853
Yes Yes 0.265 0.735
Yes Yes 0.248 0.752
Yes Yes 0.050 0.950
Yes Yes 0.255 0.745
Yes Yes 0.043 0.957
Yes Yes 0.110 0.890
Yes Yes 0.030 0.970
Yes Yes 0.047 0.953
Yes Yes 0.126 0.874
Yes Yes 0.124 0.876
Yes Yes 0.112 0.888
Yes Yes 0.082 0.918
Yes Yes 0.265 0.735
Yes Yes 0.201 0.799
Yes Yes 0.152 0.848
Yes Yes 0.155 0.845
Yes Yes 0.121 0.879
Yes Yes 0.337 0.663
Yes Yes 0.211 0.789
Yes Yes 0.131 0.869
Yes Yes 0.089 0.911
Yes Yes 0.105 0.895
Yes Yes 0.040 0.960
Yes Yes 0.116 0.884
Yes Yes 0.155 0.845
Yes Yes 0.104 0.896
Yes Yes 0.121 0.879
Yes Yes 0.163 0.837
Yes Yes 0.287 0.713
Yes Yes 0.304 0.696
Yes Yes 0.311 0.689
Yes Yes 0.129 0.871
Yes Yes 0.088 0.912
Yes Yes 0.190 0.810
Yes Yes 0.067 0.933
Yes Yes 0.100 0.900
Yes Yes 0.219 0.781
Yes Yes 0.168 0.832
Yes Yes 0.333 0.667
Yes Yes 0.173 0.827
Yes Yes 0.070 0.930
Yes Yes 0.084 0.916
Yes Yes 0.076 0.924
Yes Yes 0.145 0.855
Yes Yes 0.039 0.961
Yes Yes 0.059 0.941
Yes Yes 0.017 0.983
Yes Yes 0.017 0.983
Yes Yes 0.144 0.856
Yes Yes 0.133 0.867
Yes Yes 0.324 0.676
Yes Yes 0.209 0.791
Yes Yes 0.100 0.900
Yes Yes 0.083 0.917
Yes Yes 0.027 0.973
Yes Yes 0.332 0.668
Yes Yes 0.433 0.567
Yes Yes 0.121 0.879
Yes Yes 0.117 0.883
Yes Yes 0.222 0.778
Yes Yes 0.010 0.990
Yes Yes 0.061 0.939
Yes Yes 0.135 0.865
Yes Yes 0.042 0.958
Yes Yes 0.110 0.890
Yes Yes 0.053 0.947
Yes Yes 0.087 0.913
Yes Yes 0.080 0.920
Yes Yes 0.164 0.836
Yes Yes 0.095 0.905
Yes Yes 0.083 0.917
Yes Yes 0.085 0.915
Yes Yes 0.014 0.986
Yes Yes 0.014 0.986
Yes Yes 0.071 0.929
Yes Yes 0.005 0.995
Yes Yes 0.146 0.854
Yes Yes 0.184 0.816
Yes Yes 0.072 0.928
Yes Yes 0.086 0.914
Yes Yes 0.251 0.749
Yes Yes 0.140 0.860
Yes Yes 0.102 0.898
Yes Yes 0.079 0.921
Yes Yes 0.056 0.944
Yes Yes 0.069 0.931
Yes Yes 0.113 0.887
Yes Yes 0.049 0.951
Yes Yes 0.071 0.929
Yes Yes 0.048 0.952
Yes Yes 0.092 0.908
Yes Yes 0.033 0.967
Yes Yes 0.301 0.699
Yes Yes 0.126 0.874
Yes Yes 0.122 0.878
Yes Yes 0.124 0.876
Yes Yes 0.108 0.892
Yes Yes 0.063 0.937
Yes Yes 0.078 0.922
Yes Yes 0.063 0.937
Yes Yes 0.112 0.888
Yes Yes 0.124 0.876
Yes Yes 0.340 0.660
Yes Yes 0.114 0.886
Yes Yes 0.140 0.860
Yes Yes 0.221 0.779
Yes Yes 0.030 0.970
Yes Yes 0.059 0.941
Yes Yes 0.033 0.967
Yes Yes 0.046 0.954
Yes Yes 0.014 0.986
Yes Yes 0.016 0.984
Yes Yes 0.146 0.854
Yes Yes 0.043 0.957
Yes Yes 0.083 0.917
Yes Yes 0.021 0.979
Yes Yes 0.098 0.902
Yes Yes 0.050 0.950
Yes Yes 0.116 0.884
Yes Yes 0.071 0.929
Yes Yes 0.129 0.871
Yes Yes 0.115 0.885
Yes Yes 0.138 0.862
Yes Yes 0.103 0.897
Yes Yes 0.079 0.921
Yes Yes 0.085 0.915
Yes Yes 0.149 0.851
Yes Yes 0.095 0.905
Yes Yes 0.095 0.905
Yes Yes 0.028 0.972
Yes Yes 0.033 0.967
Yes Yes 0.033 0.967
describe(results_RFW)
##              vars    n mean   sd median trimmed  mad  min  max range skew
## GDDiag*         1 1060 1.50 0.50   1.50    1.50 0.74 1.00 2.00  1.00 0.00
## .pred_class*    2 1060 1.50 0.50   1.00    1.50 0.00 1.00 2.00  1.00 0.01
## .pred_No        3 1060 0.51 0.37   0.51    0.51 0.56 0.01 1.00  0.99 0.00
## .pred_Yes       4 1060 0.49 0.37   0.49    0.49 0.56 0.00 0.99  0.99 0.00
##              kurtosis   se
## GDDiag*         -2.00 0.02
## .pred_class*    -2.00 0.02
## .pred_No        -1.75 0.01
## .pred_Yes       -1.75 0.01
results_RFW%>% 
  conf_mat(truth = GDDiag, estimate = .pred_class)
##           Truth
## Prediction  No Yes
##        No  519  13
##        Yes  11 517
#Visualise Results_RF
update_geom_defaults(geom = "rect", new = list(fill = "midnightblue", alpha = 0.7))
results_RF%>% 
  conf_mat(GDDiag,.pred_class) %>% 
  autoplot()

ev_met1_RFW<-ev_met1(results_RFW,truth = GDDiag, estimate = .pred_class)
Rec_RFW<-yardstick::recall(results_RFW, GDDiag, .pred_class)
ACC_RFW<-yardstick::accuracy(results_RFW, GDDiag, .pred_class)

curve_RFW <- results_RFW %>% 
  roc_curve(GDDiag, .pred_No) %>% 
  autoplot
curve_RFW

auc_RFW <- results_RFW %>% 
  roc_auc(GDDiag, .pred_No)
RFMETW<-list(auc_RFW,ev_met1_RFW, Rec_RFW, ACC_RFW)
kable(RFMETW)
.metric .estimator .estimate
roc_auc binary 0.996
.metric .estimator .estimate
ppv binary 0.976
f_meas binary 0.977
.metric .estimator .estimate
recall binary 0.979
.metric .estimator .estimate
accuracy binary 0.977
RFMETCurVeW<-list(RFMETW, curve_RFW)
RFMETCurVeW
## [[1]]
## [[1]][[1]]
## # A tibble: 1 x 3
##   .metric .estimator .estimate
##   <chr>   <chr>          <dbl>
## 1 roc_auc binary         0.996
## 
## [[1]][[2]]
## # A tibble: 2 x 3
##   .metric .estimator .estimate
##   <chr>   <chr>          <dbl>
## 1 ppv     binary         0.976
## 2 f_meas  binary         0.977
## 
## [[1]][[3]]
## # A tibble: 1 x 3
##   .metric .estimator .estimate
##   <chr>   <chr>          <dbl>
## 1 recall  binary         0.979
## 
## [[1]][[4]]
## # A tibble: 1 x 3
##   .metric  .estimator .estimate
##   <chr>    <chr>          <dbl>
## 1 accuracy binary         0.977
## 
## 
## [[2]]

results_LR <- test_data_GD_b %>% select(GDDiag) %>% 
  bind_cols (LogReg_fit%>% 
              predict(new_data = test_data_GD_b)) %>% 
  bind_cols( LogReg_fit%>% 
              predict(new_data = test_data_GD_b, type = "prob"))
kable(results_LR)
GDDiag .pred_class .pred_No .pred_Yes
No No 0.583 0.417
No No 0.562 0.438
No Yes 0.473 0.527
No No 0.745 0.255
No No 0.579 0.421
No No 0.855 0.145
No No 0.620 0.380
No No 0.539 0.461
No No 0.518 0.482
No No 0.700 0.300
No No 0.507 0.493
No No 0.614 0.386
No Yes 0.463 0.537
No No 0.505 0.495
No Yes 0.471 0.529
No Yes 0.417 0.583
No No 0.627 0.373
No No 0.522 0.478
No No 0.592 0.408
No Yes 0.496 0.504
No No 0.808 0.192
No No 0.643 0.357
No No 0.665 0.335
No No 0.562 0.438
No No 0.629 0.371
No No 0.703 0.297
No No 0.588 0.412
No Yes 0.378 0.622
No No 0.788 0.212
No No 0.629 0.371
No Yes 0.305 0.695
No No 0.590 0.410
No Yes 0.355 0.645
No No 0.738 0.262
No No 0.711 0.289
No No 0.590 0.410
No No 0.864 0.136
No No 0.698 0.302
No No 0.525 0.475
No No 0.926 0.074
No Yes 0.432 0.568
No No 0.510 0.490
No No 0.574 0.426
No Yes 0.300 0.700
No No 0.669 0.331
No Yes 0.401 0.599
No No 0.515 0.485
No No 0.685 0.315
No No 0.500 0.500
No Yes 0.378 0.622
No No 0.720 0.280
No No 0.643 0.357
No Yes 0.442 0.558
No No 0.775 0.225
No No 0.589 0.411
No No 0.659 0.341
No Yes 0.350 0.650
No Yes 0.422 0.578
No No 0.544 0.456
No Yes 0.308 0.692
No Yes 0.250 0.750
No No 0.544 0.456
No No 0.562 0.438
No No 0.722 0.278
No No 0.614 0.386
No No 0.627 0.373
No No 0.580 0.420
No No 0.631 0.369
No Yes 0.359 0.641
No No 0.568 0.432
No No 0.511 0.489
No No 0.622 0.378
No Yes 0.484 0.516
No No 0.548 0.452
No No 0.592 0.408
No No 0.605 0.395
No No 0.684 0.316
No No 0.685 0.315
No No 0.685 0.315
No No 0.689 0.311
No Yes 0.337 0.663
No No 0.547 0.453
No Yes 0.378 0.622
No Yes 0.496 0.504
No No 0.632 0.368
No Yes 0.486 0.514
No Yes 0.460 0.540
No No 0.515 0.485
No Yes 0.396 0.604
No No 0.623 0.377
No No 0.609 0.391
No Yes 0.461 0.539
No No 0.547 0.453
No No 0.595 0.405
No No 0.587 0.413
No Yes 0.442 0.558
No No 0.864 0.136
No Yes 0.355 0.645
No Yes 0.421 0.579
No No 0.539 0.461
No No 0.687 0.313
No No 0.549 0.451
No No 0.543 0.457
No Yes 0.481 0.519
No Yes 0.206 0.794
No No 0.775 0.225
Yes Yes 0.409 0.591
Yes No 0.545 0.455
Yes No 0.521 0.479
Yes No 0.512 0.488
Yes No 0.523 0.477
Yes No 0.505 0.495
Yes Yes 0.436 0.564
Yes Yes 0.360 0.640
Yes No 0.537 0.463
Yes No 0.588 0.412
Yes No 0.574 0.426
Yes No 0.695 0.305
Yes No 0.512 0.488
Yes Yes 0.411 0.589
Yes No 0.540 0.460
Yes Yes 0.444 0.556
Yes Yes 0.497 0.503
Yes No 0.502 0.498
Yes Yes 0.478 0.522
Yes Yes 0.379 0.621
Yes Yes 0.433 0.567
Yes Yes 0.409 0.591
Yes Yes 0.467 0.533
Yes No 0.580 0.420
Yes Yes 0.476 0.524
Yes Yes 0.485 0.515
Yes No 0.508 0.492
Yes Yes 0.491 0.509
Yes Yes 0.436 0.564
Yes Yes 0.417 0.583
Yes Yes 0.405 0.595
Yes Yes 0.478 0.522
Yes Yes 0.359 0.641
Yes Yes 0.313 0.687
Yes Yes 0.338 0.662
Yes Yes 0.354 0.646
Yes Yes 0.260 0.740
Yes Yes 0.209 0.791
Yes Yes 0.422 0.578
Yes Yes 0.416 0.584
Yes Yes 0.436 0.564
Yes Yes 0.426 0.574
Yes Yes 0.440 0.560
Yes No 0.522 0.478
Yes Yes 0.443 0.557
Yes No 0.605 0.395
Yes Yes 0.292 0.708
Yes No 0.764 0.236
Yes No 0.675 0.325
Yes No 0.629 0.371
Yes Yes 0.488 0.512
Yes No 0.589 0.411
Yes Yes 0.375 0.625
Yes No 0.675 0.325
Yes No 0.588 0.412
Yes No 0.761 0.239
Yes No 0.518 0.482
Yes No 0.564 0.436
Yes No 0.572 0.428
Yes Yes 0.446 0.554
Yes Yes 0.481 0.519
Yes No 0.611 0.389
Yes No 0.581 0.419
Yes Yes 0.483 0.517
Yes Yes 0.439 0.561
Yes No 0.695 0.305
Yes No 0.694 0.306
Yes Yes 0.418 0.582
Yes Yes 0.348 0.652
Yes Yes 0.332 0.668
Yes Yes 0.387 0.613
Yes Yes 0.361 0.639
Yes No 0.651 0.349
Yes No 0.585 0.415
Yes Yes 0.332 0.668
Yes Yes 0.265 0.735
Yes Yes 0.316 0.684
Yes No 0.560 0.440
Yes No 0.568 0.432
Yes Yes 0.446 0.554
Yes No 0.599 0.401
Yes No 0.553 0.447
Yes Yes 0.387 0.613
Yes Yes 0.442 0.558
Yes No 0.515 0.485
Yes Yes 0.396 0.604
Yes Yes 0.449 0.551
Yes Yes 0.266 0.734
Yes Yes 0.339 0.661
Yes No 0.537 0.463
Yes Yes 0.366 0.634
Yes No 0.507 0.493
Yes No 0.689 0.311
Yes No 0.565 0.435
Yes Yes 0.349 0.651
Yes No 0.646 0.354
Yes Yes 0.320 0.680
Yes Yes 0.331 0.669
Yes Yes 0.455 0.545
Yes Yes 0.395 0.605
Yes Yes 0.271 0.729
Yes Yes 0.153 0.847
Yes Yes 0.280 0.720
Yes Yes 0.496 0.504
Yes Yes 0.134 0.866
Yes Yes 0.439 0.561
describe(results_LR)
##              vars   n mean   sd median trimmed  mad  min  max range  skew
## GDDiag*         1 212 1.50 0.50   1.50    1.50 0.74 1.00 2.00  1.00  0.00
## .pred_class*    2 212 1.45 0.50   1.00    1.44 0.00 1.00 2.00  1.00  0.21
## .pred_No        3 212 0.51 0.14   0.51    0.51 0.14 0.13 0.93  0.79  0.08
## .pred_Yes       4 212 0.49 0.14   0.49    0.49 0.14 0.07 0.87  0.79 -0.08
##              kurtosis   se
## GDDiag*         -2.01 0.03
## .pred_class*    -1.97 0.03
## .pred_No         0.00 0.01
## .pred_Yes        0.00 0.01
results_LR%>% 
  conf_mat(truth = GDDiag, estimate = .pred_class)
##           Truth
## Prediction No Yes
##        No  75  42
##        Yes 31  64
#Visualise Results
update_geom_defaults(geom = "rect", new = list(fill = "midnightblue", alpha = 0.7))
results_LR%>% 
  conf_mat(GDDiag,.pred_class) %>% 
  autoplot()

ev_met1_LR<-ev_met1(results_LR,truth = GDDiag, estimate = .pred_class)
Rec_LR<-yardstick::recall(results_LR, GDDiag, .pred_class)
ACC_LR<-yardstick::accuracy(results_LR, GDDiag, .pred_class)
#Plot Roc_Curve
curve_LR <- results_LR %>% 
  roc_curve(GDDiag, .pred_No) %>% 
  autoplot
curve_LR

auc_LR <- results_LR %>% 
  roc_auc(GDDiag, .pred_No)
LRMET<-list(auc_LR,ev_met1_LR, Rec_LR, ACC_LR)
kable(LRMET)
.metric .estimator .estimate
roc_auc binary 0.701
.metric .estimator .estimate
ppv binary 0.641
f_meas binary 0.673
.metric .estimator .estimate
recall binary 0.708
.metric .estimator .estimate
accuracy binary 0.656
LRMETCurVe<-list(LRMET, curve_LR)
LRMETCurVe
## [[1]]
## [[1]][[1]]
## # A tibble: 1 x 3
##   .metric .estimator .estimate
##   <chr>   <chr>          <dbl>
## 1 roc_auc binary         0.701
## 
## [[1]][[2]]
## # A tibble: 2 x 3
##   .metric .estimator .estimate
##   <chr>   <chr>          <dbl>
## 1 ppv     binary         0.641
## 2 f_meas  binary         0.673
## 
## [[1]][[3]]
## # A tibble: 1 x 3
##   .metric .estimator .estimate
##   <chr>   <chr>          <dbl>
## 1 recall  binary         0.708
## 
## [[1]][[4]]
## # A tibble: 1 x 3
##   .metric  .estimator .estimate
##   <chr>    <chr>          <dbl>
## 1 accuracy binary         0.656
## 
## 
## [[2]]

LogReg_fit_Test<-LOGGLM_workflow%>%fit(test_data_GD_b)
LogReg_fit_Test
## == Workflow [trained] ==========================================================
## Preprocessor: Recipe
## Model: logistic_reg()
## 
## -- Preprocessor ----------------------------------------------------------------
## 4 Recipe Steps
## 
## * step_smote()
## * step_zv()
## * step_nzv()
## * step_corr()
## 
## -- Model -----------------------------------------------------------------------
## 
## Call:  stats::glm(formula = ..y ~ ., family = stats::binomial, data = data)
## 
## Coefficients:
## (Intercept)          AGE    Gameyears      IDTotal      IMTotal    COMPTotal  
##     -0.1114       0.0268       0.0325      -0.5807       1.0463       0.0107  
## 
## Degrees of Freedom: 211 Total (i.e. Null);  206 Residual
## Null Deviance:       294 
## Residual Deviance: 261   AIC: 273
LogReg_fit_Test %>% 
  extract_fit_parsnip() %>% 
 #Make VIP plot
 vip()

results_LRW <- Whole_data_GD_b %>% select(GDDiag)%>% 
  bind_cols(LogReg_fit %>% 
              predict(new_data = Whole_data_GD_b))%>% 
  bind_cols(LogReg_fit%>% 
             predict(new_data = Whole_data_GD_b, type = "prob"))
kable(results_LRW)
GDDiag .pred_class .pred_No .pred_Yes
No No 0.583 0.417
No No 0.562 0.438
No No 0.552 0.448
No Yes 0.472 0.528
No Yes 0.254 0.746
No No 0.628 0.372
No Yes 0.263 0.737
No Yes 0.484 0.516
No Yes 0.473 0.527
No No 0.507 0.493
No No 0.737 0.263
No Yes 0.462 0.538
No No 0.560 0.440
No No 0.572 0.428
No No 0.745 0.255
No Yes 0.378 0.622
No No 0.579 0.421
No No 0.855 0.145
No No 0.620 0.380
No No 0.518 0.482
No No 0.722 0.278
No Yes 0.333 0.667
No Yes 0.498 0.502
No No 0.645 0.355
No No 0.715 0.285
No No 0.507 0.493
No Yes 0.491 0.509
No No 0.539 0.461
No No 0.525 0.475
No No 0.808 0.192
No Yes 0.466 0.534
No No 0.583 0.417
No Yes 0.313 0.687
No No 0.680 0.320
No No 0.505 0.495
No No 0.738 0.262
No No 0.518 0.482
No Yes 0.298 0.702
No No 0.562 0.438
No Yes 0.369 0.631
No No 0.696 0.304
No No 0.720 0.280
No No 0.562 0.438
No No 0.700 0.300
No No 0.581 0.419
No No 0.507 0.493
No No 0.614 0.386
No No 0.515 0.485
No Yes 0.463 0.537
No Yes 0.250 0.750
No Yes 0.308 0.692
No No 0.640 0.360
No No 0.587 0.413
No No 0.548 0.452
No No 0.530 0.470
No No 0.505 0.495
No No 0.507 0.493
No Yes 0.471 0.529
No No 0.527 0.473
No Yes 0.417 0.583
No No 0.549 0.451
No No 0.627 0.373
No Yes 0.481 0.519
No No 0.613 0.387
No No 0.522 0.478
No No 0.599 0.401
No Yes 0.472 0.528
No No 0.592 0.408
No Yes 0.295 0.705
No No 0.607 0.393
No Yes 0.496 0.504
No No 0.511 0.489
No No 0.549 0.451
No No 0.629 0.371
No No 0.703 0.297
No No 0.757 0.243
No Yes 0.367 0.633
No No 0.808 0.192
No No 0.631 0.369
No No 0.507 0.493
No No 0.855 0.145
No No 0.607 0.393
No No 0.636 0.364
No Yes 0.481 0.519
No No 0.591 0.409
No No 0.754 0.246
No No 0.581 0.419
No No 0.518 0.482
No No 0.572 0.428
No No 0.549 0.451
No No 0.646 0.354
No No 0.775 0.225
No No 0.697 0.303
No No 0.775 0.225
No No 0.643 0.357
No Yes 0.315 0.685
No No 0.524 0.476
No Yes 0.206 0.794
No No 0.665 0.335
No No 0.595 0.405
No No 0.562 0.438
No Yes 0.463 0.537
No No 0.629 0.371
No Yes 0.417 0.583
No Yes 0.466 0.534
No No 0.589 0.411
No No 0.730 0.270
No Yes 0.350 0.650
No Yes 0.206 0.794
No No 0.511 0.489
No Yes 0.400 0.600
No No 0.501 0.499
No No 0.530 0.470
No No 0.595 0.405
No No 0.532 0.468
No No 0.592 0.408
No No 0.720 0.280
No No 0.701 0.299
No Yes 0.365 0.635
No No 0.799 0.201
No No 0.648 0.352
No No 0.515 0.485
No No 0.703 0.297
No No 0.588 0.412
No Yes 0.199 0.801
No Yes 0.378 0.622
No Yes 0.338 0.662
No No 0.525 0.475
No No 0.595 0.405
No Yes 0.462 0.538
No No 0.788 0.212
No No 0.629 0.371
No Yes 0.305 0.695
No No 0.730 0.270
No No 0.518 0.482
No No 0.587 0.413
No No 0.570 0.430
No No 0.590 0.410
No Yes 0.423 0.577
No Yes 0.458 0.542
No No 0.926 0.074
No Yes 0.355 0.645
No Yes 0.316 0.684
No No 0.738 0.262
No No 0.521 0.479
No No 0.866 0.134
No Yes 0.482 0.518
No No 0.707 0.293
No No 0.711 0.289
No No 0.590 0.410
No No 0.637 0.363
No No 0.684 0.316
No No 0.720 0.280
No Yes 0.266 0.734
No No 0.659 0.341
No Yes 0.429 0.571
No Yes 0.371 0.629
No No 0.613 0.387
No No 0.698 0.302
No No 0.687 0.313
No Yes 0.396 0.604
No No 0.864 0.136
No No 0.629 0.371
No No 0.660 0.340
No No 0.587 0.413
No Yes 0.177 0.823
No No 0.604 0.396
No Yes 0.313 0.687
No No 0.715 0.285
No No 0.744 0.256
No No 0.698 0.302
No No 0.521 0.479
No No 0.525 0.475
No No 0.571 0.429
No No 0.518 0.482
No Yes 0.332 0.668
No Yes 0.206 0.794
No Yes 0.482 0.518
No No 0.746 0.254
No No 0.570 0.430
No No 0.926 0.074
No Yes 0.432 0.568
No No 0.510 0.490
No Yes 0.172 0.828
No No 0.581 0.419
No Yes 0.414 0.586
No No 0.574 0.426
No No 0.720 0.280
No No 0.509 0.491
No No 0.630 0.370
No Yes 0.365 0.635
No Yes 0.300 0.700
No No 0.669 0.331
No No 0.509 0.491
No No 0.586 0.414
No Yes 0.298 0.702
No Yes 0.489 0.511
No No 0.648 0.352
No Yes 0.311 0.689
No No 0.605 0.395
No No 0.665 0.335
No No 0.698 0.302
No No 0.571 0.429
No No 0.634 0.366
No No 0.770 0.230
No Yes 0.401 0.599
No No 0.589 0.411
No No 0.526 0.474
No Yes 0.311 0.689
No Yes 0.318 0.682
No No 0.659 0.341
No No 0.668 0.332
No No 0.515 0.485
No No 0.515 0.485
No No 0.866 0.134
No No 0.685 0.315
No No 0.628 0.372
No No 0.643 0.357
No No 0.550 0.450
No No 0.500 0.500
No Yes 0.378 0.622
No No 0.713 0.287
No Yes 0.367 0.633
No No 0.532 0.468
No No 0.532 0.468
No No 0.689 0.311
No No 0.720 0.280
No No 0.643 0.357
No Yes 0.386 0.614
No Yes 0.442 0.558
No Yes 0.396 0.604
No No 0.595 0.405
No No 0.578 0.422
No No 0.560 0.440
No No 0.592 0.408
No No 0.781 0.219
No No 0.581 0.419
No No 0.525 0.475
No No 0.775 0.225
No No 0.549 0.451
No No 0.588 0.412
No No 0.731 0.269
No No 0.589 0.411
No No 0.637 0.363
No No 0.607 0.393
No No 0.589 0.411
No No 0.659 0.341
No Yes 0.350 0.650
No Yes 0.491 0.509
No No 0.582 0.418
No No 0.630 0.370
No Yes 0.305 0.695
No No 0.621 0.379
No No 0.552 0.448
No Yes 0.400 0.600
No Yes 0.367 0.633
No No 0.617 0.383
No No 0.687 0.313
No Yes 0.422 0.578
No No 0.645 0.355
No No 0.544 0.456
No No 0.707 0.293
No No 0.660 0.340
No No 0.758 0.242
No No 0.804 0.196
No No 0.669 0.331
No Yes 0.462 0.538
No Yes 0.489 0.511
No Yes 0.308 0.692
No Yes 0.488 0.512
No Yes 0.250 0.750
No No 0.646 0.354
No No 0.536 0.464
No No 0.544 0.456
No No 0.562 0.438
No No 0.722 0.278
No Yes 0.295 0.705
No Yes 0.319 0.681
No No 0.550 0.450
No Yes 0.489 0.511
No No 0.701 0.299
No No 0.549 0.451
No Yes 0.444 0.556
No No 0.518 0.482
No No 0.518 0.482
No No 0.588 0.412
No No 0.537 0.463
No Yes 0.462 0.538
No Yes 0.441 0.559
No No 0.770 0.230
No Yes 0.332 0.668
No Yes 0.445 0.555
No No 0.698 0.302
No No 0.622 0.378
No No 0.614 0.386
No No 0.627 0.373
No No 0.660 0.340
No Yes 0.337 0.663
No Yes 0.378 0.622
No Yes 0.331 0.669
No Yes 0.226 0.774
No No 0.636 0.364
No No 0.580 0.420
No No 0.631 0.369
No Yes 0.445 0.555
No No 0.646 0.354
No No 0.665 0.335
No Yes 0.359 0.641
No No 0.591 0.409
No No 0.730 0.270
No No 0.572 0.428
No Yes 0.359 0.641
No Yes 0.371 0.629
No No 0.698 0.302
No No 0.522 0.478
No No 0.653 0.347
No No 0.568 0.432
No No 0.511 0.489
No No 0.544 0.456
No Yes 0.318 0.682
No No 0.796 0.204
No No 0.626 0.374
No No 0.622 0.378
No Yes 0.484 0.516
No No 0.700 0.300
No Yes 0.308 0.692
No No 0.610 0.390
No No 0.548 0.452
No No 0.754 0.246
No Yes 0.463 0.537
No Yes 0.464 0.536
No Yes 0.472 0.528
No No 0.554 0.446
No No 0.592 0.408
No No 0.687 0.313
No Yes 0.443 0.557
No No 0.629 0.371
No Yes 0.493 0.507
No No 0.625 0.375
No Yes 0.444 0.556
No Yes 0.432 0.568
No No 0.660 0.340
No Yes 0.250 0.750
No No 0.537 0.463
No Yes 0.484 0.516
No No 0.614 0.386
No No 0.520 0.480
No Yes 0.368 0.632
No No 0.543 0.457
No Yes 0.442 0.558
No Yes 0.445 0.555
No No 0.605 0.395
No Yes 0.308 0.692
No No 0.641 0.359
No No 0.544 0.456
No Yes 0.487 0.513
No No 0.655 0.345
No No 0.583 0.417
No No 0.684 0.316
No No 0.532 0.468
No No 0.685 0.315
No No 0.816 0.184
No Yes 0.319 0.681
No Yes 0.493 0.507
No No 0.624 0.376
No No 0.584 0.416
No Yes 0.369 0.631
No No 0.775 0.225
No No 0.547 0.453
No No 0.685 0.315
No No 0.689 0.311
No Yes 0.455 0.545
No Yes 0.172 0.828
No No 0.518 0.482
No No 0.583 0.417
No No 0.623 0.377
No Yes 0.301 0.699
No No 0.685 0.315
No Yes 0.488 0.512
No Yes 0.311 0.689
No Yes 0.441 0.559
No Yes 0.455 0.545
No No 0.758 0.242
No No 0.820 0.180
No No 0.517 0.483
No No 0.643 0.357
No Yes 0.462 0.538
No Yes 0.463 0.537
No No 0.527 0.473
No No 0.701 0.299
No No 0.866 0.134
No No 0.729 0.271
No No 0.648 0.352
No No 0.523 0.477
No No 0.573 0.427
No No 0.710 0.290
No No 0.518 0.482
No Yes 0.311 0.689
No No 0.580 0.420
No Yes 0.337 0.663
No Yes 0.177 0.823
No No 0.548 0.452
No No 0.547 0.453
No No 0.701 0.299
No Yes 0.317 0.683
No Yes 0.378 0.622
No Yes 0.462 0.538
No Yes 0.305 0.695
No No 0.562 0.438
No Yes 0.489 0.511
No No 0.595 0.405
No No 0.737 0.263
No Yes 0.496 0.504
No No 0.543 0.457
No No 0.647 0.353
No Yes 0.445 0.555
No No 0.720 0.280
No Yes 0.316 0.684
No Yes 0.462 0.538
No No 0.592 0.408
No No 0.632 0.368
No Yes 0.406 0.594
No No 0.700 0.300
No No 0.568 0.432
No No 0.625 0.375
No No 0.507 0.493
No No 0.564 0.436
No No 0.511 0.489
No Yes 0.486 0.514
No Yes 0.305 0.695
No No 0.560 0.440
No Yes 0.491 0.509
No No 0.674 0.326
No No 0.564 0.436
No Yes 0.422 0.578
No No 0.663 0.337
No No 0.622 0.378
No No 0.607 0.393
No No 0.799 0.201
No Yes 0.423 0.577
No Yes 0.177 0.823
No Yes 0.415 0.585
No Yes 0.440 0.560
No No 0.674 0.326
No Yes 0.484 0.516
No No 0.509 0.491
No Yes 0.487 0.513
No Yes 0.415 0.585
No Yes 0.311 0.689
No Yes 0.263 0.737
No Yes 0.460 0.540
No Yes 0.445 0.555
No No 0.568 0.432
No Yes 0.423 0.577
No No 0.606 0.394
No No 0.546 0.454
No No 0.515 0.485
No Yes 0.396 0.604
No Yes 0.337 0.663
No No 0.623 0.377
No No 0.711 0.289
No No 0.631 0.369
No Yes 0.484 0.516
No Yes 0.305 0.695
No No 0.520 0.480
No No 0.682 0.318
No No 0.796 0.204
No No 0.609 0.391
No Yes 0.196 0.804
No Yes 0.424 0.576
No No 0.627 0.373
No Yes 0.368 0.632
No No 0.711 0.289
No No 0.595 0.405
No Yes 0.372 0.628
No Yes 0.461 0.539
No No 0.820 0.180
No No 0.549 0.451
No No 0.599 0.401
No Yes 0.350 0.650
No No 0.536 0.464
No Yes 0.441 0.559
No No 0.713 0.287
No No 0.547 0.453
No Yes 0.488 0.512
No No 0.674 0.326
No No 0.659 0.341
No No 0.595 0.405
No Yes 0.498 0.502
No Yes 0.368 0.632
No No 0.737 0.263
No No 0.587 0.413
No No 0.644 0.356
No Yes 0.391 0.609
No Yes 0.442 0.558
No No 0.549 0.451
No No 0.864 0.136
No Yes 0.462 0.538
No No 0.629 0.371
No No 0.618 0.382
No No 0.622 0.378
No No 0.527 0.473
No No 0.549 0.451
No No 0.600 0.400
No Yes 0.355 0.645
No No 0.796 0.204
No No 0.581 0.419
No Yes 0.421 0.579
No No 0.539 0.461
No No 0.687 0.313
No Yes 0.401 0.599
No No 0.866 0.134
No No 0.629 0.371
No No 0.510 0.490
No No 0.578 0.422
No No 0.788 0.212
No No 0.573 0.427
No Yes 0.378 0.622
No No 0.549 0.451
No Yes 0.471 0.529
No No 0.543 0.457
No No 0.539 0.461
No Yes 0.481 0.519
No Yes 0.206 0.794
No Yes 0.493 0.507
No No 0.684 0.316
No No 0.718 0.282
No Yes 0.409 0.591
No No 0.587 0.413
No No 0.775 0.225
Yes Yes 0.409 0.591
Yes Yes 0.403 0.597
Yes No 0.545 0.455
Yes Yes 0.399 0.601
Yes Yes 0.441 0.559
Yes No 0.525 0.475
Yes No 0.521 0.479
Yes No 0.570 0.430
Yes No 0.615 0.385
Yes No 0.604 0.396
Yes Yes 0.224 0.776
Yes No 0.512 0.488
Yes Yes 0.350 0.650
Yes No 0.536 0.464
Yes Yes 0.406 0.594
Yes No 0.523 0.477
Yes Yes 0.436 0.564
Yes Yes 0.361 0.639
Yes Yes 0.427 0.573
Yes Yes 0.330 0.670
Yes No 0.546 0.454
Yes Yes 0.172 0.828
Yes Yes 0.399 0.601
Yes Yes 0.452 0.548
Yes Yes 0.404 0.596
Yes No 0.505 0.495
Yes Yes 0.436 0.564
Yes Yes 0.360 0.640
Yes Yes 0.205 0.795
Yes No 0.537 0.463
Yes Yes 0.456 0.544
Yes No 0.588 0.412
Yes No 0.621 0.379
Yes Yes 0.335 0.665
Yes No 0.574 0.426
Yes No 0.695 0.305
Yes Yes 0.378 0.622
Yes No 0.728 0.272
Yes No 0.572 0.428
Yes Yes 0.354 0.646
Yes No 0.656 0.344
Yes Yes 0.380 0.620
Yes No 0.664 0.336
Yes No 0.598 0.402
Yes No 0.774 0.226
Yes No 0.531 0.469
Yes No 0.512 0.488
Yes No 0.571 0.429
Yes No 0.580 0.420
Yes Yes 0.428 0.572
Yes Yes 0.411 0.589
Yes No 0.675 0.325
Yes No 0.530 0.470
Yes No 0.540 0.460
Yes No 0.694 0.306
Yes Yes 0.449 0.551
Yes Yes 0.444 0.556
Yes Yes 0.320 0.680
Yes Yes 0.213 0.787
Yes Yes 0.324 0.676
Yes No 0.698 0.302
Yes No 0.569 0.431
Yes Yes 0.415 0.585
Yes No 0.767 0.233
Yes Yes 0.233 0.767
Yes Yes 0.497 0.503
Yes Yes 0.313 0.687
Yes No 0.562 0.438
Yes No 0.551 0.449
Yes No 0.502 0.498
Yes No 0.662 0.338
Yes No 0.553 0.447
Yes Yes 0.409 0.591
Yes No 0.518 0.482
Yes Yes 0.279 0.721
Yes Yes 0.260 0.740
Yes No 0.551 0.449
Yes No 0.506 0.494
Yes No 0.609 0.391
Yes Yes 0.450 0.550
Yes Yes 0.438 0.562
Yes Yes 0.255 0.745
Yes No 0.550 0.450
Yes Yes 0.400 0.600
Yes Yes 0.393 0.607
Yes Yes 0.414 0.586
Yes No 0.630 0.370
Yes No 0.517 0.483
Yes Yes 0.349 0.651
Yes Yes 0.170 0.830
Yes No 0.594 0.406
Yes Yes 0.426 0.574
Yes Yes 0.458 0.542
Yes No 0.702 0.298
Yes Yes 0.387 0.613
Yes Yes 0.460 0.540
Yes Yes 0.478 0.522
Yes Yes 0.268 0.732
Yes Yes 0.336 0.664
Yes Yes 0.380 0.620
Yes Yes 0.285 0.715
Yes Yes 0.145 0.855
Yes Yes 0.385 0.615
Yes Yes 0.379 0.621
Yes Yes 0.096 0.904
Yes Yes 0.379 0.621
Yes No 0.586 0.414
Yes Yes 0.418 0.582
Yes Yes 0.433 0.567
Yes No 0.500 0.500
Yes Yes 0.464 0.536
Yes Yes 0.406 0.594
Yes Yes 0.409 0.591
Yes Yes 0.415 0.585
Yes No 0.602 0.398
Yes Yes 0.475 0.525
Yes Yes 0.467 0.533
Yes No 0.580 0.420
Yes Yes 0.402 0.598
Yes Yes 0.409 0.591
Yes No 0.503 0.497
Yes Yes 0.459 0.541
Yes Yes 0.461 0.539
Yes Yes 0.490 0.510
Yes Yes 0.431 0.569
Yes Yes 0.476 0.524
Yes No 0.521 0.479
Yes Yes 0.458 0.542
Yes Yes 0.478 0.522
Yes No 0.567 0.433
Yes Yes 0.468 0.532
Yes No 0.546 0.454
Yes Yes 0.485 0.515
Yes No 0.525 0.475
Yes Yes 0.492 0.508
Yes No 0.537 0.463
Yes No 0.514 0.486
Yes No 0.561 0.439
Yes No 0.636 0.364
Yes No 0.508 0.492
Yes No 0.616 0.384
Yes No 0.643 0.357
Yes No 0.575 0.425
Yes Yes 0.491 0.509
Yes No 0.647 0.353
Yes No 0.505 0.495
Yes Yes 0.228 0.772
Yes Yes 0.229 0.771
Yes Yes 0.215 0.785
Yes Yes 0.436 0.564
Yes No 0.511 0.489
Yes No 0.589 0.411
Yes Yes 0.492 0.508
Yes No 0.583 0.417
Yes Yes 0.349 0.651
Yes Yes 0.470 0.530
Yes Yes 0.417 0.583
Yes Yes 0.343 0.657
Yes Yes 0.427 0.573
Yes Yes 0.381 0.619
Yes Yes 0.481 0.519
Yes No 0.548 0.452
Yes Yes 0.405 0.595
Yes Yes 0.404 0.596
Yes Yes 0.458 0.542
Yes Yes 0.405 0.595
Yes No 0.507 0.493
Yes Yes 0.475 0.525
Yes Yes 0.469 0.531
Yes Yes 0.478 0.522
Yes Yes 0.417 0.583
Yes Yes 0.431 0.569
Yes Yes 0.420 0.580
Yes Yes 0.427 0.573
Yes Yes 0.359 0.641
Yes Yes 0.313 0.687
Yes Yes 0.338 0.662
Yes Yes 0.435 0.565
Yes Yes 0.431 0.569
Yes Yes 0.428 0.572
Yes Yes 0.431 0.569
Yes Yes 0.423 0.577
Yes Yes 0.354 0.646
Yes Yes 0.319 0.681
Yes Yes 0.332 0.668
Yes Yes 0.347 0.653
Yes No 0.527 0.473
Yes No 0.520 0.480
Yes Yes 0.477 0.523
Yes Yes 0.472 0.528
Yes Yes 0.219 0.781
Yes Yes 0.260 0.740
Yes Yes 0.193 0.807
Yes Yes 0.209 0.791
Yes Yes 0.405 0.595
Yes Yes 0.388 0.612
Yes Yes 0.387 0.613
Yes Yes 0.391 0.609
Yes Yes 0.437 0.563
Yes Yes 0.436 0.564
Yes Yes 0.450 0.550
Yes Yes 0.401 0.599
Yes Yes 0.409 0.591
Yes Yes 0.422 0.578
Yes Yes 0.416 0.584
Yes Yes 0.404 0.596
Yes No 0.512 0.488
Yes Yes 0.436 0.564
Yes Yes 0.461 0.539
Yes No 0.534 0.466
Yes Yes 0.431 0.569
Yes Yes 0.426 0.574
Yes Yes 0.440 0.560
Yes Yes 0.434 0.566
Yes Yes 0.364 0.636
Yes Yes 0.395 0.605
Yes Yes 0.279 0.721
Yes Yes 0.360 0.640
Yes Yes 0.160 0.840
Yes Yes 0.174 0.826
Yes Yes 0.205 0.795
Yes Yes 0.240 0.760
Yes No 0.522 0.478
Yes No 0.531 0.469
Yes No 0.511 0.489
Yes No 0.513 0.487
Yes No 0.508 0.492
Yes Yes 0.499 0.501
Yes Yes 0.454 0.546
Yes Yes 0.455 0.545
Yes Yes 0.429 0.571
Yes No 0.578 0.422
Yes Yes 0.443 0.557
Yes No 0.543 0.457
Yes No 0.615 0.385
Yes No 0.605 0.395
Yes No 0.638 0.362
Yes No 0.567 0.433
Yes Yes 0.342 0.658
Yes Yes 0.292 0.708
Yes Yes 0.256 0.744
Yes Yes 0.300 0.700
Yes No 0.546 0.454
Yes No 0.569 0.431
Yes No 0.505 0.495
Yes No 0.538 0.462
Yes No 0.664 0.336
Yes No 0.665 0.335
Yes No 0.764 0.236
Yes No 0.675 0.325
Yes Yes 0.385 0.615
Yes Yes 0.403 0.597
Yes Yes 0.398 0.602
Yes Yes 0.499 0.501
Yes No 0.711 0.289
Yes No 0.592 0.408
Yes No 0.629 0.371
Yes No 0.715 0.285
Yes No 0.558 0.442
Yes Yes 0.443 0.557
Yes Yes 0.488 0.512
Yes No 0.589 0.411
Yes Yes 0.331 0.669
Yes Yes 0.369 0.631
Yes Yes 0.373 0.627
Yes Yes 0.288 0.712
Yes No 0.608 0.392
Yes No 0.678 0.322
Yes No 0.596 0.404
Yes No 0.691 0.309
Yes Yes 0.394 0.606
Yes Yes 0.375 0.625
Yes Yes 0.332 0.668
Yes Yes 0.374 0.626
Yes No 0.673 0.327
Yes No 0.658 0.342
Yes No 0.675 0.325
Yes No 0.624 0.376
Yes No 0.579 0.421
Yes No 0.594 0.406
Yes No 0.578 0.422
Yes No 0.588 0.412
Yes No 0.768 0.232
Yes No 0.671 0.329
Yes No 0.689 0.311
Yes No 0.761 0.239
Yes No 0.536 0.464
Yes No 0.538 0.462
Yes No 0.502 0.498
Yes Yes 0.446 0.554
Yes Yes 0.335 0.665
Yes No 0.525 0.475
Yes No 0.512 0.488
Yes No 0.518 0.482
Yes No 0.572 0.428
Yes No 0.564 0.436
Yes No 0.572 0.428
Yes Yes 0.360 0.640
Yes Yes 0.500 0.500
Yes No 0.565 0.435
Yes No 0.554 0.446
Yes Yes 0.459 0.541
Yes Yes 0.419 0.581
Yes Yes 0.369 0.631
Yes Yes 0.326 0.674
Yes Yes 0.441 0.559
Yes No 0.519 0.481
Yes Yes 0.446 0.554
Yes Yes 0.245 0.755
Yes Yes 0.481 0.519
Yes No 0.653 0.347
Yes No 0.593 0.407
Yes No 0.611 0.389
Yes No 0.581 0.419
Yes Yes 0.413 0.587
Yes Yes 0.457 0.543
Yes No 0.538 0.462
Yes Yes 0.483 0.517
Yes Yes 0.432 0.568
Yes Yes 0.439 0.561
Yes No 0.532 0.468
Yes No 0.537 0.463
Yes No 0.695 0.305
Yes No 0.695 0.305
Yes No 0.694 0.306
Yes No 0.639 0.361
Yes Yes 0.451 0.549
Yes Yes 0.415 0.585
Yes Yes 0.418 0.582
Yes Yes 0.451 0.549
Yes No 0.556 0.444
Yes Yes 0.404 0.596
Yes Yes 0.390 0.610
Yes No 0.538 0.462
Yes Yes 0.348 0.652
Yes Yes 0.260 0.740
Yes Yes 0.332 0.668
Yes Yes 0.387 0.613
Yes Yes 0.217 0.783
Yes Yes 0.309 0.691
Yes Yes 0.221 0.779
Yes Yes 0.230 0.770
Yes Yes 0.361 0.639
Yes Yes 0.326 0.674
Yes Yes 0.396 0.604
Yes Yes 0.275 0.725
Yes No 0.564 0.436
Yes No 0.676 0.324
Yes No 0.697 0.303
Yes No 0.636 0.364
Yes No 0.571 0.429
Yes No 0.535 0.465
Yes No 0.651 0.349
Yes No 0.582 0.418
Yes No 0.505 0.495
Yes Yes 0.447 0.553
Yes Yes 0.496 0.504
Yes Yes 0.388 0.612
Yes No 0.585 0.415
Yes No 0.749 0.251
Yes No 0.730 0.270
Yes No 0.731 0.269
Yes Yes 0.332 0.668
Yes Yes 0.235 0.765
Yes Yes 0.245 0.755
Yes Yes 0.265 0.735
Yes Yes 0.489 0.511
Yes Yes 0.460 0.540
Yes Yes 0.426 0.574
Yes Yes 0.463 0.537
Yes Yes 0.348 0.652
Yes Yes 0.316 0.684
Yes Yes 0.352 0.648
Yes Yes 0.378 0.622
Yes No 0.559 0.441
Yes No 0.560 0.440
Yes No 0.556 0.444
Yes No 0.579 0.421
Yes Yes 0.424 0.576
Yes No 0.568 0.432
Yes No 0.553 0.447
Yes No 0.599 0.401
Yes Yes 0.446 0.554
Yes No 0.502 0.498
Yes No 0.544 0.456
Yes No 0.505 0.495
Yes No 0.748 0.252
Yes No 0.599 0.401
Yes No 0.660 0.340
Yes No 0.599 0.401
Yes No 0.553 0.447
Yes No 0.626 0.374
Yes No 0.545 0.455
Yes No 0.553 0.447
Yes Yes 0.332 0.668
Yes Yes 0.404 0.596
Yes Yes 0.433 0.567
Yes Yes 0.436 0.564
Yes No 0.509 0.491
Yes Yes 0.391 0.609
Yes Yes 0.437 0.563
Yes No 0.502 0.498
Yes Yes 0.305 0.695
Yes Yes 0.375 0.625
Yes Yes 0.296 0.704
Yes Yes 0.280 0.720
Yes Yes 0.216 0.784
Yes Yes 0.262 0.738
Yes Yes 0.387 0.613
Yes Yes 0.288 0.712
Yes Yes 0.442 0.558
Yes No 0.551 0.449
Yes No 0.501 0.499
Yes No 0.549 0.451
Yes No 0.509 0.491
Yes No 0.650 0.350
Yes No 0.515 0.485
Yes No 0.577 0.423
Yes No 0.597 0.403
Yes No 0.562 0.438
Yes No 0.626 0.374
Yes Yes 0.484 0.516
Yes Yes 0.487 0.513
Yes No 0.512 0.488
Yes Yes 0.451 0.549
Yes Yes 0.488 0.512
Yes Yes 0.480 0.520
Yes Yes 0.396 0.604
Yes Yes 0.449 0.551
Yes Yes 0.487 0.513
Yes Yes 0.266 0.734
Yes Yes 0.339 0.661
Yes Yes 0.277 0.723
Yes Yes 0.278 0.722
Yes Yes 0.470 0.530
Yes No 0.569 0.431
Yes No 0.537 0.463
Yes No 0.550 0.450
Yes Yes 0.389 0.611
Yes Yes 0.394 0.606
Yes Yes 0.397 0.603
Yes Yes 0.366 0.634
Yes Yes 0.432 0.568
Yes Yes 0.399 0.601
Yes Yes 0.480 0.520
Yes Yes 0.489 0.511
Yes Yes 0.466 0.534
Yes Yes 0.407 0.593
Yes No 0.507 0.493
Yes No 0.556 0.444
Yes No 0.628 0.372
Yes No 0.625 0.375
Yes No 0.557 0.443
Yes No 0.689 0.311
Yes No 0.565 0.435
Yes No 0.502 0.498
Yes Yes 0.440 0.560
Yes Yes 0.489 0.511
Yes Yes 0.339 0.661
Yes Yes 0.373 0.627
Yes Yes 0.349 0.651
Yes Yes 0.403 0.597
Yes Yes 0.204 0.796
Yes Yes 0.252 0.748
Yes Yes 0.177 0.823
Yes Yes 0.369 0.631
Yes No 0.552 0.448
Yes No 0.576 0.424
Yes No 0.588 0.412
Yes No 0.580 0.420
Yes Yes 0.433 0.567
Yes Yes 0.435 0.565
Yes Yes 0.488 0.512
Yes Yes 0.365 0.635
Yes Yes 0.453 0.547
Yes Yes 0.436 0.564
Yes Yes 0.490 0.510
Yes Yes 0.483 0.517
Yes No 0.646 0.354
Yes No 0.667 0.333
Yes No 0.548 0.452
Yes No 0.696 0.304
Yes Yes 0.399 0.601
Yes Yes 0.372 0.628
Yes Yes 0.320 0.680
Yes Yes 0.325 0.675
Yes No 0.517 0.483
Yes Yes 0.482 0.518
Yes No 0.583 0.417
Yes Yes 0.436 0.564
Yes Yes 0.494 0.506
Yes Yes 0.477 0.523
Yes No 0.559 0.441
Yes No 0.507 0.493
Yes Yes 0.355 0.645
Yes Yes 0.331 0.669
Yes Yes 0.261 0.739
Yes Yes 0.344 0.656
Yes Yes 0.344 0.656
Yes Yes 0.370 0.630
Yes Yes 0.455 0.545
Yes Yes 0.342 0.658
Yes Yes 0.405 0.595
Yes Yes 0.395 0.605
Yes Yes 0.387 0.613
Yes Yes 0.396 0.604
Yes Yes 0.317 0.683
Yes Yes 0.423 0.577
Yes Yes 0.303 0.697
Yes Yes 0.301 0.699
Yes Yes 0.271 0.729
Yes Yes 0.217 0.783
Yes Yes 0.153 0.847
Yes Yes 0.176 0.824
Yes Yes 0.336 0.664
Yes Yes 0.280 0.720
Yes Yes 0.496 0.504
Yes Yes 0.298 0.702
Yes Yes 0.414 0.586
Yes Yes 0.462 0.538
Yes Yes 0.373 0.627
Yes Yes 0.366 0.634
Yes Yes 0.134 0.866
Yes Yes 0.272 0.728
Yes Yes 0.113 0.887
Yes Yes 0.252 0.748
Yes Yes 0.402 0.598
Yes Yes 0.351 0.649
Yes Yes 0.438 0.562
Yes Yes 0.439 0.561
describe(results_LRW)
##              vars    n mean   sd median trimmed  mad  min  max range  skew
## GDDiag*         1 1060 1.50 0.50   1.50    1.50 0.74 1.00 2.00  1.00  0.00
## .pred_class*    2 1060 1.47 0.50   1.00    1.47 0.00 1.00 2.00  1.00  0.11
## .pred_No        3 1060 0.50 0.14   0.51    0.50 0.14 0.10 0.93  0.83 -0.05
## .pred_Yes       4 1060 0.50 0.14   0.49    0.50 0.14 0.07 0.90  0.83  0.05
##              kurtosis   se
## GDDiag*         -2.00 0.02
## .pred_class*    -1.99 0.02
## .pred_No        -0.22 0.00
## .pred_Yes       -0.22 0.00
results_LRW%>% 
  conf_mat(truth = GDDiag, estimate = .pred_class)
##           Truth
## Prediction  No Yes
##        No  350 208
##        Yes 180 322
#Visualise Results
update_geom_defaults(geom = "rect", new = list(fill = "midnightblue", alpha = 0.7))
results_LRW%>% 
  conf_mat(GDDiag,.pred_class) %>% 
  autoplot()

ev_met1_LRW<-ev_met1(results_LRW,truth = GDDiag, estimate = .pred_class)
Rec_LRW<-yardstick::recall(results_LRW, GDDiag, .pred_class)
ACC_LRW<-yardstick::accuracy(results_LRW, GDDiag, .pred_class)
#Plot Roc_Curve
curve_LRW <- results_LRW %>% 
  roc_curve(GDDiag, .pred_No) %>% 
  autoplot
curve_LRW

auc_LRW <- results_LRW %>% 
  roc_auc(GDDiag, .pred_No)
LRMETW<-list(auc_LRW,ev_met1_LRW, Rec_LRW, ACC_LRW)
kable(RFMETW)
.metric .estimator .estimate
roc_auc binary 0.996
.metric .estimator .estimate
ppv binary 0.976
f_meas binary 0.977
.metric .estimator .estimate
recall binary 0.979
.metric .estimator .estimate
accuracy binary 0.977
LRMETCurVeW<-list(LRMETW, curve_LRW)
LRMETCurVeW
## [[1]]
## [[1]][[1]]
## # A tibble: 1 x 3
##   .metric .estimator .estimate
##   <chr>   <chr>          <dbl>
## 1 roc_auc binary         0.676
## 
## [[1]][[2]]
## # A tibble: 2 x 3
##   .metric .estimator .estimate
##   <chr>   <chr>          <dbl>
## 1 ppv     binary         0.627
## 2 f_meas  binary         0.643
## 
## [[1]][[3]]
## # A tibble: 1 x 3
##   .metric .estimator .estimate
##   <chr>   <chr>          <dbl>
## 1 recall  binary         0.660
## 
## [[1]][[4]]
## # A tibble: 1 x 3
##   .metric  .estimator .estimate
##   <chr>    <chr>          <dbl>
## 1 accuracy binary         0.634
## 
## 
## [[2]]

results_Lasso<-test_data_GD_b %>% select(GDDiag) %>% 
  bind_cols( Lasso_fit%>% 
              predict(new_data = test_data_GD_b)) %>% 
  bind_cols( Lasso_fit%>% 
             predict(new_data = test_data_GD_b, type = "prob"))
kable(results_Lasso)
GDDiag .pred_class .pred_No .pred_Yes
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
No No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
Yes No 0.5 0.5
describe(results_Lasso)
##              vars   n mean  sd median trimmed  mad min max range skew kurtosis
## GDDiag*         1 212  1.5 0.5    1.5     1.5 0.74 1.0 2.0     1    0    -2.01
## .pred_class*    2 212  1.0 0.0    1.0     1.0 0.00 1.0 1.0     0  NaN      NaN
## .pred_No        3 212  0.5 0.0    0.5     0.5 0.00 0.5 0.5     0  NaN      NaN
## .pred_Yes       4 212  0.5 0.0    0.5     0.5 0.00 0.5 0.5     0  NaN      NaN
##                se
## GDDiag*      0.03
## .pred_class* 0.00
## .pred_No     0.00
## .pred_Yes    0.00
results_Lasso %>% 
  conf_mat(truth = GDDiag, estimate = .pred_class)
##           Truth
## Prediction  No Yes
##        No  106 106
##        Yes   0   0
#Visualise Results
update_geom_defaults(geom = "rect", new = list(fill = "midnightblue", alpha = 0.7))
results_Lasso%>% 
  conf_mat(GDDiag,.pred_class) %>% 
  autoplot()

ev_met1_Lasso<-ev_met1(results_Lasso,truth = GDDiag, estimate = .pred_class)
ACC_Lasso<-yardstick::accuracy(results_Lasso, GDDiag,.pred_class)
Rec_Lasso<-yardstick::recall(results_Lasso, GDDiag, .pred_class)
#Plot Roc_Curve
curve_Lasso <- results_Lasso %>% 
  roc_curve(GDDiag, .pred_No) %>% 
  autoplot
curve_Lasso

auc_Lasso <- results_Lasso %>% 
  roc_auc(GDDiag, .pred_No)
LassoMET<-list(auc_Lasso,ev_met1_Lasso, Rec_Lasso, ACC_Lasso)
kable(LassoMET)
.metric .estimator .estimate
roc_auc binary 0.5
.metric .estimator .estimate
ppv binary 0.500
f_meas binary 0.667
.metric .estimator .estimate
recall binary 1
.metric .estimator .estimate
accuracy binary 0.5
LassoMETCurVe<-list(LassoMET, curve_Lasso)
LassoMETCurVe
## [[1]]
## [[1]][[1]]
## # A tibble: 1 x 3
##   .metric .estimator .estimate
##   <chr>   <chr>          <dbl>
## 1 roc_auc binary           0.5
## 
## [[1]][[2]]
## # A tibble: 2 x 3
##   .metric .estimator .estimate
##   <chr>   <chr>          <dbl>
## 1 ppv     binary         0.5  
## 2 f_meas  binary         0.667
## 
## [[1]][[3]]
## # A tibble: 1 x 3
##   .metric .estimator .estimate
##   <chr>   <chr>          <dbl>
## 1 recall  binary             1
## 
## [[1]][[4]]
## # A tibble: 1 x 3
##   .metric  .estimator .estimate
##   <chr>    <chr>          <dbl>
## 1 accuracy binary           0.5
## 
## 
## [[2]]

Lasso_fit_Test<-lasso_workflow%>%fit(test_data_GD_b)
Lasso_fit_Test
## == Workflow [trained] ==========================================================
## Preprocessor: Recipe
## Model: multinom_reg()
## 
## -- Preprocessor ----------------------------------------------------------------
## 4 Recipe Steps
## 
## * step_smote()
## * step_zv()
## * step_nzv()
## * step_corr()
## 
## -- Model -----------------------------------------------------------------------
## 
## Call:  glmnet::glmnet(x = maybe_matrix(x), y = y, family = "multinomial",      alpha = ~1) 
## 
##    Df  %Dev Lambda
## 1   0  0.00 0.1560
## 2   1  1.20 0.1420
## 3   1  2.20 0.1300
## 4   1  3.03 0.1180
## 5   1  3.73 0.1080
## 6   1  4.31 0.0982
## 7   1  4.80 0.0895
## 8   1  5.22 0.0815
## 9   1  5.56 0.0743
## 10  2  5.87 0.0677
## 11  2  6.71 0.0617
## 12  2  7.41 0.0562
## 13  2  8.01 0.0512
## 14  2  8.52 0.0466
## 15  2  8.95 0.0425
## 16  2  9.31 0.0387
## 17  2  9.62 0.0353
## 18  2  9.88 0.0321
## 19  2 10.10 0.0293
## 20  2 10.29 0.0267
## 21  2 10.45 0.0243
## 22  2 10.58 0.0222
## 23  2 10.69 0.0202
## 24  2 10.79 0.0184
## 25  2 10.86 0.0168
## 26  2 10.93 0.0153
## 27  2 10.99 0.0139
## 28  2 11.03 0.0127
## 29  2 11.07 0.0116
## 30  2 11.11 0.0105
## 31  2 11.13 0.0096
## 32  2 11.16 0.0087
## 33  2 11.18 0.0080
## 34  2 11.19 0.0073
## 35  2 11.21 0.0066
## 36  3 11.22 0.0060
## 37  3 11.23 0.0055
## 38  3 11.24 0.0050
## 39  4 11.25 0.0046
## 40  4 11.26 0.0042
## 41  5 11.26 0.0038
## 42  5 11.27 0.0034
## 43  5 11.27 0.0031
## 44  5 11.28 0.0029
## 45  5 11.28 0.0026
## 46  5 11.28 0.0024
## 
## ...
## and 6 more lines.
Lasso_fit_Test %>% 
  extract_fit_parsnip() %>% 
 #Make VIP plot
 vip()

results_NB <- test_data_GD_b %>% select(GDDiag) %>% 
 bind_cols(NB_fit %>% 
             predict(new_data = test_data_GD_b)) %>% 
  bind_cols( NB_fit%>% 
              predict(new_data = test_data_GD_b, type = "prob"))
kable(results_NB)
GDDiag .pred_class .pred_No .pred_Yes
No Yes 0.380 0.620
No Yes 0.427 0.573
No No 0.651 0.349
No No 0.748 0.252
No No 0.730 0.270
No No 0.904 0.096
No No 0.761 0.239
No Yes 0.348 0.652
No No 0.869 0.131
No No 0.668 0.332
No No 0.539 0.461
No Yes 0.386 0.614
No No 0.561 0.439
No No 0.940 0.060
No Yes 0.481 0.519
No Yes 0.213 0.787
No No 0.858 0.142
No No 0.535 0.465
No No 0.788 0.212
No No 0.886 0.114
No No 0.568 0.432
No No 0.910 0.090
No No 0.879 0.121
No Yes 0.427 0.573
No No 0.791 0.209
No No 0.534 0.466
No No 0.814 0.186
No Yes 0.397 0.603
No No 0.605 0.395
No No 0.791 0.209
No Yes 0.331 0.669
No No 0.710 0.290
No Yes 0.412 0.588
No No 0.787 0.213
No No 0.696 0.304
No No 0.710 0.290
No No 0.613 0.387
No Yes 0.306 0.694
No No 0.627 0.373
No No 0.927 0.073
No No 0.868 0.132
No Yes 0.379 0.621
No No 0.780 0.220
No No 0.783 0.217
No No 0.891 0.109
No Yes 0.313 0.687
No Yes 0.262 0.738
No Yes 0.317 0.683
No Yes 0.412 0.588
No Yes 0.335 0.665
No No 0.925 0.075
No No 0.910 0.090
No No 0.837 0.163
No No 0.624 0.376
No No 0.568 0.432
No Yes 0.364 0.636
No No 0.807 0.193
No Yes 0.375 0.625
No No 0.604 0.396
No Yes 0.410 0.590
No Yes 0.331 0.669
No No 0.604 0.396
No Yes 0.427 0.573
No No 0.968 0.032
No Yes 0.386 0.614
No No 0.858 0.142
No No 0.647 0.353
No Yes 0.290 0.710
No No 0.645 0.355
No No 0.667 0.333
No Yes 0.315 0.685
No No 0.784 0.216
No No 0.799 0.201
No No 0.833 0.167
No No 0.788 0.212
No No 0.784 0.216
No No 0.987 0.013
No Yes 0.317 0.683
No No 0.800 0.200
No No 0.868 0.132
No Yes 0.404 0.596
No Yes 0.277 0.723
No Yes 0.397 0.603
No Yes 0.499 0.501
No No 0.943 0.057
No No 0.538 0.462
No Yes 0.352 0.648
No Yes 0.303 0.697
No No 0.732 0.268
No No 0.678 0.322
No No 0.841 0.159
No No 0.848 0.152
No Yes 0.277 0.723
No No 0.854 0.146
No No 0.780 0.220
No No 0.610 0.390
No No 0.613 0.387
No Yes 0.412 0.588
No Yes 0.348 0.652
No No 0.820 0.180
No No 0.737 0.263
No Yes 0.394 0.606
No No 0.731 0.269
No Yes 0.176 0.824
No Yes 0.233 0.767
No No 0.624 0.376
Yes No 0.836 0.164
Yes No 0.829 0.171
Yes Yes 0.421 0.579
Yes Yes 0.215 0.785
Yes No 0.564 0.436
Yes Yes 0.454 0.546
Yes Yes 0.256 0.744
Yes Yes 0.308 0.692
Yes Yes 0.431 0.569
Yes Yes 0.314 0.686
Yes No 0.588 0.412
Yes Yes 0.408 0.592
Yes Yes 0.281 0.719
Yes Yes 0.356 0.644
Yes Yes 0.188 0.812
Yes No 0.728 0.272
Yes Yes 0.462 0.538
Yes No 0.591 0.409
Yes Yes 0.475 0.525
Yes No 0.952 0.048
Yes Yes 0.237 0.763
Yes Yes 0.232 0.768
Yes Yes 0.303 0.697
Yes No 0.552 0.448
Yes Yes 0.330 0.670
Yes Yes 0.433 0.567
Yes Yes 0.451 0.549
Yes Yes 0.493 0.507
Yes No 0.586 0.414
Yes Yes 0.339 0.661
Yes Yes 0.243 0.757
Yes Yes 0.246 0.754
Yes Yes 0.272 0.728
Yes Yes 0.210 0.790
Yes Yes 0.248 0.752
Yes Yes 0.171 0.829
Yes Yes 0.419 0.581
Yes No 0.526 0.474
Yes Yes 0.466 0.534
Yes Yes 0.455 0.545
Yes Yes 0.313 0.687
Yes Yes 0.264 0.736
Yes Yes 0.249 0.751
Yes Yes 0.380 0.620
Yes Yes 0.303 0.697
Yes Yes 0.346 0.654
Yes No 0.755 0.245
Yes Yes 0.456 0.544
Yes Yes 0.482 0.518
Yes Yes 0.270 0.730
Yes Yes 0.286 0.714
Yes Yes 0.389 0.611
Yes Yes 0.344 0.656
Yes No 0.523 0.477
Yes Yes 0.441 0.559
Yes Yes 0.421 0.579
Yes Yes 0.264 0.736
Yes Yes 0.431 0.569
Yes Yes 0.293 0.707
Yes Yes 0.365 0.635
Yes Yes 0.462 0.538
Yes Yes 0.271 0.729
Yes No 0.834 0.166
Yes Yes 0.449 0.551
Yes Yes 0.226 0.774
Yes Yes 0.394 0.606
Yes Yes 0.484 0.516
Yes Yes 0.436 0.564
Yes Yes 0.192 0.808
Yes Yes 0.220 0.780
Yes Yes 0.258 0.742
Yes Yes 0.356 0.644
Yes Yes 0.411 0.589
Yes Yes 0.318 0.682
Yes Yes 0.186 0.814
Yes Yes 0.260 0.740
Yes Yes 0.121 0.879
Yes No 0.734 0.266
Yes Yes 0.351 0.649
Yes Yes 0.305 0.695
Yes Yes 0.235 0.765
Yes Yes 0.273 0.727
Yes Yes 0.404 0.596
Yes Yes 0.354 0.646
Yes Yes 0.236 0.764
Yes Yes 0.394 0.606
Yes Yes 0.499 0.501
Yes Yes 0.338 0.662
Yes Yes 0.333 0.667
Yes Yes 0.392 0.608
Yes Yes 0.400 0.600
Yes Yes 0.264 0.736
Yes Yes 0.312 0.688
Yes No 0.625 0.375
Yes Yes 0.279 0.721
Yes No 0.508 0.492
Yes Yes 0.245 0.755
Yes Yes 0.212 0.788
Yes Yes 0.363 0.637
Yes Yes 0.177 0.823
Yes Yes 0.266 0.734
Yes Yes 0.156 0.844
Yes Yes 0.288 0.712
Yes Yes 0.345 0.655
Yes Yes 0.178 0.822
Yes No 0.535 0.465
describe(results_NB)
##              vars   n mean   sd median trimmed  mad  min  max range skew
## GDDiag*         1 212  1.5 0.50   1.50    1.50 0.74 1.00 2.00  1.00  0.0
## .pred_class*    2 212  1.6 0.49   2.00    1.62 0.00 1.00 2.00  1.00 -0.4
## .pred_No        3 212  0.5 0.22   0.43    0.48 0.23 0.12 0.99  0.87  0.5
## .pred_Yes       4 212  0.5 0.22   0.57    0.52 0.23 0.01 0.88  0.87 -0.5
##              kurtosis   se
## GDDiag*         -2.01 0.03
## .pred_class*    -1.85 0.03
## .pred_No        -1.00 0.02
## .pred_Yes       -1.00 0.02
results_NB%>% 
  conf_mat(truth = GDDiag, estimate = .pred_class)
##           Truth
## Prediction No Yes
##        No  68  17
##        Yes 38  89
#Visualise Results
update_geom_defaults(geom = "rect", new = list(fill = "midnightblue", alpha = 0.7))
results_NB%>% 
  conf_mat(GDDiag,.pred_class) %>% 
  autoplot()

ev_met1_NB<-ev_met1(results_NB,truth = GDDiag, estimate = .pred_class)
Rec_NB<-yardstick::recall(results_NB, GDDiag, .pred_class)
ACC_NB<-yardstick::accuracy(results_NB, GDDiag, .pred_class)
#Plot Roc_Curve
curve_NB <- results_NB %>% 
  roc_curve(GDDiag, .pred_No) %>% 
  autoplot
curve_NB

auc_NB <- results_NB %>% 
  roc_auc(GDDiag, .pred_No)
NBMET<-list(auc_NB,ev_met1_NB, Rec_NB, ACC_NB)
kable(NBMET)
.metric .estimator .estimate
roc_auc binary 0.788
.metric .estimator .estimate
ppv binary 0.800
f_meas binary 0.712
.metric .estimator .estimate
recall binary 0.642
.metric .estimator .estimate
accuracy binary 0.741
NBMETCurVe<-list(NBMET, curve_NB)
NBMETCurVe
## [[1]]
## [[1]][[1]]
## # A tibble: 1 x 3
##   .metric .estimator .estimate
##   <chr>   <chr>          <dbl>
## 1 roc_auc binary         0.788
## 
## [[1]][[2]]
## # A tibble: 2 x 3
##   .metric .estimator .estimate
##   <chr>   <chr>          <dbl>
## 1 ppv     binary         0.8  
## 2 f_meas  binary         0.712
## 
## [[1]][[3]]
## # A tibble: 1 x 3
##   .metric .estimator .estimate
##   <chr>   <chr>          <dbl>
## 1 recall  binary         0.642
## 
## [[1]][[4]]
## # A tibble: 1 x 3
##   .metric  .estimator .estimate
##   <chr>    <chr>          <dbl>
## 1 accuracy binary         0.741
## 
## 
## [[2]]

results_Kern<-test_data_GD_b %>% select(GDDiag) %>% 
  bind_cols (Kernel_fit%>% 
              predict(new_data = test_data_GD_b)) %>% 
  bind_cols(Kernel_fit%>% 
              predict(new_data = test_data_GD_b, type = "prob"))
kable(results_Kern)
GDDiag .pred_class .pred_No .pred_Yes
No No 0.634 0.366
No No 0.531 0.469
No No 0.539 0.461
No No 0.818 0.182
No No 0.574 0.426
No No 0.910 0.090
No No 0.700 0.300
No Yes 0.478 0.522
No No 0.633 0.367
No No 0.770 0.230
No Yes 0.507 0.493
No No 0.673 0.327
No Yes 0.387 0.613
No No 0.706 0.294
No Yes 0.371 0.629
No Yes 0.396 0.604
No No 0.643 0.357
No No 0.555 0.445
No No 0.681 0.319
No No 0.554 0.446
No No 0.877 0.123
No No 0.822 0.178
No No 0.803 0.197
No No 0.531 0.469
No No 0.718 0.282
No No 0.750 0.250
No No 0.735 0.265
No Yes 0.274 0.726
No No 0.826 0.174
No No 0.718 0.282
No Yes 0.269 0.731
No No 0.672 0.328
No Yes 0.284 0.716
No No 0.793 0.207
No No 0.762 0.238
No No 0.672 0.328
No No 0.912 0.088
No No 0.697 0.303
No No 0.559 0.441
No No 0.962 0.038
No No 0.694 0.306
No Yes 0.438 0.562
No No 0.668 0.332
No Yes 0.380 0.620
No No 0.841 0.159
No Yes 0.294 0.706
No Yes 0.505 0.495
No No 0.788 0.212
No Yes 0.480 0.520
No Yes 0.358 0.642
No No 0.797 0.203
No No 0.822 0.178
No No 0.592 0.408
No No 0.807 0.193
No No 0.654 0.346
No No 0.651 0.349
No No 0.541 0.459
No Yes 0.391 0.609
No No 0.550 0.450
No Yes 0.313 0.687
No Yes 0.179 0.821
No No 0.550 0.450
No No 0.531 0.469
No No 0.807 0.193
No No 0.673 0.327
No No 0.643 0.357
No No 0.603 0.397
No No 0.690 0.310
No Yes 0.421 0.579
No No 0.727 0.273
No No 0.549 0.451
No Yes 0.490 0.510
No No 0.661 0.339
No No 0.596 0.404
No No 0.681 0.319
No No 0.671 0.329
No No 0.853 0.147
No No 0.788 0.212
No No 0.804 0.196
No No 0.784 0.216
No Yes 0.303 0.697
No No 0.560 0.440
No Yes 0.274 0.726
No Yes 0.472 0.528
No No 0.707 0.293
No Yes 0.436 0.564
No Yes 0.436 0.564
No Yes 0.511 0.489
No No 0.550 0.450
No No 0.677 0.323
No No 0.626 0.374
No Yes 0.444 0.556
No No 0.560 0.440
No No 0.687 0.313
No No 0.693 0.307
No Yes 0.434 0.566
No No 0.912 0.088
No Yes 0.284 0.716
No Yes 0.345 0.655
No No 0.692 0.308
No No 0.748 0.252
No No 0.523 0.477
No No 0.563 0.437
No Yes 0.486 0.514
No Yes 0.138 0.862
No No 0.807 0.193
Yes No 0.616 0.384
Yes No 0.730 0.270
Yes No 0.529 0.471
Yes No 0.554 0.446
Yes No 0.527 0.473
Yes No 0.520 0.480
Yes Yes 0.376 0.624
Yes Yes 0.317 0.683
Yes No 0.585 0.415
Yes No 0.589 0.411
Yes No 0.543 0.457
Yes No 0.725 0.275
Yes Yes 0.331 0.669
Yes Yes 0.400 0.600
Yes Yes 0.489 0.511
Yes Yes 0.409 0.591
Yes Yes 0.474 0.526
Yes No 0.548 0.452
Yes Yes 0.447 0.553
Yes Yes 0.286 0.714
Yes No 0.553 0.447
Yes Yes 0.417 0.583
Yes No 0.596 0.404
Yes No 0.706 0.294
Yes Yes 0.445 0.555
Yes Yes 0.478 0.522
Yes Yes 0.485 0.515
Yes Yes 0.447 0.553
Yes Yes 0.423 0.577
Yes Yes 0.326 0.674
Yes Yes 0.331 0.669
Yes Yes 0.442 0.558
Yes Yes 0.223 0.777
Yes Yes 0.202 0.798
Yes Yes 0.215 0.785
Yes Yes 0.223 0.777
Yes Yes 0.221 0.779
Yes Yes 0.184 0.816
Yes Yes 0.369 0.631
Yes Yes 0.364 0.636
Yes Yes 0.413 0.587
Yes Yes 0.362 0.638
Yes Yes 0.381 0.619
Yes No 0.542 0.458
Yes Yes 0.425 0.575
Yes No 0.616 0.384
Yes Yes 0.187 0.813
Yes No 0.802 0.198
Yes No 0.702 0.298
Yes No 0.639 0.361
Yes Yes 0.400 0.600
Yes No 0.606 0.394
Yes Yes 0.242 0.758
Yes No 0.746 0.254
Yes No 0.564 0.436
Yes No 0.803 0.197
Yes Yes 0.358 0.642
Yes Yes 0.494 0.506
Yes No 0.528 0.472
Yes Yes 0.484 0.516
Yes Yes 0.459 0.541
Yes Yes 0.495 0.505
Yes Yes 0.498 0.502
Yes Yes 0.460 0.540
Yes No 0.540 0.460
Yes No 0.727 0.273
Yes No 0.735 0.265
Yes Yes 0.391 0.609
Yes Yes 0.299 0.701
Yes Yes 0.279 0.721
Yes Yes 0.343 0.657
Yes Yes 0.286 0.714
Yes No 0.660 0.340
Yes No 0.613 0.387
Yes Yes 0.285 0.715
Yes Yes 0.197 0.803
Yes Yes 0.246 0.754
Yes No 0.546 0.454
Yes No 0.578 0.422
Yes Yes 0.435 0.565
Yes No 0.634 0.366
Yes No 0.553 0.447
Yes Yes 0.341 0.659
Yes Yes 0.404 0.596
Yes No 0.568 0.432
Yes Yes 0.373 0.627
Yes Yes 0.456 0.544
Yes Yes 0.168 0.832
Yes Yes 0.244 0.756
Yes No 0.556 0.444
Yes Yes 0.330 0.670
Yes Yes 0.496 0.504
Yes No 0.707 0.293
Yes No 0.546 0.454
Yes Yes 0.246 0.754
Yes No 0.670 0.330
Yes Yes 0.264 0.736
Yes Yes 0.302 0.698
Yes Yes 0.437 0.563
Yes Yes 0.417 0.583
Yes Yes 0.255 0.745
Yes Yes 0.160 0.840
Yes Yes 0.166 0.834
Yes Yes 0.303 0.697
Yes Yes 0.144 0.856
Yes Yes 0.425 0.575
describe(results_Kern)
##              vars   n mean   sd median trimmed  mad  min  max range  skew
## GDDiag*         1 212 1.50 0.50   1.50    1.50 0.74 1.00 2.00  1.00  0.00
## .pred_class*    2 212 1.47 0.50   1.00    1.46 0.00 1.00 2.00  1.00  0.13
## .pred_No        3 212 0.52 0.19   0.53    0.52 0.21 0.14 0.96  0.82 -0.01
## .pred_Yes       4 212 0.48 0.19   0.47    0.48 0.21 0.04 0.86  0.82  0.01
##              kurtosis   se
## GDDiag*         -2.01 0.03
## .pred_class*    -1.99 0.03
## .pred_No        -0.78 0.01
## .pred_Yes       -0.78 0.01
results_Kern%>% 
  conf_mat(truth = GDDiag, estimate = .pred_class)
##           Truth
## Prediction No Yes
##        No  75  38
##        Yes 31  68
#Visualise Results
update_geom_defaults(geom = "rect", new = list(fill = "midnightblue", alpha = 0.7))
results_Kern%>% 
  conf_mat(GDDiag,.pred_class) %>% 
  autoplot()

ev_met1_Kern<-ev_met1(results_Kern,truth = GDDiag, estimate = .pred_class)
Rec_Kern<-yardstick::recall(results_Kern, GDDiag, .pred_class)
ACC_Kern<-yardstick::accuracy(results_Kern, GDDiag, .pred_class)
#Plot Roc_Curve
curve_Kern <- results_Kern %>% 
  roc_curve(GDDiag, .pred_No) %>% 
  autoplot
curve_Kern

auc_Kern <- results_Kern %>% 
  roc_auc(GDDiag, .pred_No)
KernMET<-list(auc_Kern,ev_met1_Kern, Rec_Kern, ACC_Kern)
kable(KernMET)
.metric .estimator .estimate
roc_auc binary 0.741
.metric .estimator .estimate
ppv binary 0.664
f_meas binary 0.685
.metric .estimator .estimate
recall binary 0.708
.metric .estimator .estimate
accuracy binary 0.675
KernMETCurVe<-list(KernMET, curve_LR)
KernMETCurVe
## [[1]]
## [[1]][[1]]
## # A tibble: 1 x 3
##   .metric .estimator .estimate
##   <chr>   <chr>          <dbl>
## 1 roc_auc binary         0.741
## 
## [[1]][[2]]
## # A tibble: 2 x 3
##   .metric .estimator .estimate
##   <chr>   <chr>          <dbl>
## 1 ppv     binary         0.664
## 2 f_meas  binary         0.685
## 
## [[1]][[3]]
## # A tibble: 1 x 3
##   .metric .estimator .estimate
##   <chr>   <chr>          <dbl>
## 1 recall  binary         0.708
## 
## [[1]][[4]]
## # A tibble: 1 x 3
##   .metric  .estimator .estimate
##   <chr>    <chr>          <dbl>
## 1 accuracy binary         0.675
## 
## 
## [[2]]

echo=FALSE
error=FALSE
warning=FALSE
options(scipen = 999, digits=3, max.print=999999, show.signif.stars=TRUE)

set.seed(123)
#xgb_tree

#first creating a tuning model
tune_xgb_t <- boost_tree(
  trees = 1000,
  tree_depth = tune(), min_n = tune(),
  loss_reduction = tune(),                     ## first three: model complexity
  sample_size = tune(), mtry = tune(),         ## randomness
  learn_rate = tune()                          ## step size
) %>%
  set_engine("xgboost") %>%
  set_mode("classification")


#second creating a tuning workflow
xgb_workflow_T<-workflow()%>% 
  add_recipe(GD_rec) %>% 
  add_model(tune_xgb_t)
#third calling the workflow
xgb_workflow_T
## == Workflow ====================================================================
## Preprocessor: Recipe
## Model: boost_tree()
## 
## -- Preprocessor ----------------------------------------------------------------
## 4 Recipe Steps
## 
## * step_smote()
## * step_zv()
## * step_nzv()
## * step_corr()
## 
## -- Model -----------------------------------------------------------------------
## Boosted Tree Model Specification (classification)
## 
## Main Arguments:
##   mtry = tune()
##   trees = 1000
##   min_n = tune()
##   tree_depth = tune()
##   learn_rate = tune()
##   loss_reduction = tune()
##   sample_size = tune()
## 
## Computational engine: xgboost
set.seed(345)
echo=FALSE
error=FALSE
warning=FALSE
options(scipen = 999, digits=3, max.print=999999, show.signif.stars=TRUE)

xgb_grid <- grid_latin_hypercube(
  tree_depth(),
  min_n(),
  loss_reduction(),
  sample_size = sample_prop(),
  finalize(mtry(), train_data_GD_b),
  learn_rate(),
  size = 30
)

xgb_res<- tune_grid(
  xgb_workflow_T,
  resamples = train_boot,
  grid = xgb_grid)
## Warning: package 'xgboost' was built under R version 4.1.3
xgb_res
## # Tuning results
## # Bootstrap sampling using stratification 
## # A tibble: 25 x 4
##    splits            id          .metrics           .notes          
##    <list>            <chr>       <list>             <list>          
##  1 <split [848/323]> Bootstrap01 <tibble [60 x 10]> <tibble [0 x 3]>
##  2 <split [848/309]> Bootstrap02 <tibble [60 x 10]> <tibble [0 x 3]>
##  3 <split [848/310]> Bootstrap03 <tibble [60 x 10]> <tibble [0 x 3]>
##  4 <split [848/307]> Bootstrap04 <tibble [60 x 10]> <tibble [0 x 3]>
##  5 <split [848/330]> Bootstrap05 <tibble [60 x 10]> <tibble [0 x 3]>
##  6 <split [848/305]> Bootstrap06 <tibble [60 x 10]> <tibble [0 x 3]>
##  7 <split [848/310]> Bootstrap07 <tibble [60 x 10]> <tibble [0 x 3]>
##  8 <split [848/317]> Bootstrap08 <tibble [60 x 10]> <tibble [0 x 3]>
##  9 <split [848/318]> Bootstrap09 <tibble [60 x 10]> <tibble [0 x 3]>
## 10 <split [848/316]> Bootstrap10 <tibble [60 x 10]> <tibble [0 x 3]>
## # i 15 more rows
set.seed(345)
echo=FALSE
error=FALSE
warning=FALSE
options(scipen = 999, digits=3, max.print=999999, show.signif.stars=TRUE)

set.seed(123)
xgb_res%>% 
  collect_metrics() %>% 
  slice_head(n = 10)
## # A tibble: 10 x 12
##     mtry min_n tree_depth    learn_rate loss_reduction sample_size .metric 
##    <int> <int>      <int>         <dbl>          <dbl>       <dbl> <chr>   
##  1     3    29          5 0.0000000133   0.000000749         0.674 accuracy
##  2     3    29          5 0.0000000133   0.000000749         0.674 roc_auc 
##  3     1    12         10 0.00000000155  0.00000000245       0.898 accuracy
##  4     1    12         10 0.00000000155  0.00000000245       0.898 roc_auc 
##  5     5     7          5 0.0000137      0.0000000203        0.372 accuracy
##  6     5     7          5 0.0000137      0.0000000203        0.372 roc_auc 
##  7     1     3         11 0.00268        0.495               0.336 accuracy
##  8     1     3         11 0.00268        0.495               0.336 roc_auc 
##  9     2    16         13 0.0000547      0.0229              0.955 accuracy
## 10     2    16         13 0.0000547      0.0229              0.955 roc_auc 
## # i 5 more variables: .estimator <chr>, mean <dbl>, n <int>, std_err <dbl>,
## #   .config <chr>
set.seed(345)
echo=FALSE
error=FALSE
warning=FALSE
options(scipen = 999, digits=3, max.print=999999, show.signif.stars=TRUE)

best_xgb <- xgb_res%>% 
  select_best("accuracy")
best_xgb
## # A tibble: 1 x 7
##    mtry min_n tree_depth learn_rate loss_reduction sample_size .config          
##   <int> <int>      <int>      <dbl>          <dbl>       <dbl> <chr>            
## 1     6    15         11     0.0425          0.171       0.455 Preprocessor1_Mo~
echo=FALSE
error=FALSE
warning=FALSE
options(scipen = 999, digits=3, max.print=999999, show.signif.stars=TRUE)
#11th Finalize the workoflow with the best model
final_wflow_xgb <- xgb_workflow_T %>% 
  finalize_workflow(best_xgb)
#12th Check the fit of the final Wflow on the training data
Tuned_xgb_fit<-final_wflow_xgb%>%fit(train_data_GD_b)
Tuned_xgb_fit
## == Workflow [trained] ==========================================================
## Preprocessor: Recipe
## Model: boost_tree()
## 
## -- Preprocessor ----------------------------------------------------------------
## 4 Recipe Steps
## 
## * step_smote()
## * step_zv()
## * step_nzv()
## * step_corr()
## 
## -- Model -----------------------------------------------------------------------
## ##### xgb.Booster
## raw: 835.9 Kb 
## call:
##   xgboost::xgb.train(params = list(eta = 0.042493237974773, max_depth = 11L, 
##     gamma = 0.171328019660432, colsample_bytree = 1, colsample_bynode = 1, 
##     min_child_weight = 15L, subsample = 0.455248485910706), data = x$data, 
##     nrounds = 1000, watchlist = x$watchlist, verbose = 0, nthread = 1, 
##     objective = "binary:logistic")
## params (as set within xgb.train):
##   eta = "0.042493237974773", max_depth = "11", gamma = "0.171328019660432", colsample_bytree = "1", colsample_bynode = "1", min_child_weight = "15", subsample = "0.455248485910706", nthread = "1", objective = "binary:logistic", validate_parameters = "TRUE"
## xgb.attributes:
##   niter
## callbacks:
##   cb.evaluation.log()
## # of features: 5 
## niter: 1000
## nfeatures : 5 
## evaluation_log:
##     iter training_logloss
##        1            0.688
##        2            0.682
## ---                      
##      999            0.293
##     1000            0.293
echo=FALSE
error=FALSE
warning=FALSE
options(scipen = 999, digits=3, max.print=999999, show.signif.stars=TRUE)
#Test the tuned AI on the test data
results_tuned_xgb<-test_data_GD_b %>% select(GDDiag) %>% 
  bind_cols (Tuned_xgb_fit%>% 
              predict(new_data = test_data_GD_b)) %>% 
  bind_cols(Tuned_xgb_fit%>% 
              predict(new_data = test_data_GD_b, type = "prob"))
kable(results_tuned_xgb)
GDDiag .pred_class .pred_No .pred_Yes
No No 0.761 0.239
No No 0.864 0.136
No No 0.588 0.412
No No 0.886 0.114
No No 0.625 0.375
No No 0.946 0.054
No No 0.927 0.073
No No 0.588 0.412
No No 0.951 0.049
No No 0.925 0.075
No No 0.904 0.096
No No 0.879 0.121
No No 0.865 0.135
No No 0.948 0.052
No No 0.832 0.168
No No 0.667 0.333
No No 0.883 0.117
No No 0.894 0.106
No No 0.946 0.054
No No 0.540 0.460
No No 0.919 0.081
No No 0.924 0.076
No No 0.854 0.146
No No 0.864 0.136
No No 0.944 0.056
No No 0.869 0.131
No No 0.965 0.035
No No 0.772 0.228
No No 0.650 0.350
No No 0.944 0.056
No No 0.792 0.208
No No 0.722 0.278
No Yes 0.300 0.700
No No 0.948 0.052
No No 0.958 0.042
No No 0.722 0.278
No No 0.889 0.111
No No 0.807 0.193
No No 0.581 0.419
No No 0.962 0.038
No No 0.856 0.144
No No 0.580 0.420
No No 0.871 0.129
No No 0.777 0.223
No No 0.928 0.072
No Yes 0.411 0.589
No Yes 0.371 0.629
No No 0.880 0.120
No No 0.559 0.441
No No 0.697 0.303
No No 0.902 0.098
No No 0.924 0.076
No No 0.906 0.094
No No 0.789 0.211
No No 0.868 0.132
No No 0.828 0.172
No No 0.784 0.216
No Yes 0.456 0.544
No No 0.710 0.290
No No 0.765 0.235
No No 0.645 0.355
No No 0.710 0.290
No No 0.864 0.136
No No 0.985 0.015
No No 0.879 0.121
No No 0.883 0.117
No No 0.912 0.088
No Yes 0.444 0.556
No No 0.807 0.193
No No 0.912 0.088
No Yes 0.435 0.565
No No 0.679 0.321
No No 0.857 0.143
No No 0.957 0.043
No No 0.946 0.054
No No 0.977 0.023
No No 0.964 0.036
No No 0.880 0.120
No No 0.914 0.086
No No 0.886 0.114
No No 0.552 0.448
No No 0.740 0.260
No No 0.772 0.228
No No 0.666 0.334
No No 0.770 0.230
No No 0.756 0.244
No Yes 0.497 0.503
No No 0.538 0.462
No No 0.863 0.137
No No 0.937 0.063
No No 0.574 0.426
No Yes 0.210 0.790
No No 0.740 0.260
No No 0.814 0.186
No No 0.677 0.323
No No 0.859 0.141
No No 0.889 0.111
No Yes 0.300 0.700
No No 0.571 0.429
No No 0.527 0.473
No No 0.888 0.112
No No 0.620 0.380
No No 0.946 0.054
No Yes 0.459 0.541
No No 0.640 0.360
No No 0.789 0.211
Yes No 0.856 0.144
Yes No 0.933 0.067
Yes No 0.731 0.269
Yes No 0.506 0.494
Yes No 0.588 0.412
Yes Yes 0.362 0.638
Yes No 0.543 0.457
Yes Yes 0.278 0.722
Yes Yes 0.459 0.541
Yes No 0.702 0.298
Yes No 0.526 0.474
Yes Yes 0.355 0.645
Yes Yes 0.240 0.760
Yes Yes 0.272 0.728
Yes Yes 0.046 0.954
Yes No 0.790 0.210
Yes No 0.756 0.244
Yes No 0.599 0.401
Yes No 0.572 0.428
Yes Yes 0.147 0.853
Yes Yes 0.295 0.705
Yes Yes 0.074 0.926
Yes Yes 0.486 0.514
Yes Yes 0.469 0.531
Yes Yes 0.079 0.921
Yes Yes 0.052 0.948
Yes Yes 0.357 0.643
Yes Yes 0.246 0.754
Yes Yes 0.103 0.897
Yes Yes 0.302 0.698
Yes Yes 0.023 0.977
Yes Yes 0.051 0.949
Yes Yes 0.202 0.798
Yes Yes 0.147 0.853
Yes Yes 0.165 0.835
Yes Yes 0.071 0.929
Yes Yes 0.068 0.932
Yes Yes 0.192 0.808
Yes Yes 0.157 0.843
Yes Yes 0.249 0.751
Yes Yes 0.064 0.936
Yes Yes 0.377 0.623
Yes Yes 0.254 0.746
Yes Yes 0.110 0.890
Yes Yes 0.089 0.911
Yes Yes 0.046 0.954
Yes Yes 0.081 0.919
Yes Yes 0.277 0.723
Yes Yes 0.251 0.749
Yes Yes 0.080 0.920
Yes Yes 0.072 0.928
Yes Yes 0.132 0.868
Yes Yes 0.078 0.922
Yes Yes 0.214 0.786
Yes Yes 0.112 0.888
Yes Yes 0.330 0.670
Yes Yes 0.176 0.824
Yes Yes 0.425 0.575
Yes Yes 0.267 0.733
Yes Yes 0.353 0.647
Yes Yes 0.089 0.911
Yes Yes 0.288 0.712
Yes No 0.579 0.421
Yes Yes 0.198 0.802
Yes Yes 0.293 0.707
Yes Yes 0.132 0.868
Yes Yes 0.311 0.689
Yes Yes 0.181 0.819
Yes Yes 0.038 0.962
Yes Yes 0.043 0.957
Yes Yes 0.107 0.893
Yes Yes 0.252 0.748
Yes Yes 0.103 0.897
Yes Yes 0.149 0.851
Yes Yes 0.056 0.944
Yes Yes 0.244 0.756
Yes Yes 0.086 0.914
Yes No 0.645 0.355
Yes Yes 0.184 0.816
Yes Yes 0.047 0.953
Yes Yes 0.054 0.946
Yes Yes 0.032 0.968
Yes Yes 0.019 0.981
Yes Yes 0.043 0.957
Yes Yes 0.263 0.737
Yes Yes 0.070 0.930
Yes Yes 0.208 0.792
Yes Yes 0.124 0.876
Yes Yes 0.059 0.941
Yes Yes 0.140 0.860
Yes Yes 0.011 0.989
Yes Yes 0.061 0.939
Yes Yes 0.162 0.838
Yes Yes 0.306 0.694
Yes Yes 0.111 0.889
Yes Yes 0.071 0.929
Yes Yes 0.038 0.962
Yes Yes 0.076 0.924
Yes Yes 0.040 0.960
Yes Yes 0.134 0.866
Yes Yes 0.051 0.949
Yes Yes 0.083 0.917
Yes Yes 0.054 0.946
Yes Yes 0.319 0.681
Yes Yes 0.036 0.964
Yes Yes 0.392 0.608
echo=FALSE
error=FALSE
warning=FALSE
options(scipen = 999, digits=3, max.print=999999, show.signif.stars=TRUE)

#Tuned xgb_Results
results_tuned_xgb %>% 
  conf_mat(truth = GDDiag, estimate = .pred_class)
##           Truth
## Prediction No Yes
##        No  96  14
##        Yes 10  92
#visualise CF
update_geom_defaults(geom = "rect", new = list(fill = "midnightblue", alpha = 0.7))
results_tuned_xgb %>% 
  conf_mat(GDDiag, .pred_class) %>% 
  autoplot()

echo=FALSE
error=FALSE
warning=FALSE
options(scipen = 999, digits=3, max.print=999999, show.signif.stars=TRUE)
#Plot Roc_Curve
curve_xgb_tuned <- results_tuned_xgb%>% 
  roc_curve(GDDiag, .pred_No) %>% 
  autoplot
curve_xgb_tuned

echo=FALSE
error=FALSE
warning=FALSE
options(scipen = 999, digits=3, max.print=999999, show.signif.stars=TRUE)
# Evaluate ROC_AUC
auc_xgb_tuned <- results_tuned_xgb %>% 
  roc_auc(GDDiag, .pred_No)
auc_xgb_tuned
## # A tibble: 1 x 3
##   .metric .estimator .estimate
##   <chr>   <chr>          <dbl>
## 1 roc_auc binary         0.955
echo=FALSE
error=FALSE
warning=FALSE
options(scipen = 999, digits=3, max.print=999999, show.signif.stars=TRUE)
ev_met1_Tunxgb<-ev_met1(results_tuned_xgb,truth = GDDiag, estimate = .pred_class)
Rec_Txgb<-yardstick::recall(results_tuned_xgb, GDDiag, .pred_class)
ACC_Txgb<-yardstick::accuracy(results_tuned_xgb, GDDiag, .pred_class)
TunxgbMET<-list(auc_xgb_tuned,ev_met1_Tunxgb, Rec_Txgb, ACC_Txgb)
kable(TunxgbMET)
.metric .estimator .estimate
roc_auc binary 0.955
.metric .estimator .estimate
ppv binary 0.873
f_meas binary 0.889
.metric .estimator .estimate
recall binary 0.906
.metric .estimator .estimate
accuracy binary 0.887
echo=FALSE
error=FALSE
warning=FALSE
options(scipen = 999, digits=3, max.print=999999, show.signif.stars=TRUE)

set.seed(123)


#first creating a tuning model
tune_LR <- logistic_reg(penalty = tune(), mixture = tune())%>% 
  set_mode("classification")%>%
  set_engine("glmnet")


#second creating a tuning workflow
LR_workflow_T<-workflow()%>% 
  add_recipe(GD_rec) %>% 
  add_model(tune_LR)
#third calling the workflow
LR_workflow_T
## == Workflow ====================================================================
## Preprocessor: Recipe
## Model: logistic_reg()
## 
## -- Preprocessor ----------------------------------------------------------------
## 4 Recipe Steps
## 
## * step_smote()
## * step_zv()
## * step_nzv()
## * step_corr()
## 
## -- Model -----------------------------------------------------------------------
## Logistic Regression Model Specification (classification)
## 
## Main Arguments:
##   penalty = tune()
##   mixture = tune()
## 
## Computational engine: glmnet
set.seed(345)
echo=FALSE
error=FALSE
warning=FALSE
options(scipen = 999, digits=3, max.print=999999, show.signif.stars=TRUE)

LR_grid <- grid_regular(parameters(tune_LR), levels = 20)
## Warning: `parameters.model_spec()` was deprecated in tune 0.1.6.9003.
## i Please use `hardhat::extract_parameter_set_dials()` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
LR_res<- tune_grid(
  LR_workflow_T,
  resamples = train_boot,
  grid = LR_grid)
## Warning: package 'glmnet' was built under R version 4.1.3
## Warning: package 'Matrix' was built under R version 4.1.3
LR_res
## # Tuning results
## # Bootstrap sampling using stratification 
## # A tibble: 25 x 4
##    splits            id          .metrics           .notes          
##    <list>            <chr>       <list>             <list>          
##  1 <split [848/323]> Bootstrap01 <tibble [800 x 6]> <tibble [0 x 3]>
##  2 <split [848/309]> Bootstrap02 <tibble [800 x 6]> <tibble [0 x 3]>
##  3 <split [848/310]> Bootstrap03 <tibble [800 x 6]> <tibble [0 x 3]>
##  4 <split [848/307]> Bootstrap04 <tibble [800 x 6]> <tibble [0 x 3]>
##  5 <split [848/330]> Bootstrap05 <tibble [800 x 6]> <tibble [0 x 3]>
##  6 <split [848/305]> Bootstrap06 <tibble [800 x 6]> <tibble [0 x 3]>
##  7 <split [848/310]> Bootstrap07 <tibble [800 x 6]> <tibble [0 x 3]>
##  8 <split [848/317]> Bootstrap08 <tibble [800 x 6]> <tibble [0 x 3]>
##  9 <split [848/318]> Bootstrap09 <tibble [800 x 6]> <tibble [0 x 3]>
## 10 <split [848/316]> Bootstrap10 <tibble [800 x 6]> <tibble [0 x 3]>
## # i 15 more rows
echo=FALSE
error=FALSE
warning=FALSE
options(scipen = 999, digits=3, max.print=999999, show.signif.stars=TRUE)

set.seed(123)
LR_res%>% 
  collect_metrics() %>% 
  slice_head(n = 10)
## # A tibble: 10 x 8
##     penalty mixture .metric  .estimator  mean     n std_err .config             
##       <dbl>   <dbl> <chr>    <chr>      <dbl> <int>   <dbl> <chr>               
##  1 1   e-10    0.05 accuracy binary     0.611    25 0.00557 Preprocessor1_Model~
##  2 1   e-10    0.05 roc_auc  binary     0.644    25 0.00494 Preprocessor1_Model~
##  3 3.36e-10    0.05 accuracy binary     0.611    25 0.00557 Preprocessor1_Model~
##  4 3.36e-10    0.05 roc_auc  binary     0.644    25 0.00494 Preprocessor1_Model~
##  5 1.13e- 9    0.05 accuracy binary     0.611    25 0.00557 Preprocessor1_Model~
##  6 1.13e- 9    0.05 roc_auc  binary     0.644    25 0.00494 Preprocessor1_Model~
##  7 3.79e- 9    0.05 accuracy binary     0.611    25 0.00557 Preprocessor1_Model~
##  8 3.79e- 9    0.05 roc_auc  binary     0.644    25 0.00494 Preprocessor1_Model~
##  9 1.27e- 8    0.05 accuracy binary     0.611    25 0.00557 Preprocessor1_Model~
## 10 1.27e- 8    0.05 roc_auc  binary     0.644    25 0.00494 Preprocessor1_Model~
echo=FALSE
error=FALSE
warning=FALSE
options(scipen = 999, digits=3, max.print=999999, show.signif.stars=TRUE)
best_LR <- LR_res %>% 
  select_best("accuracy")
best_LR
## # A tibble: 1 x 3
##   penalty mixture .config               
##     <dbl>   <dbl> <chr>                 
## 1 0.00234    0.55 Preprocessor1_Model215
echo=FALSE
error=FALSE
warning=FALSE
options(scipen = 999, digits=3, max.print=999999, show.signif.stars=TRUE)
#11th Finalize the workoflow with the best model
final_wflow_LR <- LR_workflow_T %>% 
  finalize_workflow(best_LR)
#12th Check the fit of the final Wflow on the training data
Tuned_LR_fit<-final_wflow_LR%>%fit(train_data_GD_b)
Tuned_LR_fit
## == Workflow [trained] ==========================================================
## Preprocessor: Recipe
## Model: logistic_reg()
## 
## -- Preprocessor ----------------------------------------------------------------
## 4 Recipe Steps
## 
## * step_smote()
## * step_zv()
## * step_nzv()
## * step_corr()
## 
## -- Model -----------------------------------------------------------------------
## 
## Call:  glmnet::glmnet(x = maybe_matrix(x), y = y, family = "binomial",      alpha = ~0.55) 
## 
##    Df %Dev Lambda
## 1   0 0.00 0.1690
## 2   1 0.33 0.1540
## 3   1 0.63 0.1400
## 4   1 0.89 0.1280
## 5   1 1.11 0.1160
## 6   2 1.56 0.1060
## 7   2 2.08 0.0966
## 8   2 2.54 0.0880
## 9   2 2.95 0.0802
## 10  2 3.32 0.0730
## 11  2 3.64 0.0666
## 12  2 3.92 0.0606
## 13  2 4.17 0.0553
## 14  3 4.39 0.0503
## 15  3 4.61 0.0459
## 16  3 4.80 0.0418
## 17  3 4.97 0.0381
## 18  4 5.12 0.0347
## 19  4 5.28 0.0316
## 20  4 5.43 0.0288
## 21  4 5.55 0.0263
## 22  4 5.65 0.0239
## 23  4 5.74 0.0218
## 24  4 5.82 0.0199
## 25  4 5.89 0.0181
## 26  4 5.94 0.0165
## 27  4 5.99 0.0150
## 28  4 6.03 0.0137
## 29  4 6.07 0.0125
## 30  4 6.09 0.0114
## 31  4 6.12 0.0104
## 32  4 6.14 0.0094
## 33  5 6.16 0.0086
## 34  5 6.17 0.0078
## 35  5 6.19 0.0071
## 36  5 6.20 0.0065
## 37  5 6.21 0.0059
## 38  5 6.22 0.0054
## 39  5 6.22 0.0049
## 40  5 6.23 0.0045
## 41  5 6.23 0.0041
## 42  5 6.24 0.0037
## 43  5 6.24 0.0034
## 44  5 6.24 0.0031
## 45  5 6.24 0.0028
## 46  5 6.25 0.0026
## 
## ...
## and 4 more lines.
echo=FALSE
error=FALSE
warning=FALSE
options(scipen = 999, digits=3, max.print=999999, show.signif.stars=TRUE)
#Test the tuned AI on the test data
results_tuned_LR<-test_data_GD_b %>% select(GDDiag) %>% 
  bind_cols (Tuned_LR_fit%>% 
              predict(new_data = test_data_GD_b)) %>% 
  bind_cols(Tuned_LR_fit%>% 
              predict(new_data = test_data_GD_b, type = "prob"))
kable(results_tuned_LR)
GDDiag .pred_class .pred_No .pred_Yes
No No 0.581 0.419
No No 0.559 0.441
No Yes 0.474 0.526
No No 0.739 0.261
No No 0.580 0.420
No No 0.847 0.153
No No 0.618 0.382
No No 0.536 0.464
No No 0.517 0.483
No No 0.695 0.305
No No 0.508 0.492
No No 0.610 0.390
No Yes 0.464 0.536
No No 0.508 0.492
No Yes 0.468 0.532
No Yes 0.418 0.582
No No 0.624 0.376
No No 0.522 0.478
No No 0.587 0.413
No Yes 0.497 0.503
No No 0.800 0.200
No No 0.637 0.363
No No 0.659 0.341
No No 0.559 0.441
No No 0.627 0.373
No No 0.697 0.303
No No 0.587 0.413
No Yes 0.378 0.622
No No 0.780 0.220
No No 0.627 0.373
No Yes 0.309 0.691
No No 0.590 0.410
No Yes 0.361 0.639
No No 0.731 0.269
No No 0.706 0.294
No No 0.590 0.410
No No 0.855 0.145
No No 0.690 0.310
No No 0.523 0.477
No No 0.920 0.080
No Yes 0.436 0.564
No No 0.509 0.491
No No 0.571 0.429
No Yes 0.309 0.691
No No 0.665 0.335
No Yes 0.402 0.598
No No 0.514 0.486
No No 0.678 0.322
No No 0.505 0.495
No Yes 0.383 0.617
No No 0.712 0.288
No No 0.637 0.363
No Yes 0.443 0.557
No No 0.767 0.233
No No 0.587 0.413
No No 0.653 0.347
No Yes 0.353 0.647
No Yes 0.427 0.573
No No 0.544 0.456
No Yes 0.314 0.686
No Yes 0.260 0.740
No No 0.544 0.456
No No 0.559 0.441
No No 0.716 0.284
No No 0.610 0.390
No No 0.624 0.376
No No 0.579 0.421
No No 0.626 0.374
No Yes 0.365 0.635
No No 0.565 0.435
No No 0.510 0.490
No No 0.614 0.386
No Yes 0.486 0.514
No No 0.549 0.451
No No 0.587 0.413
No No 0.602 0.398
No No 0.672 0.328
No No 0.678 0.322
No No 0.680 0.320
No No 0.685 0.315
No Yes 0.342 0.658
No No 0.544 0.456
No Yes 0.378 0.622
No Yes 0.498 0.502
No No 0.630 0.370
No Yes 0.487 0.513
No Yes 0.459 0.541
No No 0.519 0.481
No Yes 0.399 0.601
No No 0.620 0.380
No No 0.608 0.392
No Yes 0.467 0.533
No No 0.544 0.456
No No 0.593 0.407
No No 0.583 0.417
No Yes 0.447 0.553
No No 0.855 0.145
No Yes 0.361 0.639
No Yes 0.424 0.576
No No 0.541 0.459
No No 0.683 0.317
No No 0.546 0.454
No No 0.541 0.459
No Yes 0.481 0.519
No Yes 0.213 0.787
No No 0.767 0.233
Yes Yes 0.414 0.586
Yes No 0.542 0.458
Yes No 0.521 0.479
Yes No 0.517 0.483
Yes No 0.525 0.475
Yes No 0.502 0.498
Yes Yes 0.435 0.565
Yes Yes 0.364 0.636
Yes No 0.533 0.467
Yes No 0.583 0.417
Yes No 0.569 0.431
Yes No 0.691 0.309
Yes No 0.508 0.492
Yes Yes 0.411 0.589
Yes No 0.538 0.462
Yes Yes 0.447 0.553
Yes Yes 0.493 0.507
Yes Yes 0.500 0.500
Yes Yes 0.479 0.521
Yes Yes 0.377 0.623
Yes Yes 0.435 0.565
Yes Yes 0.411 0.589
Yes Yes 0.469 0.531
Yes No 0.577 0.423
Yes Yes 0.476 0.524
Yes Yes 0.485 0.515
Yes No 0.508 0.492
Yes Yes 0.491 0.509
Yes Yes 0.443 0.557
Yes Yes 0.420 0.580
Yes Yes 0.408 0.592
Yes Yes 0.483 0.517
Yes Yes 0.360 0.640
Yes Yes 0.316 0.684
Yes Yes 0.339 0.661
Yes Yes 0.356 0.644
Yes Yes 0.269 0.731
Yes Yes 0.219 0.781
Yes Yes 0.426 0.574
Yes Yes 0.420 0.580
Yes Yes 0.435 0.565
Yes Yes 0.425 0.575
Yes Yes 0.438 0.562
Yes No 0.518 0.482
Yes Yes 0.444 0.556
Yes No 0.603 0.397
Yes Yes 0.298 0.702
Yes No 0.756 0.244
Yes No 0.670 0.330
Yes No 0.623 0.377
Yes Yes 0.487 0.513
Yes No 0.585 0.415
Yes Yes 0.376 0.624
Yes No 0.670 0.330
Yes No 0.583 0.417
Yes No 0.754 0.246
Yes No 0.514 0.486
Yes No 0.558 0.442
Yes No 0.567 0.433
Yes Yes 0.446 0.554
Yes Yes 0.478 0.522
Yes No 0.604 0.396
Yes No 0.576 0.424
Yes Yes 0.483 0.517
Yes Yes 0.441 0.559
Yes No 0.691 0.309
Yes No 0.690 0.310
Yes Yes 0.425 0.575
Yes Yes 0.356 0.644
Yes Yes 0.341 0.659
Yes Yes 0.394 0.606
Yes Yes 0.367 0.633
Yes No 0.645 0.355
Yes No 0.581 0.419
Yes Yes 0.341 0.659
Yes Yes 0.275 0.725
Yes Yes 0.324 0.676
Yes No 0.558 0.442
Yes No 0.566 0.434
Yes Yes 0.445 0.555
Yes No 0.594 0.406
Yes No 0.551 0.449
Yes Yes 0.390 0.610
Yes Yes 0.445 0.555
Yes No 0.520 0.480
Yes Yes 0.400 0.600
Yes Yes 0.450 0.550
Yes Yes 0.271 0.729
Yes Yes 0.344 0.656
Yes No 0.535 0.465
Yes Yes 0.370 0.630
Yes No 0.507 0.493
Yes No 0.682 0.318
Yes No 0.567 0.433
Yes Yes 0.353 0.647
Yes No 0.641 0.359
Yes Yes 0.330 0.670
Yes Yes 0.336 0.664
Yes Yes 0.457 0.543
Yes Yes 0.398 0.602
Yes Yes 0.278 0.722
Yes Yes 0.161 0.839
Yes Yes 0.285 0.715
Yes Yes 0.493 0.507
Yes Yes 0.142 0.858
Yes Yes 0.440 0.560
echo=FALSE
error=FALSE
warning=FALSE
options(scipen = 999, digits=3, max.print=999999, show.signif.stars=TRUE)
#Tuned Results
results_tuned_LR %>% 
  conf_mat(truth = GDDiag, estimate = .pred_class)
##           Truth
## Prediction No Yes
##        No  75  41
##        Yes 31  65
#visualise CF
update_geom_defaults(geom = "rect", new = list(fill = "midnightblue", alpha = 0.7))
results_tuned_LR %>% 
  conf_mat(GDDiag, .pred_class) %>% 
  autoplot()

echo=FALSE
error=FALSE
warning=FALSE
options(scipen = 999, digits=3, max.print=999999, show.signif.stars=TRUE)
#Plot Roc_Curve
curve_LR_tuned <- results_tuned_LR%>% 
  roc_curve(GDDiag, .pred_No) %>% 
  autoplot
curve_LR_tuned

echo=FALSE
error=FALSE
warning=FALSE
options(scipen = 999, digits=3, max.print=999999, show.signif.stars=TRUE)
# Evaluate ROC_AUC
auc_LR_tuned <- results_tuned_LR %>% 
  roc_auc(GDDiag, .pred_No)
auc_LR_tuned
## # A tibble: 1 x 3
##   .metric .estimator .estimate
##   <chr>   <chr>          <dbl>
## 1 roc_auc binary         0.704
echo=FALSE
error=FALSE
warning=FALSE
options(scipen = 999, digits=3, max.print=999999, show.signif.stars=TRUE)
ev_met1_TunLR<-ev_met1(results_tuned_LR,truth = GDDiag, estimate = .pred_class)
Rec_TLR<-yardstick::recall(results_tuned_LR, GDDiag, .pred_class)
ACC_TLR<-yardstick::accuracy(results_tuned_LR, GDDiag, .pred_class)
TunLRMET<-list(auc_LR_tuned,ev_met1_TunLR, Rec_TLR, ACC_TLR)
kable(TunLRMET)
.metric .estimator .estimate
roc_auc binary 0.704
.metric .estimator .estimate
ppv binary 0.647
f_meas binary 0.676
.metric .estimator .estimate
recall binary 0.708
.metric .estimator .estimate
accuracy binary 0.66
set.seed(123)


#first creating a tuning model
tune_NB <- naive_Bayes(smoothness = tune(), Laplace = tune ())%>% 
  set_mode("classification")%>%
  set_engine("naivebayes")


#second creating a tuning workflow
NB_workflow_T<-workflow()%>% 
  add_recipe(GD_rec) %>% 
  add_model(tune_NB)
#third calling the workflow
NB_workflow_T
## == Workflow ====================================================================
## Preprocessor: Recipe
## Model: naive_Bayes()
## 
## -- Preprocessor ----------------------------------------------------------------
## 4 Recipe Steps
## 
## * step_smote()
## * step_zv()
## * step_nzv()
## * step_corr()
## 
## -- Model -----------------------------------------------------------------------
## Naive Bayes Model Specification (classification)
## 
## Main Arguments:
##   smoothness = tune()
##   Laplace = tune()
## 
## Computational engine: naivebayes
# fourth tuning/testing the workflow to the resamples
set.seed(345)
NB_grid <- grid_regular(parameters(tune_NB), levels = 20)

NB_res<- tune_grid(
  NB_workflow_T,
  resamples = train_boot,
  grid = NB_grid)
#Collect metrics
echo=FALSE
error=FALSE
warning=FALSE
options(scipen = 999, digits=3, max.print=999999, show.signif.stars=TRUE)

set.seed(123)
NB_res%>% 
  collect_metrics() %>% 
  slice_head(n = 10)
## # A tibble: 10 x 8
##    smoothness Laplace .metric  .estimator  mean     n std_err .config           
##         <dbl>   <dbl> <chr>    <chr>      <dbl> <int>   <dbl> <chr>             
##  1      0.5         0 accuracy binary     0.695    25 0.00462 Preprocessor1_Mod~
##  2      0.5         0 roc_auc  binary     0.757    25 0.00468 Preprocessor1_Mod~
##  3      0.553       0 accuracy binary     0.690    25 0.00506 Preprocessor1_Mod~
##  4      0.553       0 roc_auc  binary     0.753    25 0.00469 Preprocessor1_Mod~
##  5      0.605       0 accuracy binary     0.685    25 0.00511 Preprocessor1_Mod~
##  6      0.605       0 roc_auc  binary     0.748    25 0.00468 Preprocessor1_Mod~
##  7      0.658       0 accuracy binary     0.685    25 0.00488 Preprocessor1_Mod~
##  8      0.658       0 roc_auc  binary     0.746    25 0.00454 Preprocessor1_Mod~
##  9      0.711       0 accuracy binary     0.688    25 0.00464 Preprocessor1_Mod~
## 10      0.711       0 roc_auc  binary     0.744    25 0.00449 Preprocessor1_Mod~
echo=FALSE
error=FALSE
warning=FALSE
options(scipen = 999, digits=3, max.print=999999, show.signif.stars=TRUE)
best_NB <- NB_res %>% 
  select_best("accuracy")
best_NB
## # A tibble: 1 x 3
##   smoothness Laplace .config               
##        <dbl>   <dbl> <chr>                 
## 1        0.5       0 Preprocessor1_Model001
echo=FALSE
error=FALSE
warning=FALSE
options(scipen = 999, digits=3, max.print=999999, show.signif.stars=TRUE)
#11th Finalize the workoflow with the best model
final_wflow_NB <- NB_workflow_T %>% 
  finalize_workflow(best_NB)
#12th Check the fit of the final Wflow on the training data
Tuned_NB_fit<-final_wflow_NB%>%fit(train_data_GD_b)
Tuned_NB_fit
## == Workflow [trained] ==========================================================
## Preprocessor: Recipe
## Model: naive_Bayes()
## 
## -- Preprocessor ----------------------------------------------------------------
## 4 Recipe Steps
## 
## * step_smote()
## * step_zv()
## * step_nzv()
## * step_corr()
## 
## -- Model -----------------------------------------------------------------------
## 
## ================================== Naive Bayes ================================== 
##  
##  Call: 
## naive_bayes.default(x = maybe_data_frame(x), y = y, laplace = ~0, 
##     usekernel = TRUE, adjust = ~0.5)
## 
## --------------------------------------------------------------------------------- 
##  
## Laplace smoothing: 0
## 
## --------------------------------------------------------------------------------- 
##  
##  A priori probabilities: 
## 
##  No Yes 
## 0.5 0.5 
## 
## --------------------------------------------------------------------------------- 
##  
##  Tables: 
## 
## --------------------------------------------------------------------------------- 
##  ::: AGE::No (KDE)
## --------------------------------------------------------------------------------- 
## 
## Call:
##  density.default(x = x, adjust = ..1, na.rm = TRUE)
## 
## Data: x (424 obs.);  Bandwidth 'bw' = 0.1342
## 
##        x               y        
##  Min.   :-2.03   Min.   :0.000  
##  1st Qu.:-0.51   1st Qu.:0.036  
##  Median : 1.01   Median :0.122  
##  Mean   : 1.01   Mean   :0.165  
##  3rd Qu.: 2.53   3rd Qu.:0.271  
##  Max.   : 4.05   Max.   :0.492  
## 
## --------------------------------------------------------------------------------- 
##  ::: AGE::Yes (KDE)
## --------------------------------------------------------------------------------- 
## 
## Call:
##  density.default(x = x, adjust = ..1, na.rm = TRUE)
## 
## Data: x (424 obs.);  Bandwidth 'bw' = 0.08815
## 
##        x                y        
##  Min.   :-1.795   Min.   :0.000  
## 
## ...
## and 144 more lines.
echo=FALSE
error=FALSE
warning=FALSE
options(scipen = 999, digits=3, max.print=999999, show.signif.stars=TRUE)
#Test the tuned NB on the test data
results_tuned_NB<-test_data_GD_b %>% select(GDDiag) %>% 
  bind_cols (Tuned_NB_fit%>% 
              predict(new_data = test_data_GD_b)) %>% 
  bind_cols(Tuned_NB_fit%>% 
              predict(new_data = test_data_GD_b, type = "prob"))
kable(results_tuned_NB)
GDDiag .pred_class .pred_No .pred_Yes
No Yes 0.413 0.587
No No 0.656 0.344
No No 0.731 0.269
No No 0.872 0.128
No No 0.880 0.120
No No 0.960 0.040
No No 0.718 0.282
No Yes 0.273 0.727
No No 0.947 0.053
No No 0.687 0.313
No No 0.597 0.403
No Yes 0.317 0.683
No No 0.816 0.184
No No 0.976 0.024
No Yes 0.455 0.545
No Yes 0.222 0.778
No No 0.921 0.079
No No 0.657 0.343
No No 0.924 0.076
No No 0.902 0.098
No No 0.697 0.303
No No 0.990 0.010
No No 0.892 0.108
No No 0.656 0.344
No No 0.882 0.118
No No 0.533 0.467
No No 0.754 0.246
No Yes 0.447 0.553
No No 0.536 0.464
No No 0.882 0.118
No Yes 0.439 0.561
No No 0.705 0.295
No Yes 0.362 0.638
No No 0.875 0.125
No No 0.840 0.160
No No 0.705 0.295
No No 0.696 0.304
No Yes 0.358 0.642
No No 0.652 0.348
No No 0.997 0.003
No No 0.949 0.051
No Yes 0.386 0.614
No No 0.841 0.159
No No 0.911 0.089
No No 0.908 0.092
No Yes 0.354 0.646
No Yes 0.248 0.752
No Yes 0.225 0.775
No No 0.501 0.499
No Yes 0.398 0.602
No No 0.966 0.034
No No 0.990 0.010
No No 0.903 0.097
No No 0.665 0.335
No No 0.674 0.326
No Yes 0.415 0.585
No No 0.851 0.149
No Yes 0.338 0.662
No No 0.557 0.443
No Yes 0.314 0.686
No Yes 0.376 0.624
No No 0.557 0.443
No No 0.656 0.344
No No 0.997 0.003
No Yes 0.317 0.683
No No 0.921 0.079
No No 0.751 0.249
No Yes 0.226 0.774
No No 0.741 0.259
No No 0.693 0.307
No Yes 0.202 0.798
No No 0.907 0.093
No No 0.909 0.091
No No 0.967 0.033
No No 0.924 0.076
No No 0.849 0.151
No No 0.991 0.009
No Yes 0.225 0.775
No No 0.914 0.086
No No 0.921 0.079
No Yes 0.381 0.619
No Yes 0.314 0.686
No Yes 0.447 0.553
No No 0.654 0.346
No No 0.984 0.016
No No 0.531 0.469
No Yes 0.379 0.621
No Yes 0.255 0.745
No No 0.751 0.249
No No 0.806 0.194
No No 0.938 0.062
No No 0.903 0.097
No Yes 0.314 0.686
No No 0.932 0.068
No No 0.815 0.185
No No 0.720 0.280
No No 0.696 0.304
No Yes 0.362 0.638
No Yes 0.382 0.618
No No 0.786 0.214
No No 0.843 0.157
No No 0.544 0.456
No No 0.904 0.096
No Yes 0.151 0.849
No Yes 0.462 0.538
No No 0.665 0.335
Yes No 0.782 0.218
Yes No 0.864 0.136
Yes Yes 0.423 0.577
Yes Yes 0.177 0.823
Yes No 0.504 0.496
Yes Yes 0.312 0.688
Yes Yes 0.191 0.809
Yes Yes 0.155 0.845
Yes Yes 0.408 0.592
Yes Yes 0.318 0.682
Yes No 0.652 0.348
Yes Yes 0.386 0.614
Yes Yes 0.167 0.833
Yes Yes 0.262 0.738
Yes Yes 0.062 0.938
Yes No 0.691 0.309
Yes Yes 0.466 0.534
Yes No 0.622 0.378
Yes Yes 0.192 0.808
Yes No 0.942 0.058
Yes Yes 0.103 0.897
Yes Yes 0.263 0.737
Yes Yes 0.270 0.730
Yes No 0.576 0.424
Yes Yes 0.290 0.710
Yes No 0.567 0.433
Yes Yes 0.442 0.558
Yes No 0.576 0.424
Yes No 0.844 0.156
Yes Yes 0.267 0.733
Yes Yes 0.131 0.869
Yes Yes 0.164 0.836
Yes Yes 0.324 0.676
Yes Yes 0.088 0.912
Yes Yes 0.243 0.757
Yes Yes 0.060 0.940
Yes Yes 0.296 0.704
Yes No 0.710 0.290
Yes No 0.539 0.461
Yes No 0.551 0.449
Yes Yes 0.289 0.711
Yes Yes 0.211 0.789
Yes Yes 0.168 0.832
Yes Yes 0.437 0.563
Yes Yes 0.304 0.696
Yes Yes 0.385 0.615
Yes No 0.935 0.065
Yes Yes 0.449 0.551
Yes Yes 0.358 0.642
Yes Yes 0.217 0.783
Yes Yes 0.307 0.693
Yes Yes 0.313 0.687
Yes Yes 0.252 0.748
Yes No 0.542 0.458
Yes Yes 0.399 0.601
Yes Yes 0.386 0.614
Yes Yes 0.300 0.700
Yes Yes 0.443 0.557
Yes Yes 0.294 0.706
Yes Yes 0.452 0.548
Yes Yes 0.375 0.625
Yes Yes 0.243 0.757
Yes No 0.906 0.094
Yes No 0.518 0.482
Yes Yes 0.118 0.882
Yes Yes 0.351 0.649
Yes No 0.534 0.466
Yes Yes 0.445 0.555
Yes Yes 0.136 0.864
Yes Yes 0.166 0.834
Yes Yes 0.166 0.834
Yes Yes 0.422 0.578
Yes Yes 0.318 0.682
Yes Yes 0.230 0.770
Yes Yes 0.123 0.877
Yes Yes 0.372 0.628
Yes Yes 0.065 0.935
Yes No 0.776 0.224
Yes Yes 0.280 0.720
Yes Yes 0.395 0.605
Yes Yes 0.161 0.839
Yes Yes 0.254 0.746
Yes No 0.564 0.436
Yes Yes 0.346 0.654
Yes Yes 0.220 0.780
Yes Yes 0.474 0.526
Yes No 0.655 0.345
Yes Yes 0.328 0.672
Yes Yes 0.345 0.655
Yes Yes 0.398 0.602
Yes Yes 0.335 0.665
Yes Yes 0.189 0.811
Yes Yes 0.357 0.643
Yes No 0.767 0.233
Yes Yes 0.363 0.637
Yes No 0.535 0.465
Yes Yes 0.316 0.684
Yes Yes 0.137 0.863
Yes Yes 0.250 0.750
Yes Yes 0.147 0.853
Yes Yes 0.157 0.843
Yes Yes 0.130 0.870
Yes Yes 0.183 0.817
Yes Yes 0.217 0.783
Yes Yes 0.107 0.893
Yes Yes 0.496 0.504
echo=FALSE
error=FALSE
warning=FALSE
options(scipen = 999, digits=3, max.print=999999, show.signif.stars=TRUE)
#Tuned Results
results_tuned_NB %>% 
  conf_mat(truth = GDDiag, estimate = .pred_class)
##           Truth
## Prediction No Yes
##        No  74  24
##        Yes 32  82
#visualise CF
update_geom_defaults(geom = "rect", new = list(fill = "midnightblue", alpha = 0.7))
results_tuned_NB %>% 
  conf_mat(GDDiag, .pred_class) %>% 
  autoplot()

echo=FALSE
error=FALSE
warning=FALSE
options(scipen = 999, digits=3, max.print=999999, show.signif.stars=TRUE)
#Plot Roc_Curve
curve_NB_tuned <- results_tuned_NB %>% 
  roc_curve(GDDiag, .pred_No) %>% 
  autoplot
curve_NB_tuned

echo=FALSE
error=FALSE
warning=FALSE
options(scipen = 999, digits=3, max.print=999999, show.signif.stars=TRUE)
# Evaluate ROC_AUC
auc_NB_tuned <- results_tuned_NB %>% 
  roc_auc(GDDiag, .pred_No)
auc_NB_tuned
## # A tibble: 1 x 3
##   .metric .estimator .estimate
##   <chr>   <chr>          <dbl>
## 1 roc_auc binary         0.811
echo=FALSE
error=FALSE
warning=FALSE
options(scipen = 999, digits=3, max.print=999999, show.signif.stars=TRUE)
ev_met1_TunNB<-ev_met1(results_tuned_NB,truth = GDDiag, estimate = .pred_class)
Rec_TNB<-yardstick::recall(results_tuned_NB, GDDiag, .pred_class)
ACC_TNB<-yardstick::accuracy(results_tuned_NB, GDDiag, .pred_class)
TunNBMET<-list(auc_NB_tuned,ev_met1_TunNB, Rec_TNB, ACC_TNB)
kable(TunNBMET)
.metric .estimator .estimate
roc_auc binary 0.811
.metric .estimator .estimate
ppv binary 0.755
f_meas binary 0.725
.metric .estimator .estimate
recall binary 0.698
.metric .estimator .estimate
accuracy binary 0.736

Tune Random Forests

set.seed(123)

#first creating a tuning model
ranger_spec_T <- rand_forest(
  mtry = tune(),
  trees = 1000,
  min_n = tune()
)%>%
  set_mode("classification")%>%
  set_engine("ranger")
#second creating a tuning workflow
RF_workflow_T<-workflow() %>% 
  add_recipe(GD_rec) %>% 
  add_model(ranger_spec_T)
#third calling the workflow
RF_workflow_T
## == Workflow ====================================================================
## Preprocessor: Recipe
## Model: rand_forest()
## 
## -- Preprocessor ----------------------------------------------------------------
## 4 Recipe Steps
## 
## * step_smote()
## * step_zv()
## * step_nzv()
## * step_corr()
## 
## -- Model -----------------------------------------------------------------------
## Random Forest Model Specification (classification)
## 
## Main Arguments:
##   mtry = tune()
##   trees = 1000
##   min_n = tune()
## 
## Computational engine: ranger
# fourth tuning/testing the workflow to the resamples
set.seed(345)
RF_res <- tune_grid(
  RF_workflow_T,
  resamples = train_boot,
  grid = 20
)
## i Creating pre-processing data to finalize unknown parameter: mtry
#Fifth collect and visualize tuning metrics
RF_res %>%
  collect_metrics() %>%
  filter(.metric == "accuracy") %>%
  select(mean, min_n, mtry) %>%
  pivot_longer(min_n:mtry,
    values_to = "value",
    names_to = "parameter"
  )%>%
  ggplot(aes(value, mean, color = parameter)) +
  geom_point(show.legend = FALSE) +
  facet_wrap(~parameter, scales = "free_x") +
  labs(x = NULL, y = "Accuracy")

#Fifth for collecting tuning metrics
RF_res %>% 
  collect_metrics() %>% 
  slice_head(n = 10)
## # A tibble: 10 x 8
##     mtry min_n .metric  .estimator  mean     n std_err .config              
##    <int> <int> <chr>    <chr>      <dbl> <int>   <dbl> <chr>                
##  1     2    35 accuracy binary     0.826    25 0.00460 Preprocessor1_Model01
##  2     2    35 roc_auc  binary     0.910    25 0.00374 Preprocessor1_Model01
##  3     4    19 accuracy binary     0.839    25 0.00390 Preprocessor1_Model02
##  4     4    19 roc_auc  binary     0.920    25 0.00285 Preprocessor1_Model02
##  5     4    37 accuracy binary     0.814    25 0.00453 Preprocessor1_Model03
##  6     4    37 roc_auc  binary     0.898    25 0.00361 Preprocessor1_Model03
##  7     4    20 accuracy binary     0.839    25 0.00391 Preprocessor1_Model04
##  8     4    20 roc_auc  binary     0.918    25 0.00291 Preprocessor1_Model04
##  9     2    32 accuracy binary     0.830    25 0.00446 Preprocessor1_Model05
## 10     2    32 roc_auc  binary     0.913    25 0.00357 Preprocessor1_Model05
#Nineth show the best model
RF_res %>% 
  show_best("accuracy")
## # A tibble: 5 x 8
##    mtry min_n .metric  .estimator  mean     n std_err .config              
##   <int> <int> <chr>    <chr>      <dbl> <int>   <dbl> <chr>                
## 1     1     6 accuracy binary     0.884    25 0.00349 Preprocessor1_Model08
## 2     2     3 accuracy binary     0.876    25 0.00351 Preprocessor1_Model14
## 3     3     8 accuracy binary     0.863    25 0.00331 Preprocessor1_Model19
## 4     5     5 accuracy binary     0.863    25 0.00345 Preprocessor1_Model18
## 5     2    15 accuracy binary     0.858    25 0.00369 Preprocessor1_Model17
# Tenth Select best model hyperparameters
best_RF <- RF_res %>% 
  select_best("accuracy")
best_RF
## # A tibble: 1 x 3
##    mtry min_n .config              
##   <int> <int> <chr>                
## 1     1     6 Preprocessor1_Model08
#11th Finalize the workoflow with the best SVM
final_wflow_RF <- RF_workflow_T %>% 
  finalize_workflow(best_RF)
#12th Check the fit of the final Wflow on the training data
Tuned_RF_fit<-final_wflow_RF%>%fit(train_data_GD_b)
Tuned_RF_fit
## == Workflow [trained] ==========================================================
## Preprocessor: Recipe
## Model: rand_forest()
## 
## -- Preprocessor ----------------------------------------------------------------
## 4 Recipe Steps
## 
## * step_smote()
## * step_zv()
## * step_nzv()
## * step_corr()
## 
## -- Model -----------------------------------------------------------------------
## Ranger result
## 
## Call:
##  ranger::ranger(x = maybe_data_frame(x), y = y, mtry = min_cols(~1L,      x), num.trees = ~1000, min.node.size = min_rows(~6L, x),      num.threads = 1, verbose = FALSE, seed = sample.int(10^5,          1), probability = TRUE) 
## 
## Type:                             Probability estimation 
## Number of trees:                  1000 
## Sample size:                      848 
## Number of independent variables:  5 
## Mtry:                             1 
## Target node size:                 6 
## Variable importance mode:         none 
## Splitrule:                        gini 
## OOB prediction error (Brier s.):  0.0814
#Test the tuned AI on the test data
results_tuned_RF<-test_data_GD_b %>% select(GDDiag) %>% 
  bind_cols (Tuned_RF_fit%>% 
              predict(new_data = test_data_GD_b)) %>% 
  bind_cols(Tuned_RF_fit%>% 
              predict(new_data = test_data_GD_b, type = "prob"))
kable(results_tuned_RF)
GDDiag .pred_class .pred_No .pred_Yes
No No 0.824 0.176
No No 0.870 0.130
No No 0.898 0.102
No No 0.819 0.181
No No 0.695 0.305
No No 0.931 0.069
No No 0.899 0.101
No No 0.676 0.324
No No 0.970 0.030
No No 0.947 0.053
No No 0.785 0.215
No No 0.861 0.139
No No 0.834 0.166
No No 0.947 0.053
No No 0.788 0.212
No No 0.635 0.365
No No 0.943 0.057
No No 0.792 0.208
No No 0.978 0.022
No No 0.675 0.325
No No 0.847 0.153
No No 0.946 0.054
No No 0.968 0.032
No No 0.870 0.130
No No 0.914 0.086
No No 0.866 0.134
No No 0.966 0.034
No No 0.838 0.162
No No 0.792 0.208
No No 0.914 0.086
No No 0.882 0.118
No No 0.742 0.258
No Yes 0.291 0.709
No No 0.932 0.068
No No 0.952 0.048
No No 0.742 0.258
No No 0.759 0.241
No No 0.894 0.106
No No 0.706 0.294
No No 0.844 0.156
No No 0.897 0.103
No No 0.677 0.323
No No 0.890 0.110
No No 0.745 0.255
No No 0.968 0.032
No No 0.711 0.289
No No 0.680 0.320
No No 0.820 0.180
No No 0.512 0.488
No No 0.609 0.391
No No 0.937 0.063
No No 0.946 0.054
No No 0.918 0.082
No No 0.881 0.119
No No 0.803 0.197
No No 0.770 0.230
No No 0.942 0.058
No Yes 0.489 0.511
No No 0.679 0.321
No No 0.914 0.086
No No 0.734 0.266
No No 0.679 0.321
No No 0.870 0.130
No No 0.980 0.020
No No 0.861 0.139
No No 0.943 0.057
No No 0.901 0.099
No Yes 0.321 0.679
No No 0.863 0.137
No No 0.928 0.072
No No 0.549 0.451
No No 0.865 0.135
No No 0.912 0.088
No No 0.955 0.045
No No 0.978 0.022
No No 0.936 0.064
No No 0.940 0.060
No No 0.820 0.180
No No 0.928 0.072
No No 0.913 0.087
No No 0.790 0.210
No No 0.805 0.195
No No 0.838 0.162
No No 0.699 0.301
No No 0.889 0.111
No No 0.575 0.425
No Yes 0.458 0.542
No No 0.562 0.438
No No 0.906 0.094
No No 0.912 0.088
No No 0.826 0.174
No Yes 0.448 0.552
No No 0.805 0.195
No No 0.940 0.060
No No 0.892 0.108
No No 0.784 0.216
No No 0.759 0.241
No Yes 0.291 0.709
No Yes 0.397 0.603
No No 0.922 0.078
No No 0.974 0.026
No Yes 0.413 0.587
No No 0.887 0.113
No No 0.734 0.266
No No 0.862 0.138
No No 0.881 0.119
Yes No 0.714 0.286
Yes No 0.918 0.082
Yes Yes 0.340 0.660
Yes Yes 0.260 0.740
Yes Yes 0.220 0.780
Yes Yes 0.280 0.720
Yes Yes 0.284 0.716
Yes Yes 0.373 0.627
Yes Yes 0.432 0.568
Yes Yes 0.496 0.504
Yes Yes 0.473 0.527
Yes No 0.567 0.433
Yes Yes 0.175 0.825
Yes Yes 0.284 0.716
Yes Yes 0.188 0.812
Yes No 0.593 0.407
Yes Yes 0.406 0.594
Yes Yes 0.486 0.514
Yes Yes 0.246 0.754
Yes Yes 0.162 0.838
Yes Yes 0.298 0.702
Yes Yes 0.135 0.865
Yes Yes 0.146 0.854
Yes No 0.572 0.428
Yes Yes 0.051 0.949
Yes Yes 0.088 0.912
Yes Yes 0.245 0.755
Yes Yes 0.125 0.875
Yes Yes 0.207 0.793
Yes Yes 0.254 0.746
Yes Yes 0.056 0.944
Yes Yes 0.118 0.882
Yes Yes 0.238 0.762
Yes Yes 0.083 0.917
Yes Yes 0.170 0.830
Yes Yes 0.060 0.940
Yes Yes 0.196 0.804
Yes Yes 0.438 0.562
Yes Yes 0.108 0.892
Yes Yes 0.308 0.692
Yes Yes 0.255 0.745
Yes Yes 0.210 0.790
Yes Yes 0.138 0.862
Yes Yes 0.276 0.724
Yes Yes 0.043 0.957
Yes Yes 0.104 0.896
Yes Yes 0.256 0.744
Yes Yes 0.226 0.774
Yes Yes 0.229 0.771
Yes Yes 0.171 0.829
Yes Yes 0.077 0.923
Yes Yes 0.156 0.844
Yes Yes 0.105 0.895
Yes Yes 0.084 0.916
Yes Yes 0.191 0.809
Yes Yes 0.444 0.556
Yes Yes 0.064 0.936
Yes Yes 0.171 0.829
Yes Yes 0.130 0.870
Yes Yes 0.212 0.788
Yes Yes 0.200 0.800
Yes Yes 0.099 0.901
Yes Yes 0.381 0.619
Yes Yes 0.197 0.803
Yes Yes 0.396 0.604
Yes Yes 0.189 0.811
Yes Yes 0.289 0.711
Yes Yes 0.143 0.857
Yes Yes 0.120 0.880
Yes Yes 0.051 0.949
Yes Yes 0.249 0.751
Yes Yes 0.202 0.798
Yes Yes 0.324 0.676
Yes Yes 0.145 0.855
Yes Yes 0.121 0.879
Yes Yes 0.268 0.732
Yes Yes 0.101 0.899
Yes Yes 0.441 0.559
Yes Yes 0.102 0.898
Yes Yes 0.241 0.759
Yes Yes 0.115 0.885
Yes Yes 0.047 0.953
Yes Yes 0.117 0.883
Yes Yes 0.263 0.737
Yes Yes 0.167 0.833
Yes Yes 0.374 0.626
Yes Yes 0.349 0.651
Yes Yes 0.129 0.871
Yes Yes 0.184 0.816
Yes Yes 0.351 0.649
Yes Yes 0.114 0.886
Yes Yes 0.278 0.722
Yes Yes 0.357 0.643
Yes Yes 0.441 0.559
Yes Yes 0.153 0.847
Yes Yes 0.235 0.765
Yes Yes 0.136 0.864
Yes Yes 0.053 0.947
Yes Yes 0.284 0.716
Yes Yes 0.239 0.761
Yes Yes 0.166 0.834
Yes Yes 0.090 0.910
Yes Yes 0.081 0.919
Yes Yes 0.121 0.879
Yes Yes 0.085 0.915
Yes Yes 0.056 0.944

`

#Tuned__Results
results_tuned_RF %>% 
  conf_mat(truth = GDDiag, estimate = .pred_class)
##           Truth
## Prediction  No Yes
##        No   98   5
##        Yes   8 101
#visualise CF
update_geom_defaults(geom = "rect", new = list(fill = "midnightblue", alpha = 0.7))
results_tuned_RF %>% 
  conf_mat(GDDiag, .pred_class) %>% 
  autoplot()

#Plot Roc_Curve
curve_RF_tuned <- results_tuned_RF %>% 
  roc_curve(GDDiag, .pred_No) %>% 
  autoplot
curve_RF_tuned

# Evaluate ROC_AOC
auc_RF_tuned <- results_tuned_RF %>% 
  roc_auc(GDDiag, .pred_No)
ev_met1_TunRF<-ev_met1(results_tuned_RF,truth = GDDiag, estimate = .pred_class)
Rec_TRF<-yardstick::recall(results_tuned_RF, GDDiag, .pred_class)
ACC_TRF<-yardstick::accuracy(results_tuned_RF, GDDiag, .pred_class)
TunRFMET<-list(auc_RF_tuned,ev_met1_TunRF, Rec_TRF, ACC_TRF)
kable(TunRFMET)
.metric .estimator .estimate
roc_auc binary 0.981
.metric .estimator .estimate
ppv binary 0.951
f_meas binary 0.938
.metric .estimator .estimate
recall binary 0.925
.metric .estimator .estimate
accuracy binary 0.939
set.seed(123)


#first creating a tuning model
tune_Lasso <- multinom_reg(penalty =tune(), mixture = 1)%>%
  set_mode("classification")%>%
  set_engine("glmnet")

#second creating a tuning workflow
Lasso_workflow_T<-workflow()%>% 
  add_recipe(GD_rec) %>% 
  add_model(tune_Lasso)
#third calling the workflow
Lasso_workflow_T
## == Workflow ====================================================================
## Preprocessor: Recipe
## Model: multinom_reg()
## 
## -- Preprocessor ----------------------------------------------------------------
## 4 Recipe Steps
## 
## * step_smote()
## * step_zv()
## * step_nzv()
## * step_corr()
## 
## -- Model -----------------------------------------------------------------------
## Multinomial Regression Model Specification (classification)
## 
## Main Arguments:
##   penalty = tune()
##   mixture = 1
## 
## Computational engine: glmnet

Define the Lamda grid

set.seed(123)
lamda_grid <- grid_regular(penalty(), levels = 50)
lamda_grid
## # A tibble: 50 x 1
##     penalty
##       <dbl>
##  1 1   e-10
##  2 1.60e-10
##  3 2.56e-10
##  4 4.09e-10
##  5 6.55e-10
##  6 1.05e- 9
##  7 1.68e- 9
##  8 2.68e- 9
##  9 4.29e- 9
## 10 6.87e- 9
## # i 40 more rows

Tune the grid using our workflow object

echo=FALSE
error=FALSE
warning=FALSE
options(scipen = 999, digits=3, max.print=999999, show.signif.stars=TRUE)
doParallel::registerDoParallel()

set.seed(123)
lasso_grid <- tune_grid(
  Lasso_workflow_T,
  resamples = train_boot,
  grid = lamda_grid)

lasso_grid %>%
  collect_metrics()
## # A tibble: 100 x 7
##     penalty .metric  .estimator  mean     n std_err .config              
##       <dbl> <chr>    <chr>      <dbl> <int>   <dbl> <chr>                
##  1 1   e-10 accuracy binary     0.612    25 0.00547 Preprocessor1_Model01
##  2 1   e-10 roc_auc  binary     0.645    25 0.00494 Preprocessor1_Model01
##  3 1.60e-10 accuracy binary     0.612    25 0.00547 Preprocessor1_Model02
##  4 1.60e-10 roc_auc  binary     0.645    25 0.00494 Preprocessor1_Model02
##  5 2.56e-10 accuracy binary     0.612    25 0.00547 Preprocessor1_Model03
##  6 2.56e-10 roc_auc  binary     0.645    25 0.00494 Preprocessor1_Model03
##  7 4.09e-10 accuracy binary     0.612    25 0.00547 Preprocessor1_Model04
##  8 4.09e-10 roc_auc  binary     0.645    25 0.00494 Preprocessor1_Model04
##  9 6.55e-10 accuracy binary     0.612    25 0.00547 Preprocessor1_Model05
## 10 6.55e-10 roc_auc  binary     0.645    25 0.00494 Preprocessor1_Model05
## # i 90 more rows

Visualizing

echo=FALSE
error=FALSE
warning=FALSE
options(scipen = 999, digits=3, max.print=999999, show.signif.stars=TRUE)
lasso_grid %>%
  collect_metrics() %>%
  ggplot(aes(penalty, mean, color = .metric)) +
  geom_errorbar(aes(
    ymin = mean - std_err,
    ymax = mean + std_err
  ),
  alpha = 0.5
  ) +
  geom_line(size = 1.5) +
  facet_wrap(~.metric, scales = "free", nrow = 2) +
  scale_x_log10() +
  theme(legend.position = "none")
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## i Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

echo=FALSE
error=FALSE
warning=FALSE
options(scipen = 999, digits=3, max.print=999999, show.signif.stars=TRUE)
Best_Lasso <- lasso_grid%>%
  select_best("accuracy")
Best_Lasso
## # A tibble: 1 x 2
##   penalty .config              
##     <dbl> <chr>                
## 1 0.00139 Preprocessor1_Model36
echo=FALSE
error=FALSE
warning=FALSE
options(scipen = 999, digits=3, max.print=999999, show.signif.stars=TRUE)
#Finalize the workoflow with the best model
final_wflow_Lasso <-Lasso_workflow_T%>%
  finalize_workflow(Best_Lasso)
#Check the fit of the final Wflow on the training data
Tuned_Lasso_fit<-final_wflow_Lasso%>%fit(train_data_GD_b)
Tuned_Lasso_fit
## == Workflow [trained] ==========================================================
## Preprocessor: Recipe
## Model: multinom_reg()
## 
## -- Preprocessor ----------------------------------------------------------------
## 4 Recipe Steps
## 
## * step_smote()
## * step_zv()
## * step_nzv()
## * step_corr()
## 
## -- Model -----------------------------------------------------------------------
## 
## Call:  glmnet::glmnet(x = maybe_matrix(x), y = y, family = "multinomial",      alpha = ~1) 
## 
##    Df %Dev Lambda
## 1   0 0.00 0.0928
## 2   1 0.42 0.0846
## 3   1 0.77 0.0771
## 4   1 1.06 0.0702
## 5   1 1.31 0.0640
## 6   2 1.99 0.0583
## 7   2 2.59 0.0531
## 8   2 3.10 0.0484
## 9   2 3.53 0.0441
## 10  2 3.89 0.0402
## 11  2 4.18 0.0366
## 12  2 4.44 0.0334
## 13  2 4.65 0.0304
## 14  2 4.82 0.0277
## 15  3 5.00 0.0252
## 16  3 5.15 0.0230
## 17  4 5.29 0.0209
## 18  4 5.45 0.0191
## 19  4 5.58 0.0174
## 20  4 5.69 0.0158
## 21  4 5.78 0.0144
## 22  4 5.86 0.0132
## 23  4 5.92 0.0120
## 24  4 5.98 0.0109
## 25  4 6.02 0.0100
## 26  4 6.06 0.0091
## 27  4 6.09 0.0083
## 28  4 6.12 0.0075
## 29  4 6.14 0.0069
## 30  4 6.16 0.0063
## 31  4 6.17 0.0057
## 32  4 6.19 0.0052
## 33  5 6.20 0.0047
## 34  5 6.21 0.0043
## 35  5 6.22 0.0039
## 36  5 6.22 0.0036
## 37  5 6.23 0.0033
## 38  5 6.23 0.0030
## 39  5 6.24 0.0027
## 40  5 6.24 0.0025
## 41  5 6.24 0.0022
## 42  5 6.24 0.0021
## 43  5 6.25 0.0019
## 44  5 6.25 0.0017
## 45  5 6.25 0.0015
## 46  5 6.25 0.0014
## 
## ...
## and 1 more lines.
echo=FALSE
error=FALSE
warning=FALSE
options(scipen = 999, digits=3, max.print=999999, show.signif.stars=TRUE)
#Test the tuned AI on the test data
results_tuned_Lasso<-test_data_GD_b%>% select(GDDiag) %>% 
  bind_cols(Tuned_Lasso_fit%>% 
              predict(new_data = test_data_GD_b)) %>% 
  bind_cols(Tuned_Lasso_fit%>% 
              predict(new_data = test_data_GD_b, type = "prob"))
kable(results_tuned_Lasso)
GDDiag .pred_class .pred_No .pred_Yes
No No 0.582 0.418
No No 0.559 0.441
No Yes 0.474 0.526
No No 0.740 0.260
No No 0.581 0.419
No No 0.848 0.152
No No 0.619 0.381
No No 0.536 0.464
No No 0.518 0.482
No No 0.697 0.303
No No 0.508 0.492
No No 0.611 0.389
No Yes 0.463 0.537
No No 0.509 0.491
No Yes 0.468 0.532
No Yes 0.418 0.582
No No 0.625 0.375
No No 0.523 0.477
No No 0.588 0.412
No Yes 0.498 0.502
No No 0.802 0.198
No No 0.637 0.363
No No 0.661 0.339
No No 0.559 0.441
No No 0.628 0.372
No No 0.699 0.301
No No 0.587 0.413
No Yes 0.377 0.623
No No 0.781 0.219
No No 0.628 0.372
No Yes 0.307 0.693
No No 0.590 0.410
No Yes 0.360 0.640
No No 0.733 0.267
No No 0.708 0.292
No No 0.590 0.410
No No 0.857 0.143
No No 0.692 0.308
No No 0.523 0.477
No No 0.921 0.079
No Yes 0.436 0.564
No No 0.509 0.491
No No 0.572 0.428
No Yes 0.308 0.692
No No 0.667 0.333
No Yes 0.401 0.599
No No 0.515 0.485
No No 0.680 0.320
No No 0.505 0.495
No Yes 0.382 0.618
No No 0.714 0.286
No No 0.637 0.363
No Yes 0.444 0.556
No No 0.769 0.231
No No 0.588 0.412
No No 0.654 0.346
No Yes 0.352 0.648
No Yes 0.426 0.574
No No 0.545 0.455
No Yes 0.313 0.687
No Yes 0.258 0.742
No No 0.545 0.455
No No 0.559 0.441
No No 0.717 0.283
No No 0.611 0.389
No No 0.625 0.375
No No 0.580 0.420
No No 0.628 0.372
No Yes 0.364 0.636
No No 0.565 0.435
No No 0.511 0.489
No No 0.614 0.386
No Yes 0.485 0.515
No No 0.549 0.451
No No 0.588 0.412
No No 0.602 0.398
No No 0.672 0.328
No No 0.680 0.320
No No 0.682 0.318
No No 0.686 0.314
No Yes 0.341 0.659
No No 0.545 0.455
No Yes 0.377 0.623
No Yes 0.498 0.502
No No 0.631 0.369
No Yes 0.486 0.514
No Yes 0.459 0.541
No No 0.519 0.481
No Yes 0.399 0.601
No No 0.621 0.379
No No 0.609 0.391
No Yes 0.467 0.533
No No 0.545 0.455
No No 0.593 0.407
No No 0.584 0.416
No Yes 0.446 0.554
No No 0.857 0.143
No Yes 0.360 0.640
No Yes 0.423 0.577
No No 0.541 0.459
No No 0.684 0.316
No No 0.547 0.453
No No 0.541 0.459
No Yes 0.481 0.519
No Yes 0.212 0.788
No No 0.769 0.231
Yes Yes 0.414 0.586
Yes No 0.544 0.456
Yes No 0.521 0.479
Yes No 0.517 0.483
Yes No 0.526 0.474
Yes No 0.502 0.498
Yes Yes 0.434 0.566
Yes Yes 0.363 0.637
Yes No 0.533 0.467
Yes No 0.584 0.416
Yes No 0.569 0.431
Yes No 0.692 0.308
Yes No 0.508 0.492
Yes Yes 0.411 0.589
Yes No 0.538 0.462
Yes Yes 0.447 0.553
Yes Yes 0.494 0.506
Yes Yes 0.500 0.500
Yes Yes 0.479 0.521
Yes Yes 0.375 0.625
Yes Yes 0.435 0.565
Yes Yes 0.410 0.590
Yes Yes 0.469 0.531
Yes No 0.578 0.422
Yes Yes 0.476 0.524
Yes Yes 0.486 0.514
Yes No 0.508 0.492
Yes Yes 0.490 0.510
Yes Yes 0.442 0.558
Yes Yes 0.419 0.581
Yes Yes 0.407 0.593
Yes Yes 0.482 0.518
Yes Yes 0.358 0.642
Yes Yes 0.314 0.686
Yes Yes 0.337 0.663
Yes Yes 0.355 0.645
Yes Yes 0.268 0.732
Yes Yes 0.217 0.783
Yes Yes 0.425 0.575
Yes Yes 0.419 0.581
Yes Yes 0.434 0.566
Yes Yes 0.425 0.575
Yes Yes 0.438 0.562
Yes No 0.519 0.481
Yes Yes 0.444 0.556
Yes No 0.603 0.397
Yes Yes 0.296 0.704
Yes No 0.758 0.242
Yes No 0.672 0.328
Yes No 0.624 0.376
Yes Yes 0.487 0.513
Yes No 0.586 0.414
Yes Yes 0.375 0.625
Yes No 0.671 0.329
Yes No 0.584 0.416
Yes No 0.756 0.244
Yes No 0.514 0.486
Yes No 0.559 0.441
Yes No 0.568 0.432
Yes Yes 0.446 0.554
Yes Yes 0.478 0.522
Yes No 0.605 0.395
Yes No 0.577 0.423
Yes Yes 0.483 0.517
Yes Yes 0.441 0.559
Yes No 0.692 0.308
Yes No 0.692 0.308
Yes Yes 0.425 0.575
Yes Yes 0.355 0.645
Yes Yes 0.339 0.661
Yes Yes 0.393 0.607
Yes Yes 0.365 0.635
Yes No 0.646 0.354
Yes No 0.582 0.418
Yes Yes 0.340 0.660
Yes Yes 0.273 0.727
Yes Yes 0.322 0.678
Yes No 0.558 0.442
Yes No 0.567 0.433
Yes Yes 0.445 0.555
Yes No 0.595 0.405
Yes No 0.552 0.448
Yes Yes 0.390 0.610
Yes Yes 0.445 0.555
Yes No 0.520 0.480
Yes Yes 0.399 0.601
Yes Yes 0.449 0.551
Yes Yes 0.270 0.730
Yes Yes 0.343 0.657
Yes No 0.536 0.464
Yes Yes 0.370 0.630
Yes No 0.507 0.493
Yes No 0.683 0.317
Yes No 0.567 0.433
Yes Yes 0.352 0.648
Yes No 0.642 0.358
Yes Yes 0.328 0.672
Yes Yes 0.335 0.665
Yes Yes 0.457 0.543
Yes Yes 0.397 0.603
Yes Yes 0.277 0.723
Yes Yes 0.159 0.841
Yes Yes 0.283 0.717
Yes Yes 0.492 0.508
Yes Yes 0.140 0.860
Yes Yes 0.440 0.560
#Tuned__Results
results_tuned_Lasso %>% 
  conf_mat(truth = GDDiag, estimate = .pred_class)
##           Truth
## Prediction No Yes
##        No  75  41
##        Yes 31  65
#visualise CF
update_geom_defaults(geom = "rect", new = list(fill = "midnightblue", alpha = 0.7))
results_tuned_Lasso %>% 
  conf_mat(GDDiag, .pred_class) %>% 
  autoplot()

#Plot Roc_Curve
curve_Lasso_tuned <- results_tuned_Lasso %>% 
  roc_curve(GDDiag, .pred_No) %>% 
  autoplot
curve_Lasso_tuned

echo=FALSE
error=FALSE
warning=FALSE
options(scipen = 999, digits=3, max.print=999999, show.signif.stars=TRUE)
# Evaluate ROC_AOC
auc_Lasso_tuned <- results_tuned_Lasso %>% 
  roc_auc(GDDiag, .pred_No)
auc_Lasso_tuned
## # A tibble: 1 x 3
##   .metric .estimator .estimate
##   <chr>   <chr>          <dbl>
## 1 roc_auc binary         0.704
ev_met1_TunLasso<-ev_met1(results_tuned_Lasso,truth = GDDiag, estimate = .pred_class)
Rec_TLasso<-yardstick::recall(results_tuned_Lasso, GDDiag, .pred_class)
ACC_TLasso<-yardstick::accuracy(results_tuned_Lasso, GDDiag, .pred_class)
TunLassoMET<-list(auc_Lasso_tuned,ev_met1_TunLasso, Rec_TLasso, ACC_TLasso)
kable(TunLassoMET)
.metric .estimator .estimate
roc_auc binary 0.704
.metric .estimator .estimate
ppv binary 0.647
f_meas binary 0.676
.metric .estimator .estimate
recall binary 0.708
.metric .estimator .estimate
accuracy binary 0.66

KNN

echo=FALSE
error=FALSE
warning=FALSE
options(scipen = 999, digits=3, max.print=999999, show.signif.stars=TRUE)

knn_model <- nearest_neighbor(neighbors = tune()) %>% 
             set_engine('kknn') %>% 
             set_mode('classification')

knn_wf <- workflow() %>% 
          add_model(knn_model) %>% 
          add_recipe(GD_rec)

k_grid <- tibble(neighbors = c(10, 15, 25, 45, 60, 80, 100, 120, 140, 180))

knn_tuning <- knn_wf %>% 
              tune_grid(resamples = train_boot,
                        grid = k_grid)

best_k <- knn_tuning %>% 
          select_best(metric = 'accuracy')

final_knn_wf <- knn_wf %>% 
                finalize_workflow(best_k)

Tuned_knn_fit<-final_knn_wf%>%fit(train_data_GD_b)
Tuned_knn_fit
## == Workflow [trained] ==========================================================
## Preprocessor: Recipe
## Model: nearest_neighbor()
## 
## -- Preprocessor ----------------------------------------------------------------
## 4 Recipe Steps
## 
## * step_smote()
## * step_zv()
## * step_nzv()
## * step_corr()
## 
## -- Model -----------------------------------------------------------------------
## 
## Call:
## kknn::train.kknn(formula = ..y ~ ., data = data, ks = min_rows(10,     data, 5))
## 
## Type of response variable: nominal
## Minimal misclassification: 0.165
## Best kernel: optimal
## Best k: 10
echo=FALSE
error=FALSE
warning=FALSE
options(scipen = 999, digits=3, max.print=999999, show.signif.stars=TRUE)
results_tuned_knn<-test_data_GD_b%>% select(GDDiag) %>% 
  bind_cols(Tuned_knn_fit%>% 
              predict(new_data = test_data_GD_b)) %>% 
  bind_cols(Tuned_knn_fit%>% 
              predict(new_data = test_data_GD_b, type = "prob"))
kable(results_tuned_knn)
GDDiag .pred_class .pred_No .pred_Yes
No No 0.884 0.116
No No 0.613 0.387
No No 1.000 0.000
No No 0.714 0.286
No Yes 0.371 0.629
No No 1.000 0.000
No No 0.993 0.007
No No 0.647 0.353
No No 0.832 0.168
No No 0.955 0.045
No Yes 0.250 0.750
No No 1.000 0.000
No No 0.558 0.442
No No 0.832 0.168
No No 0.904 0.096
No Yes 0.250 0.750
No No 1.000 0.000
No No 0.541 0.459
No No 1.000 0.000
No No 0.682 0.318
No No 0.803 0.197
No No 1.000 0.000
No No 1.000 0.000
No No 0.613 0.387
No No 1.000 0.000
No No 0.993 0.007
No No 1.000 0.000
No No 0.781 0.219
No No 0.752 0.248
No No 1.000 0.000
No No 0.707 0.293
No Yes 0.450 0.550
No Yes 0.029 0.971
No No 0.880 0.120
No No 1.000 0.000
No Yes 0.450 0.550
No No 0.769 0.231
No No 0.560 0.440
No No 0.859 0.141
No No 0.962 0.038
No No 0.506 0.494
No No 0.587 0.413
No No 0.709 0.291
No No 1.000 0.000
No No 1.000 0.000
No No 0.654 0.346
No Yes 0.280 0.720
No No 0.962 0.038
No Yes 0.325 0.675
No Yes 0.346 0.654
No No 1.000 0.000
No No 1.000 0.000
No No 0.993 0.007
No No 0.933 0.067
No No 0.774 0.226
No No 0.505 0.495
No No 0.882 0.118
No Yes 0.344 0.656
No No 0.841 0.159
No No 0.609 0.391
No Yes 0.437 0.563
No No 0.841 0.159
No No 0.613 0.387
No No 1.000 0.000
No No 1.000 0.000
No No 1.000 0.000
No No 0.899 0.101
No No 0.784 0.216
No No 0.822 0.178
No No 0.940 0.060
No Yes 0.250 0.750
No No 0.587 0.413
No No 1.000 0.000
No No 0.940 0.060
No No 1.000 0.000
No Yes 0.250 0.750
No No 1.000 0.000
No No 0.962 0.038
No No 0.877 0.123
No No 1.000 0.000
No No 0.609 0.391
No No 0.520 0.480
No No 0.781 0.219
No Yes 0.135 0.865
No No 0.653 0.347
No Yes 0.403 0.597
No Yes 0.149 0.851
No Yes 0.317 0.683
No No 0.993 0.007
No No 0.858 0.142
No No 0.745 0.255
No Yes 0.000 1.000
No No 0.520 0.480
No No 1.000 0.000
No No 0.870 0.130
No No 0.683 0.317
No No 0.769 0.231
No Yes 0.029 0.971
No Yes 0.134 0.866
No No 0.937 0.063
No No 1.000 0.000
No Yes 0.067 0.933
No No 0.884 0.116
No No 0.705 0.295
No No 0.587 0.413
No No 0.933 0.067
Yes Yes 0.442 0.558
Yes No 1.000 0.000
Yes No 0.620 0.380
Yes Yes 0.096 0.904
Yes Yes 0.000 1.000
Yes Yes 0.029 0.971
Yes Yes 0.190 0.810
Yes Yes 0.192 0.808
Yes Yes 0.163 0.837
Yes Yes 0.063 0.937
Yes Yes 0.442 0.558
Yes Yes 0.007 0.993
Yes Yes 0.067 0.933
Yes Yes 0.346 0.654
Yes Yes 0.007 0.993
Yes Yes 0.254 0.746
Yes Yes 0.060 0.940
Yes Yes 0.000 1.000
Yes Yes 0.116 0.884
Yes Yes 0.211 0.789
Yes Yes 0.226 0.774
Yes Yes 0.226 0.774
Yes Yes 0.055 0.945
Yes Yes 0.197 0.803
Yes Yes 0.000 1.000
Yes Yes 0.007 0.993
Yes Yes 0.123 0.877
Yes Yes 0.022 0.978
Yes Yes 0.000 1.000
Yes Yes 0.000 1.000
Yes Yes 0.038 0.962
Yes Yes 0.060 0.940
Yes Yes 0.291 0.709
Yes Yes 0.000 1.000
Yes Yes 0.168 0.832
Yes Yes 0.000 1.000
Yes Yes 0.000 1.000
Yes Yes 0.245 0.755
Yes Yes 0.000 1.000
Yes Yes 0.000 1.000
Yes Yes 0.085 0.915
Yes Yes 0.190 0.810
Yes Yes 0.190 0.810
Yes Yes 0.000 1.000
Yes Yes 0.000 1.000
Yes Yes 0.000 1.000
Yes Yes 0.075 0.925
Yes Yes 0.421 0.579
Yes Yes 0.082 0.918
Yes Yes 0.163 0.837
Yes Yes 0.000 1.000
Yes Yes 0.000 1.000
Yes Yes 0.000 1.000
Yes Yes 0.103 0.897
Yes Yes 0.291 0.709
Yes Yes 0.447 0.553
Yes Yes 0.000 1.000
Yes Yes 0.283 0.717
Yes Yes 0.060 0.940
Yes Yes 0.332 0.668
Yes Yes 0.029 0.971
Yes Yes 0.000 1.000
Yes Yes 0.000 1.000
Yes Yes 0.000 1.000
Yes Yes 0.372 0.628
Yes Yes 0.007 0.993
Yes Yes 0.270 0.730
Yes Yes 0.000 1.000
Yes Yes 0.120 0.880
Yes Yes 0.075 0.925
Yes Yes 0.055 0.945
Yes Yes 0.149 0.851
Yes Yes 0.045 0.955
Yes Yes 0.255 0.745
Yes Yes 0.250 0.750
Yes Yes 0.336 0.664
Yes Yes 0.130 0.870
Yes Yes 0.243 0.757
Yes Yes 0.000 1.000
Yes Yes 0.055 0.945
Yes Yes 0.413 0.587
Yes Yes 0.096 0.904
Yes Yes 0.067 0.933
Yes Yes 0.152 0.848
Yes Yes 0.149 0.851
Yes Yes 0.238 0.762
Yes Yes 0.000 1.000
Yes Yes 0.063 0.937
Yes Yes 0.063 0.937
Yes Yes 0.233 0.767
Yes Yes 0.007 0.993
Yes Yes 0.163 0.837
Yes Yes 0.452 0.548
Yes Yes 0.142 0.858
Yes Yes 0.000 1.000
Yes Yes 0.134 0.866
Yes Yes 0.000 1.000
Yes Yes 0.060 0.940
Yes No 0.634 0.366
Yes Yes 0.045 0.955
Yes Yes 0.103 0.897
Yes Yes 0.000 1.000
Yes Yes 0.000 1.000
Yes Yes 0.029 0.971
Yes Yes 0.022 0.978
Yes Yes 0.067 0.933
#Tuned Results
results_tuned_knn %>% 
  conf_mat(truth = GDDiag, estimate = .pred_class)
##           Truth
## Prediction  No Yes
##        No   85   3
##        Yes  21 103
#visualise CF
update_geom_defaults(geom = "rect", new = list(fill = "midnightblue", alpha = 0.7))
results_tuned_knn %>% 
  conf_mat(GDDiag, .pred_class) %>% 
  autoplot()

#Plot Roc_Curve
curve_knn_tuned <- results_tuned_knn %>% 
  roc_curve(GDDiag, .pred_No) %>% 
  autoplot
curve_knn_tuned

echo=FALSE
error=FALSE
warning=FALSE
options(scipen = 999, digits=3, max.print=999999, show.signif.stars=TRUE)
# Evaluate ROC_AOC
auc_knn_tuned <- results_tuned_knn %>% 
  roc_auc(GDDiag, .pred_No)
auc_knn_tuned
## # A tibble: 1 x 3
##   .metric .estimator .estimate
##   <chr>   <chr>          <dbl>
## 1 roc_auc binary         0.939
ev_met1_Tunknn<-ev_met1(results_tuned_knn,truth = GDDiag, estimate = .pred_class)
Rec_Tknn<-yardstick::recall(results_tuned_knn, GDDiag, .pred_class)
ACC_Tknn<-yardstick::accuracy(results_tuned_knn, GDDiag, .pred_class)
TunknnMET<-list(auc_knn_tuned,ev_met1_Tunknn, Rec_Tknn, ACC_Tknn)
kable(TunknnMET)
.metric .estimator .estimate
roc_auc binary 0.939
.metric .estimator .estimate
ppv binary 0.966
f_meas binary 0.876
.metric .estimator .estimate
recall binary 0.802
.metric .estimator .estimate
accuracy binary 0.887
echo=FALSE
error=FALSE
warning=FALSE
options(scipen = 999, digits=3, max.print=999999, show.signif.stars=TRUE)

set.seed(123)


#first creating a tuning model
svm_mod_T <-
  svm_rbf(cost = tune(), rbf_sigma = tune()) %>%
  set_mode("classification") %>%
  set_engine("kernlab")


#second creating a tuning workflow
SVM_workflow_T<-workflow()%>% 
  add_recipe(GD_rec) %>% 
  add_model(svm_mod_T)
#third calling the workflow
SVM_workflow_T
## == Workflow ====================================================================
## Preprocessor: Recipe
## Model: svm_rbf()
## 
## -- Preprocessor ----------------------------------------------------------------
## 4 Recipe Steps
## 
## * step_smote()
## * step_zv()
## * step_nzv()
## * step_corr()
## 
## -- Model -----------------------------------------------------------------------
## Radial Basis Function Support Vector Machine Model Specification (classification)
## 
## Main Arguments:
##   cost = tune()
##   rbf_sigma = tune()
## 
## Computational engine: kernlab
set.seed(345)
echo=FALSE
error=FALSE
warning=FALSE
options(scipen = 999, digits=3, max.print=999999, show.signif.stars=TRUE)

SVM_grid <- grid_regular(cost(),rbf_sigma(), levels = 10)

SVM_res<- tune_grid(
  SVM_workflow_T,
  resamples = train_boot,
  grid = SVM_grid)


SVM_res
## # Tuning results
## # Bootstrap sampling using stratification 
## # A tibble: 25 x 4
##    splits            id          .metrics           .notes          
##    <list>            <chr>       <list>             <list>          
##  1 <split [848/323]> Bootstrap01 <tibble [200 x 6]> <tibble [0 x 3]>
##  2 <split [848/309]> Bootstrap02 <tibble [200 x 6]> <tibble [0 x 3]>
##  3 <split [848/310]> Bootstrap03 <tibble [200 x 6]> <tibble [0 x 3]>
##  4 <split [848/307]> Bootstrap04 <tibble [200 x 6]> <tibble [0 x 3]>
##  5 <split [848/330]> Bootstrap05 <tibble [200 x 6]> <tibble [0 x 3]>
##  6 <split [848/305]> Bootstrap06 <tibble [200 x 6]> <tibble [0 x 3]>
##  7 <split [848/310]> Bootstrap07 <tibble [200 x 6]> <tibble [0 x 3]>
##  8 <split [848/317]> Bootstrap08 <tibble [200 x 6]> <tibble [0 x 3]>
##  9 <split [848/318]> Bootstrap09 <tibble [200 x 6]> <tibble [0 x 3]>
## 10 <split [848/316]> Bootstrap10 <tibble [200 x 6]> <tibble [0 x 3]>
## # i 15 more rows
echo=FALSE
error=FALSE
warning=FALSE
options(scipen = 999, digits=3, max.print=999999, show.signif.stars=TRUE)

set.seed(123)
SVM_res%>% 
  collect_metrics() %>% 
  slice_head(n = 10)
## # A tibble: 10 x 8
##        cost    rbf_sigma .metric  .estimator  mean     n std_err .config        
##       <dbl>        <dbl> <chr>    <chr>      <dbl> <int>   <dbl> <chr>          
##  1 0.000977 0.0000000001 accuracy binary     0.541    25 0.00605 Preprocessor1_~
##  2 0.000977 0.0000000001 roc_auc  binary     0.393    25 0.00621 Preprocessor1_~
##  3 0.00310  0.0000000001 accuracy binary     0.541    25 0.00605 Preprocessor1_~
##  4 0.00310  0.0000000001 roc_auc  binary     0.393    25 0.00621 Preprocessor1_~
##  5 0.00984  0.0000000001 accuracy binary     0.541    25 0.00605 Preprocessor1_~
##  6 0.00984  0.0000000001 roc_auc  binary     0.393    25 0.00622 Preprocessor1_~
##  7 0.0312   0.0000000001 accuracy binary     0.541    25 0.00605 Preprocessor1_~
##  8 0.0312   0.0000000001 roc_auc  binary     0.393    25 0.00621 Preprocessor1_~
##  9 0.0992   0.0000000001 accuracy binary     0.541    25 0.00605 Preprocessor1_~
## 10 0.0992   0.0000000001 roc_auc  binary     0.393    25 0.00621 Preprocessor1_~
echo=FALSE
error=FALSE
warning=FALSE
options(scipen = 999, digits=3, max.print=999999, show.signif.stars=TRUE)
best_SVM <- SVM_res %>% 
  select_best("accuracy")
best_SVM
## # A tibble: 1 x 3
##    cost rbf_sigma .config               
##   <dbl>     <dbl> <chr>                 
## 1    32         1 Preprocessor1_Model100
echo=FALSE
error=FALSE
warning=FALSE
options(scipen = 999, digits=3, max.print=999999, show.signif.stars=TRUE)
#11th Finalize the workoflow with the best model
final_wflow_SVM <- SVM_workflow_T %>% 
  finalize_workflow(best_SVM)
#12th Check the fit of the final Wflow on the training data
Tuned_SVM_fit<-final_wflow_SVM%>%fit(train_data_GD_b)
Tuned_SVM_fit
## == Workflow [trained] ==========================================================
## Preprocessor: Recipe
## Model: svm_rbf()
## 
## -- Preprocessor ----------------------------------------------------------------
## 4 Recipe Steps
## 
## * step_smote()
## * step_zv()
## * step_nzv()
## * step_corr()
## 
## -- Model -----------------------------------------------------------------------
## Support Vector Machine object of class "ksvm" 
## 
## SV type: C-svc  (classification) 
##  parameter : cost C = 32 
## 
## Gaussian Radial Basis kernel function. 
##  Hyperparameter : sigma =  1 
## 
## Number of Support Vectors : 307 
## 
## Objective Function Value : -972 
## Training error : 0.001179 
## Probability model included.
echo=FALSE
error=FALSE
warning=FALSE
options(scipen = 999, digits=3, max.print=999999, show.signif.stars=TRUE)
#Test the tuned AI on the test data
results_tuned_SVM<-test_data_GD_b %>% select(GDDiag) %>% 
  bind_cols (Tuned_SVM_fit%>% 
              predict(new_data = test_data_GD_b)) %>% 
  bind_cols(Tuned_SVM_fit%>% 
              predict(new_data = test_data_GD_b, type = "prob"))
kable(results_tuned_SVM)
GDDiag .pred_class .pred_No .pred_Yes
No No 0.994 0.006
No No 0.919 0.081
No No 0.999 0.001
No No 0.879 0.121
No Yes 0.452 0.548
No No 0.991 0.009
No No 0.999 0.001
No No 0.919 0.081
No No 0.919 0.081
No No 0.951 0.049
No No 0.919 0.081
No No 0.991 0.009
No No 0.919 0.081
No No 0.987 0.013
No No 0.971 0.029
No No 0.919 0.081
No No 0.989 0.011
No No 0.919 0.081
No No 0.999 0.001
No No 0.892 0.108
No No 1.000 0.000
No No 0.919 0.081
No No 0.990 0.010
No No 0.919 0.081
No No 0.980 0.020
No No 0.944 0.056
No No 0.919 0.081
No No 0.919 0.081
No No 0.919 0.081
No No 0.980 0.020
No No 0.919 0.081
No No 0.899 0.101
No Yes 0.445 0.555
No No 0.919 0.081
No No 0.994 0.006
No No 0.899 0.101
No No 0.984 0.016
No No 0.919 0.081
No No 0.999 0.001
No No 0.919 0.081
No No 0.919 0.081
No No 0.919 0.081
No No 0.964 0.036
No No 0.983 0.017
No No 0.993 0.007
No No 0.993 0.007
No No 0.919 0.081
No No 0.997 0.003
No Yes 0.020 0.980
No Yes 0.199 0.801
No No 0.917 0.083
No No 0.919 0.081
No No 0.962 0.038
No No 0.973 0.027
No No 0.989 0.011
No Yes 0.338 0.662
No No 0.961 0.039
No No 0.919 0.081
No No 0.994 0.006
No No 0.966 0.034
No No 0.919 0.081
No No 0.994 0.006
No No 0.919 0.081
No No 0.998 0.002
No No 0.991 0.009
No No 0.989 0.011
No No 0.993 0.007
No No 0.917 0.083
No No 0.969 0.031
No No 0.919 0.081
No No 0.906 0.094
No No 0.919 0.081
No No 0.919 0.081
No No 0.995 0.005
No No 0.999 0.001
No No 0.919 0.081
No No 0.919 0.081
No No 0.997 0.003
No No 0.784 0.216
No No 0.919 0.081
No No 0.919 0.081
No No 0.983 0.017
No No 0.919 0.081
No Yes 0.092 0.908
No No 0.990 0.010
No Yes 0.510 0.490
No Yes 0.046 0.954
No Yes 0.267 0.733
No No 0.919 0.081
No No 0.996 0.004
No No 0.997 0.003
No Yes 0.074 0.926
No No 0.983 0.017
No No 0.919 0.081
No No 0.919 0.081
No No 0.812 0.188
No No 0.984 0.016
No Yes 0.445 0.555
No Yes 0.138 0.862
No No 0.988 0.012
No No 0.991 0.009
No Yes 0.098 0.902
No No 0.962 0.038
No No 0.986 0.014
No No 0.919 0.081
No No 0.973 0.027
Yes Yes 0.103 0.897
Yes No 0.857 0.143
Yes Yes 0.165 0.835
Yes Yes 0.038 0.962
Yes Yes 0.015 0.985
Yes Yes 0.132 0.868
Yes Yes 0.101 0.899
Yes Yes 0.076 0.924
Yes Yes 0.103 0.897
Yes Yes 0.086 0.914
Yes Yes 0.173 0.827
Yes Yes 0.042 0.958
Yes Yes 0.106 0.894
Yes Yes 0.174 0.826
Yes Yes 0.030 0.970
Yes Yes 0.309 0.691
Yes Yes 0.029 0.971
Yes Yes 0.051 0.949
Yes Yes 0.040 0.960
Yes Yes 0.513 0.487
Yes Yes 0.036 0.964
Yes Yes 0.152 0.848
Yes Yes 0.141 0.859
Yes No 0.863 0.137
Yes Yes 0.021 0.979
Yes Yes 0.014 0.986
Yes Yes 0.069 0.931
Yes Yes 0.098 0.902
Yes Yes 0.017 0.983
Yes Yes 0.084 0.916
Yes Yes 0.009 0.991
Yes Yes 0.047 0.953
Yes Yes 0.074 0.926
Yes Yes 0.058 0.942
Yes Yes 0.077 0.923
Yes Yes 0.027 0.973
Yes Yes 0.265 0.735
Yes Yes 0.036 0.964
Yes Yes 0.118 0.882
Yes Yes 0.096 0.904
Yes Yes 0.213 0.787
Yes Yes 0.102 0.898
Yes Yes 0.087 0.913
Yes Yes 0.031 0.969
Yes Yes 0.104 0.896
Yes Yes 0.091 0.909
Yes Yes 0.148 0.852
Yes Yes 0.033 0.967
Yes Yes 0.136 0.864
Yes Yes 0.057 0.943
Yes Yes 0.106 0.894
Yes Yes 0.001 0.999
Yes Yes 0.069 0.931
Yes Yes 0.132 0.868
Yes Yes 0.020 0.980
Yes Yes 0.262 0.738
Yes Yes 0.017 0.983
Yes Yes 0.062 0.938
Yes Yes 0.111 0.889
Yes Yes 0.109 0.891
Yes Yes 0.022 0.978
Yes Yes 0.077 0.923
Yes Yes 0.076 0.924
Yes Yes 0.025 0.975
Yes Yes 0.167 0.833
Yes Yes 0.039 0.961
Yes Yes 0.119 0.881
Yes Yes 0.013 0.987
Yes Yes 0.122 0.878
Yes Yes 0.104 0.896
Yes Yes 0.082 0.918
Yes Yes 0.163 0.837
Yes Yes 0.002 0.998
Yes Yes 0.076 0.924
Yes No 0.726 0.274
Yes Yes 0.234 0.766
Yes Yes 0.104 0.896
Yes Yes 0.101 0.899
Yes Yes 0.073 0.927
Yes Yes 0.104 0.896
Yes Yes 0.083 0.917
Yes Yes 0.034 0.966
Yes Yes 0.040 0.960
Yes Yes 0.104 0.896
Yes Yes 0.099 0.901
Yes Yes 0.025 0.975
Yes Yes 0.003 0.997
Yes Yes 0.141 0.859
Yes Yes 0.077 0.923
Yes Yes 0.105 0.895
Yes Yes 0.099 0.901
Yes Yes 0.374 0.626
Yes Yes 0.207 0.793
Yes Yes 0.069 0.931
Yes Yes 0.116 0.884
Yes Yes 0.012 0.988
Yes Yes 0.046 0.954
Yes Yes 0.037 0.963
Yes No 0.953 0.047
Yes Yes 0.050 0.950
Yes Yes 0.044 0.956
Yes Yes 0.056 0.944
Yes Yes 0.094 0.906
Yes Yes 0.193 0.807
Yes Yes 0.446 0.554
Yes Yes 0.092 0.908
echo=FALSE
error=FALSE
warning=FALSE
options(scipen = 999, digits=3, max.print=999999, show.signif.stars=TRUE)
#Tuned Results
results_tuned_SVM %>% 
  conf_mat(truth = GDDiag, estimate = .pred_class)
##           Truth
## Prediction  No Yes
##        No   93   4
##        Yes  13 102
#visualise CF
update_geom_defaults(geom = "rect", new = list(fill = "midnightblue", alpha = 0.7))
results_tuned_SVM %>% 
  conf_mat(GDDiag, .pred_class) %>% 
  autoplot()

echo=FALSE
error=FALSE
warning=FALSE
options(scipen = 999, digits=3, max.print=999999, show.signif.stars=TRUE)
#Plot Roc_Curve
curve_SVM_tuned <- results_tuned_SVM%>% 
  roc_curve(GDDiag, .pred_No) %>% 
  autoplot
curve_SVM_tuned

echo=FALSE
error=FALSE
warning=FALSE
options(scipen = 999, digits=3, max.print=999999, show.signif.stars=TRUE)
# Evaluate ROC_AUC
auc_SVM_tuned <- results_tuned_SVM %>% 
  roc_auc(GDDiag, .pred_No)
auc_SVM_tuned
## # A tibble: 1 x 3
##   .metric .estimator .estimate
##   <chr>   <chr>          <dbl>
## 1 roc_auc binary         0.960
echo=FALSE
error=FALSE
warning=FALSE
options(scipen = 999, digits=3, max.print=999999, show.signif.stars=TRUE)
ev_met1_TunSVM<-ev_met1(results_tuned_SVM,truth = GDDiag, estimate = .pred_class)
Rec_TSVM<-yardstick::recall(results_tuned_SVM, GDDiag, .pred_class)
ACC_TSVM<-yardstick::accuracy(results_tuned_SVM, GDDiag, .pred_class)
TunSVMMET<-list(auc_SVM_tuned,ev_met1_TunSVM, Rec_TSVM, ACC_TSVM)
kable(TunSVMMET)
.metric .estimator .estimate
roc_auc binary 0.96
.metric .estimator .estimate
ppv binary 0.959
f_meas binary 0.916
.metric .estimator .estimate
recall binary 0.877
.metric .estimator .estimate
accuracy binary 0.92