# cargando la data diabetes 
diabetes=read.csv("https://raw.githubusercontent.com/VictorGuevaraP/Mineria-de-datos-2019-2/master/diabetes_m.csv", sep = ";")
head(diabetes)
##   n NumeroEmbarazos Concentrac.blucosa.plama Presión.arterial.diastólica
## 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
##   Tríceps.espesor.del.pliegue.cutáneo X2.horas.suero.insulina
## 1                                  35                       0
## 2                                  29                       0
## 3                                   0                       0
## 4                                  23                      94
## 5                                  NA                     168
## 6                                   0                       0
##   Índice.de.masa.corporal Función.pedigrí.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
str(diabetes)
## 'data.frame':    768 obs. of  10 variables:
##  $ n                                  : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ 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 ...
##  $ Presión.arterial.diastólica        : int  72 66 64 NA 40 74 NA 0 70 96 ...
##  $ Tríceps.espesor.del.pliegue.cutáneo: 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 ...
##  $ Índice.de.masa.corporal            : num  33.6 26.6 23.3 28.1 43.1 25.6 31 35.3 30.5 0 ...
##  $ Función.pedigrí.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 ...
# con el comando summary tendremos un resumen de los datos como la media , mediana ,etc 
summary(diabetes)
##        n         NumeroEmbarazos  Concentrac.blucosa.plama
##  Min.   :  1.0   Min.   : 0.000   Min.   :  0.0           
##  1st Qu.:192.8   1st Qu.: 1.000   1st Qu.: 99.0           
##  Median :384.5   Median : 3.000   Median :117.0           
##  Mean   :384.5   Mean   : 3.845   Mean   :120.9           
##  3rd Qu.:576.2   3rd Qu.: 6.000   3rd Qu.:140.2           
##  Max.   :768.0   Max.   :17.000   Max.   :199.0           
##                                                           
##  Presión.arterial.diastólica Tríceps.espesor.del.pliegue.cutáneo
##  Min.   :  0.00              Min.   : 0.00                      
##  1st Qu.: 62.00              1st Qu.: 0.00                      
##  Median : 72.00              Median :23.00                      
##  Mean   : 69.05              Mean   :20.41                      
##  3rd Qu.: 80.00              3rd Qu.:32.00                      
##  Max.   :122.00              Max.   :99.00                      
##  NA's   :84                  NA's   :66                         
##  X2.horas.suero.insulina Índice.de.masa.corporal
##  Min.   :  0.00          Min.   : 0.00          
##  1st Qu.:  0.00          1st Qu.:27.30          
##  Median : 24.00          Median :32.00          
##  Mean   : 78.23          Mean   :31.99          
##  3rd Qu.:127.75          3rd Qu.:36.60          
##  Max.   :680.00          Max.   :67.10          
##  NA's   :70                                     
##  Función.pedigrí.de.la.diabetes      edad          resultado  
##  Min.   :0.0780                 Min.   :21.00   Negativo:500  
##  1st Qu.:0.2437                 1st Qu.:24.00   Positivo:268  
##  Median :0.3725                 Median :29.00                 
##  Mean   :0.4719                 Mean   :33.24                 
##  3rd Qu.:0.6262                 3rd Qu.:41.00                 
##  Max.   :2.4200                 Max.   :81.00                 
## 
#Del análisis eliminar la primera columna ya que contiene datos redundantes 
diabetes1<-diabetes[,2:10]
head(diabetes1)
##   NumeroEmbarazos Concentrac.blucosa.plama Presión.arterial.diastólica
## 1               6                      148                          72
## 2               1                       85                          66
## 3               8                      183                          64
## 4               1                       89                          NA
## 5               0                      137                          40
## 6               5                      116                          74
##   Tríceps.espesor.del.pliegue.cutáneo X2.horas.suero.insulina
## 1                                  35                       0
## 2                                  29                       0
## 3                                   0                       0
## 4                                  23                      94
## 5                                  NA                     168
## 6                                   0                       0
##   Índice.de.masa.corporal Función.pedigrí.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
summary(diabetes1)
##  NumeroEmbarazos  Concentrac.blucosa.plama Presión.arterial.diastólica
##  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                 
##  Tríceps.espesor.del.pliegue.cutáneo 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             
##  Índice.de.masa.corporal Función.pedigrí.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  
##                
##                
##                
##                
## 
#ASUMIENDO QUE LOS MISSING SON MCA
#Imputamos por KNNIMPUTATION
#ANÁLISIS EXPLORATORIO DE DATOS

