#Importamos la data
diabetes <- read.csv("C:/Users/HP-PC/Desktop/diabetes.txt", sep=";")
head(diabetes)
##   n NumeroEmbarazos Concentrac.blucosa.plama Presion.arterial.diastolica
## 1 1               6                      148                          72
## 2 2               1                       85                          66
## 3 3               8                      183                          64
## 4 4               1                       89                          NA
## 5 5               0                      137                          40
## 6 6               5                      116                          74
##   Triceps.espesor.del.pliegue.cutaneo X2.horas.suero.insulina
## 1                                  35                       0
## 2                                  29                       0
## 3                                   0                       0
## 4                                  23                      94
## 5                                  NA                     168
## 6                                   0                       0
##   indice.de.masa.corporal Funcion.pedigri.de.la.diabetes edad resultado
## 1                    33.6                          0.627   50  Positivo
## 2                    26.6                          0.351   31  Negativo
## 3                    23.3                          0.672   32  Positivo
## 4                    28.1                          0.167   21  Negativo
## 5                    43.1                          2.288   33  Positivo
## 6                    25.6                          0.201   30  Negativo
#Separamos la data ya que no utilizaremos la fila n
diabetes=diabetes[,2:10]
head(diabetes)
##   NumeroEmbarazos Concentrac.blucosa.plama Presion.arterial.diastolica
## 1               6                      148                          72
## 2               1                       85                          66
## 3               8                      183                          64
## 4               1                       89                          NA
## 5               0                      137                          40
## 6               5                      116                          74
##   Triceps.espesor.del.pliegue.cutaneo X2.horas.suero.insulina
## 1                                  35                       0
## 2                                  29                       0
## 3                                   0                       0
## 4                                  23                      94
## 5                                  NA                     168
## 6                                   0                       0
##   indice.de.masa.corporal Funcion.pedigri.de.la.diabetes edad resultado
## 1                    33.6                          0.627   50  Positivo
## 2                    26.6                          0.351   31  Negativo
## 3                    23.3                          0.672   32  Positivo
## 4                    28.1                          0.167   21  Negativo
## 5                    43.1                          2.288   33  Positivo
## 6                    25.6                          0.201   30  Negativo
#Veremos si hay missing
summary(diabetes)
##  NumeroEmbarazos  Concentrac.blucosa.plama Presion.arterial.diastolica
##  Min.   : 0.000   Min.   :  0.0            Min.   :  0.00             
##  1st Qu.: 1.000   1st Qu.: 99.0            1st Qu.: 62.00             
##  Median : 3.000   Median :117.0            Median : 72.00             
##  Mean   : 3.845   Mean   :120.9            Mean   : 69.05             
##  3rd Qu.: 6.000   3rd Qu.:140.2            3rd Qu.: 80.00             
##  Max.   :17.000   Max.   :199.0            Max.   :122.00             
##                                            NA's   :84                 
##  Triceps.espesor.del.pliegue.cutaneo X2.horas.suero.insulina
##  Min.   : 0.00                       Min.   :  0.00         
##  1st Qu.: 0.00                       1st Qu.:  0.00         
##  Median :23.00                       Median : 24.00         
##  Mean   :20.41                       Mean   : 78.23         
##  3rd Qu.:32.00                       3rd Qu.:127.75         
##  Max.   :99.00                       Max.   :680.00         
##  NA's   :66                          NA's   :70             
##  indice.de.masa.corporal Funcion.pedigri.de.la.diabetes      edad      
##  Min.   : 0.00           Min.   :0.0780                 Min.   :21.00  
##  1st Qu.:27.30           1st Qu.:0.2437                 1st Qu.:24.00  
##  Median :32.00           Median :0.3725                 Median :29.00  
##  Mean   :31.99           Mean   :0.4719                 Mean   :33.24  
##  3rd Qu.:36.60           3rd Qu.:0.6262                 3rd Qu.:41.00  
##  Max.   :67.10           Max.   :2.4200                 Max.   :81.00  
##                                                                        
##     resultado  
##  Negativo:500  
##  Positivo:268  
##                
##                
##                
##                
## 
#Utilizaremos la libreria Amelia y VIM para mostrarlo como grafica
library(Amelia)
## Loading required package: Rcpp
## ## 
## ## Amelia II: Multiple Imputation
## ## (Version 1.7.5, built: 2018-05-07)
## ## Copyright (C) 2005-2019 James Honaker, Gary King and Matthew Blackwell
## ## Refer to http://gking.harvard.edu/amelia/ for more information
## ##
missmap(diabetes)

