Cargando los datos sobre los infartos

infartos <- read.csv("https://archive.ics.uci.edu//ml//machine-learning-databases//00519//heart_failure_clinical_records_dataset.csv",header=TRUE)

names(infartos)=c('Edad','Anemia','CPK','Diabetes','Fraccion de eyeccion','Presion alta','Plaquetas','Suero de Creatinina','Suero de Sodio','sexo','Fumadores','Tiempo de seguimiento','Muerte')

#— #ESTADISTICA DESCRIPTIVA UNIVARIANTE #—

#VARIABLES CUANTITATIVAS

##Histograma de Infartos por edad

counts<- table(infartos$Edad)
#counts

hist(infartos$Edad,col = 'pink',main = 'Histograma de personas infartadas respecto a la edad',  xlab = 'Edades',ylab = 'Frecuencia',xlim = c(30,100))

sd(infartos$Edad)
## [1] 11.89481
summary(infartos$Edad)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   40.00   51.00   60.00   60.83   70.00   95.00

#Diagrama de cajas para infartos por edad

boxplot(infartos$Edad,col = 'pink',horizontal = T)

Histograma de Infartos con valores de CPK fuera de lo normal

counts<- table(infartos$CPK)
#counts

hist(infartos$CPK,col = 'bisque1',main = 'Histograma de infartos con valores de CPK fuera de lo normal', xlab = 'Valor por examen de CPK',ylab = 'Frecuencia')

sd(infartos$CPK)
## [1] 970.2879
summary(infartos$CPK)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    23.0   116.5   250.0   581.8   582.0  7861.0

#Diagrama de cajas para infartos por CPK

boxplot(infartos$CPK,col = 'bisque1',horizontal = T)

Histograma de Infarto con Plaquetas

counts<- table(infartos$Plaquetas)
#counts

hist(infartos$Plaquetas,main= 'Histograma de personas infartadas con Plaquetas', col = 'AZURE4',xlab = 'Valores de Plaquetas',ylab = 'Frecuencia')

sd(infartos$Plaquetas)
## [1] 97804.24
summary(infartos$Plaquetas)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   25100  212500  262000  263358  303500  850000

#Diagrama de cajas para infartos con Plaquetas

boxplot(infartos$Plaquetas,col = 'Azure4',horizontal = T)

Histograma de Infartos con valores de fraccion de eyeccion alterados

counts<- table(infartos$`Fraccion de eyeccion`)
counts
## 
## 14 15 17 20 25 30 35 38 40 45 50 55 60 62 65 70 80 
##  1  2  2 18 36 34 49 40 37 20 21  3 31  2  1  1  1
hist(infartos$`Fraccion de eyeccion`,main= 'Histograma de personas infartadas con fraccion de eyeccion alterada', col = 'aquamarine1',xlab = 'Valores de Fraccion de eyeccion',ylab = 'Frecuencia')

sd(infartos$`Fraccion de eyeccion`)
## [1] 11.83484
summary(infartos$`Fraccion de eyeccion`)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   14.00   30.00   38.00   38.08   45.00   80.00

#Diagrama de cajas para infartos por fraccion de eyeccion alterada

boxplot(infartos$`Fraccion de eyeccion`,col = 'aquamarine1',horizontal = T)

Histograma de Infartos con valores de Suero de sodio alterados

counts<- table(infartos$`Suero de Sodio`)
counts
## 
## 113 116 121 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 
##   1   1   1   1   1   1   3   2   2   9   5  14  10  32  16  40  38  23  22  35 
## 141 142 143 144 145 146 148 
##  12  11   3   5   9   1   1
hist(infartos$`Suero de Sodio`,main= 'Histograma de personas infartadas con valores de Suero de sodio alterados', col = 'orange',xlab = 'Valores de Suero de sodio',ylab = 'Frecuencia')

sd(infartos$`Suero de Sodio`)
## [1] 4.412477
summary(infartos$`Suero de Sodio`)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   113.0   134.0   137.0   136.6   140.0   148.0