library(DMwR)
## Loading required package: lattice
## Loading required package: grid
## 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
# en la libreria dmwr contiene los codigos para que reconozca el knnimputacion
diabetes2=knnImputation(diabetes1)
summary(diabetes2)
##  NumeroEmbarazos  Concentrac.blucosa.plama Presión.arterial.diastólica
##  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             
##  Tríceps.espesor.del.pliegue.cutáneo 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         
##  Índice.de.masa.corporal Función.pedigrí.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  
##                
##                
##                
## 
##############
library(ggplot2)
ggplot(data=diabetes2)+
  geom_point(mapping = aes(x=Presión.arterial.diastólica,y=Índice.de.masa.corporal,
                           color=resultado))

hist(log(diabetes2$NumeroEmbarazos))

################################
#REDES NEURONALES
#creando la data train y test
dim(diabetes2)
## [1] 768   9
set.seed(111)
muestra=sample(537,231)
#Train data
# en la data train nos sirve tanto para las redes neuronales y los arboles de decision
# en la data train nosotros podemos editarla para obener mejores predicciones 
train=diabetes2[-muestra,]
train$Presión.arterial.diastólica=(sqrt(train$Presión.arterial.diastólica))
#Test data
# al igual que la data train tambien nos sirve para redes y para arboles de decision 
# la data test no se puede editar ya que es muetra datos reales aqui es donde se generara el modelo de prediccion
test=diabetes2[muestra,]
dim(train)
## [1] 537   9
dim(test)
## [1] 231   9
fix(train)
#Entrenamos el modelo de ANN
names(train)
## [1] "NumeroEmbarazos"                    
## [2] "Concentrac.blucosa.plama"           
## [3] "Presión.arterial.diastólica"        
## [4] "Tríceps.espesor.del.pliegue.cutáneo"
## [5] "X2.horas.suero.insulina"            
## [6] "Índice.de.masa.corporal"            
## [7] "Función.pedigrí.de.la.diabetes"     
## [8] "edad"                               
## [9] "resultado"
set.seed(222)
library(nnet)
modelo_diab=nnet(resultado~.,data=train, size=50)
## # weights:  501
## initial  value 384.218139 
## iter  10 value 326.513420
## iter  20 value 315.951523
## iter  30 value 298.531535
## iter  40 value 273.427793
## iter  50 value 256.019258
## iter  60 value 242.519942
## iter  70 value 231.239099
## iter  80 value 218.356661
## iter  90 value 205.931969
## iter 100 value 199.221827
## final  value 199.221827 
## stopped after 100 iterations
#Predecir baso en el modelo anterior
predichos_diab=predict(modelo_diab, test, type = "class")
predichos_diab
##   [1] "Negativo" "Positivo" "Negativo" "Negativo" "Negativo" "Negativo"
##   [7] "Negativo" "Negativo" "Negativo" "Negativo" "Negativo" "Negativo"
##  [13] "Negativo" "Negativo" "Negativo" "Negativo" "Negativo" "Positivo"
##  [19] "Negativo" "Negativo" "Negativo" "Negativo" "Positivo" "Negativo"
##  [25] "Negativo" "Negativo" "Negativo" "Negativo" "Negativo" "Negativo"
##  [31] "Negativo" "Negativo" "Negativo" "Positivo" "Negativo" "Positivo"
##  [37] "Positivo" "Negativo" "Negativo" "Negativo" "Negativo" "Negativo"
##  [43] "Positivo" "Negativo" "Negativo" "Positivo" "Negativo" "Negativo"
##  [49] "Negativo" "Positivo" "Negativo" "Negativo" "Negativo" "Positivo"
##  [55] "Negativo" "Negativo" "Negativo" "Negativo" "Negativo" "Negativo"
##  [61] "Negativo" "Negativo" "Negativo" "Negativo" "Negativo" "Negativo"
##  [67] "Positivo" "Negativo" "Negativo" "Negativo" "Negativo" "Negativo"
##  [73] "Negativo" "Negativo" "Negativo" "Negativo" "Negativo" "Negativo"
##  [79] "Negativo" "Positivo" "Negativo" "Negativo" "Negativo" "Negativo"
##  [85] "Positivo" "Negativo" "Negativo" "Negativo" "Negativo" "Negativo"
##  [91] "Negativo" "Negativo" "Negativo" "Negativo" "Negativo" "Negativo"
##  [97] "Negativo" "Negativo" "Negativo" "Negativo" "Negativo" "Negativo"
## [103] "Negativo" "Negativo" "Negativo" "Positivo" "Negativo" "Negativo"
## [109] "Negativo" "Negativo" "Negativo" "Negativo" "Negativo" "Negativo"
## [115] "Negativo" "Negativo" "Negativo" "Negativo" "Negativo" "Negativo"
## [121] "Negativo" "Negativo" "Negativo" "Negativo" "Negativo" "Negativo"
## [127] "Negativo" "Negativo" "Negativo" "Negativo" "Negativo" "Negativo"
## [133] "Negativo" "Negativo" "Negativo" "Negativo" "Negativo" "Negativo"
## [139] "Negativo" "Negativo" "Negativo" "Negativo" "Negativo" "Negativo"
## [145] "Negativo" "Negativo" "Negativo" "Negativo" "Negativo" "Negativo"
## [151] "Negativo" "Positivo" "Negativo" "Negativo" "Negativo" "Positivo"
## [157] "Negativo" "Positivo" "Negativo" "Negativo" "Negativo" "Negativo"
## [163] "Negativo" "Negativo" "Positivo" "Negativo" "Negativo" "Negativo"
## [169] "Negativo" "Negativo" "Negativo" "Negativo" "Negativo" "Negativo"
## [175] "Negativo" "Negativo" "Negativo" "Negativo" "Negativo" "Negativo"
## [181] "Negativo" "Negativo" "Negativo" "Negativo" "Negativo" "Negativo"
## [187] "Negativo" "Negativo" "Negativo" "Negativo" "Positivo" "Positivo"
## [193] "Negativo" "Negativo" "Negativo" "Negativo" "Negativo" "Negativo"
## [199] "Negativo" "Negativo" "Positivo" "Positivo" "Negativo" "Negativo"
## [205] "Negativo" "Positivo" "Negativo" "Negativo" "Negativo" "Negativo"
## [211] "Negativo" "Negativo" "Negativo" "Negativo" "Negativo" "Negativo"
## [217] "Negativo" "Negativo" "Negativo" "Negativo" "Positivo" "Negativo"
## [223] "Negativo" "Negativo" "Negativo" "Negativo" "Negativo" "Negativo"
## [229] "Positivo" "Negativo" "Negativo"
#compara los datos del test- resultado con el predichos_diab
comparando=as.data.frame(cbind(test$resultado, predichos_diab))
fix(comparando)