library(VIM)
## Loading required package: colorspace
## Loading required package: grid
## Loading required package: data.table
## VIM is ready to use. 
##  Since version 4.0.0 the GUI is in its own package VIMGUI.
## 
##           Please use the package to use the new (and old) GUI.
## Suggestions and bug-reports can be submitted at: https://github.com/alexkowa/VIM/issues
## 
## Attaching package: 'VIM'
## The following object is masked from 'package:datasets':
## 
##     sleep
miss=aggr(diabetes)

#Mostramos en porcentaje
summary(miss)
## 
##  Missings per variable: 
##                             Variable Count
##                      NumeroEmbarazos     0
##             Concentrac.blucosa.plama     0
##          Presion.arterial.diastolica    84
##  Triceps.espesor.del.pliegue.cutaneo    66
##              X2.horas.suero.insulina    70
##              indice.de.masa.corporal     0
##       Funcion.pedigri.de.la.diabetes     0
##                                 edad     0
##                            resultado     0
## 
##  Missings in combinations of variables: 
##       Combinations Count    Percent
##  0:0:0:0:0:0:0:0:0   569 74.0885417
##  0:0:0:0:1:0:0:0:0    55  7.1614583
##  0:0:0:1:0:0:0:0:0    52  6.7708333
##  0:0:0:1:1:0:0:0:0     8  1.0416667
##  0:0:1:0:0:0:0:0:0    71  9.2447917
##  0:0:1:0:1:0:0:0:0     7  0.9114583
##  0:0:1:1:0:0:0:0:0     6  0.7812500
#Dependiendo el porcentaje de missing se aplicara un metodo distinto, en este caso usaremos el comando knnimputation para darle pureza a la data
library(DMwR)
## Loading required package: lattice
## Registered S3 method overwritten by 'xts':
##   method     from
##   as.zoo.xts zoo
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo
## 
## Attaching package: 'DMwR'
## The following object is masked from 'package:VIM':
## 
##     kNN
diabetes_im<-knnImputation(diabetes)
#Creamos un segundo dataframe para poder usarlo en la parte de la red neuronal
diabetes_im1<-knnImputation(diabetes)
summary(diabetes_im)
##  NumeroEmbarazos  Concentrac.blucosa.plama Presion.arterial.diastolica
##  Min.   : 0.000   Min.   :  0.0            Min.   :  0.00             
##  1st Qu.: 1.000   1st Qu.: 99.0            1st Qu.: 63.02             
##  Median : 3.000   Median :117.0            Median : 71.21             
##  Mean   : 3.845   Mean   :120.9            Mean   : 68.94             
##  3rd Qu.: 6.000   3rd Qu.:140.2            3rd Qu.: 79.06             
##  Max.   :17.000   Max.   :199.0            Max.   :122.00             
##  Triceps.espesor.del.pliegue.cutaneo X2.horas.suero.insulina
##  Min.   : 0.0                        Min.   :  0.00         
##  1st Qu.: 0.0                        1st Qu.:  0.00         
##  Median :23.0                        Median : 42.39         
##  Mean   :20.5                        Mean   : 78.57         
##  3rd Qu.:32.0                        3rd Qu.:126.55         
##  Max.   :99.0                        Max.   :680.00         
##  indice.de.masa.corporal Funcion.pedigri.de.la.diabetes      edad      
##  Min.   : 0.00           Min.   :0.0780                 Min.   :21.00  
##  1st Qu.:27.30           1st Qu.:0.2437                 1st Qu.:24.00  
##  Median :32.00           Median :0.3725                 Median :29.00  
##  Mean   :31.99           Mean   :0.4719                 Mean   :33.24  
##  3rd Qu.:36.60           3rd Qu.:0.6262                 3rd Qu.:41.00  
##  Max.   :67.10           Max.   :2.4200                 Max.   :81.00  
##     resultado  
##  Negativo:500  
##  Positivo:268  
##                
##                
##                
## 
#Buscamos la mejor correlacion existente entre los datos
plot(diabetes_im)