#Diagrama de cajas para infartos con suero de sodio

boxplot(infartos$`Suero de Sodio`,col = 'orange',horizontal = T)

Histograma de Infartos con valores de Suero de creatinina alterados

counts<- table(infartos$`Suero de Creatinina`)
counts
## 
##  0.5  0.6  0.7 0.75  0.8  0.9    1  1.1 1.18  1.2  1.3  1.4  1.5  1.6  1.7  1.8 
##    1    4   19    1   24   32   50   32   11   24   20    9    5    6    9    4 
## 1.83  1.9    2  2.1  2.2  2.3  2.4  2.5  2.7  2.9    3  3.2  3.4  3.5  3.7  3.8 
##    8    5    1    5    1    3    2    3    3    1    2    1    1    2    1    1 
##    4  4.4    5  5.8  6.1  6.8    9  9.4 
##    1    1    1    1    1    1    1    1
hist(infartos$`Suero de Creatinina`,main= 'Histograma de personas infartadas con valores de Suero de creatinina alterados', col = 'magenta',xlab = 'Valores de Suero de creatinina',ylab = 'Frecuencia')

sd(infartos$`Suero de Creatinina`)
## [1] 1.03451
summary(infartos$`Suero de Creatinina`)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   0.500   0.900   1.100   1.394   1.400   9.400

#Diagrama de cajas para infartos con suero de creatinina

boxplot(infartos$`Suero de Creatinina`,col = 'magenta',horizontal = T)

Histograma de personas infartadas con tiempo de seguimiento

counts<- table(infartos$`Tiempo de seguimiento`)
counts
## 
##   4   6   7   8  10  11  12  13  14  15  16  20  22  23  24  26  27  28  29  30 
##   1   1   2   2   6   2   1   1   2   2   1   2   1   2   1   3   1   2   2   5 
##  31  32  33  35  38  40  41  42  43  44  45  50  54  55  59  60  61  63  64  65 
##   1   1   3   1   1   1   1   1   3   1   1   1   2   1   1   3   1   1   1   2 
##  66  67  68  71  72  73  74  75  76  77  78  79  80  82  83  85  86  87  88  90 
##   1   1   1   1   2   2   4   1   1   1   2   5   2   2   3   2   1   5   5   4 
##  91  94  95  96  97 100 104 105 106 107 108 109 110 111 112 113 115 117 118 119 
##   2   3   5   1   1   1   2   1   1   6   3   3   1   1   2   2   2   1   1   1 
## 120 121 123 126 129 130 134 135 140 145 146 147 148 150 154 162 170 171 172 174 
##   4   4   1   1   1   1   1   1   1   2   5   4   1   1   1   1   1   1   3   3 
## 175 180 185 186 187 188 192 193 194 195 196 197 198 200 201 205 206 207 208 209 
##   1   3   1   6   7   1   2   1   1   1   2   2   1   1   2   3   1   3   1   5 
## 210 211 212 213 214 215 216 220 230 231 233 235 237 240 241 244 245 246 247 250 
##   2   1   3   3   5   4   1   1   2   1   2   1   2   1   1   5   5   3   1   7 
## 256 257 258 270 271 278 280 285 
##   2   1   2   2   1   1   1   1
hist(infartos$`Tiempo de seguimiento`, main= 'GrAfico de personas infartadas con tiempo de seguimiento', col = 'yellow',xlab = 'Tiempo de seguimiento',ylab = 'Frecuencia')

sd(infartos$`Tiempo de seguimiento`)
## [1] 77.61421
summary(infartos$`Tiempo de seguimiento`)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##     4.0    73.0   115.0   130.3   203.0   285.0

#Diagrama de cajas para tiempo de seguimiento de personas con infartos

boxplot(infartos$`Tiempo de seguimiento`,col = 'yellow',horizontal = T)

#— #VARIABLES CUALITATIVAS #—

Graficos de infartos por anemia