table(test$resultado, predichos_diab)
##           predichos_diab
##            Negativo Positivo
##   Negativo      132       18
##   Positivo       74        7
# esta es la matriz de confusion
#Indicadores del modelo
library(caret)
str(predichos_diab)
##  chr [1:231] "Negativo" "Positivo" "Negativo" "Negativo" "Negativo" ...
predichos_diab=as.factor(predichos_diab)
str(test$resultado)
##  Factor w/ 2 levels "Negativo","Positivo": 2 1 1 1 1 1 2 1 2 1 ...
indicadores_diab=confusionMatrix(predichos_diab, test$resultado)
indicadores_diab
## Confusion Matrix and Statistics
## 
##           Reference
## Prediction Negativo Positivo
##   Negativo      132       74
##   Positivo       18        7
##                                           
##                Accuracy : 0.6017          
##                  95% CI : (0.5355, 0.6654)
##     No Information Rate : 0.6494          
##     P-Value [Acc > NIR] : 0.9425          
##                                           
##                   Kappa : -0.0399         
##                                           
##  Mcnemar's Test P-Value : 9.8e-09         
##                                           
##             Sensitivity : 0.88000         
##             Specificity : 0.08642         
##          Pos Pred Value : 0.64078         
##          Neg Pred Value : 0.28000         
##              Prevalence : 0.64935         
##          Detection Rate : 0.57143         
##    Detection Prevalence : 0.89177         
##       Balanced Accuracy : 0.48321         
##                                           
##        'Positive' Class : Negativo        
## 
# al final de este codigo nos muestra el accuracy, specifisity, y sensibility

