Introducción

El proyecto consistirá en, tal como su nombre lo indica, en un predictor de asistencia a reservas médicas, es decir, a partir de la información que se tenga de cierto paciente, determinar si faltará o no a una cita médica agendada previamente. La principal motivación es el mal funcionamiento del sistema de salud en Chile, y por ello, se buscará una forma de aportar al funcionamiento de este. El estudio se hará en función de un set de datos de pacientes en Brasil, donde se entrega información del paciente, y si este asistió o no a su reserva médica, mediante minería de datos se generará el predictor, y será posible aplicarlo para los pacientes en Chile, bajo la hipótesis de que los pacientes en Brasil, y en Chile tienen un comportamiento similar.

Motivación y alcance del proyecto

La principal motivación del proyecto propuesto por el grupo es hacer un aporte al sistema de salud Chileno. Éste se encuentra siempre con una demanda muy alta de médicos, y por lo mismo,los hospitales no dan abasto para atender a tantos pacientes, debido a esto el tiempo disponible de los médicos tiene un valor muy alto, y no puede ser desperdiciado, situación que suele ocurrir cuando un paciente no asiste a su reserva médica sin haber avisado con anticipación. Si bien el proyecto no hará que los hospitales dejen de estar con una demanda excesiva, este será de interés pues ayudará a optimizar el tiempo del que dispone cada médico en el hospital, dado que se podrá estimar si el paciente irá o no a su reserva médica, y en función de eso, tomar medidas para evitar que eso ocurra, o bien, cancelarla con una anticipación prudente.

Inicialmente, se procederá a explorar y analizar el dataset con el cual se trabajará con el fin de concluir si este cuenta con los atributos necesarios para realizar el proyecto o no. En el caso de que el dataset no cumpla con los requisitos, se procederá a buscar nuevos atributos o, en el peor de los casos, cambiar el dataset.

Descripción de los datos y exploración inicial

Describir el dataset completo, y mencionar los atributos más importantes y porqué lo son, y después mostrar el dataset filtrado.

KaggleV2_May_2016 <- read.csv("C:/Users/gozad/Desktop/U/7mo semestre/Introducción a la Minería de Datos/Proyecto/KaggleV2-May-2016.csv") #Ajustar a la ubicación del dataset de cada uno
reservas_medicas<-KaggleV2_May_2016
head(reservas_medicas)
##      PatientId AppointmentID Gender         ScheduledDay
## 1 2.987250e+13       5642903      F 2016-04-29T18:38:08Z
## 2 5.589978e+14       5642503      M 2016-04-29T16:08:27Z
## 3 4.262962e+12       5642549      F 2016-04-29T16:19:04Z
## 4 8.679512e+11       5642828      F 2016-04-29T17:29:31Z
## 5 8.841186e+12       5642494      F 2016-04-29T16:07:23Z
## 6 9.598513e+13       5626772      F 2016-04-27T08:36:51Z
##         AppointmentDay Age     Neighbourhood Scholarship Hipertension
## 1 2016-04-29T00:00:00Z  62   JARDIM DA PENHA           0            1
## 2 2016-04-29T00:00:00Z  56   JARDIM DA PENHA           0            0
## 3 2016-04-29T00:00:00Z  62     MATA DA PRAIA           0            0
## 4 2016-04-29T00:00:00Z   8 PONTAL DE CAMBURI           0            0
## 5 2016-04-29T00:00:00Z  56   JARDIM DA PENHA           0            1
## 6 2016-04-29T00:00:00Z  76        REPÚBLICA           0            1
##   Diabetes Alcoholism Handcap SMS_received No.show
## 1        0          0       0            0      No
## 2        0          0       0            0      No
## 3        0          0       0            0      No
## 4        0          0       0            0      No
## 5        1          0       0            0      No
## 6        0          0       0            0      No

Plots

A continuación se presentan gráficos a modo de exploración inicial, para ver las tendencias de la gente que cancela horas médicas. Se grafican la cantidad de gente enferma de la muestra, y luego la cantidad de gente enferma que no asiste.

library("reshape")
melteado <- melt(reservas_medicas, id=c("PatientId","Gender","No.show"))
enfermedad <- melteado[melteado$variable == "Hipertension" | melteado$variable == "Diabetes" | melteado$variable == "Alcoholism",]
enfermos <- aggregate(as.numeric(value) ~ variable, enfermedad, FUN =  sum)
barplot(enfermos$`as.numeric(value)`, names.arg = enfermos$variable, main = "Enfermedades de los pacientes con enfermedad de la muestra")

enfermedadSi <- melteado[(melteado$variable == "Hipertension" | melteado$variable == "Diabetes" | melteado$variable == "Alcoholism") & melteado$No.show == "Yes",]
enfermosSi <- aggregate(as.numeric(value) ~ variable, enfermedadSi, FUN =  sum)
barplot(enfermosSi$`as.numeric(value)`, names.arg = enfermosSi$variable, main = "Enfermedades de los pacientes con enfermedad que no asisten")