str(diabetes)
## 'data.frame':    768 obs. of  9 variables:
##  $ NumeroEmbarazos                    : int  6 1 8 1 0 5 3 10 2 8 ...
##  $ Concentrac.blucosa.plama           : int  148 85 183 89 137 116 78 115 197 125 ...
##  $ Presion.arterial.diastolica        : int  72 66 64 NA 40 74 NA 0 70 96 ...
##  $ Triceps.espesor.del.pliegue.cutaneo: int  35 29 0 23 NA 0 32 0 45 0 ...
##  $ X2.horas.suero.insulina            : int  0 0 0 94 168 0 88 0 543 0 ...
##  $ indice.de.masa.corporal            : num  33.6 26.6 23.3 28.1 43.1 25.6 31 35.3 30.5 0 ...
##  $ Funcion.pedigri.de.la.diabetes     : num  0.627 0.351 0.672 0.167 2.288 ...
##  $ edad                               : int  50 31 32 21 33 30 26 29 53 54 ...
##  $ resultado                          : Factor w/ 2 levels "Negativo","Positivo": 2 1 2 1 2 1 2 1 2 2 ...
#REDES NEURONALES
#Crear la data train y test
dim(diabetes_im1)
## [1] 768   9
set.seed(111)
muestra=sample(537,231)
#Train data
train1=diabetes_im1[-muestra,]
#Test data
test1=diabetes_im1[muestra,]
dim(train1)
## [1] 537   9
dim(test1)
## [1] 231   9
fix(train1)
#Entrenamos el modelo de ANN
names(train1)
## [1] "NumeroEmbarazos"                    
## [2] "Concentrac.blucosa.plama"           
## [3] "Presion.arterial.diastolica"        
## [4] "Triceps.espesor.del.pliegue.cutaneo"
## [5] "X2.horas.suero.insulina"            
## [6] "indice.de.masa.corporal"            
## [7] "Funcion.pedigri.de.la.diabetes"     
## [8] "edad"                               
## [9] "resultado"
set.seed(222)
library(nnet)
modelo_diab=nnet(resultado~.,data=train1, size=50)
## # weights:  501
## initial  value 394.349169 
## iter  10 value 323.393175
## iter  20 value 312.037157
## iter  30 value 295.778164
## iter  40 value 282.044343
## iter  50 value 271.860239
## iter  60 value 257.564340
## iter  70 value 240.073847
## iter  80 value 223.292872
## iter  90 value 209.207816
## iter 100 value 192.569667
## final  value 192.569667 
## stopped after 100 iterations
#Predecir baso en el modelo anterior
predichos_diab=predict(modelo_diab, test1, type = "class")
predichos_diab
##   [1] "Negativo" "Negativo" "Negativo" "Negativo" "Positivo" "Negativo"
##   [7] "Negativo" "Positivo" "Positivo" "Negativo" "Negativo" "Positivo"
##  [13] "Negativo" "Positivo" "Positivo" "Positivo" "Negativo" "Positivo"
##  [19] "Negativo" "Negativo" "Negativo" "Positivo" "Negativo" "Positivo"
##  [25] "Negativo" "Negativo" "Negativo" "Positivo" "Negativo" "Negativo"
##  [31] "Negativo" "Negativo" "Negativo" "Positivo" "Negativo" "Negativo"
##  [37] "Negativo" "Negativo" "Negativo" "Positivo" "Negativo" "Positivo"
##  [43] "Negativo" "Negativo" "Negativo" "Negativo" "Negativo" "Negativo"
##  [49] "Negativo" "Positivo" "Negativo" "Positivo" "Negativo" "Negativo"
##  [55] "Negativo" "Positivo" "Negativo" "Negativo" "Negativo" "Negativo"
##  [61] "Negativo" "Positivo" "Negativo" "Negativo" "Positivo" "Positivo"
##  [67] "Negativo" "Negativo" "Positivo" "Positivo" "Negativo" "Negativo"
##  [73] "Negativo" "Positivo" "Positivo" "Negativo" "Negativo" "Positivo"
##  [79] "Negativo" "Negativo" "Negativo" "Negativo" "Negativo" "Negativo"
##  [85] "Positivo" "Positivo" "Negativo" "Negativo" "Negativo" "Positivo"
##  [91] "Positivo" "Negativo" "Negativo" "Negativo" "Negativo" "Positivo"
##  [97] "Negativo" "Positivo" "Negativo" "Positivo" "Negativo" "Negativo"
## [103] "Negativo" "Positivo" "Positivo" "Negativo" "Positivo" "Negativo"
## [109] "Positivo" "Negativo" "Negativo" "Negativo" "Negativo" "Negativo"
## [115] "Negativo" "Positivo" "Negativo" "Negativo" "Negativo" "Negativo"
## [121] "Negativo" "Negativo" "Negativo" "Negativo" "Positivo" "Positivo"
## [127] "Negativo" "Negativo" "Positivo" "Negativo" "Negativo" "Negativo"
## [133] "Positivo" "Positivo" "Negativo" "Positivo" "Positivo" "Negativo"
## [139] "Negativo" "Negativo" "Positivo" "Negativo" "Negativo" "Negativo"
## [145] "Negativo" "Positivo" "Positivo" "Negativo" "Positivo" "Negativo"
## [151] "Negativo" "Negativo" "Positivo" "Negativo" "Positivo" "Negativo"
## [157] "Negativo" "Positivo" "Positivo" "Positivo" "Negativo" "Negativo"
## [163] "Negativo" "Negativo" "Negativo" "Negativo" "Negativo" "Negativo"
## [169] "Positivo" "Negativo" "Negativo" "Negativo" "Negativo" "Positivo"
## [175] "Positivo" "Negativo" "Positivo" "Negativo" "Negativo" "Negativo"
## [181] "Negativo" "Negativo" "Positivo" "Negativo" "Negativo" "Positivo"
## [187] "Negativo" "Positivo" "Negativo" "Negativo" "Negativo" "Negativo"
## [193] "Negativo" "Positivo" "Positivo" "Negativo" "Negativo" "Positivo"
## [199] "Negativo" "Negativo" "Positivo" "Negativo" "Negativo" "Negativo"
## [205] "Negativo" "Negativo" "Negativo" "Positivo" "Negativo" "Negativo"
## [211] "Negativo" "Positivo" "Negativo" "Positivo" "Negativo" "Negativo"
## [217] "Negativo" "Negativo" "Positivo" "Positivo" "Negativo" "Negativo"
## [223] "Negativo" "Positivo" "Negativo" "Positivo" "Negativo" "Negativo"
## [229] "Negativo" "Negativo" "Negativo"
comparando=as.data.frame(cbind(test1$resultado, predichos_diab))
fix(comparando)
#Creamos la Matriz de confusion
table(test1$resultado, predichos_diab)
##           predichos_diab
##            Negativo Positivo
##   Negativo      117       33
##   Positivo       43       38
#Indicadores del modelo
library(caret)
## Loading required package: ggplot2
str(predichos_diab)
##  chr [1:231] "Negativo" "Negativo" "Negativo" "Negativo" "Positivo" ...
predichos_diab=as.factor(predichos_diab)
str(test1$resultado)
##  Factor w/ 2 levels "Negativo","Positivo": 2 1 1 1 1 1 2 1 2 1 ...
indicadores_diab=confusionMatrix(predichos_diab, test1$resultado)
indicadores_diab
## Confusion Matrix and Statistics
## 
##           Reference
## Prediction Negativo Positivo
##   Negativo      117       43
##   Positivo       33       38
##                                           
##                Accuracy : 0.671           
##                  95% CI : (0.6063, 0.7312)
##     No Information Rate : 0.6494          
##     P-Value [Acc > NIR] : 0.2689          
##                                           
##                   Kappa : 0.2564          
##                                           
##  Mcnemar's Test P-Value : 0.3019          
##                                           
##             Sensitivity : 0.7800          
##             Specificity : 0.4691          
##          Pos Pred Value : 0.7312          
##          Neg Pred Value : 0.5352          
##              Prevalence : 0.6494          
##          Detection Rate : 0.5065          
##    Detection Prevalence : 0.6926          
##       Balanced Accuracy : 0.6246          
##                                           
##        'Positive' Class : Negativo        
## 
#Diseño de la CURVA ROC
predichos_prob=predict(modelo_diab, test1, type = "raw")
library(ROCR)
## Loading required package: gplots
## 
## Attaching package: 'gplots'
## The following object is masked from 'package:stats':
## 
##     lowess
pred1=prediction(predichos_prob, test1$resultado)
pred2=performance(pred1, "tpr", "fpr")
plot(pred2, colorize=T)
lines(x=c(0,1), y=c(0,1))