###############################
#CURVA ROC
predichos_prob=predict(modelo_diab, test, type = "raw")
library(ROCR)
## Loading required package: gplots
## 
## Attaching package: 'gplots'
## The following object is masked from 'package:stats':
## 
##     lowess
pred1=prediction(predichos_prob, test$resultado)
pred2=performance(pred1, "tpr", "fpr")
plot(pred2, colorize=T)
lines(x=c(0,1), y=c(0,1))

#CREANDO EL ARBOL DE DESICIONES
library(rpart)
#usaremos la variable resultado para armar el modelo
modelo1=rpart(resultado~., data = train, method = "class")

modelo1
## n= 537 
## 
## node), split, n, loss, yval, (yprob)
##       * denotes terminal node
## 
##   1) root 537 187 Negativo (0.65176909 0.34823091)  
##     2) Concentrac.blucosa.plama< 154.5 454 118 Negativo (0.74008811 0.25991189)  
##       4) Concentrac.blucosa.plama< 111.5 232  29 Negativo (0.87500000 0.12500000)  
##         8) NumeroEmbarazos< 6.5 197  16 Negativo (0.91878173 0.08121827) *
##         9) NumeroEmbarazos>=6.5 35  13 Negativo (0.62857143 0.37142857)  
##          18) X2.horas.suero.insulina< 80.10565 27   7 Negativo (0.74074074 0.25925926) *
##          19) X2.horas.suero.insulina>=80.10565 8   2 Positivo (0.25000000 0.75000000) *
##       5) Concentrac.blucosa.plama>=111.5 222  89 Negativo (0.59909910 0.40090090)  
##        10) Índice.de.masa.corporal< 27.05 35   3 Negativo (0.91428571 0.08571429) *
##        11) Índice.de.masa.corporal>=27.05 187  86 Negativo (0.54010695 0.45989305)  
##          22) edad< 30.5 93  28 Negativo (0.69892473 0.30107527)  
##            44) Presión.arterial.diastólica>=7.426937 81  20 Negativo (0.75308642 0.24691358)  
##              88) Índice.de.masa.corporal< 41.8 69  13 Negativo (0.81159420 0.18840580)  
##               176) Índice.de.masa.corporal>=32.45 38   2 Negativo (0.94736842 0.05263158) *
##               177) Índice.de.masa.corporal< 32.45 31  11 Negativo (0.64516129 0.35483871)  
##                 354) NumeroEmbarazos< 1.5 15   1 Negativo (0.93333333 0.06666667) *
##                 355) NumeroEmbarazos>=1.5 16   6 Positivo (0.37500000 0.62500000) *
##              89) Índice.de.masa.corporal>=41.8 12   5 Positivo (0.41666667 0.58333333) *
##            45) Presión.arterial.diastólica< 7.426937 12   4 Positivo (0.33333333 0.66666667) *
##          23) edad>=30.5 94  36 Positivo (0.38297872 0.61702128)  
##            46) Función.pedigrí.de.la.diabetes< 0.44 55  27 Negativo (0.50909091 0.49090909)  
##              92) Tríceps.espesor.del.pliegue.cutáneo>=26.5 22   7 Negativo (0.68181818 0.31818182)  
##               184) Tríceps.espesor.del.pliegue.cutáneo< 34 12   1 Negativo (0.91666667 0.08333333) *
##               185) Tríceps.espesor.del.pliegue.cutáneo>=34 10   4 Positivo (0.40000000 0.60000000) *
##              93) Tríceps.espesor.del.pliegue.cutáneo< 26.5 33  13 Positivo (0.39393939 0.60606061)  
##               186) X2.horas.suero.insulina< 5.478401 24  12 Negativo (0.50000000 0.50000000)  
##                 372) Índice.de.masa.corporal>=34.5 7   1 Negativo (0.85714286 0.14285714) *
##                 373) Índice.de.masa.corporal< 34.5 17   6 Positivo (0.35294118 0.64705882) *
##               187) X2.horas.suero.insulina>=5.478401 9   1 Positivo (0.11111111 0.88888889) *
##            47) Función.pedigrí.de.la.diabetes>=0.44 39   8 Positivo (0.20512821 0.79487179) *
##     3) Concentrac.blucosa.plama>=154.5 83  14 Positivo (0.16867470 0.83132530) *
library(partykit)
## Loading required package: libcoin
## Loading required package: mvtnorm
plot(as.party(modelo1))