library(lattice)
library(fdth)
## Warning: package 'fdth' was built under R version 4.0.2
## 
## Attaching package: 'fdth'
## The following objects are masked from 'package:stats':
## 
##     sd, var
counts<- table(infartos$Anemia)
barchart(counts, main= 'Grafico de personas infartadas con anemia', xlab= 'Tipo de casos (0=SIN ANEMIA Y 1=CON ANEMIA)', ylab= 'Frecuencia', col= c('pink', 'yellow'), horizontal = FALSE)

porcentajes <- as.numeric(round(((prop.table(table(infartos$Anemia)))*100),2))
etiquetas<-c('sin anemia','con anemia')
etiquetas <- paste(etiquetas, porcentajes)
etiquetas <- paste(etiquetas, "%", sep = "")
pie(porcentajes, etiquetas,main= 'Grafico de personas infartadas con anemia', col= c('pink', 'yellow'))

x<-matrix(c(170,129), ncol = 2, byrow = TRUE)
colnames(x)<-c('SIN ANEMIA','CON ANEMIA')
rownames(x)<-c('NUMERO DE CASOS')
x
##                 SIN ANEMIA CON ANEMIA
## NUMERO DE CASOS        170        129
fr<-fdt(infartos$Anemia, breaks ="Sturges", right = F)
fr
##   Class limits   f   rf rf(%)  cf  cf(%)
##      [0,0.101) 170 0.57 56.86 170  56.86
##  [0.101,0.202)   0 0.00  0.00 170  56.86
##  [0.202,0.303)   0 0.00  0.00 170  56.86
##  [0.303,0.404)   0 0.00  0.00 170  56.86
##  [0.404,0.505)   0 0.00  0.00 170  56.86
##  [0.505,0.606)   0 0.00  0.00 170  56.86
##  [0.606,0.707)   0 0.00  0.00 170  56.86
##  [0.707,0.808)   0 0.00  0.00 170  56.86
##  [0.808,0.909)   0 0.00  0.00 170  56.86
##   [0.909,1.01) 129 0.43 43.14 299 100.00

Graficos de Infartos en pacientes diabEticos

library(lattice)
library(fdth)

counts<- table(infartos$Diabetes)
barchart(counts, main= 'GrAfico de personas infartadas con diabetes', xlab= 'Tipo de casos (0=SIN DIABETES Y 1=CON DIABETES)', ylab= 'Frecuencia', col= c('aliceblue', 'azure3'), horizontal = FALSE)

porcentajes <- as.numeric(round(((prop.table(table(infartos$Diabetes)))*100),2))
etiquetas<-c('sin diabetes','con diabetes')
etiquetas <- paste(etiquetas, porcentajes)
etiquetas <- paste(etiquetas, "%", sep = "")
pie(porcentajes, etiquetas,main= 'Grafico de personas infartadas con diabetes', col= c('aliceblue', 'azure3'))

x<-matrix(c(174,125), ncol = 2, byrow = TRUE)
colnames(x)<-c('SIN DIABETES','CON DIABETES')
rownames(x)<-c('NUMERO DE CASOS')
x
##                 SIN DIABETES CON DIABETES
## NUMERO DE CASOS          174          125
fr2<-fdt(infartos$Diabetes,breaks ="Sturges", right = F)
fr2
##   Class limits   f   rf rf(%)  cf  cf(%)
##      [0,0.101) 174 0.58 58.19 174  58.19
##  [0.101,0.202)   0 0.00  0.00 174  58.19
##  [0.202,0.303)   0 0.00  0.00 174  58.19
##  [0.303,0.404)   0 0.00  0.00 174  58.19
##  [0.404,0.505)   0 0.00  0.00 174  58.19
##  [0.505,0.606)   0 0.00  0.00 174  58.19
##  [0.606,0.707)   0 0.00  0.00 174  58.19
##  [0.707,0.808)   0 0.00  0.00 174  58.19
##  [0.808,0.909)   0 0.00  0.00 174  58.19
##   [0.909,1.01) 125 0.42 41.81 299 100.00