#Creamos el Train y test
library(caret)
set.seed(111)
particio=createDataPartition(y=diabetes_im$resultado, p=0.7, list = F, times = 1)
train=diabetes_im[particio,]
test=diabetes_im[-particio,]
dim(diabetes_im)
## [1] 768   9
dim(train)
## [1] 538   9
dim(test)
## [1] 230   9
#Modelo arbol
set.seed(111)
library(rpart)
modelo1=rpart(resultado~.,data = train, method = "class")
modelo1
## n= 538 
## 
## node), split, n, loss, yval, (yprob)
##       * denotes terminal node
## 
##   1) root 538 188 Negativo (0.65055762 0.34944238)  
##     2) Concentrac.blucosa.plama< 123.5 332  63 Negativo (0.81024096 0.18975904)  
##       4) edad< 28.5 183  13 Negativo (0.92896175 0.07103825) *
##       5) edad>=28.5 149  50 Negativo (0.66442953 0.33557047)  
##        10) indice.de.masa.corporal< 26.35 30   0 Negativo (1.00000000 0.00000000) *
##        11) indice.de.masa.corporal>=26.35 119  50 Negativo (0.57983193 0.42016807)  
##          22) Concentrac.blucosa.plama< 103.5 59  15 Negativo (0.74576271 0.25423729)  
##            44) Funcion.pedigri.de.la.diabetes< 0.6355 48   8 Negativo (0.83333333 0.16666667) *
##            45) Funcion.pedigri.de.la.diabetes>=0.6355 11   4 Positivo (0.36363636 0.63636364) *
##          23) Concentrac.blucosa.plama>=103.5 60  25 Positivo (0.41666667 0.58333333)  
##            46) NumeroEmbarazos< 6.5 42  20 Negativo (0.52380952 0.47619048)  
##              92) X2.horas.suero.insulina< 140 30  11 Negativo (0.63333333 0.36666667)  
##               184) indice.de.masa.corporal>=33.75 16   3 Negativo (0.81250000 0.18750000) *
##               185) indice.de.masa.corporal< 33.75 14   6 Positivo (0.42857143 0.57142857) *
##              93) X2.horas.suero.insulina>=140 12   3 Positivo (0.25000000 0.75000000) *
##            47) NumeroEmbarazos>=6.5 18   3 Positivo (0.16666667 0.83333333) *
##     3) Concentrac.blucosa.plama>=123.5 206  81 Positivo (0.39320388 0.60679612)  
##       6) indice.de.masa.corporal< 29.95 62  22 Negativo (0.64516129 0.35483871)  
##        12) edad< 26.5 17   1 Negativo (0.94117647 0.05882353) *
##        13) edad>=26.5 45  21 Negativo (0.53333333 0.46666667)  
##          26) edad>=56 9   0 Negativo (1.00000000 0.00000000) *
##          27) edad< 56 36  15 Positivo (0.41666667 0.58333333)  
##            54) indice.de.masa.corporal>=28.8 10   2 Negativo (0.80000000 0.20000000) *
##            55) indice.de.masa.corporal< 28.8 26   7 Positivo (0.26923077 0.73076923) *
##       7) indice.de.masa.corporal>=29.95 144  41 Positivo (0.28472222 0.71527778)  
##        14) edad< 28.5 51  24 Positivo (0.47058824 0.52941176)  
##          28) Concentrac.blucosa.plama< 165.5 38  15 Negativo (0.60526316 0.39473684)  
##            56) Presion.arterial.diastolica>=72.3342 16   2 Negativo (0.87500000 0.12500000) *
##            57) Presion.arterial.diastolica< 72.3342 22   9 Positivo (0.40909091 0.59090909)  
##             114) NumeroEmbarazos>=0.5 13   5 Negativo (0.61538462 0.38461538) *
##             115) NumeroEmbarazos< 0.5 9   1 Positivo (0.11111111 0.88888889) *
##          29) Concentrac.blucosa.plama>=165.5 13   1 Positivo (0.07692308 0.92307692) *
##        15) edad>=28.5 93  17 Positivo (0.18279570 0.81720430) *
library(partykit)
## Loading required package: libcoin
## Loading required package: mvtnorm
plot(as.party(modelo1))