# el codigo plot nos muestra el arbol de decisiones
#predecimos
predichos=predict(modelo1, test, type="class")
predichos
##      507      175       69      305       45      334      281      135 
## Positivo Negativo Negativo Negativo Positivo Negativo Negativo Negativo 
##      405      143       40       25      455      180      100       38 
## Positivo Negativo Negativo Negativo Negativo Positivo Positivo Negativo 
##      526      436      479      197      421      454      523      320 
## Negativo Positivo Negativo Negativo Positivo Negativo Negativo Positivo 
##       92      362      210      186       56       61      381       91 
## Positivo Positivo Positivo Positivo Negativo Negativo Negativo Negativo 
##       93      343      352      373      493      257      252      170 
## Negativo Negativo Positivo Negativo Negativo Negativo Positivo Negativo 
##       80       42      423      388      308      113      473      506 
## Negativo Positivo Negativo Negativo Negativo Negativo Negativo Negativo 
##      310      536      408      400      125      533      335       27 
## Negativo Positivo Negativo Positivo Negativo Negativo Negativo Negativo 
##      349      122      216       94      316       58      385      285 
## Negativo Negativo Positivo Negativo Negativo Negativo Negativo Negativo 
##       89      410      274      502      224      147      289      283 
## Negativo Positivo Negativo Negativo Positivo Negativo Negativo Positivo 
##      513      459      287      204      351        6      359      236 
## Negativo Positivo Positivo Negativo Negativo Negativo Negativo Positivo 
##       95      134      146      201       76       18       70      269 
## Negativo Negativo Negativo Negativo Negativo Negativo Positivo Negativo 
##       52      524      133      415      198      120       22      456 
## Negativo Positivo Positivo Negativo Negativo Negativo Negativo Positivo 
##      466      426      494      152      215      227      218       13 
## Negativo Positivo Positivo Negativo Negativo Negativo Positivo Positivo 
##       87       50      307      451      328      420      396      292 
## Negativo Negativo Positivo Negativo Positivo Negativo Positivo Negativo 
##      268      342      258      163       34      195      172      489 
## Negativo Negativo Positivo Positivo Negativo Negativo Negativo Negativo 
##      336      149      223      115      112      169       90      300 
## Positivo Positivo Negativo Positivo Positivo Negativo Negativo Negativo 
##      260      422      202      321        9      183      211      488 
## Positivo Negativo Negativo Positivo Positivo Negativo Negativo Positivo 
##      519       67       48      419      155      237      314      512 
## Negativo Negativo Negativo Negativo Positivo Positivo Positivo Negativo 
##      266      487      168      353      261      271      230       78 
## Negativo Negativo Positivo Negativo Positivo Negativo Positivo Negativo 
##      379      383      370      199      104        3      331      340 
## Positivo Negativo Negativo Negativo Negativo Positivo Negativo Positivo 
##      460      372      509      391      358      253      129      217 
## Negativo Negativo Negativo Negativo Positivo Negativo Positivo Negativo 
##       19      327      299      206      501      444      259       10 
## Negativo Negativo Positivo Negativo Negativo Negativo Positivo Negativo 
##       12       63      231      313      398      472      286      532 
## Positivo Negativo Positivo Positivo Negativo Negativo Negativo Negativo 
##      412      246      377      207       32      106      442      240 
## Negativo Positivo Negativo Positivo Positivo Negativo Negativo Negativo 
##       75      208      428      325      200      376       30      273 
## Negativo Positivo Positivo Negativo Positivo Positivo Positivo Negativo 
##      209       16      184      128      339      103      191      386 
## Negativo Negativo Negativo Negativo Positivo Negativo Negativo Negativo 
##      190      403      127      284      534      346       51      496 
## Positivo Positivo Positivo Positivo Negativo Positivo Negativo Positivo 
##      363      219      375      220      229      171      531      401 
## Negativo Negativo Negativo Negativo Positivo Negativo Positivo Negativo 
##      418      162      366      492      453      130      452 
## Positivo Positivo Negativo Negativo Negativo Negativo Positivo 
## Levels: Negativo Positivo
#matriz de confusion
table(predichos, test$resultado)
##           
## predichos  Negativo Positivo
##   Negativo      117       33
##   Positivo       33       48
#indicadores en este caso (resultado) ya que es la variable dependiente
library(caret)
str(test$resultado)
##  Factor w/ 2 levels "Negativo","Positivo": 2 1 1 1 1 1 2 1 2 1 ...
test$resultado=as.factor(test$resultado)
indicadores=confusionMatrix(predichos,test$resultado)
indicadores
## Confusion Matrix and Statistics
## 
##           Reference
## Prediction Negativo Positivo
##   Negativo      117       33
##   Positivo       33       48
##                                           
##                Accuracy : 0.7143          
##                  95% CI : (0.6514, 0.7716)
##     No Information Rate : 0.6494          
##     P-Value [Acc > NIR] : 0.02153         
##                                           
##                   Kappa : 0.3726          
##                                           
##  Mcnemar's Test P-Value : 1.00000         
##                                           
##             Sensitivity : 0.7800          
##             Specificity : 0.5926          
##          Pos Pred Value : 0.7800          
##          Neg Pred Value : 0.5926          
##              Prevalence : 0.6494          
##          Detection Rate : 0.5065          
##    Detection Prevalence : 0.6494          
##       Balanced Accuracy : 0.6863          
##                                           
##        'Positive' Class : Negativo        
## 
# al final nos muestra los siguientes resultados: 
#  accuracy = 0.7273
#  sensitivity = 0.8000
#  specificity = 0.5926
# la precicion de nuestros indicadores son del 72% , lo cual indica que 168 personas tiene la seguridad en sus predicciones mientras que el resto es mas probable que falle
# lo cual nos quiere decir que tiene el 80% osea 185 personas tienen la certeza de que no tenga diabetes 
# y que tiene un 59% osea 137 personas tienen la certeza  de que si tenga diabetes