Graficos de personas infartadas con presion alta

library(lattice)
library(fdth)

counts<- table(infartos$`Presion alta`)
barchart(counts, main= 'Grafico de personas infartadas con presiOn alta', xlab= 'Tipo de casos (0=sin presion alta, 1=con presion alta)', ylab= 'Frecuencia', col= c('pink', 'azure2'), horizontal = FALSE)

porcentajes <- as.numeric(round(((prop.table(table(infartos$`Presion alta`)))*100),2))
etiquetas<-c('sin presion alta','con presion alta')
etiquetas <- paste(etiquetas, porcentajes)
etiquetas <- paste(etiquetas, "%", sep = "")
pie(porcentajes, etiquetas,main= 'Grafico de personas infartadas con presion alta', col= c('pink', 'azure2'))

x<-matrix(c(194,105), ncol = 2, byrow = TRUE)
colnames(x)<-c('SIN DIABETES','CON DIABETES')
rownames(x)<-c('NUMERO DE CASOS')
x
##                 SIN DIABETES CON DIABETES
## NUMERO DE CASOS          194          105
fr3<-fdt(infartos$`Presion alta`,breaks ="Sturges", right = F)
fr3
##   Class limits   f   rf rf(%)  cf  cf(%)
##      [0,0.101) 194 0.65 64.88 194  64.88
##  [0.101,0.202)   0 0.00  0.00 194  64.88
##  [0.202,0.303)   0 0.00  0.00 194  64.88
##  [0.303,0.404)   0 0.00  0.00 194  64.88
##  [0.404,0.505)   0 0.00  0.00 194  64.88
##  [0.505,0.606)   0 0.00  0.00 194  64.88
##  [0.606,0.707)   0 0.00  0.00 194  64.88
##  [0.707,0.808)   0 0.00  0.00 194  64.88
##  [0.808,0.909)   0 0.00  0.00 194  64.88
##   [0.909,1.01) 105 0.35 35.12 299 100.00

Grafico de Infartos por sexo

library(lattice)
library(fdth)

counts<- table(infartos$sexo)
barchart(counts, main= 'GrAfico de personas infartadas segun su sexo', xlab= 'Sexo de paciente (0=Mujer, 1=Hombre)', col=c('pink','blue'),horizontal = FALSE)

porcentajes <- as.numeric(round(((prop.table(table(infartos$sexo)))*100),2))
etiquetas<-c('mujeres','hombres')
etiquetas <- paste(etiquetas, porcentajes)
etiquetas <- paste(etiquetas, "%", sep = "")
pie(porcentajes, etiquetas,main= 'GrAfico de personas infartadas segun su sexo', col= c('pink', 'blue'))

x<-matrix(c(105,194), ncol = 2, byrow = TRUE)
colnames(x)<-c('MUJER','HOMBRE')
rownames(x)<-c('NUMERO DE CASOS')
x
##                 MUJER HOMBRE
## NUMERO DE CASOS   105    194
fr4<-fdt(infartos$sexo,breaks ="Sturges", right = F)
fr4
##   Class limits   f   rf rf(%)  cf  cf(%)
##      [0,0.101) 105 0.35 35.12 105  35.12
##  [0.101,0.202)   0 0.00  0.00 105  35.12
##  [0.202,0.303)   0 0.00  0.00 105  35.12
##  [0.303,0.404)   0 0.00  0.00 105  35.12
##  [0.404,0.505)   0 0.00  0.00 105  35.12
##  [0.505,0.606)   0 0.00  0.00 105  35.12
##  [0.606,0.707)   0 0.00  0.00 105  35.12
##  [0.707,0.808)   0 0.00  0.00 105  35.12
##  [0.808,0.909)   0 0.00  0.00 105  35.12
##   [0.909,1.01) 194 0.65 64.88 299 100.00