#Predecimos
predichos=predict(modelo1, test, type = "class")
predichos
##        2        8       12       14       29       34       36       39 
## Negativo Positivo Positivo Positivo Negativo Negativo Negativo Negativo 
##       42       44       46       48       49       58       60       62 
## Positivo Positivo Positivo Negativo Negativo Positivo Negativo Positivo 
##       63       64       65       66       71       75       78       82 
## Negativo Negativo Positivo Negativo Negativo Negativo Negativo Negativo 
##       87       89       94       96       98      101      102      106 
## Positivo Positivo Negativo Positivo Negativo Positivo Negativo Negativo 
##      110      111      114      116      117      121      122      124 
## Negativo Positivo Negativo Positivo Positivo Negativo Negativo Negativo 
##      125      126      131      134      135      136      140      149 
## Negativo Negativo Negativo Negativo Negativo Positivo Negativo Positivo 
##      150      151      152      155      158      164      165      167 
## Negativo Negativo Negativo Positivo Negativo Negativo Positivo Negativo 
##      168      169      170      175      176      182      185      188 
## Positivo Positivo Positivo Negativo Positivo Negativo Positivo Positivo 
##      190      192      195      206      208      210      216      218 
## Negativo Positivo Negativo Negativo Positivo Positivo Positivo Positivo 
##      224      225      228      232      234      241      244      245 
## Negativo Negativo Negativo Positivo Negativo Negativo Positivo Positivo 
##      247      249      250      252      253      257      262      264 
## Positivo Positivo Negativo Positivo Negativo Positivo Negativo Positivo 
##      266      268      278      279      282      283      284      286 
## Positivo Negativo Negativo Negativo Positivo Positivo Positivo Positivo 
##      287      290      291      292      294      297      299      301 
## Positivo Negativo Negativo Negativo Negativo Positivo Negativo Positivo 
##      305      312      319      320      329      332      335      338 
## Positivo Negativo Negativo Negativo Negativo Negativo Negativo Positivo 
##      339      340      346      347      355      356      357      359 
## Positivo Positivo Positivo Negativo Negativo Positivo Negativo Negativo 
##      364      369      376      377      379      380      383      384 
## Positivo Negativo Positivo Negativo Positivo Positivo Negativo Negativo 
##      386      390      399      402      420      427      433      439 
## Negativo Negativo Negativo Positivo Positivo Negativo Negativo Negativo 
##      443      446      450      451      452      453      456      458 
## Negativo Positivo Negativo Negativo Negativo Negativo Positivo Negativo 
##      466      470      471      478      480      492      494      506 
## Negativo Negativo Negativo Negativo Negativo Negativo Negativo Negativo 
##      509      517      518      528      529      536      539      555 
## Negativo Positivo Positivo Negativo Negativo Negativo Negativo Negativo 
##      556      558      562      572      575      576      577      579 
## Positivo Positivo Positivo Negativo Negativo Negativo Negativo Positivo 
##      580      581      583      586      587      590      596      603 
## Positivo Negativo Positivo Negativo Positivo Negativo Positivo Positivo 
##      607      610      613      615      619      622      623      627 
## Positivo Negativo Positivo Positivo Positivo Negativo Positivo Negativo 
##      628      629      631      633      634      637      638      639 
## Negativo Positivo Positivo Negativo Negativo Positivo Negativo Positivo 
##      646      657      659      667      671      675      676      678 
## Positivo Negativo Positivo Positivo Positivo Negativo Positivo Negativo 
##      682      684      685      687      688      689      695      696 
## Negativo Negativo Negativo Negativo Positivo Negativo Negativo Positivo 
##      697      699      700      704      707      708      710      713 
## Negativo Negativo Negativo Positivo Negativo Negativo Negativo Positivo 
##      716      717      719      722      725      736      743      745 
## Positivo Positivo Negativo Negativo Positivo Negativo Negativo Positivo 
##      747      748      751      752      759      762 
## Negativo Positivo Negativo Negativo Negativo Positivo 
## Levels: Negativo Positivo
#Creamos la matriz de confusion
table(predichos, test$resultado)
##           
## predichos  Negativo Positivo
##   Negativo      105       29
##   Positivo       45       51
#Indicadores
library(caret)
str(test$resultado)
##  Factor w/ 2 levels "Negativo","Positivo": 1 1 2 2 1 1 1 2 1 2 ...
test$resultado=as.factor(test$resultado)
indicadores=confusionMatrix(predichos, test$resultado)
indicadores
## Confusion Matrix and Statistics
## 
##           Reference
## Prediction Negativo Positivo
##   Negativo      105       29
##   Positivo       45       51
##                                           
##                Accuracy : 0.6783          
##                  95% CI : (0.6137, 0.7382)
##     No Information Rate : 0.6522          
##     P-Value [Acc > NIR] : 0.22411         
##                                           
##                   Kappa : 0.3225          
##                                           
##  Mcnemar's Test P-Value : 0.08121         
##                                           
##             Sensitivity : 0.7000          
##             Specificity : 0.6375          
##          Pos Pred Value : 0.7836          
##          Neg Pred Value : 0.5312          
##              Prevalence : 0.6522          
##          Detection Rate : 0.4565          
##    Detection Prevalence : 0.5826          
##       Balanced Accuracy : 0.6687          
##                                           
##        'Positive' Class : Negativo        
##