Grafico de pacientes infartados respecto a su condicion fumadora

library('lattice')
library(fdth)

counts<- table(infartos$Fumadores)
barchart(counts, main= 'Grafico de personas infartadas respecto a su condicion fumadora', xlab= 'Condicion(0=No fuma Y 1=Fuma)', col=c('aquamarine4','antiquewhite3'), horizontal = FALSE)

porcentajes <- as.numeric(round(((prop.table(table(infartos$Fumadores)))*100),2))
etiquetas<-c('No Fumadores','Fumadores')
etiquetas <- paste(etiquetas, porcentajes)
etiquetas <- paste(etiquetas, "%", sep = "")
pie(porcentajes, etiquetas,main= 'GrAfico de personas infartadas respecto a su condicion fumadora', col= c('aquamarine4','antiquewhite3'))

x<-matrix(c(203,96), ncol = 2, byrow = TRUE)
colnames(x)<-c('NO FUMA','FUMA')
rownames(x)<-c('NUMERO DE CASOS')
x
##                 NO FUMA FUMA
## NUMERO DE CASOS     203   96
fr5<-fdt(infartos$Fumadores,breaks ="Sturges", right = F)
fr5
##   Class limits   f   rf rf(%)  cf  cf(%)
##      [0,0.101) 203 0.68 67.89 203  67.89
##  [0.101,0.202)   0 0.00  0.00 203  67.89
##  [0.202,0.303)   0 0.00  0.00 203  67.89
##  [0.303,0.404)   0 0.00  0.00 203  67.89
##  [0.404,0.505)   0 0.00  0.00 203  67.89
##  [0.505,0.606)   0 0.00  0.00 203  67.89
##  [0.606,0.707)   0 0.00  0.00 203  67.89
##  [0.707,0.808)   0 0.00  0.00 203  67.89
##  [0.808,0.909)   0 0.00  0.00 203  67.89
##   [0.909,1.01)  96 0.32 32.11 299 100.00

Grafico de pacientes infartados respecto a su estado de vida

library('lattice')
library(fdth)

counts<- table(infartos$Muerte)
barchart(counts, main= 'GrAfico de personas infartadas respecto a su estado de vida', xlab= 'Condicion (0=muerto, 1=Vivo)', col=c('pink','orange'), horizontal = FALSE)

porcentajes <- as.numeric(round(((prop.table(table(infartos$Muerte)))*100),2))
etiquetas<-c('Muertos','Vivos')
etiquetas <- paste(etiquetas, porcentajes)
etiquetas <- paste(etiquetas, "%", sep = "")
pie(porcentajes, etiquetas,main= 'GrAfico de personas infartadas respecto a su estado de vida', col= c('pink','orange'))

x<-matrix(c(203,96), ncol = 2, byrow = TRUE)
colnames(x)<-c('MUERTO','VIVO')
rownames(x)<-c('NUMERO DE CASOS')
x
##                 MUERTO VIVO
## NUMERO DE CASOS    203   96
fr6<-fdt(infartos$Muerte,breaks ="Sturges", right = F)
fr6
##   Class limits   f   rf rf(%)  cf  cf(%)
##      [0,0.101) 203 0.68 67.89 203  67.89
##  [0.101,0.202)   0 0.00  0.00 203  67.89
##  [0.202,0.303)   0 0.00  0.00 203  67.89
##  [0.303,0.404)   0 0.00  0.00 203  67.89
##  [0.404,0.505)   0 0.00  0.00 203  67.89
##  [0.505,0.606)   0 0.00  0.00 203  67.89
##  [0.606,0.707)   0 0.00  0.00 203  67.89
##  [0.707,0.808)   0 0.00  0.00 203  67.89
##  [0.808,0.909)   0 0.00  0.00 203  67.89
##   [0.909,1.01)  96 0.32 32.11 299 100.00

#— #ESTADISTICA DESCRIPTIVA MULTIVARIANTE #—

#— #VARIABLES CUANTITATIVAS #—

#Cruce de variables cualitativa vs cada cuantitativa

boxplot(infartos$Edad~infartos$sexo, main = 'Diagrama de infartos edad vs sexo', col= c('blue', 'magenta'))

boxplot(infartos$`Fraccion de eyeccion`~infartos$sexo, main = 'Diagrama de infartos fraccion de eyeccion vs sexo', col= c('yellow', 'pink'))

boxplot(infartos$`Fraccion de eyeccion`~infartos$`Presion alta`, main = 'Diagrama de infartos presion altas vs sexo', col= c('azure3', 'green'))

boxplot(infartos$CPK~infartos$sexo, main = 'Diagrama de infartos CPK vs sexo', col= c('yellow', 'pink'))

boxplot(infartos$`Suero de Sodio`~infartos$sexo, main = 'Diagrama de infartos CPK vs sexo', col= c('cyan1', 'aliceblue'))

#Matriz de Correlacion 1

cor(infartos[,c(1,5,8,3)])
##                             Edad Fraccion de eyeccion Suero de Creatinina
## Edad                  1.00000000           0.06009836          0.15918713
## Fraccion de eyeccion  0.06009836           1.00000000         -0.01130247
## Suero de Creatinina   0.15918713          -0.01130247          1.00000000
## CPK                  -0.08158390          -0.04407955         -0.01640848
##                              CPK
## Edad                 -0.08158390
## Fraccion de eyeccion -0.04407955
## Suero de Creatinina  -0.01640848
## CPK                   1.00000000
library(corrplot)
## Warning: package 'corrplot' was built under R version 4.0.2
## corrplot 0.84 loaded
corrplot(cor(infartos[,c(1,5,8,3)])) #grafica de matriz de correlaci?n

#Matriz de Correlacion 2

names (infartos)[12] = 'Tiempo'
names (infartos)[9] = 'Suero/Sodio'
        
cor(infartos[,c(1,7,12,9)])
##                    Edad   Plaquetas      Tiempo Suero/Sodio
## Edad         1.00000000 -0.05235437 -0.22406842 -0.04596584
## Plaquetas   -0.05235437  1.00000000  0.01051391  0.06212462
## Tiempo      -0.22406842  0.01051391  1.00000000  0.08764000
## Suero/Sodio -0.04596584  0.06212462  0.08764000  1.00000000
#matriz de correlacion grafica
library(corrplot)
corrplot(cor(infartos[,c(1,7,12,9)]))

Matriz de graficos de dispersion 1

plot(infartos[,c(1,5,8,3)],col=c('blue', 'yellow','pink','magenta'))

Matriz de graficos de dispersion 2

plot(infartos[,c(1,7,12,9)],col=c('blue','green','red','yellow'))

Matriz de varianzas y covarianzas 1

names (infartos)[8] = 'Suero/Creatinina'

cov(infartos[,c(1,5,8,3)])
##                             Edad Fraccion de eyeccion Suero/Creatinina
## Edad                  141.486483            8.4602372        1.9588454
## Fraccion de eyeccion    8.460237          140.0634554       -0.1383792
## Suero/Creatinina        1.958845           -0.1383792        1.0702111
## CPK                  -941.591531         -506.1744518      -16.4703818
##                               CPK
## Edad                   -941.59153
## Fraccion de eyeccion   -506.17445
## Suero/Creatinina        -16.47038
## CPK                  941458.57146

Matriz de varianzas y covarianzas 2

names (infartos)[12] = 'Tiempo/seguimiento'
cov(infartos[,c(1,7,12,9)])
##                             Edad     Plaquetas Tiempo/seguimiento  Suero/Sodio
## Edad                  141.486483     -60907.12         -206.86135    -2.412544
## Plaquetas          -60907.118586 9565668749.45        79811.06610 26810.436905
## Tiempo/seguimiento   -206.861351      79811.07         6023.96528    30.014152
## Suero/Sodio            -2.412544      26810.44           30.01415    19.469956