UCM

MÁSTER EN BIG DATA Y BUSINESS ANALYTICS

2018 - 2019

Introducción

La correcta distribución de los recursos dentro de una comunidad es una gran tarea, con mucha responsabilidad y complejidad, ya que se debe garantizar que todos los elementos sean eficientes y atiendan las necesidades sociales.

Para el año 2019 el presupuesto de la comunidad de Madrid alcanza los 20.072 millones de euros, el presupuesto más alto de la historia de la Administración Regional, lo que significa que diariamente se invierten 55 millones en servicios públicos. Específicamente, el servicio Sanitario ocupa el primer lugar con un 42,52% del presupuesto total y sobre esto la atención hospitalaria representa el 66,53% (alrededor de 15 millones y medio de euros diarios).

Como podemos observar, el sector Sanitario representa el principal gasto en la comunidad de Madrid. Dicho esto y en colaboración con la unidad de investigación del Hospital Clínico San Carlos y en concreto con Ángel Luis del Rey Mejías hemos identificado oportunidades de mejora sobre el sistema de gestión en los centros hospitalarios, con la finalidad de hacer una pequeña aportación en alguna de las líneas de trabajo que ellos vienen desarrollando. De esta manera, nos enfocamos en incorporar nuevas tecnologías en el procesado de información sanitaria, con el objetivo de desarrollar una gestión eficiente de los recursos, analizando los datos y facilitando a los profesionales sanitarios herramientas que sirvan de apoyo en el diagnóstico y tratamiento de los pacientes.

Si nos centramos en el caso de los reingresos hospitalarios, en el año 2016 tuvieron lugar más de 520.000 hospitalizaciones en la Comunidad de Madrid. El 7.11% de ellas fueron reingresos de pacientes que se produjeron en un tiempo inferior a 30 días y a través de Urgencias.

El tiempo medio que permanece un paciente que ha reingresado es de 9.52 días. De acuerdo al informe “Los costes de hospitalización en el Sistema Nacional de Salud” del Gobierno de España, el coste medio por día de hospitalización es de 350 euros, mientras que el coste por paciente de un reingreso urgente es de 5092 euros. Esto supone que cada reingreso supone un coste medio al hospital de 8424 euros, mientras que ampliar la estancia de un paciente una media de 5 días supone un coste aproximado de 1750 euros (6674 euros menos que en el caso del reingreso urgente). Adicionalmente, cada día en cuidados intensivos supone un coste aproximado por paciente de 1000 euros.

En el siguiente gráfico podemos ver el tipo de ingreso según el canal de atención hospitalario.

Del mismo modo, los diagnósticos con mayor número de reingresos registrados fueron:

  • (i6) Enfermedad cardiacas: 3200 casos, 8.6%.
  • (j5) Enfermedades crónicas del tracto respiratorio inferior: 7%.
  • (j2) Gripe y neumonía: 4.5%.
  • (k9) Enfermedades de la vesícula biliar, vías biliares y páncreas: 3.8%.
  • (n6) Enfermedades del aparato urinario: 3.4%.
  • (j11) Otras enfermedades del aparato respiratorio: 3%.
  • (t2) Traumatismo de región anatómica. 2.8%.
  • (c2 y j3)Neoplasias malignas de órganos digestivos y Otras infecciones agudas del tracto respiratorio inferior: 2.7%.

Con esto en mente, uno de los objetivos del trabajo es el desarrollo de un modelo predictivo enfocado en reingresos que nos permita minimizar el coste asociado a los errores de predicción (tanto de falsos negativos como de falsos positivos).

Problemática

  • El alto coste que suponen los reingresos al sistema público sanitario.
  • La complejidad para reconocer la mortalidad de un paciente al momento del ingreso.

Soluciones

  • Se propone realizar un análisis predictivo al momento de la evaluación del alta, que permita conocer la probabilidad de que el paciente reingrese, definiendo reingreso como todo ingreso en los 30 días siguientes al alta y a través de Urgencias.
  • Proporcionar una herramienta al hospital, que brinde información probabilística de mortalidad de los pacientes al ingresar al hospital, basándose en las características del ingreso.

Objetivo

El objetivo del trabajo que se presenta a continuación es, partiendo de un set de datos hospitalarios proporcionado por el Hospital Clínico San Carlos de pacientes ingresados en el 2016, realizar modelos predictivos que nos permitan conocer las probabilidades de reingreso y de fallecimiento de los pacientes

Esto con la finalidad de desarrollar una herramienta visual y dinámica, para apoyar al personal hospitalario en la toma de decisiones.

Justificación

En base a los objetivos, se planteó trabajar con dos sets de datos (Datos al ingreso del paciente y Datos a la evaluación del alta del paciente). Asimismo, se realizó un análisis exploratorio de los datos, limpieza, recategorización, creación y selección de variables. Posteriormente, se construyeron modelos predictivos sobre las variables objetivo, tuneando los parámetros, aplicando validación cruzada, técnicas de ensamblado y finalmente análisis de resultados obtenidos por los modelos.

Como propuesta atractiva se ha desarrollado una herramienta de visualización, utilizando Shiny, la cual contiene los resultados e indicadores más importantes para apoyar al personal hospitalario en la toma de decisiones.

Análisis de datos

El Instituto de Investigación Sanitaria del Hospital Clínico San Carlos nos ha facilitado un dataset con información relativa al tratamiento de pacientes en distintos hospitales de la Comunidad de Madrid.

Descripción de las variables

El primer paso ha sido tratar de alcanzar una descripción de alto nivel de la información que recoge cada una de las variables que presenta el dataset, y del estado en que se encuentra esta información:

Definición

De acuerdo al siguiente documento público, hemos resumido la descripción de las variables que conforman el dataset de estudio.

  • CENTRO: Código que identifica el centro, de acuerdo al Registro de Centros, Servicios y Establecimientos Sanitarios de la Comunidad de Madrid.

  • HISTORIA_Anonimo: Código identificativo del historial médico de los pacientes.

  • TIP_CIP: Tipo de documento del paciente (Identificación personal). Por categoría:

    1. Tarjeta Sanitaria Individual Comunidad de Madrid. Se utiliza siempre que el paciente tenga CIPA, tenga o no CIP
    2. Código de identificación personal único del Sistema Nacional de Salud incluido en la Tarjeta Sanitaria Individual (CIP). Se utiliza cuando el paciente tenga CIP pero no CIPA
    3. Código de Identificación de la Mutualidad General de Funcionarios Civiles del Estado (MUFACE), del Instituto Social de las Fuerzas Armadas (ISFAS) y de Mutualidad General Judicial (MUGEJU)
    4. Tarjeta Sanitaria Europea (TSE)
    5. DNI/NIE
    6. Pasaporte

  • CIPA_anonimo: Código de identificación del paciente. Es un identificador del paciente.

  • FECNAC: Fecha de nacimiento del paciente.

  • SEXO: Sexo del paciente, con 3 categorías:

    1. Hombre
    2. Mujer
    3. Estados intersexuales o indeterminados

  • PAIS_NAC: País de nacimiento del paciente (Código ISO).

  • REGFIN: Entidad o Institución que financia el episodio del paciente.

  • CIAS_PRO: Código de identificación de asistencia sanitaria.

  • PROCED: Identifica el origen del ingreso.

  • HOSPROC: Hospital de procedencia del paciente.

  • FECURG: Fecha y hora de llegada al servicio de urgencias. Los missing, pueden deberse a que los pacientes no ingresen a través de urgencias.

  • FECING: Fecha y hora del ingreso hospitalario.

  • TIPING: Circunstancias del ingreso.

  • SERVING: Servicio donde ingresa al paciente.

  • SERVALT: Servicio que da el alta al paciente.

  • FECALT: Fecha y hora del alta.

  • TIPALT: Circunstancias del alta y continuidad asistencial.

  • FECINT: Fecha y hora en el caso de que al paciente se le haya practicado una intervención quirúrgica o cualquier procedimiento realizado en quirófano, incluidas las cesáreas. Los missing pueden deberse a pacientes que no hayan sido intervenidos quirúrgicamente.

  • FECINT2: Fecha y hora en el caso de que al paciente se le haya practicado más de una intervención quirúrgica o cualquier procedimiento realizado en quirófano, incluidas las cesáreas.

  • M1-M7: Códigos de morfología de las neoplasias. Los códigos se definen de la siguiente forma:

    • /0: Benigno
    • /1: Incierto si es benigno o maligno o Malignidad límite 1 o Bajo potencial de malignidad 1
    • /2: Carcinoma in situ o Intraepitelial o No infiltrante o No invasor
    • /3: Maligno, sitio primario
    • /6: Maligno, sitio metastásico o Maligno, sitio secundario
    • /9: Maligno, incierto si el sitio es primario o metastásico

  • C1: Diagnóstico principal.

  • CE1: Exclusivamente como información complementaria del diagnóstico principal para identificar la causa externa que lo ha motivado. Existen 489.978 observaciones que no poseen descripción y por lo tanto las consideraremos como missing.

  • POACE1: Identifica si los diagnósticos o las causas externas que lo acompañan están presentes en el momento en que se genera el ingreso, en este caso, para la información complementaria del diagnóstico principal.

  • C2-C20: Otros diagnósticos.

  • POAC1-POAC20: Identifica si los diagnósticos o las causas externas que lo acompañan están presentes en el momento en que se genera el ingreso. Los valores que puede tomar son:

    • S: Si
    • N: No
    • D: Desconocido
    • I: Indeterminado clínicamente
    • E: Exento de asaignación.

  • P1-P22: Procedimientos quirúrgicos y/u obstétricos y otros procedimientos. Hay algunas observaciones que no poseen el valor identificativo del proceso.

  • P1_EXT-P6_EXT: Procedimientos realizados en otros centros sin que se haya producido el alta administrativa en su hospital de origen y sin haber cursado greso en el centro donde se le realizan estos procedimientos. Hay observaciones que no poseen categoría asociada.

  • FECPART: Se cumplimentará siempre que en cualquier campo diagnóstico se haya codificado un parto por vía vaginal.

  • SEMGEST: Tiempo de gestación (semanas).

  • RNVIVOS: Número de recién nacidos vivos.

  • MORTINATO: Número de recién nacidos muertos.

  • FECTRAS1-FECTRAS8: Fecha y hora del traslado. Es una variable que se podría refactorizar de tal manera que en vez de registrar fechas de traslado, simplemente se coloca el número de veces que se ha trasladado a un paciente.

  • SERVTRAS1-SERVTRAS8: Identificación del servicio del traslado.

  • COD_POSTAL: Código postal del domicilio habitual del paciente.

  • MUNICIPI: Municipio del domicilio habitual del paciente.

  • HOSPDEST: Código del hospital donde es remitido el paciente.

Análisis descriptivo

El primer paso es la exploración de los datos, la cual nos permitirá saber si existe algún problema con los mismos. Para ello, es necesario comprobar si la tipología de las variables es correcta, analizar el número de missings, comprobar las categorías de las variables, etcétera. Con este fin hemos realizado un análisis del estado de cada variable dentro del dataset, encontrando lo siguiente:

dtypes nan_per n_distinct count mean std min 25% 50% 75% max
CENTRO object 0.000 35 NA NA NA NA NA NA NA NA
HISTORIA_Anonimo int64 0.000 402608 520111 414263.394 394654.635 2 198085.5 361409 561435 3171147
TIP_CIP float64 0.550 3 233891 1.067 0.287 1 1.0 1 1 5
CIPA_anonimo float64 0.052 363025 493140 386112.985 317204.817 1 180871.8 362350 542831 2602194
FECNAC object 0.000 36635 NA NA NA NA NA NA NA NA
SEXO int64 0.000 3 520111 1.538 0.499 1 1.0 2 2 3
PAIS_NAC object 0.546 150 NA NA NA NA NA NA NA NA
REGFIN float64 0.000 56 520035 130.795 86.122 0 101.0 101 171 900
CIAS_PRO object 0.004 490 NA NA NA NA NA NA NA NA
PROCED float64 0.110 9 462906 1.874 1.661 1 1.0 1 2 9
HOSPROC object 0.966 137 NA NA NA NA NA NA NA NA
FECURG object 0.383 222432 NA NA NA NA NA NA NA NA
FECING object 0.000 280475 NA NA NA NA NA NA NA NA
TIPING int64 0.000 3 520111 1.385 0.523 1 1.0 1 2 3
SERVING object 0.000 60 NA NA NA NA NA NA NA NA
SERVALT object 0.000 55 NA NA NA NA NA NA NA NA
FECALT object 0.000 189650 NA NA NA NA NA NA NA NA
TIPALT object 0.001 11 NA NA NA NA NA NA NA NA
FECINT object 0.661 65255 NA NA NA NA NA NA NA NA
FECINT2 object 0.966 14821 NA NA NA NA NA NA NA NA
M1 object 0.837 971 NA NA NA NA NA NA NA NA
M2 object 0.956 629 NA NA NA NA NA NA NA NA
M3 object 0.996 273 NA NA NA NA NA NA NA NA
M4 object 0.999 119 NA NA NA NA NA NA NA NA
M5 object 1.000 53 NA NA NA NA NA NA NA NA
M6 object 1.000 35 NA NA NA NA NA NA NA NA
M7 object 1.000 25 NA NA NA NA NA NA NA NA
C1 object 0.000 13559 NA NA NA NA NA NA NA NA
POAC1 object 0.000 8 NA NA NA NA NA NA NA NA
CE1 object 0.942 716 NA NA NA NA NA NA NA NA
POACE1 object 0.942 6 NA NA NA NA NA NA NA NA
C2 object 0.114 12995 NA NA NA NA NA NA NA NA
POAC2 object 0.114 8 NA NA NA NA NA NA NA NA
C3 object 0.217 10882 NA NA NA NA NA NA NA NA
POAC3 object 0.217 9 NA NA NA NA NA NA NA NA
C4 object 0.311 9501 NA NA NA NA NA NA NA NA
POAC4 object 0.311 9 NA NA NA NA NA NA NA NA
C5 object 0.401 8497 NA NA NA NA NA NA NA NA
POAC5 object 0.401 8 NA NA NA NA NA NA NA NA
C6 object 0.485 7831 NA NA NA NA NA NA NA NA
POAC6 object 0.485 7 NA NA NA NA NA NA NA NA
C7 object 0.560 7202 NA NA NA NA NA NA NA NA
POAC7 object 0.560 7 NA NA NA NA NA NA NA NA
C8 object 0.626 6630 NA NA NA NA NA NA NA NA
POAC8 object 0.626 7 NA NA NA NA NA NA NA NA
C9 object 0.684 6108 NA NA NA NA NA NA NA NA
POAC9 object 0.684 8 NA NA NA NA NA NA NA NA
C10 object 0.733 5566 NA NA NA NA NA NA NA NA
POAC10 object 0.733 8 NA NA NA NA NA NA NA NA
C11 object 0.775 5181 NA NA NA NA NA NA NA NA
POAC11 object 0.776 7 NA NA NA NA NA NA NA NA
C12 object 0.813 4715 NA NA NA NA NA NA NA NA
POAC12 object 0.813 7 NA NA NA NA NA NA NA NA
C13 object 0.845 4356 NA NA NA NA NA NA NA NA
POAC13 object 0.845 6 NA NA NA NA NA NA NA NA
C14 object 0.873 3957 NA NA NA NA NA NA NA NA
POAC14 object 0.873 6 NA NA NA NA NA NA NA NA
C15 object 0.896 3604 NA NA NA NA NA NA NA NA
POAC15 object 0.896 6 NA NA NA NA NA NA NA NA
C16 object 0.916 3270 NA NA NA NA NA NA NA NA
POAC16 object 0.919 7 NA NA NA NA NA NA NA NA
C17 object 0.932 3014 NA NA NA NA NA NA NA NA
POAC17 object 0.935 7 NA NA NA NA NA NA NA NA
C18 object 0.946 2649 NA NA NA NA NA NA NA NA
POAC18 object 0.948 8 NA NA NA NA NA NA NA NA
C19 object 0.957 2339 NA NA NA NA NA NA NA NA
POAC19 object 0.958 8 NA NA NA NA NA NA NA NA
C20 object 0.966 2092 NA NA NA NA NA NA NA NA
POAC20 object 0.967 7 NA NA NA NA NA NA NA NA
P1 object 0.070 14547 NA NA NA NA NA NA NA NA
P2 object 0.332 12289 NA NA NA NA NA NA NA NA
P3 object 0.546 8876 NA NA NA NA NA NA NA NA
P4 object 0.697 6553 NA NA NA NA NA NA NA NA
P5 object 0.804 4900 NA NA NA NA NA NA NA NA
P6 object 0.875 3655 NA NA NA NA NA NA NA NA
P7 object 0.925 2866 NA NA NA NA NA NA NA NA
P8 object 0.952 2282 NA NA NA NA NA NA NA NA
P9 object 0.968 1872 NA NA NA NA NA NA NA NA
P10 object 0.978 1550 NA NA NA NA NA NA NA NA
P11 object 0.985 1257 NA NA NA NA NA NA NA NA
P12 object 0.989 1057 NA NA NA NA NA NA NA NA
P13 object 0.992 877 NA NA NA NA NA NA NA NA
P14 object 0.994 744 NA NA NA NA NA NA NA NA
P15 object 0.995 633 NA NA NA NA NA NA NA NA
P16 object 0.996 560 NA NA NA NA NA NA NA NA
P17 object 0.997 477 NA NA NA NA NA NA NA NA
P18 object 0.997 431 NA NA NA NA NA NA NA NA
P19 object 0.998 352 NA NA NA NA NA NA NA NA
P20 object 0.998 313 NA NA NA NA NA NA NA NA
P21 object 0.999 259 NA NA NA NA NA NA NA NA
P22 object 0.999 231 NA NA NA NA NA NA NA NA
P1_EXT object 0.999 101 NA NA NA NA NA NA NA NA
P2_EXT object 1.000 37 NA NA NA NA NA NA NA NA
P3_EXT object 1.000 14 NA NA NA NA NA NA NA NA
P4_EXT object 1.000 5 NA NA NA NA NA NA NA NA
P5_EXT object 1.000 2 NA NA NA NA NA NA NA NA
P6_EXT object 1.000 2 NA NA NA NA NA NA NA NA
FECPART object 0.954 443 NA NA NA NA NA NA NA NA
SEMGEST float64 0.943 47 29824 37.903 3.824 1 37.0 39 40 82
RNVIVOS float64 1.000 24 172 134.727 54.103 40 133.0 137 144 253
MORTINATO float64 1.000 0 0 NA NA NA NA NA NA NA
FECTRAS1 object 0.837 52020 NA NA NA NA NA NA NA NA
SERVTRAS1 object 0.837 70 NA NA NA NA NA NA NA NA
FECTRAS2 object 0.909 511 NA NA NA NA NA NA NA NA
SERVTRAS2 object 0.909 55 NA NA NA NA NA NA NA NA
FECTRAS3 object 0.983 491 NA NA NA NA NA NA NA NA
SERVTRAS3 object 0.983 51 NA NA NA NA NA NA NA NA
FECTRAS4 object 0.992 469 NA NA NA NA NA NA NA NA
SERVTRAS4 object 0.992 45 NA NA NA NA NA NA NA NA
FECTRAS5 object 0.997 422 NA NA NA NA NA NA NA NA
SERVTRAS5 object 0.997 41 NA NA NA NA NA NA NA NA
FECTRAS6 object 0.998 360 NA NA NA NA NA NA NA NA
SERVTRAS6 object 0.998 40 NA NA NA NA NA NA NA NA
FECTRAS7 float64 1.000 0 0 NA NA NA NA NA NA NA
SERVTRAS7 object 0.999 33 NA NA NA NA NA NA NA NA
FECTRAS8 float64 1.000 0 0 NA NA NA NA NA NA NA
SERVTRAS8 object 0.999 31 NA NA NA NA NA NA NA NA
COD_POSTAL float64 0.885 734 60043 28339.182 2097.290 3 28019.0 28047 28803 99000
MUNICIPI object 0.001 1995 NA NA NA NA NA NA NA NA
HOSPDEST object 0.983 166 NA NA NA NA NA NA NA NA
CIE int64 0.000 1 520111 10.000 0.000 10 10.0 10 10 10
VERSION_GRD int64 0.000 1 520111 7320.000 0.000 7320 7320.0 7320 7320 7320
CMD int64 0.000 26 520111 8.555 5.203 0 5.0 7 12 25
GRD int64 0.000 316 520111 342.519 218.559 1 167.0 283 513 956
PESO object 0.000 1210 NA NA NA NA NA NA NA NA
TIPO int64 0.000 3 520111 1.372 0.484 0 1.0 1 2 2
SEVERIDAD int64 0.000 5 520111 1.839 0.878 0 1.0 2 2 4
MORTALIDA int64 0.000 5 520111 1.615 0.871 0 1.0 1 2 4

Manipulación de los datos

La tabla anterior nos ofrece una visión general de las características de cada variable, por lo cual nos disponemos a empezar a tratarlas. La idea es producir un dataset que retenga la mayor cantidad de información presente en el original con variables que puedan emplearse para entrenar modelos predictivos.

Limpieza y transformación

Lo primero que hemos hecho ha sido eliminar las variables que no nos iban a aportar información, que han sido:

  • CIPA_Anonimo ya que identificaremos a los pacientes por su número de historia.
  • CIAS_PRO, RNVIVOS, MORTINATO, FECTRAS7 y FECTRAS8 por tener todos sus datos en blanco.
  • HOSPDEST por ser una variable al alta en muy mal estado
  • CIE porque toma siempre el mismo valor.
  • VERSION_GRD, CMD, GRD, PESO, TIPO, SEVERIDAD Y MORTALIDAD por ser variables relacionadas con el GRD (gasto) y por lo tanto datos que se aportan a posteriori.

En muchos casos conocemos los valores que puede tomar la variable, así que en esta etapa hemos querido abordar la eliminación de variables sin información y tratar missings y datos erróneos. Para este primer paso hemos usado Python, desarrollando el código que se muestra en el anexo.

La extracción de información de los campos está basada en la página oficial CIE-ES. Tratando de ser rigurosos y a la vez de conservar una cantidad de información manejable en un único dispositivo.

Fechas (FECNAC, FECURG, FECING, FECALT, FECINT1, FECINT2 y FECTRAS1 - FECTRAS8)

El conjunto de datos presenta múltiples fechas, muchas de ellas prácticamente vacías (FECTRAS7 y FECTRAS8 lo están completamente). Los pacientes con fecha de ingreso anterior a 2015 (49) los hemos eliminado (en principio los datos corresponden a 2016). El tratamiento que les hemos dado ha sido de tres tipos diferentes:

  • Extracción de información: Ha consistido en extraer el año, el mes, el día de la semana y la hora. Este tratamiento lo han recibido únicamente FECING y FECALT ya que consideremos que son las variables para las que esta información puede resultar de relevancia. Los nombres nuevos son los de las variables originales añadiendo: YEAR, MONTH, WEEKDAY y HOUR respectivamente.

  • Cálculo de intervalos de tiempo: Ha consistido en determinar el tiempo transcurrido entre dos fechas en fracción de año, por lo general, entre alguna fecha y la de ingreso. Así hemos generado:
    • EDADING: Edad en el momento que se produjo el ingreso. FECING - FECNAC.
    • TIMEALTING: Tiempo transcurrido entre el alta y el ingreso. Los pacientes con un alta anterior al ingreso (2) los hemos eliminado. FECALT - FECING
    • TIMEINTING: En primer lugar, para los pacientes intervenidos dos veces, hemos situado como FECINT la fecha de la intervención que antes se produjera. Luego hemos calculado el tiempo transcurrido entre dicha intervención y el ingreso. FECINT - FECING
    • TIMEINTINT: Tiempo entre intervenciones (tras la transformación explicada en la variable anterior, luego es siempre positivo). FECINT2 - FECINT
    • TIMETRAS1-TIMETRAS6: Tiempo entre todos los traslados y el ingreso. FECTRASX - FECING

  • Conversión a binaria: En este caso se han distinguido las observaciones que presentaban información para estas fechas y aquellas que no. Asimismo, las fechas que hemos tratado de esta forma han sido: FECURG, FECINT, FECINT2 y FECPART. Los nombres de las variables nuevas son el de la variable original con el subfijo: BIN.

  • INT1-2_n: Para las intervenciones además hemos contado cuantas intervenciones ha recibido cada paciente.

Diagnósticos (C1-C20)

Los códigos identificativos de los diagnósticos se corresponden con los publicados en el ICD-10 por la OMS. Lo primero que hemos hecho ha sido eliminar aquellos diagnósticos que no comenzaban por una letra (había 74), ya que se trataba de inputs incorrectos. Teniendo siempre en mente que el diagnóstico principal (C1) corresponde a la primera enfermedad diagnosticada y los diagnósticos restantes (C2-C20), no presentan orden temporal, luego son considerados secundarios, hemos generado las siguientes variables:

  • C1_3-C20_3: Recogen los 3 primeros caracteres de cada diagnóstico, que agrega información específica del caracter del diagnóstico a la especialidad.
  • C1_group-C20_group: Recogen las especialidades (entre g0 y g21) asociadas a grupos diagnósticos. La tabla empleada coincide con la lista tabular de enfermedades del CIE-ES.

    Codigo Grupo Descripcion
    A00-B99 g0 CIERTAS ENFERMEDADES INFECCIOSAS Y PARASITARIAS
    C00-D49+C7A,C7B,D3A g1 TUMORES [NEOPLASIAS]
    D50-D89 g2 ENFERMEDADES DE LA SANGRE Y DE LOS ÓRGANOS HEMATOPOYÉTICOS, Y CIERTOS TRASTORNOS QUE AFECTAN EL MECANISMO DE LA INMUNIDAD
    E00-E89 g3 ENFERMEDADES ENDOCRINAS, NUTRICIONALES Y METABÓLICAS
    F00-F99 g4 TRASTORNOS MENTALES Y DEL COMPORTAMIENTO
    G00-G99 g5 ENFERMEDADES DEL SISTEMA NERVIOSO
    H00-H59 g6 ENFERMEDADES DEL OJO Y SUS ANEXOS
    H60-H95 g7 ENFERMEDADES DEL OÍDO Y DE LA APÓFISIS MASTOIDES
    I00-I99 g8 ENFERMEDADES DEL SISTEMA CIRCULATORIO
    J00-J99 g9 ENFERMEDADES DEL SISTEMA RESPIRATORIO
    K00-K95 g10 ENFERMEDADES DEL SISTEMA DIGESTIVO
    L00-L99 g11 ENFERMEDADES DE LA PIEL Y DEL TEJIDO SUBCUTÁNEO
    M00-M99 g12 ENFERMEDADES DEL SISTEMA OSTEOMUSCULAR Y DEL TEJIDO CONJUNTIVO
    N00-N99 g13 ENFERMEDADES DEL SISTEMA GENITOURINARIO
    O00-O99+O9A g14 EMBARAZO, PARTO Y PUERPERIO
    P00-P96 g15 CIERTAS AFECCIONES ORIGINADAS EN EL PERÍODO PERINATAL
    Q00-Q99 g16 MALFORMACIONES CONGÉNITAS, DEFORMIDADES Y ANOMALÍAS CROMOSÓMICAS
    R00-R99 g17 SÍNTOMAS, SIGNOS Y HALLAZGOS ANORMALES CLÍNICOS Y DE LABORATORIO, NO CLASIFICADOS EN OTRA PARTE
    S00-T88 g18 TRAUMATISMOS, ENVENENAMIENTOS Y ALGUNAS OTRAS CONSECUENCIAS DE CAUSAS EXTERNAS
    V00-Y99 g19 CAUSAS EXTERNAS DE MORBILIDAD Y DE MORTALIDAD
    Z00-Z99 g20 FACTORES QUE INFLUYEN EN EL ESTADO DE SALUD Y CONTACTO CON LOS SERVICIOS DE SALUD
    U00-U99 g21 CÓDIGOS PARA PROPÓSITOS ESPECIALES
  • C1-20_group: Recoge todos los grupos a los que pertenecieron los diagnósticos que se diagnosticaron a cada paciente, incluyendo varias veces aquellos con varios diagnósticos asociados. Los grupos aparecen ordenados de menor a mayor independientemente del diagnóstico al que estuvieran asociados.
  • C1-20_1_n: Recoge el número de veces que se ha diagnosticado al paciente.
  • C1-20_1_once: Recoge la combinación de grupos a los que pertenecen los diagnósticos de cada paciente, sin repeticiones y ordenados de menor a mayor.
  • C1-20_1_once_n: Recoge el número de grupos diferentes a los que pertenecen los diagnósticos por observación.
  • C1_3_freq: Consiste en reemplazar los 3 primeros caracteres del diagnóstico principal por su frecuencia relativa (dentro del diagnóstico principal). Es un método usado comúnmente al trabajar con variables de muchas categorías.
  • C2-20_3_freq: Esta variable es la suma por paciente de las frecuencias relativas de sus diagnósticos secundarios (recordemos que los diagnósticos entre el 2 y 20 no presentan ordenación) evaluando, la frecuencia relativa, dentro del conjunto completo de diagnósticos secundarios.

Procedimientos (P1-P20)

Al igual que los diagnósticos, los procedimientos vienen identificados por un código, que hemos comprobado en esta página. Se trata de un código en el que cada carácter alfanumérico va incorporando información de forma sucesiva. El primer carácter identifica la sección, el segundo el sistema orgánico, el tercero el tipo de procedimiento/terapia/técnica o la modalidad, el cuarto la localización anatómica, el quinto el abordaje, el sexto el dispositivo y el séptimo el calificador (e.g. 06C73ZZ 0 = Médico Quirúrgica, 6 = Venas inferiores, C = Extirpación, 7 = Arteria Cólica izda., 3 = Percutáneo, Z = Ninguno, Z = Ninguno). Salvo la Z, que puede aparecer en cualquier posición posterior a la tercera, y siempre significa “Ninguno”, el resto de valores cambian de significado en función del carácter en la posición anterior (e.g. 00 Sección: Médico-Quirúrgica Sistema Orgánico: Sistema Nervioso Central, 10 Sección: Obstetricia, Sistema Orgánico: Embarazo).

Nosotros decidimos trabajar únicamente con los 3 primeros caracteres, que de alguna forma ya identifican con suficiente precisión el procedimiento, vistos de forma independiente. Por lo tanto, hemos generado las siguientes variables:

  • P1_1-P20_1: Identifica la Sección a la que pertenece el procedimiento.
  • P1_2-P20_2: Identifica el Sistema Orgánico sobre el que se ha realizado el procedimiento.
  • P1_3-P20_3: Identifica Tipo de Procedimiento/Terapia/Técnica o la Modalidad asociada al procedimiento.
  • P1-20_n: Cuenta el número de procedimientos practicados a un paciente.

Procedimientos externos (PEXT1 - PEXT6)

Estas variables apenas presentaban valores así que únicamente hemos generado:

  • PEXT1-6_n: Número de procedimientos externos que se le han realizado al paciente.

Morfología de las neoplasias (M1-M7)

La categorización de estos campos la hemos realizado basándonos en la tabla que aparece en la panel derecho de esta página, generando las siguientes variables:

  • M1_group-M7_group: Recoge el grupo (entre g0 y g48) asociado a la neoplasia por sus 3 primeros dígitos. En la tabla se puede observar que en función del intervalo al que pertenezcan estos 3 dígitos la neoplasia se agrupa dentro de una familia, estos grupos son representaciones numéricas de esas familias.
    Codigo Grupo Descripcion
    800-800 g0 Neoplasias, SAI
    801-804 g1 NEOPLASIAS EPITELIALES, SAI
    805-808 g2 NEOPLASIAS EPIDERMOIDES
    809-811 g3 NEOPLASIAS BASOCELULARES
    812-813 g4 PAPILOMAS Y CARCINOMAS DE CELULAS TRANSICIONALES
    814-838 g5 ADENOMAS Y ADENOCARCINOMAS
    839-842 g6 NEOPLASIAS DE LOS ANEXOS CUTANEOS
    843-843 g7 NEOPLASIAS MUCOEPIDERMOIDES
    844-849 g8 NEOPLASIAS QUISTICAS, MUCINOSAS Y SEROSAS
    850-854 g9 NEOPLASIAS DUCTALES, LOBULILLARES Y MEDULARES
    855-855 g10 NEOPLASIAS DE CELULAS ACINOSAS
    856-857 g11 NEOPLASIAS EPITELIALES COMPLEJAS
    858-858 g12 NEOPLASIAS EPITELIALES TIMOMAS
    859-867 g13 NEOPLASIAS DEL ESTROMA ESPECIALIZADO DE LAS GONADAS
    868-871 g14 PARAGANGLIOMAS Y TUMORES GLOMICOS
    872-879 g15 NEVOS Y MELANOMAS
    880-880 g16 TUMORES Y SARCOMAS DE TEJIDOS BLANDOS, SAI
    881-883 g17 NEOPLASIAS FIBROMATOSAS
    884-884 g18 NEOPLASIAS MIXOMATOSAS
    885-888 g19 NEOPLASIAS LIPOMATOSAS
    889-892 g20 NEOPLASIAS MIOMATOSAS
    893-899 g21 NEOPLASIAS COMPLEJAS MIXTAS Y DEL ESTROMA
    900-903 g22 NEOPLASIAS FIBROEPITELIALES
    904-904 g23 NEOPLASIAS SINOVIALES
    905-905 g24 NEOPLASIAS MESOTELIALES
    906-909 g25 NEOPLASIAS DE CELULAS GERMINALES
    910-910 g26 NEOPLASIAS TROFOBLASTICAS
    911-911 g27 MESONEFROMAS
    953-953 g28 MENINGIOMAS
    912-916 g29 TUMORES DE LOS VASOS SANGUINEOS
    917-917 g30 TUMORES DE LOS VASOS LINFATICOS
    918-924 g31 NEOPLASIAS OSEAS Y CONDROMATOSAS
    925-925 g32 TUMORES DE CELULAS GIGANTES
    926-926 g33 OTROS TUMORES OSEOS
    927-934 g34 TUMORES ODONTOGENICOS
    935-937 g35 OTROS TUMORES
    938-948 g36 GLIOMAS
    949-952 g37 NEOPLASIAS NEUROEPITELIOMATOSAS
    954-957 g38 TUMORES DE LAS VAINAS NERVIOSAS
    958-958 g39 TUMORES DE CELULAS GRANULARES Y SARCOMA ALVEOLAR DE PARTES BLANDAS
    959-972 g40 LINFOMAS HODGKIN Y NO-HODGKIN
    973-973 g41 TUMORES DE CELULAS PLASMATICAS
    974-974 g42 TUMORES DE LOS MASTOCITOS
    975-975 g43 NEOPLASIAS DE HISTIOCITOS Y DE CÉLULAS LINFOIDES ACCESORIAS
    976-976 g44 ENFERMEDADES INMUNOPROLIFERATIVAS
    980-994 g45 LEUCEMIAS
    995-996 g46 OTROS SINDROMES MIELOPROLIFERATIVOS
    997-997 g47 OTROS DESORDENES HEMATOLOGICOS
    998-999 g48 SINDROMES MIELODISPLASICOS
  • M1_last-M7_last: Recoge la cifra que aparece en el código al final (después de la “/”) y que está asociada directamente (como puede verse en la descripción del campo) con la gravedad de la neoplasia.
  • M1-7_n: Cuenta el número de neoplasias detectadas en un paciente.
  • M1-7_last_avg: Consiste en un promedio ponderado de la gravedad de las neoplasias observadas. Los pesos asociados a cada gravedad obedecen la siguiente fórmula:

    \[ \text{Peso de }M_i \longrightarrow w_i = 1.4 + \log\left(\frac{i}{1+\overline{n_M}} \right)\\ \overline{n_M} = \text{Promedio de neoplasias practicadas por paciente} \] El denominador \((1+\overline{n_M})\) se emplea para mitigar el efecto de la posición de la neoplasia en relación al promedio de neoplasias realizadas por paciente. El logaritmo \((\log)\) para ir aproximando los pesos asociados a las neoplasias posteriores y la suma de \(1.4\) evita la aparición de valores negativos \((\log\left(^1/_8\right) = -1.39)\). De esta forma los valores de nuestro promedio de gravedad identifican como más graves a pacientes cuyas neoplasias se han ido agravando (e.g. 3 3 6 → 4.28; 3 6 3 → 4.05). El objetivo es que el promedio discrimine pacientes que remiten de pacientes que empeoran.

  • m1-7_last_mean: Es también un promedio ponderado entre los indicadores de gravedad de las neoplasias, pero asignando al primer caso un peso doble al del resto. Este promedio trataría de extraer información sobre si la detección fue precoz, entendiendo que si ingresas con un tumor de alta gravedad no es así y debes tener peor pronóstico.

Causas externas presentes (POAC1-POAC20)

Como podemos leer en la descripción del campo esta variable tiene bien definidos los valores que puede tomar, así que en primer lugar hemos eliminado los inputs incorrectos, y posteriormente hemos generado las variables:

  • POAC1-20: Con los valores que toman las variables para el paciente concatenados y dispuestos por orden alfabético.
  • POAC1-20_n: Con el número de variables que presentan valores válidos para cada paciente.
  • POAC1-20_once: Con los valores que toman las variables concatenados y ordenados alfabéticamente pero sin repeticiones.

Traslados (SERVTRAS1-SERVTRAS8)

La información que hemos sido capaces de encontrar sobre los traslados ha sido muy escasa de forma que únicamente hemos generado:

  • SERVTRAS1-8_n: Que recoge el número de veces que ha sido trasladado un paciente.

Reingresos

La definición de reingreso que hemos empleado ha sido: Pacientes con igual número de historia que ingresan a través de urgencias menos de 30 días después de su último alta. Con este criterio contamos con 37298 reingresos en nuestros datos, habiendo generado dos nuevas variables:

  • REINGRESADO: Variable binaria que vale 1 si el paciente está ingresando a través de urgencias en los 30 días posteriores a su último alta y cero en los demás casos. Es una variable predictora.
  • REINGRESARA: Variable binaria que vale 1 si el paciente será reingresado tras el alta y cero en el resto de casos. Es una variable a predecir.

Relaciones

Durante el tratamiento de variables hemos observado que algunas de ellas están relacionadas entre sí. Por lo cual se crearon algunas variables, en su mayoría binarias, para indicar si el paciente cumple o no con esta relación:

  • rel_C_POAC: A priori pensamos que el número de diagnósticos y el número de valores para las columnas que recogen si las causas del diagnóstico estaban presentes al ingreso debería coincidir. Esta columna adopta el valor 1 si se da esta coincidencia y 0 si no se da.
  • rel_C_P: La misma suposición del caso anterior para los procedimientos.

Recategorización e imputación

Finalizado el proceso de transformación, nuestras variables han aumentado en número (disponemos de 222). No obstante, muchas de ellas están relacionadas con un único concepto: más de 60 variables relacionadas con los procedimientos, y un número similar asociadas a los diagnósticos. Por otro lado, hemos recategorizado aquellas variables que en primera instancia podrían ser útiles para un modelo, pero que aún presentan datos erróneos y un exceso de categorías.

Esta etapa la hemos desarrollado en R, que es el lenguaje que va a ser más habitual en el trabajo, ya que es el lenguaje en el que más hincapié se ha hecho durante el máster.

El trabajo en general ha consistido en agrupar categorías poco representadas o que guardaban relación entre sí, todavía considerando el significado de las categorías. Así tener variables con un número de categorías manejable y evitar los problemas derivados al mantener categorías poco representadas. Las variables creadas han sido:

TIP_CIP_recat

Distingue entre los ingresados presentando la tarjeta sanitaria, de aquellos que presentaron otro documento y de aquellos que no tienen un valor válido en este campo.

PAIS_NAC_recat

Agrupa las personas por nacidas en España, nacidas en el extranjero y con valores no válidos.

REGFIN_recat

Diferencia a aquellas personas cuyo tratamiento lo financia la Comunidad de Madrid, de las que son financiadas por otras regiones y de las que no presentan valor o presentan uno no válido en este campo.

PROCED_recat

En este caso hemos distinguido personas que proceden de Urgencias, del Ambulatorio, de otros Hospitales o cuya procedencia no se ha determinado correctamente.

SERVING_recat y SERVALT_recat

Para ambas variables hemos realizado la misma agrupación de servicios y con asesoramiento de especialistas, se juntaron aquellas categorías que están más relación entre sí. De esta manera, definimos la siguiente tabla:
Grupo Codigos
g1 URH, NEO, OBG, GIN, OBS
g2 NFL, NRL
g3 INM, HEL, ACL , APA, BCS, BIO, GEN, LAB
g4 DIE, DIG, END, ETM
g5 ADM, DCL
g6 ACV, CAR, CCA, CCI, UCR
g7 ANR, CGD, CMF, CPE, CPL, CTO, NRC, TRA, UTR
g8 FAC, FAR
g9 FIS, REH, MEF, ULM, REU
g10 HDD, HDG , HDM, HDO, HDP , HDS
g11 MIC, HEM
g12 MIN, MIP, MIR, MIV, GRT, INF, MPR, UCE
g13 ONC, ONR, RDT, MNU, UCP, UDO, HAD
g14 PQA, PQL, PQM, PSI, PSQ
g15 RAD, RAI
g16 LIT, NEF, UHD, URO
g17 NML, USO
g18 ALG, DER
g19 BIS, UTX
g20 OTR, ZZZ, MFC, OFT, ORL, PED, SLA, ULE, URG

POAC1_recat - POAC20_recat

En este caso la agrupación también ha sido igual para todas ellas: Si, No e Indeterminado. A nivel gráfico interesa mostrar cómo los “indeterminados” van tomando el control de la variable.

SEMGEST_recat

Aunque en principio podríamos tratarla como variable numérica, hemos decidido probar a separar por categorías, pacientes con menos de 27 semanas de gestación, de pacientes con el resto de valores, hasta llegar a 42. Pacientes con valores superiores a 42 los hemos agrupado en Otros y aquellos que no presentaban valor los hemos marcado como indeterminados. En los gráficos se ha omitido a los indeterminados porque impedían visualizar la distribución del resto.

TIPALT_recat

El tipo de alta es una de las variables con las clases más desbalanceadas, nosotros hemos decidido agrupar las clases según la siguiente tabla:
Grupo Codigos
g1 1, 1A, 1B, 1C, 1D
g2 4
g3 2, 3, 5, 6

En esencia, el grupo 1 son las personas que se fueron a su domicilio, el grupo 2 las que fallecieron y el 3 agrupa las situaciones raras.

CENTRO_recat

Para recategorizar esta variable se ha empleado webscrapping con Python. Los centros (la mayoría de ellos) se identifican mediante un código (CHXXXX: Centro Hospilario num. num. num. num.). Conociendo el catálogo de hospitales de la Comunidad de Madrid vimos que al consultar información de cada centro a través de su código, y solicitar ver ubicación la página te redirige a estos mapas. Viendo que existía por lo tanto una API expuesta, pero desconociendo su funcionamiento decidimos bajar el código html directamente y extraer de él la dirección de cada hospital.

Una vez obtenida la dirección, habilitamos la API de Google Maps para recuperar las coordenadas de cada hospital. De esta forma, se evaluó una estrategia para dividir los hospitales según su ubicación: estableciendo 5 centroides (Centro - Calle Almagro, Noroeste - Las Rozas, Suroeste - Alcorcón, Sureste - Rivas Vaciamadrid y Noreste - Alcobendas) y asociar cada hospital a uno de estos grupos por proximidad, calculando las distancias reales mediante la ley esférica del coseno:

\[ d = R_T \cdot \arccos\left(\sin(lat_1) \cdot \sin(lat_2) + \cos(lat_1) \cdot \cos(lat_2) \cdot \cos(lon_2 - lon_1) \right) \] De esta forma hemos recategorizado los centros, quedando así:

Mapa generado con: ggmaps

Mapa generado con: ggmaps

Y quedando así transformada su distribución:

HOSPROC_BIN y HOSPDEST_BIN

Para estas variables pensamos realizar la misma transformación que para la variable CENTRO, sin embargo, menos del 4% de los valores se encontraban en nuestra lista de centros (que reune todos los centros de la Comunidad de Madrid), así que decidimos transformarlas en binarias, quedando sus distribuciones de la siguiente forma:

Diagnósticos (C_clust)

Para los diagnósticos disponemos de dos alternativas: los tres primeros caracteres, que indican el diagnsóticos con bastante precisión (existen algunos trabajos tomando 4 e incluso 5 caracteres, pero comúnmente enfocados a alguna especialidad) y los grupos diagnósticos que propone la página oficial CIE-ES.
No obstante, y debido a que entre los intereses que nos manifestó el grupo de investigación del Hospital se encontraba el estudio de los Diagnósticos, decidimos hacer un clustering de los mismos aplicando técnicas de análisis de redes, a ver si esos clústers resultaban más informativos que la agrupación fundamentada en la especialidad médica.

La construcción de la red la hemos realizado considerando cada código diagnóstico (de 3 caracteres) como un nodo, y considerando que se establecía un enlace direccional desde el diagnóstico principal hacia todos los diagnósticos secundarios. De esta forma nuestra red tiene 1746 nodos, y ~223.000 enlaces. Se trata por lo tanto de una red extremadamente densa, aquí podemos observar las principales medidas de centralidad: \[ Closeness:\ C_i = \frac{1}{\sum_jd(n_i, n_j)} \ \ \ Betweeness: B_i = \frac{2\cdot N_{shortest}(n_i)}{N\cdot(N-1)} \]
id label InDegree OutDegree Closeness Betweenness cluster
1 A01 4 11 0.086 0.000 2
2 A02 67 404 0.089 0.001 2
3 A03 5 12 0.086 0.000 8
4 A04 290 596 0.088 0.002 8
5 A05 20 130 0.088 0.000 2
6 A06 6 50 0.087 0.000 2
7 A07 30 82 0.088 0.000 2
8 A08 130 437 0.089 0.001 2
9 A09 114 450 0.089 0.002 2
10 A15 130 377 0.089 0.001 2
11 A17 12 53 0.087 0.000 2
12 A18 51 199 0.088 0.000 2
13 A19 20 110 0.088 0.000 2
14 A23 10 8 0.085 0.000 2
15 A28 5 21 0.086 0.000 2
16 A31 37 127 0.088 0.000 2
17 A32 25 143 0.088 0.001 2
18 A36 8 1 0.081 0.000 8
19 A37 16 113 0.088 0.000 2
20 A38 13 21 0.086 0.000 2
21 A39 9 64 0.087 0.000 2
22 A40 66 479 0.089 0.001 8
23 A41 406 1068 0.088 0.008 8
24 A42 16 62 0.088 0.000 2
25 A43 11 40 0.087 0.000 8
26 A44 1 9 0.085 0.000 2
27 A46 21 89 0.088 0.000 8
28 A48 28 140 0.088 0.000 2
29 A49 207 215 0.088 0.001 2
30 A50 2 9 0.085 0.000 2
31 A51 17 44 0.087 0.000 2
32 A52 50 114 0.088 0.000 2
33 A53 80 23 0.087 0.000 3
34 A54 8 14 0.085 0.000 2
35 A55 2 14 0.085 0.000 2
36 A56 8 23 0.086 0.000 2
37 A58 3 11 0.085 0.000 2
38 A59 14 5 0.084 0.000 3
39 A60 37 30 0.087 0.000 3
40 A63 70 58 0.087 0.000 3
41 A68 9 18 0.086 0.000 8
42 A69 9 21 0.086 0.000 2
43 A74 10 11 0.084 0.000 3
44 A77 5 34 0.086 0.000 2
45 A78 20 98 0.088 0.000 2
46 A79 3 17 0.086 0.000 3
47 A81 31 124 0.088 0.000 2
48 A85 6 94 0.088 0.000 2
49 A86 14 205 0.089 0.000 2
50 A87 26 240 0.089 0.000 2
51 A88 3 21 0.086 0.000 2
52 A89 1 2 0.082 0.000 8
53 A90 3 15 0.084 0.000 3
54 A98 0 25 0.095 0.000 2
55 B00 218 255 0.089 0.001 2
56 B01 32 154 0.088 0.000 3
57 B02 267 385 0.089 0.002 8
58 B05 0 2 0.089 0.000 2
59 B06 20 7 0.084 0.000 5
60 B07 52 7 0.084 0.000 3
61 B08 46 59 0.087 0.000 3
62 B09 44 38 0.087 0.000 2
63 B10 27 21 0.086 0.000 2
64 B15 32 66 0.087 0.000 2
65 B16 23 90 0.088 0.000 3
66 B17 96 230 0.088 0.000 2
67 B18 599 393 0.089 0.004 2
68 B19 372 152 0.088 0.001 2
69 B20 464 509 0.089 0.006 2
70 B25 186 260 0.089 0.001 2
71 B26 23 67 0.087 0.000 2
72 B27 89 223 0.088 0.001 2
73 B30 66 22 0.087 0.000 8
74 B33 21 41 0.087 0.000 2
75 B34 201 390 0.089 0.002 2
76 B35 72 2 0.081 0.000 8
77 B36 75 13 0.085 0.000 2
78 B37 558 375 0.089 0.002 2
79 B39 3 27 0.087 0.000 2
80 B44 88 188 0.088 0.000 2
81 B45 6 18 0.086 0.000 2
82 B46 7 28 0.086 0.000 8
83 B47 11 20 0.084 0.000 2
84 B48 28 2 0.082 0.000 8
85 B49 53 56 0.087 0.000 2
86 B50 8 99 0.088 0.000 2
87 B51 0 16 0.094 0.000 2
88 B52 3 4 0.083 0.000 2
89 B53 5 7 0.083 0.000 2
90 B54 14 26 0.086 0.000 3
91 B55 32 195 0.088 0.000 2
92 B57 53 28 0.086 0.000 4
93 B58 21 35 0.087 0.000 3
94 B59 28 187 0.088 0.000 2
95 B60 2 2 0.082 0.000 8
96 B65 12 12 0.085 0.000 8
97 B67 126 115 0.088 0.000 2
98 B69 20 36 0.087 0.000 2
99 B74 9 5 0.083 0.000 2
100 B78 9 6 0.083 0.000 2
101 B81 38 26 0.086 0.000 2
102 B82 6 12 0.085 0.000 2
103 B86 8 17 0.086 0.000 3
104 B89 4 6 0.084 0.000 8
105 B90 201 19 0.086 0.000 8
106 B91 181 15 0.085 0.000 8
107 B94 78 20 0.086 0.000 2
108 B95 625 81 0.088 0.001 2
109 B96 778 182 0.088 0.002 2
110 B97 286 227 0.089 0.002 2
111 B99 168 186 0.088 0.000 2
112 C00 17 53 0.087 0.000 8
113 C01 29 86 0.088 0.000 2
114 C02 66 186 0.088 0.000 2
115 C03 26 83 0.088 0.000 2
116 C04 25 138 0.088 0.000 2
117 C05 10 79 0.088 0.000 2
118 C06 55 179 0.088 0.000 2
119 C07 21 93 0.088 0.000 2
120 C08 13 59 0.086 0.000 8
121 C09 25 103 0.088 0.000 2
122 C10 35 130 0.088 0.000 2
123 C11 31 101 0.088 0.000 2
124 C12 30 85 0.087 0.000 2
125 C13 38 109 0.088 0.000 8
126 C14 27 81 0.088 0.000 2
127 C15 93 321 0.088 0.000 8
128 C16 162 537 0.089 0.001 2
129 C17 46 201 0.088 0.000 2
130 C18 281 675 0.088 0.002 2
131 C19 107 354 0.088 0.000 2
132 C20 183 467 0.088 0.001 2
133 C21 31 162 0.088 0.000 2
134 C22 218 530 0.088 0.001 2
135 C23 45 213 0.088 0.000 2
136 C24 55 302 0.088 0.000 8
137 C25 181 509 0.088 0.001 2
138 C26 35 108 0.087 0.000 2
139 C30 4 59 0.087 0.000 2
140 C31 18 48 0.087 0.000 2
141 C32 110 316 0.088 0.000 2
142 C33 4 34 0.087 0.000 8
143 C34 368 740 0.088 0.003 8
144 C37 13 59 0.088 0.000 2
145 C38 37 184 0.088 0.000 2
146 C39 2 4 0.084 0.000 8
147 C40 33 107 0.087 0.000 2
148 C41 58 205 0.089 0.000 2
149 C43 98 169 0.088 0.000 2
150 C44 178 337 0.089 0.001 8
151 C45 31 150 0.087 0.000 8
152 C46 65 30 0.086 0.000 2
153 C47 13 45 0.087 0.000 2
154 C48 46 206 0.088 0.000 2
155 C49 97 282 0.088 0.000 2
156 C50 290 536 0.089 0.001 2
157 C51 42 144 0.088 0.000 2
158 C52 5 80 0.087 0.000 2
159 C53 98 269 0.088 0.000 2
160 C54 112 358 0.089 0.001 2
161 C55 40 80 0.088 0.000 2
162 C56 129 362 0.089 0.001 2
163 C57 21 63 0.087 0.000 2
164 C60 19 104 0.088 0.000 8
165 C61 380 473 0.089 0.001 8
166 C62 19 111 0.088 0.000 2
167 C63 7 37 0.087 0.000 8
168 C64 183 449 0.089 0.001 2
169 C65 42 191 0.088 0.000 2
170 C66 43 180 0.088 0.000 8
171 C67 274 656 0.088 0.001 2
172 C68 42 125 0.088 0.000 8
173 C69 32 53 0.087 0.000 8
174 C70 22 65 0.087 0.000 2
175 C71 153 492 0.089 0.001 2
176 C72 21 88 0.088 0.000 2
177 C73 101 329 0.089 0.001 2
178 C74 42 142 0.088 0.000 8
179 C75 12 65 0.087 0.000 2
180 C76 58 124 0.088 0.000 2
181 C77 366 411 0.089 0.001 8
182 C78 475 677 0.088 0.002 8
183 C79 441 664 0.089 0.002 8
184 C7A 112 308 0.088 0.000 8
185 C7B 66 170 0.088 0.000 8
186 C80 142 274 0.088 0.000 8
187 C81 112 283 0.088 0.001 2
188 C82 104 247 0.088 0.000 2
189 C83 174 476 0.088 0.001 2
190 C84 68 200 0.088 0.000 2
191 C85 195 399 0.088 0.001 2
192 C86 24 114 0.088 0.000 2
193 C88 102 81 0.088 0.000 2
194 C90 246 459 0.089 0.001 8
195 C91 303 355 0.088 0.001 8
196 C92 186 506 0.089 0.001 2
197 C93 98 167 0.088 0.000 8
198 C94 16 88 0.088 0.000 2
199 C95 54 140 0.088 0.000 2
200 C96 47 62 0.087 0.000 2
201 D00 7 38 0.087 0.000 2
202 D01 40 154 0.088 0.000 2
203 D02 10 62 0.087 0.000 2
204 D03 13 25 0.085 0.000 2
205 D04 38 33 0.086 0.000 8
206 D05 25 109 0.088 0.000 2
207 D06 16 107 0.088 0.001 3
208 D07 43 82 0.087 0.000 2
209 D09 42 212 0.088 0.000 2
210 D10 22 46 0.087 0.000 2
211 D11 63 165 0.088 0.000 2
212 D12 282 404 0.089 0.001 2
213 D13 137 217 0.088 0.001 2
214 D14 21 97 0.088 0.000 2
215 D15 42 103 0.088 0.000 2
216 D16 77 113 0.088 0.000 2
217 D17 243 212 0.088 0.001 2
218 D18 413 258 0.089 0.003 2
219 D19 3 23 0.086 0.000 2
220 D20 6 9 0.085 0.000 8
221 D21 77 96 0.088 0.000 2
222 D22 66 17 0.086 0.000 2
223 D23 68 47 0.086 0.000 2
224 D24 88 65 0.087 0.000 4
225 D25 303 327 0.089 0.002 4
226 D26 55 56 0.086 0.000 4
227 D27 89 222 0.088 0.000 3
228 D28 20 21 0.085 0.000 3
229 D29 98 96 0.088 0.000 8
230 D30 94 151 0.088 0.000 2
231 D31 11 11 0.084 0.000 3
232 D32 213 295 0.088 0.001 2
233 D33 84 192 0.088 0.000 2
234 D34 34 118 0.088 0.000 2
235 D35 332 318 0.089 0.001 2
236 D36 76 131 0.088 0.000 2
237 D37 84 247 0.088 0.000 2
238 D38 43 151 0.088 0.001 2
239 D39 38 95 0.087 0.000 3
240 D3A 25 79 0.087 0.000 2
241 D40 12 29 0.087 0.000 8
242 D41 80 171 0.088 0.000 2
243 D42 18 47 0.087 0.000 2
244 D43 27 115 0.088 0.000 2
245 D44 58 105 0.088 0.000 2
246 D45 111 50 0.087 0.000 2
247 D46 281 313 0.089 0.001 8
248 D47 448 235 0.088 0.001 2
249 D48 120 215 0.089 0.001 2
250 D49 247 442 0.089 0.002 2
251 D50 763 581 0.088 0.004 2
252 D51 244 123 0.088 0.000 2
253 D52 194 83 0.088 0.000 8
254 D53 359 223 0.088 0.001 8
255 D55 49 20 0.086 0.000 2
256 D56 394 67 0.088 0.001 4
257 D57 88 169 0.088 0.001 3
258 D58 121 89 0.088 0.001 3
259 D59 159 260 0.088 0.000 2
260 D60 14 26 0.085 0.000 8
261 D61 360 417 0.089 0.002 8
262 D62 458 275 0.089 0.002 2
263 D63 460 252 0.089 0.001 8
264 D64 844 469 0.089 0.005 3
265 D65 191 29 0.087 0.000 2
266 D66 118 45 0.087 0.000 3
267 D68 685 203 0.088 0.002 3
268 D69 664 425 0.089 0.005 3
269 D70 373 636 0.089 0.003 2
270 D71 16 11 0.086 0.000 2
271 D72 472 167 0.088 0.001 2
272 D73 228 135 0.088 0.000 2
273 D74 1 3 0.082 0.000 2
274 D75 358 79 0.087 0.001 8
275 D76 51 95 0.088 0.000 2
276 D78 44 8 0.085 0.000 2
277 D80 232 45 0.087 0.000 2
278 D81 16 60 0.087 0.000 2
279 D82 30 27 0.086 0.000 2
280 D83 57 48 0.087 0.000 2
281 D84 114 33 0.087 0.000 2
282 D86 138 162 0.088 0.000 2
283 D89 262 200 0.088 0.001 2
284 E01 45 2 0.082 0.000 2
285 E02 227 19 0.086 0.000 4
286 E03 955 100 0.088 0.003 4
287 E04 543 333 0.089 0.002 2
288 E05 509 216 0.088 0.002 3
289 E06 263 114 0.088 0.001 4
290 E07 177 21 0.086 0.000 3
291 E08 95 54 0.087 0.000 8
292 E09 257 127 0.088 0.000 8
293 E10 402 393 0.089 0.003 3
294 E11 1018 653 0.088 0.006 8
295 E13 208 147 0.088 0.001 2
296 E15 0 7 0.092 0.000 8
297 E16 194 246 0.089 0.001 2
298 E20 78 32 0.087 0.000 2
299 E21 412 163 0.088 0.001 2
300 E22 314 272 0.088 0.001 2
301 E23 202 55 0.088 0.000 2
302 E24 123 106 0.088 0.000 2
303 E25 41 6 0.083 0.000 4
304 E26 101 75 0.087 0.000 2
305 E27 339 256 0.088 0.001 2
306 E28 185 28 0.085 0.000 4
307 E31 51 46 0.087 0.000 2
308 E32 27 38 0.086 0.000 2
309 E34 62 17 0.086 0.001 2
310 E40 24 9 0.085 0.000 8
311 E41 59 15 0.085 0.000 8
312 E43 322 221 0.088 0.001 8
313 E44 328 74 0.088 0.001 8
314 E45 5 7 0.084 0.000 2
315 E46 567 251 0.089 0.002 8
316 E51 81 166 0.088 0.000 2
317 E53 583 58 0.087 0.001 8
318 E54 22 5 0.083 0.000 8
319 E55 635 40 0.087 0.001 8
320 E61 309 35 0.087 0.000 2
321 E63 96 43 0.087 0.000 2
322 E65 56 126 0.088 0.000 2
323 E66 902 429 0.088 0.005 2
324 E67 33 13 0.086 0.000 8
325 E70 33 12 0.085 0.000 2
326 E71 35 92 0.087 0.000 2
327 E72 208 99 0.087 0.001 4
328 E73 198 5 0.084 0.000 3
329 E74 82 50 0.087 0.000 2
330 E75 67 42 0.087 0.000 2
331 E76 29 27 0.086 0.000 2
332 E77 189 58 0.087 0.000 2
333 E78 1097 185 0.088 0.006 8
334 E79 636 17 0.086 0.000 8
335 E80 311 103 0.088 0.001 3
336 E83 557 357 0.089 0.002 2
337 E84 64 137 0.087 0.001 2
338 E85 150 253 0.088 0.001 8
339 E86 355 434 0.089 0.002 8
340 E87 786 698 0.088 0.005 8
341 E88 467 232 0.088 0.002 3
342 E89 495 85 0.087 0.001 3
343 F01 294 220 0.088 0.000 8
344 F02 474 106 0.088 0.001 8
345 F03 357 267 0.089 0.001 8
346 F04 31 6 0.084 0.000 8
347 F05 490 468 0.089 0.002 8
348 F06 313 215 0.089 0.001 8
349 F07 67 77 0.088 0.000 2
350 F09 310 145 0.088 0.000 8
351 F10 796 483 0.089 0.005 2
352 F11 362 110 0.088 0.001 2
353 F12 365 123 0.088 0.001 2
354 F13 143 121 0.088 0.000 2
355 F14 376 157 0.088 0.001 2
356 F15 73 27 0.086 0.000 2
357 F16 36 8 0.084 0.000 2
358 F17 1028 150 0.089 0.005 3
359 F18 20 9 0.084 0.000 2
360 F19 283 139 0.088 0.001 2
361 F20 341 462 0.089 0.004 2
362 F21 21 12 0.083 0.000 2
363 F22 143 276 0.088 0.000 2
364 F23 60 230 0.089 0.000 2
365 F25 102 267 0.088 0.000 2
366 F28 19 55 0.087 0.000 2
367 F29 145 296 0.088 0.001 2
368 F30 51 198 0.088 0.000 2
369 F31 340 466 0.089 0.003 2
370 F32 795 413 0.089 0.004 2
371 F33 142 281 0.088 0.001 2
372 F34 486 211 0.088 0.001 2
373 F39 105 35 0.086 0.000 2
374 F40 160 45 0.087 0.000 2
375 F41 746 311 0.089 0.005 2
376 F42 156 77 0.087 0.000 3
377 F43 445 439 0.089 0.005 2
378 F44 146 227 0.088 0.001 2
379 F45 114 147 0.088 0.000 2
380 F48 36 38 0.086 0.000 2
381 F50 201 259 0.088 0.001 3
382 F51 80 15 0.085 0.000 2
383 F52 18 3 0.083 0.000 8
384 F53 7 12 0.085 0.000 4
385 F54 10 2 0.082 0.000 2
386 F55 31 11 0.085 0.000 2
387 F59 6 5 0.084 0.000 2
388 F60 358 355 0.089 0.002 2
389 F63 81 49 0.087 0.000 2
390 F64 26 15 0.084 0.000 2
391 F68 43 52 0.087 0.000 2
392 F69 71 60 0.086 0.000 2
393 F70 114 24 0.086 0.000 2
394 F71 69 34 0.086 0.000 2
395 F72 65 7 0.083 0.000 8
396 F78 21 5 0.082 0.000 2
397 F79 240 43 0.087 0.000 2
398 F80 85 51 0.087 0.000 2
399 F82 128 29 0.086 0.000 2
400 F84 96 58 0.086 0.000 2
401 F88 27 6 0.082 0.000 2
402 F89 24 3 0.082 0.000 2
403 F90 161 30 0.085 0.000 2
404 F91 195 219 0.088 0.001 2
405 F93 12 22 0.085 0.000 2
406 F94 16 44 0.086 0.000 2
407 F95 45 7 0.084 0.000 3
408 F98 68 48 0.087 0.000 2
409 F99 44 34 0.086 0.000 3
410 G00 41 262 0.088 0.000 2
411 G03 65 134 0.088 0.000 2
412 G04 96 270 0.089 0.001 2
413 G05 10 1 0.081 0.000 2
414 G06 37 181 0.088 0.000 2
415 G08 20 33 0.087 0.000 3
416 G10 42 28 0.087 0.000 8
417 G11 85 58 0.087 0.000 2
418 G12 99 229 0.088 0.000 2
419 G13 25 2 0.081 0.000 8
420 G20 465 248 0.088 0.002 8
421 G21 216 161 0.088 0.001 8
422 G23 45 85 0.088 0.000 8
423 G24 137 75 0.087 0.000 2
424 G25 511 255 0.088 0.001 8
425 G26 3 7 0.084 0.000 8
426 G30 468 301 0.089 0.002 8
427 G31 537 341 0.088 0.002 8
428 G35 260 208 0.088 0.001 3
429 G36 22 97 0.088 0.000 2
430 G37 86 147 0.088 0.001 2
431 G40 683 747 0.089 0.009 2
432 G43 542 291 0.088 0.002 3
433 G44 282 219 0.089 0.001 2
434 G45 177 574 0.089 0.001 2
435 G46 84 241 0.088 0.000 8
436 G47 807 310 0.089 0.004 8
437 G50 235 172 0.088 0.000 2
438 G51 326 175 0.089 0.001 2
439 G52 56 79 0.088 0.000 2
440 G54 100 119 0.088 0.000 2
441 G56 309 152 0.087 0.000 2
442 G57 189 137 0.088 0.000 2
443 G58 109 49 0.087 0.000 2
444 G60 214 135 0.088 0.001 2
445 G61 133 253 0.088 0.001 2
446 G62 410 231 0.089 0.001 8
447 G63 64 17 0.086 0.000 8
448 G70 206 265 0.088 0.001 2
449 G71 147 100 0.087 0.000 2
450 G72 251 191 0.089 0.001 2
451 G80 186 85 0.087 0.000 2
452 G81 266 129 0.088 0.001 8
453 G82 254 172 0.088 0.001 8
454 G83 224 119 0.088 0.001 2
455 G89 433 522 0.088 0.002 2
456 G90 123 100 0.088 0.000 2
457 G91 268 269 0.088 0.001 2
458 G92 81 173 0.088 0.000 8
459 G93 517 563 0.089 0.005 2
460 G95 215 211 0.088 0.001 2
461 G96 90 140 0.088 0.000 2
462 G97 250 193 0.088 0.001 3
463 G98 14 17 0.086 0.000 3
464 H00 46 51 0.087 0.000 2
465 H01 73 4 0.083 0.000 8
466 H02 183 99 0.087 0.001 2
467 H04 154 66 0.087 0.000 2
468 H05 85 180 0.088 0.000 2
469 H10 258 19 0.086 0.000 2
470 H11 117 17 0.085 0.000 2
471 H15 26 5 0.083 0.000 2
472 H16 188 124 0.088 0.001 2
473 H17 45 31 0.086 0.000 2
474 H18 67 94 0.087 0.000 2
475 H20 84 28 0.087 0.000 2
476 H21 20 4 0.082 0.000 2
477 H25 95 45 0.087 0.000 8
478 H26 287 114 0.087 0.001 8
479 H27 116 32 0.087 0.000 8
480 H30 43 61 0.087 0.000 2
481 H31 20 10 0.084 0.000 8
482 H32 0 13 0.093 0.000 2
483 H33 102 110 0.087 0.000 2
484 H34 96 92 0.088 0.000 8
485 H35 404 75 0.087 0.001 8
486 H40 492 61 0.087 0.001 8
487 H43 77 57 0.087 0.000 2
488 H44 154 93 0.088 0.000 3
489 H46 118 203 0.089 0.001 2
490 H47 143 128 0.088 0.000 2
491 H49 160 192 0.089 0.001 2
492 H50 142 78 0.087 0.000 2
493 H51 48 33 0.087 0.000 2
494 H52 176 12 0.085 0.000 4
495 H53 317 146 0.088 0.001 2
496 H54 323 32 0.087 0.000 8
497 H55 85 43 0.086 0.000 2
498 H57 95 42 0.086 0.000 2
499 H59 34 40 0.087 0.000 8
500 H60 61 102 0.087 0.001 2
501 H61 113 47 0.087 0.000 8
502 H65 98 76 0.088 0.000 2
503 H66 241 232 0.089 0.002 2
504 H68 26 6 0.084 0.000 8
505 H69 11 2 0.082 0.000 8
506 H70 40 112 0.088 0.000 2
507 H71 55 137 0.088 0.000 2
508 H72 62 89 0.088 0.000 2
509 H73 12 10 0.084 0.000 2
510 H74 34 37 0.087 0.000 2
511 H80 66 87 0.087 0.000 2
512 H81 390 334 0.089 0.002 2
513 H82 4 1 0.082 0.000 2
514 H83 40 35 0.086 0.000 2
515 H90 375 137 0.088 0.001 2
516 H91 577 72 0.088 0.001 8
517 H92 70 34 0.086 0.000 2
518 H93 121 11 0.085 0.000 8
519 H95 17 33 0.086 0.000 2
520 I00 9 6 0.084 0.000 8
521 I01 8 43 0.087 0.000 8
522 I05 237 232 0.088 0.000 2
523 I06 84 96 0.087 0.000 8
524 I07 315 109 0.088 0.001 8
525 I08 382 321 0.088 0.001 8
526 I09 77 215 0.088 0.000 8
527 I10 1122 447 0.089 0.009 8
528 I11 490 587 0.088 0.002 8
529 I12 724 456 0.089 0.003 8
530 I13 345 582 0.089 0.002 8
531 I15 138 64 0.087 0.000 2
532 I20 282 475 0.088 0.001 2
533 I21 200 737 0.088 0.002 2
534 I22 11 105 0.088 0.000 8
535 I23 14 59 0.087 0.000 8
536 I24 121 241 0.088 0.000 8
537 I25 791 674 0.089 0.004 8
538 I26 349 774 0.089 0.004 2
539 I27 566 363 0.089 0.002 8
540 I28 46 70 0.088 0.000 2
541 I30 98 361 0.088 0.000 2
542 I31 264 376 0.089 0.001 8
543 I33 72 324 0.089 0.001 8
544 I34 497 329 0.088 0.002 8
545 I35 521 534 0.089 0.003 8
546 I36 222 64 0.088 0.000 8
547 I37 57 80 0.087 0.000 2
548 I38 156 67 0.088 0.000 2
549 I39 6 17 0.086 0.000 8
550 I40 34 121 0.088 0.000 2
551 I42 480 427 0.089 0.003 8
552 I44 481 532 0.089 0.003 8
553 I45 462 277 0.089 0.002 2
554 I46 244 295 0.089 0.002 8
555 I47 306 466 0.089 0.002 2
556 I48 858 709 0.088 0.005 8
557 I49 424 404 0.089 0.002 2
558 I50 696 1036 0.088 0.010 8
559 I51 464 300 0.089 0.002 8
560 I60 68 394 0.088 0.000 2
561 I61 117 603 0.089 0.002 8
562 I62 183 443 0.089 0.001 8
563 I63 269 903 0.089 0.004 8
564 I65 377 321 0.089 0.001 8
565 I66 64 204 0.088 0.000 8
566 I67 513 476 0.089 0.002 8
567 I68 46 34 0.087 0.000 8
568 I69 513 410 0.089 0.002 8
569 I70 494 548 0.088 0.003 8
570 I71 372 451 0.089 0.002 8
571 I72 226 298 0.089 0.001 8
572 I73 473 214 0.089 0.001 2
573 I74 266 408 0.089 0.001 8
574 I75 17 57 0.087 0.000 8
575 I76 15 14 0.085 0.000 8
576 I77 399 368 0.089 0.002 2
577 I78 82 92 0.088 0.000 2
578 I80 337 161 0.088 0.001 2
579 I81 191 170 0.088 0.000 8
580 I82 417 627 0.089 0.003 2
581 I83 288 316 0.088 0.002 2
582 I85 329 256 0.089 0.001 8
583 I86 134 134 0.088 0.000 2
584 I87 579 235 0.088 0.001 2
585 I88 126 207 0.089 0.001 2
586 I89 265 223 0.089 0.001 2
587 I95 432 363 0.089 0.002 8
588 I96 86 157 0.088 0.000 8
589 I97 316 274 0.089 0.001 8
590 I99 172 196 0.089 0.001 8
591 J00 199 128 0.088 0.001 2
592 J01 65 118 0.088 0.000 2
593 J02 141 171 0.088 0.001 2
594 J03 128 226 0.088 0.001 2
595 J04 81 176 0.088 0.000 2
596 J05 14 60 0.087 0.000 2
597 J06 333 510 0.089 0.003 2
598 J09 72 370 0.089 0.001 2
599 J10 132 501 0.089 0.001 2
600 J11 174 541 0.089 0.002 2
601 J12 49 276 0.089 0.000 2
602 J13 73 558 0.089 0.000 2
603 J14 41 205 0.088 0.000 8
604 J15 194 506 0.088 0.001 8
605 J16 20 94 0.087 0.000 8
606 J18 506 1089 0.089 0.009 8
607 J20 303 755 0.089 0.003 8
608 J21 103 347 0.088 0.001 2
609 J22 496 901 0.088 0.006 8
610 J30 365 14 0.086 0.000 3
611 J31 244 31 0.086 0.000 2
612 J32 222 199 0.089 0.001 2
613 J33 138 133 0.088 0.000 2
614 J34 173 250 0.089 0.001 2
615 J35 112 273 0.089 0.001 2
616 J36 16 158 0.088 0.000 2
617 J37 94 32 0.086 0.000 8
618 J38 315 312 0.089 0.002 2
619 J39 155 249 0.089 0.001 2
620 J40 111 202 0.088 0.000 8
621 J41 51 28 0.087 0.000 8
622 J42 374 62 0.087 0.000 8
623 J43 457 668 0.088 0.002 8
624 J44 787 952 0.088 0.008 8
625 J45 851 702 0.089 0.009 3
626 J47 462 714 0.089 0.004 8
627 J60 29 9 0.085 0.000 8
628 J61 63 48 0.087 0.000 8
629 J62 81 60 0.087 0.000 8
630 J64 28 15 0.086 0.000 2
631 J65 5 9 0.085 0.000 8
632 J67 23 103 0.088 0.000 2
633 J68 24 68 0.087 0.000 8
634 J69 359 807 0.089 0.004 8
635 J70 66 151 0.088 0.000 8
636 J80 175 157 0.088 0.001 2
637 J81 159 333 0.089 0.001 8
638 J82 34 83 0.088 0.000 2
639 J84 358 543 0.089 0.002 8
640 J85 70 267 0.088 0.000 2
641 J86 100 252 0.088 0.000 8
642 J90 427 525 0.089 0.003 8
643 J91 281 261 0.088 0.001 8
644 J92 84 28 0.086 0.000 8
645 J93 164 300 0.088 0.001 2
646 J94 158 195 0.088 0.000 2
647 J95 361 357 0.089 0.002 2
648 J96 729 932 0.089 0.008 8
649 J98 708 955 0.088 0.010 8
650 J99 59 8 0.085 0.000 8
651 K00 22 28 0.086 0.000 2
652 K01 19 98 0.088 0.001 2
653 K02 84 114 0.088 0.001 2
654 K03 21 17 0.085 0.000 2
655 K04 115 213 0.088 0.001 2
656 K05 75 99 0.088 0.000 2
657 K06 34 32 0.086 0.000 2
658 K08 117 184 0.088 0.001 2
659 K09 19 76 0.087 0.000 2
660 K11 171 246 0.088 0.001 2
661 K12 239 388 0.089 0.001 8
662 K13 115 135 0.088 0.000 2
663 K14 86 66 0.088 0.000 2
664 K20 333 274 0.088 0.001 2
665 K21 645 357 0.089 0.004 2
666 K22 446 475 0.088 0.002 2
667 K25 294 439 0.089 0.001 2
668 K26 289 431 0.088 0.001 8
669 K27 116 65 0.088 0.000 2
670 K28 27 124 0.088 0.000 2
671 K29 700 425 0.089 0.005 2
672 K30 229 136 0.088 0.000 2
673 K31 392 448 0.089 0.001 8
674 K35 65 507 0.088 0.001 2
675 K36 18 53 0.087 0.000 2
676 K37 32 94 0.088 0.000 2
677 K38 35 89 0.088 0.000 2
678 K40 387 582 0.089 0.003 2
679 K41 33 265 0.088 0.000 2
680 K42 305 385 0.089 0.002 2
681 K43 214 550 0.089 0.002 2
682 K44 803 360 0.089 0.004 2
683 K45 37 115 0.088 0.000 2
684 K46 93 96 0.088 0.000 2
685 K50 334 446 0.089 0.002 2
686 K51 306 380 0.088 0.001 2
687 K52 474 816 0.089 0.007 2
688 K55 284 554 0.089 0.002 8
689 K56 419 689 0.088 0.003 8
690 K57 630 630 0.089 0.004 8
691 K58 434 146 0.088 0.001 3
692 K59 580 539 0.089 0.003 8
693 K60 198 312 0.089 0.001 2
694 K61 86 400 0.089 0.000 2
695 K62 289 505 0.088 0.002 2
696 K63 375 423 0.089 0.002 2
697 K64 490 386 0.088 0.002 2
698 K65 266 412 0.089 0.001 2
699 K66 260 241 0.088 0.001 2
700 K68 91 216 0.088 0.000 2
701 K70 469 579 0.089 0.004 8
702 K71 190 302 0.089 0.001 2
703 K72 316 516 0.088 0.002 8
704 K73 117 104 0.087 0.000 2
705 K74 403 412 0.088 0.001 2
706 K75 290 361 0.089 0.001 2
707 K76 771 425 0.088 0.003 8
708 K80 568 835 0.089 0.006 2
709 K81 158 519 0.089 0.001 2
710 K82 206 232 0.088 0.001 2
711 K83 399 610 0.089 0.003 2
712 K85 200 767 0.089 0.002 2
713 K86 357 298 0.088 0.001 8
714 K87 8 9 0.085 0.000 2
715 K90 387 158 0.088 0.001 3
716 K91 339 546 0.089 0.002 2
717 K92 331 631 0.089 0.002 8
718 K94 140 421 0.089 0.001 8
719 K95 16 140 0.088 0.000 2
720 L00 1 5 0.082 0.000 2
721 L01 47 25 0.086 0.000 2
722 L02 202 387 0.089 0.003 2
723 L03 410 731 0.089 0.005 2
724 L04 30 72 0.087 0.000 2
725 L05 43 87 0.087 0.000 2
726 L08 222 172 0.088 0.001 8
727 L10 39 58 0.087 0.000 8
728 L12 75 137 0.088 0.000 8
729 L13 23 26 0.086 0.000 2
730 L20 296 51 0.087 0.000 3
731 L21 196 30 0.087 0.000 8
732 L22 113 9 0.085 0.000 2
733 L23 67 3 0.081 0.000 3
734 L24 37 17 0.086 0.000 8
735 L25 124 36 0.087 0.000 2
736 L26 5 10 0.085 0.000 8
737 L27 284 216 0.088 0.001 2
738 L28 98 26 0.086 0.000 2
739 L29 174 51 0.088 0.000 3
740 L30 298 113 0.087 0.001 2
741 L40 555 153 0.088 0.002 2
742 L42 23 5 0.083 0.000 3
743 L43 82 11 0.083 0.000 2
744 L44 7 23 0.086 0.000 8
745 L50 290 112 0.088 0.001 2
746 L51 46 160 0.088 0.000 2
747 L52 63 52 0.088 0.000 3
748 L53 195 122 0.088 0.001 2
749 L55 4 2 0.081 0.000 2
750 L56 32 2 0.081 0.000 3
751 L57 167 44 0.087 0.000 8
752 L58 34 38 0.087 0.000 2
753 L59 24 19 0.086 0.000 2
754 L60 73 18 0.086 0.000 8
755 L65 50 2 0.082 0.000 2
756 L66 12 15 0.085 0.000 8
757 L68 38 8 0.084 0.000 3
758 L70 60 1 0.082 0.000 2
759 L71 100 5 0.084 0.000 2
760 L72 116 94 0.088 0.000 2
761 L73 112 92 0.087 0.000 2
762 L74 49 35 0.086 0.000 3
763 L76 263 243 0.088 0.001 2
764 L80 218 9 0.084 0.000 2
765 L81 82 44 0.087 0.000 2
766 L82 132 17 0.085 0.000 8
767 L84 24 3 0.083 0.000 8
768 L85 79 52 0.087 0.000 8
769 L88 21 75 0.087 0.000 2
770 L89 430 434 0.089 0.001 8
771 L90 106 131 0.088 0.001 2
772 L91 35 74 0.087 0.000 2
773 L92 97 53 0.087 0.000 2
774 L93 154 8 0.084 0.000 3
775 L94 58 25 0.086 0.000 2
776 L95 35 110 0.088 0.000 2
777 L97 309 395 0.089 0.001 8
778 L98 311 208 0.089 0.002 2
779 L99 16 3 0.083 0.000 8
780 M00 70 288 0.088 0.001 8
781 M01 6 7 0.083 0.000 2
782 M02 48 69 0.087 0.000 2
783 M05 162 160 0.088 0.000 2
784 M06 500 277 0.088 0.002 2
785 M07 9 13 0.086 0.000 2
786 M08 47 78 0.087 0.000 2
787 M10 347 156 0.088 0.001 8
788 M11 209 165 0.088 0.000 8
789 M12 180 123 0.088 0.000 2
790 M13 178 189 0.088 0.000 2
791 M14 41 13 0.084 0.000 2
792 M15 440 76 0.088 0.000 8
793 M16 272 451 0.089 0.002 2
794 M17 425 557 0.089 0.002 2
795 M18 98 88 0.087 0.000 2
796 M19 582 226 0.088 0.002 8
797 M20 113 320 0.088 0.001 2
798 M21 135 257 0.088 0.001 2
799 M22 82 70 0.087 0.000 2
800 M23 79 235 0.088 0.000 2
801 M24 120 185 0.088 0.000 2
802 M25 362 293 0.089 0.002 2
803 M26 116 146 0.088 0.001 2
804 M27 84 163 0.088 0.000 2
805 M30 84 173 0.088 0.001 2
806 M31 253 362 0.089 0.001 2
807 M32 299 288 0.089 0.002 3
808 M33 78 137 0.088 0.000 2
809 M34 153 146 0.088 0.000 2
810 M35 478 317 0.088 0.003 2
811 M40 148 77 0.087 0.000 2
812 M41 410 212 0.088 0.001 2
813 M42 19 25 0.086 0.000 2
814 M43 305 226 0.088 0.001 2
815 M45 251 42 0.086 0.000 2
816 M46 195 300 0.088 0.001 2
817 M47 519 321 0.089 0.002 8
818 M48 461 398 0.089 0.002 2
819 M49 6 22 0.086 0.000 8
820 M50 299 248 0.089 0.001 2
821 M51 539 390 0.089 0.002 2
822 M53 86 62 0.088 0.000 2
823 M54 536 420 0.089 0.002 2
824 M60 92 209 0.088 0.001 2
825 M61 14 5 0.084 0.000 3
826 M62 439 416 0.089 0.004 8
827 M65 152 128 0.088 0.000 2
828 M66 53 82 0.087 0.000 2
829 M67 75 82 0.087 0.000 2
830 M70 112 134 0.088 0.000 2
831 M71 122 110 0.088 0.000 8
832 M72 175 174 0.089 0.001 2
833 M75 275 285 0.088 0.001 2
834 M76 79 63 0.087 0.000 2
835 M77 138 122 0.087 0.000 2
836 M79 594 467 0.089 0.004 2
837 M80 307 515 0.089 0.002 8
838 M81 664 89 0.088 0.001 8
839 M84 245 376 0.089 0.001 2
840 M85 305 52 0.087 0.000 2
841 M86 169 322 0.089 0.001 8
842 M87 151 254 0.089 0.001 2
843 M89 206 166 0.088 0.001 2
844 M91 56 35 0.086 0.000 2
845 M92 22 19 0.086 0.000 3
846 M93 56 74 0.087 0.000 2
847 M94 107 65 0.087 0.000 2
848 M95 45 130 0.088 0.001 2
849 M96 148 209 0.088 0.001 2
850 M99 160 137 0.088 0.000 2
851 N00 15 74 0.087 0.000 2
852 N01 16 43 0.087 0.000 2
853 N02 102 149 0.088 0.000 2
854 N03 100 86 0.087 0.000 2
855 N04 114 241 0.088 0.000 2
856 N05 213 218 0.089 0.001 2
857 N06 3 22 0.086 0.000 2
858 N08 140 2 0.082 0.000 2
859 N10 147 655 0.089 0.002 2
860 N11 141 132 0.088 0.000 2
861 N12 86 175 0.088 0.000 2
862 N13 398 475 0.089 0.002 2
863 N14 64 32 0.087 0.000 8
864 N15 49 140 0.088 0.000 2
865 N16 13 9 0.085 0.000 8
866 N17 763 824 0.088 0.007 8
867 N18 843 440 0.088 0.004 8
868 N19 253 112 0.088 0.000 8
869 N20 440 502 0.088 0.002 2
870 N21 100 179 0.088 0.000 2
871 N23 126 274 0.088 0.001 3
872 N25 338 134 0.088 0.000 8
873 N26 202 76 0.088 0.000 8
874 N28 630 362 0.089 0.004 2
875 N30 195 360 0.088 0.001 8
876 N31 263 91 0.088 0.000 2
877 N32 239 323 0.088 0.001 8
878 N34 43 48 0.087 0.000 8
879 N35 143 266 0.088 0.000 8
880 N36 114 112 0.088 0.000 2
881 N39 768 1007 0.088 0.010 8
882 N40 702 493 0.088 0.004 8
883 N41 157 388 0.089 0.001 8
884 N42 118 78 0.087 0.000 8
885 N43 147 181 0.088 0.000 2
886 N44 33 61 0.087 0.001 2
887 N45 91 260 0.088 0.000 8
888 N46 8 1 0.081 0.000 2
889 N47 129 102 0.087 0.000 8
890 N48 107 122 0.088 0.000 2
891 N49 43 164 0.088 0.000 8
892 N50 106 93 0.088 0.000 2
893 N51 0 1 0.087 0.000 2
894 N52 142 101 0.087 0.000 8
895 N53 19 9 0.085 0.000 8
896 N60 185 73 0.087 0.000 3
897 N61 57 110 0.088 0.001 3
898 N62 124 155 0.088 0.000 2
899 N63 123 36 0.086 0.000 3
900 N64 76 119 0.088 0.001 2
901 N65 10 72 0.087 0.000 2
902 N70 50 163 0.088 0.000 3
903 N71 38 87 0.087 0.000 3
904 N72 35 31 0.086 0.000 3
905 N73 93 154 0.088 0.001 3
906 N75 30 66 0.087 0.000 3
907 N76 77 125 0.088 0.000 3
908 N80 173 202 0.088 0.001 3
909 N81 216 318 0.088 0.001 2
910 N82 70 144 0.088 0.000 2
911 N83 248 207 0.088 0.002 3
912 N84 116 149 0.088 0.000 3
913 N85 97 124 0.088 0.000 3
914 N86 3 1 0.081 0.000 3
915 N87 66 106 0.087 0.000 3
916 N88 48 47 0.087 0.000 4
917 N89 48 56 0.087 0.000 3
918 N90 56 48 0.086 0.000 4
919 N91 32 3 0.082 0.000 3
920 N92 133 145 0.088 0.001 3
921 N93 54 118 0.088 0.000 3
922 N94 56 22 0.085 0.000 3
923 N95 41 62 0.087 0.000 2
924 N97 29 22 0.086 0.000 4
925 N98 12 51 0.088 0.000 4
926 N99 316 426 0.089 0.003 2
927 O00 13 94 0.087 0.000 7
928 O01 2 14 0.085 0.000 7
929 O02 9 124 0.088 0.000 6
930 O03 21 149 0.088 0.001 6
931 O04 2 21 0.085 0.000 10
932 O07 2 12 0.084 0.000 6
933 O08 6 12 0.084 0.000 7
934 O09 80 198 0.088 0.002 1
935 O10 40 87 0.087 0.000 1
936 O11 13 61 0.087 0.000 5
937 O12 17 23 0.085 0.000 1
938 O13 30 84 0.086 0.000 1
939 O14 40 154 0.088 0.000 1
940 O15 6 36 0.087 0.000 5
941 O16 23 57 0.086 0.000 1
942 O20 10 43 0.086 0.000 5
943 O21 15 70 0.087 0.000 6
944 O22 26 50 0.087 0.000 5
945 O23 39 124 0.088 0.000 6
946 O24 65 172 0.088 0.001 1
947 O25 4 14 0.085 0.000 6
948 O26 57 198 0.088 0.001 5
949 O28 13 10 0.084 0.000 1
950 O30 49 155 0.088 0.001 1
951 O31 22 30 0.084 0.000 1
952 O32 42 216 0.088 0.000 1
953 O33 28 104 0.087 0.000 1
954 O34 58 227 0.088 0.001 1
955 O35 35 72 0.086 0.000 5
956 O36 56 249 0.088 0.000 1
957 O40 26 68 0.087 0.000 1
958 O41 48 129 0.087 0.000 1
959 O42 53 447 0.089 0.002 1
960 O43 37 55 0.086 0.000 1
961 O44 21 93 0.087 0.000 1
962 O45 21 72 0.087 0.000 1
963 O46 15 83 0.087 0.000 5
964 O47 17 137 0.088 0.000 5
965 O48 59 387 0.089 0.001 1
966 O60 48 203 0.088 0.001 1
967 O61 29 92 0.087 0.000 1
968 O62 46 116 0.087 0.002 1
969 O63 40 164 0.087 0.000 1
970 O64 25 80 0.087 0.000 1
971 O65 24 91 0.087 0.000 1
972 O66 34 76 0.087 0.000 1
973 O67 14 16 0.084 0.000 1
974 O68 9 24 0.085 0.000 1
975 O69 60 143 0.088 0.001 1
976 O70 64 198 0.088 0.001 1
977 O71 40 39 0.086 0.000 1
978 O72 48 73 0.087 0.000 1
979 O73 39 36 0.087 0.000 1
980 O74 17 10 0.084 0.000 1
981 O75 41 84 0.087 0.000 1
982 O76 39 165 0.088 0.000 1
983 O77 48 128 0.088 0.000 1
984 O80 13 92 0.087 0.001 1
985 O82 12 50 0.086 0.000 1
986 O85 4 24 0.086 0.000 11
987 O86 39 85 0.087 0.000 5
988 O87 27 11 0.085 0.000 1
989 O88 3 16 0.084 0.000 6
990 O89 19 16 0.085 0.000 5
991 O90 64 80 0.088 0.001 1
992 O91 11 30 0.086 0.000 6
993 O92 53 10 0.083 0.000 1
994 O94 8 9 0.084 0.000 12
995 O98 43 134 0.088 0.000 5
996 O99 100 480 0.089 0.003 1
997 O9A 10 67 0.088 0.000 6
998 P00 52 60 0.085 0.001 9
999 P01 73 50 0.086 0.000 9
1000 P02 31 26 0.084 0.000 9
1001 P03 58 56 0.085 0.000 9
1002 P04 16 10 0.082 0.000 9
1003 P05 68 158 0.088 0.002 9
1004 P07 168 329 0.088 0.003 9
1005 P08 76 98 0.087 0.001 9
1006 P09 11 1 0.080 0.000 9
1007 P10 6 9 0.083 0.000 9
1008 P11 18 9 0.082 0.000 2
1009 P12 27 13 0.084 0.000 9
1010 P13 23 18 0.083 0.000 9
1011 P14 19 11 0.083 0.000 9
1012 P15 12 7 0.083 0.000 9
1013 P19 22 30 0.085 0.000 9
1014 P22 66 210 0.088 0.002 9
1015 P23 5 11 0.083 0.000 9
1016 P24 21 83 0.087 0.000 9
1017 P25 31 41 0.086 0.000 9
1018 P27 61 53 0.087 0.000 2
1019 P28 64 91 0.087 0.000 9
1020 P29 62 65 0.087 0.001 9
1021 P35 9 30 0.086 0.000 2
1022 P36 50 119 0.088 0.000 9
1023 P37 29 8 0.084 0.000 9
1024 P38 16 43 0.087 0.000 2
1025 P39 57 107 0.087 0.002 2
1026 P50 5 2 0.081 0.000 9
1027 P51 1 1 0.080 0.000 9
1028 P52 36 22 0.085 0.000 9
1029 P53 1 3 0.081 0.000 9
1030 P54 16 30 0.086 0.000 9
1031 P55 34 76 0.086 0.000 9
1032 P57 10 4 0.082 0.000 9
1033 P58 15 14 0.083 0.000 9
1034 P59 91 136 0.087 0.001 9
1035 P61 66 63 0.086 0.001 9
1036 P70 67 97 0.087 0.001 9
1037 P71 34 18 0.084 0.000 9
1038 P72 13 1 0.079 0.000 9
1039 P74 49 61 0.087 0.000 9
1040 P76 7 19 0.084 0.000 9
1041 P77 10 47 0.086 0.000 9
1042 P78 47 70 0.087 0.000 9
1043 P80 8 2 0.078 0.000 9
1044 P81 18 72 0.087 0.000 2
1045 P83 41 21 0.085 0.000 9
1046 P84 58 60 0.086 0.000 9
1047 P90 22 37 0.086 0.000 9
1048 P91 98 127 0.088 0.001 2
1049 P92 63 75 0.086 0.001 9
1050 P94 49 36 0.084 0.000 2
1051 P96 83 135 0.088 0.001 9
1052 Q00 1 3 0.082 0.000 13
1053 Q01 15 26 0.086 0.000 2
1054 Q02 80 15 0.083 0.000 2
1055 Q03 55 29 0.086 0.000 2
1056 Q04 113 62 0.087 0.000 2
1057 Q05 93 33 0.086 0.000 2
1058 Q06 25 16 0.085 0.000 3
1059 Q07 128 62 0.087 0.000 3
1060 Q10 33 26 0.086 0.000 2
1061 Q11 23 2 0.078 0.000 2
1062 Q12 37 7 0.083 0.000 2
1063 Q13 34 4 0.083 0.000 2
1064 Q15 34 13 0.084 0.000 3
1065 Q16 14 10 0.083 0.000 2
1066 Q17 38 26 0.085 0.000 2
1067 Q18 39 55 0.087 0.000 2
1068 Q20 94 172 0.088 0.001 2
1069 Q21 349 313 0.088 0.003 2
1070 Q22 78 142 0.088 0.001 2
1071 Q23 136 222 0.088 0.001 2
1072 Q24 156 196 0.088 0.002 2
1073 Q25 197 268 0.089 0.003 2
1074 Q26 58 142 0.088 0.000 2
1075 Q27 131 134 0.088 0.001 3
1076 Q28 94 159 0.088 0.000 2
1077 Q30 18 16 0.085 0.000 2
1078 Q31 50 74 0.088 0.000 2
1079 Q32 31 45 0.087 0.000 2
1080 Q33 52 64 0.087 0.000 2
1081 Q34 4 34 0.087 0.000 3
1082 Q35 30 58 0.087 0.000 2
1083 Q36 22 23 0.085 0.000 2
1084 Q37 20 47 0.086 0.000 2
1085 Q38 61 28 0.085 0.000 2
1086 Q39 62 67 0.088 0.000 2
1087 Q40 18 27 0.086 0.000 2
1088 Q41 10 19 0.086 0.000 2
1089 Q42 20 33 0.085 0.000 2
1090 Q43 131 180 0.088 0.001 2
1091 Q44 131 130 0.088 0.000 2
1092 Q45 53 41 0.086 0.000 2
1093 Q50 42 15 0.084 0.000 4
1094 Q51 55 15 0.085 0.000 6
1095 Q52 27 18 0.084 0.000 4
1096 Q53 67 85 0.087 0.000 2
1097 Q54 80 53 0.086 0.000 2
1098 Q55 41 50 0.086 0.000 2
1099 Q56 7 1 0.080 0.000 8
1100 Q60 194 34 0.087 0.001 3
1101 Q61 270 146 0.088 0.001 2
1102 Q62 131 94 0.087 0.001 2
1103 Q63 155 19 0.085 0.000 2
1104 Q64 56 85 0.088 0.000 2
1105 Q65 78 60 0.087 0.000 2
1106 Q66 111 79 0.087 0.001 2
1107 Q67 117 51 0.087 0.000 2
1108 Q68 55 19 0.085 0.000 3
1109 Q69 24 15 0.084 0.000 2
1110 Q70 29 21 0.084 0.000 2
1111 Q71 20 12 0.084 0.000 2
1112 Q72 17 32 0.086 0.000 2
1113 Q73 9 6 0.084 0.000 8
1114 Q74 66 47 0.087 0.000 2
1115 Q75 92 81 0.087 0.001 2
1116 Q76 119 75 0.087 0.001 3
1117 Q77 28 25 0.086 0.000 3
1118 Q78 67 79 0.088 0.000 3
1119 Q79 80 85 0.088 0.001 3
1120 Q80 18 17 0.085 0.000 2
1121 Q81 15 34 0.086 0.000 3
1122 Q82 88 30 0.087 0.000 3
1123 Q83 17 30 0.085 0.000 3
1124 Q84 16 14 0.085 0.000 2
1125 Q85 204 154 0.089 0.001 2
1126 Q87 199 189 0.088 0.003 2
1127 Q89 178 132 0.089 0.001 2
1128 Q90 210 47 0.086 0.001 2
1129 Q91 14 7 0.083 0.000 2
1130 Q92 24 1 0.081 0.000 3
1131 Q93 70 8 0.084 0.000 2
1132 Q97 5 1 0.079 0.000 8
1133 Q99 77 8 0.084 0.000 3
1134 R00 463 345 0.089 0.002 2
1135 R01 130 1 0.081 0.000 2
1136 R03 110 5 0.083 0.000 14
1137 R04 296 434 0.089 0.002 2
1138 R05 123 130 0.088 0.000 2
1139 R06 314 350 0.089 0.002 2
1140 R07 277 541 0.089 0.002 2
1141 R09 344 207 0.088 0.001 8
1142 R10 343 583 0.089 0.004 2
1143 R11 423 509 0.089 0.003 2
1144 R12 53 15 0.085 0.000 2
1145 R13 441 304 0.089 0.002 8
1146 R14 65 42 0.087 0.000 2
1147 R15 362 52 0.087 0.000 8
1148 R16 286 77 0.088 0.000 2
1149 R17 104 107 0.088 0.000 2
1150 R18 291 286 0.088 0.001 8
1151 R19 408 516 0.089 0.002 2
1152 R20 252 238 0.088 0.001 2
1153 R21 188 83 0.088 0.000 2
1154 R22 70 96 0.088 0.000 2
1155 R23 127 56 0.087 0.000 2
1156 R25 208 107 0.088 0.000 2
1157 R26 301 273 0.089 0.001 8
1158 R27 146 141 0.088 0.001 8
1159 R29 227 177 0.089 0.001 2
1160 R30 71 42 0.087 0.000 2
1161 R31 359 460 0.089 0.002 8
1162 R32 515 67 0.087 0.001 8
1163 R33 488 299 0.088 0.001 2
1164 R34 129 63 0.088 0.000 2
1165 R35 124 26 0.087 0.000 8
1166 R39 338 202 0.088 0.001 8
1167 R40 354 380 0.089 0.002 8
1168 R41 448 421 0.089 0.002 8
1169 R42 314 331 0.089 0.001 2
1170 R43 32 6 0.084 0.000 8
1171 R44 130 110 0.088 0.000 8
1172 R45 276 178 0.088 0.001 2
1173 R46 30 12 0.085 0.000 2
1174 R47 286 222 0.088 0.001 8
1175 R48 68 50 0.087 0.000 8
1176 R49 138 32 0.086 0.000 2
1177 R50 598 755 0.089 0.009 2
1178 R51 366 289 0.089 0.002 2
1179 R52 131 80 0.088 0.000 2
1180 R53 313 358 0.089 0.001 8
1181 R54 149 56 0.087 0.000 8
1182 R55 387 672 0.089 0.004 2
1183 R56 223 363 0.089 0.002 2
1184 R57 294 327 0.088 0.001 8
1185 R58 111 104 0.088 0.000 2
1186 R59 346 299 0.089 0.002 2
1187 R60 332 272 0.089 0.001 2
1188 R61 33 29 0.087 0.000 2
1189 R62 171 56 0.087 0.000 2
1190 R63 409 387 0.089 0.002 2
1191 R64 158 59 0.087 0.001 8
1192 R65 371 399 0.088 0.002 8
1193 R68 208 85 0.088 0.001 2
1194 R69 39 6 0.083 0.000 2
1195 R73 444 101 0.087 0.001 8
1196 R74 496 165 0.088 0.002 2
1197 R76 185 14 0.085 0.000 2
1198 R78 438 562 0.089 0.003 8
1199 R79 391 123 0.088 0.001 8
1200 R80 182 70 0.087 0.000 2
1201 R82 100 45 0.087 0.000 2
1202 R83 14 14 0.085 0.000 2
1203 R85 15 10 0.085 0.000 2
1204 R86 3 4 0.083 0.000 3
1205 R87 30 19 0.085 0.000 7
1206 R89 102 35 0.087 0.000 8
1207 R90 59 63 0.087 0.000 2
1208 R91 453 374 0.088 0.001 8
1209 R92 40 14 0.086 0.000 2
1210 R93 132 99 0.088 0.000 2
1211 R94 153 78 0.087 0.000 2
1212 R97 155 52 0.087 0.000 8
1213 R99 13 13 0.086 0.000 2
1214 S00 161 223 0.088 0.001 8
1215 S01 174 246 0.089 0.002 8
1216 S02 127 443 0.089 0.004 8
1217 S03 20 16 0.085 0.000 8
1218 S04 24 11 0.084 0.000 8
1219 S05 87 167 0.088 0.001 8
1220 S06 296 758 0.089 0.008 8
1221 S08 1 7 0.084 0.000 2
1222 S09 210 416 0.089 0.003 8
1223 S10 18 27 0.087 0.000 8
1224 S11 34 53 0.088 0.000 8
1225 S12 48 221 0.088 0.001 8
1226 S13 27 88 0.088 0.000 8
1227 S14 57 92 0.088 0.000 8
1228 S15 8 31 0.086 0.000 2
1229 S16 3 18 0.086 0.000 2
1230 S19 11 35 0.087 0.000 8
1231 S20 129 232 0.088 0.001 8
1232 S21 32 59 0.087 0.001 8
1233 S22 229 559 0.089 0.004 8
1234 S23 3 20 0.087 0.000 8
1235 S24 32 74 0.087 0.000 8
1236 S25 11 31 0.087 0.000 8
1237 S26 15 34 0.087 0.000 8
1238 S27 96 290 0.088 0.001 8
1239 S28 0 2 0.089 0.000 8
1240 S29 72 206 0.089 0.001 8
1241 S30 114 238 0.089 0.001 2
1242 S31 52 181 0.088 0.002 2
1243 S32 204 533 0.089 0.003 8
1244 S33 9 25 0.086 0.000 8
1245 S34 31 33 0.087 0.000 8
1246 S35 18 50 0.088 0.000 8
1247 S36 74 316 0.089 0.001 8
1248 S37 105 176 0.088 0.001 8
1249 S38 8 18 0.086 0.000 8
1250 S39 79 162 0.089 0.001 2
1251 S40 103 104 0.088 0.000 8
1252 S41 38 47 0.087 0.000 8
1253 S42 176 499 0.089 0.003 2
1254 S43 62 153 0.088 0.000 2
1255 S44 13 16 0.085 0.000 8
1256 S45 9 27 0.086 0.000 2
1257 S46 24 40 0.087 0.001 8
1258 S49 39 45 0.087 0.000 2
1259 S50 60 53 0.087 0.000 8
1260 S51 55 98 0.088 0.000 2
1261 S52 108 400 0.089 0.002 2
1262 S53 15 51 0.087 0.000 2
1263 S54 23 28 0.086 0.000 8
1264 S55 12 17 0.084 0.000 2
1265 S56 20 48 0.086 0.000 8
1266 S58 0 10 0.092 0.000 8
1267 S59 25 26 0.085 0.000 8
1268 S60 62 42 0.087 0.000 8
1269 S61 74 146 0.088 0.001 8
1270 S62 79 188 0.088 0.001 8
1271 S63 34 76 0.088 0.000 2
1272 S64 19 28 0.086 0.000 8
1273 S65 9 14 0.085 0.000 2
1274 S66 26 81 0.087 0.000 8
1275 S67 0 2 0.090 0.000 2
1276 S68 20 86 0.088 0.001 8
1277 S69 30 20 0.085 0.000 8
1278 S70 85 198 0.088 0.000 8
1279 S71 32 46 0.087 0.000 2
1280 S72 134 836 0.089 0.004 8
1281 S73 22 83 0.088 0.000 2
1282 S74 15 19 0.086 0.000 8
1283 S75 7 33 0.087 0.000 2
1284 S76 14 59 0.087 0.000 8
1285 S77 3 6 0.083 0.000 8
1286 S79 38 40 0.087 0.000 8
1287 S80 132 240 0.089 0.001 8
1288 S81 87 196 0.089 0.001 8
1289 S82 125 557 0.089 0.004 2
1290 S83 38 107 0.088 0.000 2
1291 S84 10 1 0.082 0.000 8
1292 S85 12 17 0.085 0.000 8
1293 S86 19 80 0.087 0.000 2
1294 S88 6 19 0.087 0.000 2
1295 S89 66 79 0.087 0.000 2
1296 S90 56 63 0.087 0.000 2
1297 S91 39 83 0.088 0.000 8
1298 S92 85 202 0.088 0.002 2
1299 S93 83 76 0.088 0.000 8
1300 S94 4 2 0.001 0.000 8
1301 S96 10 18 0.085 0.000 8
1302 S97 3 6 0.082 0.000 8
1303 S98 12 33 0.086 0.000 8
1304 S99 20 4 0.081 0.000 8
1305 T07 46 87 0.088 0.000 8
1306 T14 177 207 0.088 0.002 2
1307 T15 5 5 0.084 0.000 8
1308 T16 2 1 0.001 0.000 8
1309 T17 341 538 0.089 0.002 8
1310 T18 54 248 0.088 0.000 2
1311 T19 8 11 0.084 0.000 2
1312 T20 29 102 0.088 0.001 8
1313 T21 35 171 0.088 0.002 8
1314 T22 37 124 0.088 0.001 8
1315 T23 20 97 0.088 0.000 8
1316 T24 33 135 0.088 0.003 8
1317 T25 19 65 0.087 0.000 8
1318 T26 12 12 0.083 0.000 8
1319 T27 3 2 0.082 0.000 8
1320 T28 16 9 0.085 0.001 8
1321 T30 3 5 0.083 0.000 2
1322 T36 399 69 0.088 0.001 2
1323 T37 157 48 0.087 0.000 2
1324 T38 432 139 0.088 0.001 8
1325 T39 291 182 0.089 0.001 2
1326 T40 290 274 0.088 0.001 8
1327 T41 66 24 0.086 0.000 2
1328 T42 243 409 0.088 0.001 2
1329 T43 219 232 0.088 0.001 2
1330 T44 125 68 0.087 0.000 2
1331 T45 540 283 0.088 0.002 8
1332 T46 307 178 0.088 0.000 8
1333 T47 92 22 0.086 0.000 2
1334 T48 83 30 0.087 0.000 2
1335 T49 103 5 0.084 0.000 8
1336 T50 527 245 0.088 0.002 8
1337 T51 40 163 0.088 0.000 2
1338 T52 4 35 0.087 0.000 8
1339 T53 1 2 0.072 0.000 8
1340 T54 23 97 0.088 0.000 2
1341 T55 2 16 0.086 0.000 2
1342 T56 20 76 0.087 0.000 2
1343 T57 3 6 0.084 0.000 8
1344 T58 3 42 0.087 0.000 8
1345 T59 13 56 0.088 0.000 8
1346 T60 4 24 0.086 0.000 2
1347 T61 1 12 0.085 0.000 8
1348 T62 66 82 0.088 0.000 8
1349 T63 5 24 0.086 0.000 8
1350 T65 97 59 0.087 0.000 2
1351 T66 73 28 0.086 0.000 2
1352 T67 19 107 0.088 0.001 2
1353 T68 12 23 0.086 0.000 2
1354 T71 3 55 0.087 0.000 8
1355 T73 5 19 0.085 0.000 8
1356 T74 10 19 0.085 0.000 2
1357 T75 21 70 0.088 0.001 2
1358 T76 20 46 0.087 0.000 2
1359 T78 146 236 0.088 0.000 2
1360 T79 135 228 0.089 0.001 8
1361 T80 360 431 0.089 0.002 2
1362 T81 517 794 0.089 0.007 2
1363 T82 345 673 0.089 0.004 8
1364 T83 197 534 0.089 0.002 8
1365 T84 144 661 0.089 0.002 2
1366 T85 245 598 0.089 0.003 2
1367 T86 279 619 0.089 0.002 2
1368 T87 40 176 0.088 0.000 8
1369 T88 282 278 0.089 0.001 8
1370 X83 10 4 0.084 0.000 8
1371 Y84 296 11 0.085 0.000 8
1372 Y95 209 11 0.086 0.000 8
1373 Z00 87 45 0.087 0.000 8
1374 Z01 29 197 0.088 0.000 2
1375 Z02 7 22 0.086 0.000 3
1376 Z03 78 176 0.089 0.001 3
1377 Z04 8 29 0.086 0.000 2
1378 Z08 7 137 0.088 0.000 2
1379 Z09 14 114 0.088 0.000 2
1380 Z11 12 16 0.086 0.000 8
1381 Z12 4 51 0.087 0.000 2
1382 Z13 51 45 0.087 0.001 2
1383 Z15 58 30 0.086 0.000 3
1384 Z16 409 14 0.085 0.000 8
1385 Z20 75 11 0.084 0.001 2
1386 Z21 422 87 0.088 0.001 3
1387 Z22 657 40 0.087 0.001 3
1388 Z23 64 7 0.083 0.000 9
1389 Z30 67 74 0.088 0.000 5
1390 Z31 7 17 0.086 0.000 7
1391 Z33 112 53 0.087 0.003 6
1392 Z34 15 8 0.083 0.000 5
1393 Z37 104 26 0.086 0.001 1
1394 Z38 24 46 0.085 0.000 9
1395 Z39 14 17 0.084 0.000 5
1396 Z40 18 127 0.088 0.000 3
1397 Z41 15 14 0.086 0.000 2
1398 Z42 15 249 0.088 0.000 2
1399 Z43 57 442 0.089 0.000 2
1400 Z44 9 26 0.085 0.000 2
1401 Z45 42 368 0.089 0.000 2
1402 Z46 64 315 0.088 0.000 2
1403 Z47 43 424 0.089 0.001 2
1404 Z48 64 392 0.089 0.001 2
1405 Z49 11 144 0.088 0.000 2
1406 Z51 347 910 0.089 0.004 2
1407 Z52 52 52 0.087 0.000 7
1408 Z53 526 140 0.088 0.002 2
1409 Z60 442 24 0.086 0.000 8
1410 Z63 162 1 0.001 0.000 2
1411 Z65 280 21 0.086 0.000 2
1412 Z67 129 6 0.082 0.000 1
1413 Z68 339 21 0.086 0.000 4
1414 Z71 65 41 0.087 0.000 2
1415 Z74 312 39 0.087 0.000 8
1416 Z75 33 88 0.087 0.000 2
1417 Z76 167 73 0.087 0.001 2
1418 Z79 1046 52 0.087 0.002 2
1419 Z80 602 31 0.087 0.002 4
1420 Z81 173 8 0.084 0.000 2
1421 Z82 422 5 0.082 0.001 4
1422 Z83 350 4 0.082 0.000 7
1423 Z84 147 2 0.081 0.000 3
1424 Z85 927 64 0.087 0.001 2
1425 Z86 939 79 0.088 0.002 2
1426 Z87 1028 210 0.088 0.004 2
1427 Z88 997 93 0.088 0.003 3
1428 Z89 340 4 0.083 0.000 8
1429 Z90 881 50 0.087 0.001 2
1430 Z91 871 53 0.088 0.002 3
1431 Z92 745 11 0.085 0.000 2
1432 Z93 525 58 0.087 0.001 8
1433 Z94 508 30 0.087 0.001 2
1434 Z95 801 63 0.088 0.002 8
1435 Z96 717 45 0.087 0.001 8
1436 Z98 842 40 0.087 0.001 2
1437 Z99 750 46 0.087 0.001 8
1438 E60 33 0 0.001 0.000 2
1439 R77 66 0 0.001 0.000 8
1440 Z14 140 0 0.001 0.000 4
1441 Z59 554 0 0.001 0.000 8
1442 Z72 378 0 0.001 0.000 2
1443 Z77 103 0 0.001 0.000 2
1444 Z97 305 0 0.001 0.000 3
1445 B80 9 0 0.001 0.000 15
1446 B88 6 0 0.001 0.000 8
1447 E50 66 0 0.001 0.000 2
1448 I79 18 0 0.001 0.000 8
1449 K67 2 0 0.001 0.000 8
1450 T31 29 0 0.001 0.000 8
1451 W19 205 0 0.001 0.000 8
1452 W20 12 0 0.001 0.000 8
1453 X58 168 0 0.001 0.000 8
1454 Y83 425 0 0.001 0.000 2
1455 Y92 271 0 0.001 0.000 8
1456 Z17 137 0 0.001 0.000 2
1457 B40 3 0 0.001 0.000 8
1458 E56 119 0 0.001 0.000 2
1459 E29 71 0 0.001 0.000 8
1460 E30 35 0 0.001 0.000 2
1461 W06 43 0 0.001 0.000 8
1462 Z28 13 0 0.001 0.000 8
1463 Z66 61 0 0.001 0.000 8
1464 G94 33 0 0.001 0.000 8
1465 K23 5 0 0.001 0.000 8
1466 R71 41 0 0.001 0.000 8
1467 A80 16 0 0.001 0.000 8
1468 M88 167 0 0.001 0.000 8
1469 M90 13 0 0.001 0.000 8
1470 Z56 131 0 0.001 0.000 2
1471 Z78 56 0 0.001 0.000 2
1472 W18 129 0 0.001 0.000 8
1473 G01 1 0 0.001 0.000 2
1474 B38 1 0 0.001 0.000 8
1475 F73 35 0 0.001 0.000 8
1476 W22 39 0 0.001 0.000 8
1477 Y93 88 0 0.001 0.000 8
1478 Y99 81 0 0.001 0.000 8
1479 A26 1 0 0.001 0.000 8
1480 A27 2 0 0.001 0.000 8
1481 A84 1 0 0.001 0.000 8
1482 B56 1 0 0.001 0.000 8
1483 B85 49 0 0.001 0.000 3
1484 B87 6 0 0.001 0.000 2
1485 E42 4 0 0.001 0.000 8
1486 E64 19 0 0.001 0.000 8
1487 F81 39 0 0.001 0.000 2
1488 G09 105 0 0.001 0.000 2
1489 G32 23 0 0.001 0.000 8
1490 G65 9 0 0.001 0.000 8
1491 G73 22 0 0.001 0.000 2
1492 G99 41 0 0.001 0.000 8
1493 I43 82 0 0.001 0.000 8
1494 L63 42 0 0.001 0.000 3
1495 L64 15 0 0.001 0.000 8
1496 N29 47 0 0.001 0.000 2
1497 Q14 14 0 0.001 0.000 2
1498 Q96 42 0 0.001 0.000 3
1499 Q98 43 0 0.001 0.000 8
1500 R84 17 0 0.001 0.000 8
1501 V89 24 0 0.001 0.000 8
1502 W01 34 0 0.001 0.000 8
1503 W46 1 0 0.001 0.000 8
1504 W90 5 0 0.001 0.000 8
1505 X12 8 0 0.001 0.000 8
1506 Y64 6 0 0.001 0.000 8
1507 Y65 67 0 0.001 0.000 2
1508 Z57 11 0 0.001 0.000 8
1509 Z73 56 0 0.001 0.000 2
1510 J17 7 0 0.001 0.000 8
1511 K77 21 0 0.001 0.000 3
1512 E52 9 0 0.001 0.000 8
1513 L41 14 0 0.001 0.000 3
1514 A30 4 0 0.001 0.000 8
1515 B79 1 0 0.001 0.000 2
1516 B92 1 0 0.001 0.000 2
1517 Z55 39 0 0.001 0.000 2
1518 L83 13 0 0.001 0.000 2
1519 N27 9 0 0.001 0.000 8
1520 N07 4 0 0.001 0.000 8
1521 R70 7 0 0.001 0.000 2
1522 H62 7 0 0.001 0.000 8
1523 G02 3 0 0.001 0.000 2
1524 R75 4 0 0.001 0.000 2
1525 D77 5 0 0.001 0.000 8
1526 E36 10 0 0.001 0.000 2
1527 Z18 17 0 0.001 0.000 8
1528 L87 4 0 0.001 0.000 8
1529 B64 1 0 0.001 0.000 2
1530 Y69 9 0 0.001 0.000 8
1531 L11 10 0 0.001 0.000 8
1532 M36 17 0 0.001 0.000 2
1533 V87 32 0 0.001 0.000 8
1534 W88 14 0 0.001 0.000 8
1535 G53 3 0 0.001 0.000 2
1536 G14 11 0 0.001 0.000 8
1537 N96 13 0 0.001 0.000 6
1538 M83 34 0 0.001 0.000 8
1539 W13 20 0 0.001 0.000 8
1540 R37 4 0 0.001 0.000 8
1541 E00 12 0 0.001 0.000 2
1542 G55 3 0 0.001 0.000 2
1543 T69 8 0 0.001 0.000 8
1544 L49 7 0 0.001 0.000 2
1545 D67 17 0 0.001 0.000 4
1546 V99 13 0 0.001 0.000 8
1547 Y80 1 0 0.001 0.000 2
1548 Z62 55 0 0.001 0.000 2
1549 H36 1 0 0.001 0.000 3
1550 Y63 8 0 0.001 0.000 2
1551 V15 1 0 0.001 0.000 3
1552 B73 6 0 0.001 0.000 8
1553 E58 14 0 0.001 0.000 8
1554 Q86 7 0 0.001 0.000 8
1555 I32 7 0 0.001 0.000 8
1556 I02 10 0 0.001 0.000 8
1557 R81 7 0 0.001 0.000 2
1558 W05 7 0 0.001 0.000 8
1559 W08 5 0 0.001 0.000 8
1560 W07 16 0 0.001 0.000 8
1561 E59 4 0 0.001 0.000 8
1562 W17 35 0 0.001 0.000 8
1563 Y90 9 0 0.001 0.000 8
1564 Z69 4 0 0.001 0.000 8
1565 X78 26 0 0.001 0.000 8
1566 F65 4 0 0.001 0.000 8
1567 F24 1 0 0.001 0.000 2
1568 F66 6 0 0.001 0.000 2
1569 X79 1 0 0.001 0.000 2
1570 H75 5 0 0.001 0.000 8
1571 X19 11 0 0.001 0.000 8
1572 N22 2 0 0.001 0.000 8
1573 T70 3 0 0.001 0.000 8
1574 W16 4 0 0.001 0.000 8
1575 Y82 3 0 0.001 0.000 8
1576 V49 24 0 0.001 0.000 8
1577 A66 2 0 0.001 0.000 2
1578 P60 7 0 0.001 0.000 9
1579 V20 1 0 0.001 0.000 2
1580 W74 2 0 0.001 0.000 2
1581 W40 11 0 0.001 0.000 8
1582 W57 5 0 0.001 0.000 8
1583 H67 3 0 0.001 0.000 8
1584 V09 24 0 0.001 0.000 8
1585 V45 1 0 0.001 0.000 8
1586 H42 2 0 0.001 0.000 2
1587 Y71 9 0 0.001 0.000 8
1588 W89 1 0 0.001 0.000 2
1589 Z64 10 0 0.001 0.000 6
1590 J63 12 0 0.001 0.000 8
1591 V18 13 0 0.001 0.000 8
1592 W64 1 0 0.001 0.000 8
1593 W67 2 0 0.001 0.000 8
1594 V97 5 0 0.001 0.000 8
1595 W10 26 0 0.001 0.000 8
1596 A67 1 0 0.001 0.000 8
1597 A70 3 0 0.001 0.000 8
1598 B77 5 0 0.001 0.000 8
1599 I52 1 0 0.001 0.000 8
1600 Y33 8 0 0.001 0.000 8
1601 Y81 2 0 0.001 0.000 8
1602 Z70 5 0 0.001 0.000 16
1603 X11 7 0 0.001 0.000 8
1604 W55 19 0 0.001 0.000 8
1605 H22 2 0 0.001 0.000 8
1606 B75 1 0 0.001 0.000 8
1607 A00 1 0 0.001 0.000 8
1608 A95 1 0 0.001 0.000 2
1609 A93 2 0 0.001 0.000 8
1610 M63 4 0 0.001 0.000 8
1611 W11 8 0 0.001 0.000 8
1612 A71 1 0 0.001 0.000 8
1613 N77 4 0 0.001 0.000 8
1614 V00 11 0 0.001 0.000 8
1615 V82 1 0 0.001 0.000 8
1616 Q95 3 0 0.001 0.000 17
1617 J66 7 0 0.001 0.000 8
1618 X08 15 0 0.001 0.000 8
1619 W34 6 0 0.001 0.000 8
1620 X00 4 0 0.001 0.000 8
1621 X02 4 0 0.001 0.000 8
1622 V29 37 0 0.001 0.000 8
1623 L75 1 0 0.001 0.000 2
1624 V19 22 0 0.001 0.000 8
1625 X76 4 0 0.001 0.000 8
1626 Y36 2 0 0.001 0.000 8
1627 B76 2 0 0.001 0.000 8
1628 W00 4 0 0.001 0.000 8
1629 A20 1 0 0.001 0.000 2
1630 Y74 1 0 0.001 0.000 2
1631 S17 2 0 0.001 0.000 8
1632 T32 2 0 0.001 0.000 2
1633 G59 2 0 0.001 0.000 8
1634 Y73 4 0 0.001 0.000 8
1635 X15 3 0 0.001 0.000 8
1636 A92 4 0 0.001 0.000 6
1637 S48 1 0 0.001 0.000 2
1638 W54 12 0 0.001 0.000 8
1639 W26 6 0 0.001 0.000 8
1640 W45 16 0 0.001 0.000 8
1641 W56 1 0 0.001 0.000 2
1642 X10 7 0 0.001 0.000 8
1643 W61 1 0 0.001 0.000 8
1644 W51 3 0 0.001 0.000 8
1645 A82 3 0 0.001 0.000 8
1646 I41 1 0 0.001 0.000 2
1647 V80 11 0 0.001 0.000 8
1648 Y09 17 0 0.001 0.000 8
1649 Y38 1 0 0.001 0.000 2
1650 A64 3 0 0.001 0.000 2
1651 L54 2 0 0.001 0.000 8
1652 R36 1 0 0.001 0.000 8
1653 S95 1 0 0.001 0.000 8
1654 Y76 2 0 0.001 0.000 8
1655 O29 7 0 0.001 0.000 1
1656 V43 12 0 0.001 0.000 2
1657 Y24 3 0 0.001 0.000 18
1658 Z36 1 0 0.001 0.000 1
1659 P26 7 0 0.001 0.000 9
1660 P93 1 0 0.001 0.000 9
1661 P95 1 0 0.001 0.000 9
1662 A75 1 0 0.001 0.000 2
1663 Y77 1 0 0.001 0.000 2
1664 Z32 2 0 0.001 0.000 2
1665 T33 1 0 0.001 0.000 2
1666 G64 1 0 0.001 0.000 8
1667 V48 7 0 0.001 0.000 8
1668 W31 15 0 0.001 0.000 8
1669 B83 1 0 0.001 0.000 8
1670 A65 1 0 0.001 0.000 8
1671 X73 1 0 0.001 0.000 2
1672 Y04 13 0 0.001 0.000 8
1673 Y07 2 0 0.001 0.000 8
1674 V03 10 0 0.001 0.000 8
1675 V13 5 0 0.001 0.000 8
1676 W50 6 0 0.001 0.000 8
1677 X94 1 0 0.001 0.000 8
1678 X99 16 0 0.001 0.000 8
1679 V11 4 0 0.001 0.000 8
1680 V22 1 0 0.001 0.000 8
1681 V28 12 0 0.001 0.000 8
1682 V64 1 0 0.001 0.000 8
1683 V81 3 0 0.001 0.000 8
1684 W03 5 0 0.001 0.000 8
1685 W04 3 0 0.001 0.000 8
1686 W09 9 0 0.001 0.000 8
1687 W12 3 0 0.001 0.000 8
1688 W21 5 0 0.001 0.000 8
1689 W37 2 0 0.001 0.000 8
1690 X18 1 0 0.001 0.000 8
1691 Y00 2 0 0.001 0.000 8
1692 Y08 1 0 0.001 0.000 8
1693 W27 7 0 0.001 0.000 8
1694 W33 4 0 0.001 0.000 8
1695 V01 1 0 0.001 0.000 8
1696 V04 1 0 0.001 0.000 8
1697 V10 6 0 0.001 0.000 8
1698 V23 13 0 0.001 0.000 8
1699 V47 5 0 0.001 0.000 8
1700 V77 1 0 0.001 0.000 8
1701 V79 4 0 0.001 0.000 8
1702 W14 4 0 0.001 0.000 8
1703 W24 4 0 0.001 0.000 8
1704 X74 2 0 0.001 0.000 8
1705 X80 10 0 0.001 0.000 8
1706 Y03 9 0 0.001 0.000 8
1707 Y30 6 0 0.001 0.000 8
1708 V27 3 0 0.001 0.000 8
1709 W25 9 0 0.001 0.000 8
1710 X95 3 0 0.001 0.000 8
1711 V17 1 0 0.001 0.000 8
1712 W23 6 0 0.001 0.000 8
1713 W99 1 0 0.001 0.000 2
1714 Y28 1 0 0.001 0.000 2
1715 V02 1 0 0.001 0.000 8
1716 V44 1 0 0.001 0.000 2
1717 V40 2 0 0.001 0.000 2
1718 V88 2 0 0.001 0.000 8
1719 V16 1 0 0.001 0.000 2
1720 W29 3 0 0.001 0.000 8
1721 W39 3 0 0.001 0.000 8
1722 V69 1 0 0.001 0.000 8
1723 W28 1 0 0.001 0.000 8
1724 W30 3 0 0.001 0.000 8
1725 V86 1 0 0.001 0.000 8
1726 S87 1 0 0.001 0.000 2
1727 X81 1 0 0.001 0.000 2
1728 V95 1 0 0.001 0.000 2
1729 W35 1 0 0.001 0.000 8
1730 W86 3 0 0.001 0.000 8
1731 X04 4 0 0.001 0.000 8
1732 W38 1 0 0.001 0.000 8
1733 W85 3 0 0.001 0.000 8
1734 X06 2 0 0.001 0.000 8
1735 X16 1 0 0.001 0.000 8
1736 X98 1 0 0.001 0.000 8
1737 X01 1 0 0.001 0.000 8
1738 X03 3 0 0.001 0.000 8
1739 X97 2 0 0.001 0.000 8
1740 V91 1 0 0.001 0.000 8
1741 W93 1 0 0.001 0.000 8
1742 X17 1 0 0.001 0.000 8
1743 X30 1 0 0.001 0.000 2
1744 A24 1 0 0.001 0.000 2
1745 Y62 1 0 0.001 0.000 8
1746 Y79 1 0 0.001 0.000 2

Y su distribución del grado:
vars n mean sd median trimmed mad min max range skew kurtosis se
InDegree 1 1746 132.394 180.385 56 94.229 74.130 0 1122 1122 2.164 5.228 4.317
OutDegree 2 1746 132.394 175.075 62 96.327 91.921 0 1089 1089 1.994 4.419 4.190

Esta distribución se corresponde con la de una red libre de escala (tanto para el grado de entrada como de salida) lo cual quiere decir que existen diagnósticos que se comportan como hubs, y la red se caracteriza por presentar unos pocos nodos muy conectados y muchos nodos escasamente conectados. Es decir tenemos pocos diagnósticos que puedan dar pie a prácticamente cualquier otro diagnóstico de la red, y muchos que se relacionan con varios (pero no excesivos) diagnósticos.

Una vez generada la red, hemos encontrado que el algoritmo walktrap que consiste en salir de cada nodo siguiendo enlaces aleatoriamente, y observar en qué conjuntos de nodos nos solemos mantener, acostumbra a converger a agrupaciones estables. De forma que lo hemos empleado para generar la agrupación, observando que variando el parámetro steps (15-20-30-40-50) la solución era prácticamente idéntica. Nos ha quedado una red de 18 nodos que agrupan los originales de la forma siguiente:

cluster 2 8 3 9 1 4 5 6 7 10 11 12 13 14 15 16 17 18
n 856 606 114 52 49 24 15 14 7 1 1 1 1 1 1 1 1 1

Vemos que tan solo dos clusters aglutinan la mayoría de nodos originales, lo que es propio de una red de libre escala densamente poblada.

Finalmente hemos comparado la red formada por los grupos del CIE-ES con la red formada por los clusters, obteniendo los siguientes gráficos.

Muchos grupos de la red están fuertemente conectados, la red de clusters presenta dos grupos centrales, y el resto de nodos son periféricos. La distribución del grado de los grupos, en la que todos ellos están fuertemente conectados, es inusual y complica la extracción de información. Mientras que los grados de la red clusterizada ya muestran un comportamiento más usual, que parece fruto de la adición de una red libre de escala con una red aleatoria de Erdos-Renyi.

Por último hemos añadido a los datos las variables C1_clust-C20_clust que recogen el clúster al que pertence cada diagnóstico. Y además las variables numéricas C1_3_close, C1_3_betwe, C1_3_indeg y C1_3_outdeg correspondientes a las medidas de centralidad del diagnóstico principal de cada paciente.

Modelado

Ahora que ya disponemos de un amplio conjunto de variables, lo que hemos hecho en primer lugar ha sido estudiarlo, como hicimos para el conjunto inicial, pera ya muy enfocados a incorporarlas en un modelo predictivo.

Selección de variables

La parte del trabajo acometida en este momento ha consistido en asignarle a cada variable una prioridad en función de lo relevante que la consideramos para desarrollar un modelo consistente. De esta forma, el conjunto de variables ha quedado dividido en 5 subconjuntos en función de su prioridad:
name TYPE n_NANs n_CATs mean sd min max ready dispING priority
Prioridad -1
REINGRESARA factor 0 2 NA NA NA NA TRUE FALSE -1
TIPALT_recat factor 0 3 NA NA NA NA TRUE FALSE -1
HISTORIA_Anonimo numeric 0 NA 414174.166 394395.439 2.000 3171147.000 TRUE TRUE -1
TIMEALTING numeric 0 NA 0.019 0.032 0.000 1.793 TRUE FALSE -1
Prioridad 0
CENTRO factor 0 35 NA NA NA NA FALSE TRUE 0
HOSPROC factor 0 138 NA NA NA NA FALSE TRUE 0
SERVING factor 0 61 NA NA NA NA FALSE TRUE 0
SERVALT factor 0 56 NA NA NA NA FALSE FALSE 0
TIPALT factor 0 12 NA NA NA NA FALSE FALSE 0
POAC1 factor 0 6 NA NA NA NA FALSE TRUE 0
POAC2 factor 0 6 NA NA NA NA FALSE FALSE 0
POAC3 factor 0 6 NA NA NA NA FALSE FALSE 0
POAC4 factor 0 6 NA NA NA NA FALSE FALSE 0
POAC5 factor 0 6 NA NA NA NA FALSE FALSE 0
POAC6 factor 0 6 NA NA NA NA FALSE FALSE 0
POAC7 factor 0 6 NA NA NA NA FALSE FALSE 0
POAC8 factor 0 6 NA NA NA NA FALSE FALSE 0
POAC9 factor 0 6 NA NA NA NA FALSE FALSE 0
POAC10 factor 0 6 NA NA NA NA FALSE FALSE 0
POAC11 factor 0 6 NA NA NA NA FALSE FALSE 0
POAC12 factor 0 6 NA NA NA NA FALSE FALSE 0
POAC13 factor 0 6 NA NA NA NA FALSE FALSE 0
POAC14 factor 0 6 NA NA NA NA FALSE FALSE 0
POAC15 factor 0 6 NA NA NA NA FALSE FALSE 0
POAC16 factor 0 6 NA NA NA NA FALSE FALSE 0
POAC17 factor 0 6 NA NA NA NA FALSE FALSE 0
POAC18 factor 0 6 NA NA NA NA FALSE FALSE 0
POAC19 factor 0 6 NA NA NA NA FALSE FALSE 0
POAC20 factor 0 6 NA NA NA NA FALSE FALSE 0
MUNICIPI factor 0 1996 NA NA NA NA FALSE TRUE 0
HOSPDEST factor 0 167 NA NA NA NA FALSE FALSE 0
FECALT_YEAR factor 0 NA NA NA NA NA TRUE FALSE 0
C1_3 factor 0 1449 NA NA NA NA FALSE TRUE 0
C2_3 factor 0 1612 NA NA NA NA FALSE FALSE 0
C3_3 factor 0 1566 NA NA NA NA FALSE FALSE 0
C4_3 factor 0 1524 NA NA NA NA FALSE FALSE 0
C5_3 factor 0 1460 NA NA NA NA FALSE FALSE 0
C6_3 factor 0 1420 NA NA NA NA FALSE FALSE 0
C7_3 factor 0 1386 NA NA NA NA FALSE FALSE 0
C8_3 factor 0 1349 NA NA NA NA FALSE FALSE 0
C9_3 factor 0 1292 NA NA NA NA FALSE FALSE 0
C10_3 factor 0 1234 NA NA NA NA FALSE FALSE 0
C11_3 factor 0 1200 NA NA NA NA FALSE FALSE 0
C12_3 factor 0 1137 NA NA NA NA FALSE FALSE 0
C13_3 factor 0 1071 NA NA NA NA FALSE FALSE 0
C14_3 factor 0 1045 NA NA NA NA FALSE FALSE 0
C15_3 factor 0 988 NA NA NA NA FALSE FALSE 0
C16_3 factor 0 954 NA NA NA NA FALSE FALSE 0
C17_3 factor 0 885 NA NA NA NA FALSE FALSE 0
C18_3 factor 0 842 NA NA NA NA FALSE FALSE 0
C19_3 factor 0 754 NA NA NA NA FALSE FALSE 0
C20_3 factor 0 710 NA NA NA NA FALSE FALSE 0
C16_group factor 0 22 NA NA NA NA FALSE FALSE 0
C17_group factor 0 22 NA NA NA NA FALSE FALSE 0
C18_group factor 0 22 NA NA NA NA FALSE FALSE 0
C19_group factor 0 22 NA NA NA NA FALSE FALSE 0
C20_group factor 0 22 NA NA NA NA FALSE FALSE 0
C1-20_group factor 0 210321 NA NA NA NA FALSE FALSE 0
POAC1-20 factor 0 2489 NA NA NA NA FALSE FALSE 0
P16_1 factor 0 16 NA NA NA NA FALSE FALSE 0
P17_1 factor 0 14 NA NA NA NA FALSE FALSE 0
P18_1 factor 0 14 NA NA NA NA FALSE FALSE 0
P19_1 factor 0 17 NA NA NA NA FALSE FALSE 0
P20_1 factor 0 15 NA NA NA NA FALSE FALSE 0
P16_2 factor 0 35 NA NA NA NA FALSE FALSE 0
P17_2 factor 0 30 NA NA NA NA FALSE FALSE 0
P18_2 factor 0 30 NA NA NA NA FALSE FALSE 0
P19_2 factor 0 30 NA NA NA NA FALSE FALSE 0
P20_2 factor 0 31 NA NA NA NA FALSE FALSE 0
P16_3 factor 0 24 NA NA NA NA FALSE FALSE 0
P17_3 factor 0 24 NA NA NA NA FALSE FALSE 0
P18_3 factor 0 26 NA NA NA NA FALSE FALSE 0
P19_3 factor 0 24 NA NA NA NA FALSE FALSE 0
P20_3 factor 0 24 NA NA NA NA FALSE FALSE 0
POAC16_recat factor 0 3 NA NA NA NA TRUE FALSE 0
POAC17_recat factor 0 3 NA NA NA NA TRUE FALSE 0
POAC18_recat factor 0 3 NA NA NA NA TRUE FALSE 0
POAC19_recat factor 0 3 NA NA NA NA TRUE FALSE 0
POAC20_recat factor 0 3 NA NA NA NA TRUE FALSE 0
C16_clust factor 0 9 NA NA NA NA FALSE FALSE 0
C17_clust factor 0 10 NA NA NA NA FALSE FALSE 0
C18_clust factor 0 8 NA NA NA NA FALSE FALSE 0
C19_clust factor 0 9 NA NA NA NA FALSE FALSE 0
C20_clust factor 0 10 NA NA NA NA FALSE FALSE 0
REGFIN factor 76 56 NA NA NA NA FALSE TRUE 0
PROCED factor 57185 10 NA NA NA NA FALSE TRUE 0
PAIS_NAC factor 284265 145 NA NA NA NA FALSE TRUE 0
TIP_CIP factor 286139 4 NA NA NA NA FALSE TRUE 0
COD_POSTAL factor 459926 735 NA NA NA NA FALSE TRUE 0
SEMGEST numeric 490173 NA 37.902 3.826 1.000 82.000 FALSE FALSE 0
TIMEINTINT numeric 502046 NA 0.015 0.044 0.000 1.496 FALSE FALSE 0
TIMETRAS4ING numeric 515779 NA 0.052 0.071 -0.002 0.989 FALSE FALSE 0
TIMETRAS5ING numeric 518334 NA 0.087 0.100 -0.002 0.973 FALSE FALSE 0
TIMETRAS6ING numeric 519068 NA 0.116 0.124 -0.001 0.976 FALSE FALSE 0
Prioridad 1
C11_group factor 0 22 NA NA NA NA FALSE FALSE 1
C12_group factor 0 22 NA NA NA NA FALSE FALSE 1
C13_group factor 0 22 NA NA NA NA FALSE FALSE 1
C14_group factor 0 22 NA NA NA NA FALSE FALSE 1
C15_group factor 0 22 NA NA NA NA FALSE FALSE 1
P11_1 factor 0 16 NA NA NA NA FALSE FALSE 1
P12_1 factor 0 16 NA NA NA NA FALSE FALSE 1
P13_1 factor 0 15 NA NA NA NA FALSE FALSE 1
P14_1 factor 0 16 NA NA NA NA FALSE FALSE 1
P15_1 factor 0 15 NA NA NA NA FALSE FALSE 1
P11_2 factor 0 34 NA NA NA NA FALSE FALSE 1
P12_2 factor 0 33 NA NA NA NA FALSE FALSE 1
P13_2 factor 0 33 NA NA NA NA FALSE FALSE 1
P14_2 factor 0 34 NA NA NA NA FALSE FALSE 1
P15_2 factor 0 32 NA NA NA NA FALSE FALSE 1
P11_3 factor 0 31 NA NA NA NA FALSE FALSE 1
P12_3 factor 0 31 NA NA NA NA FALSE FALSE 1
P13_3 factor 0 31 NA NA NA NA FALSE FALSE 1
P14_3 factor 0 29 NA NA NA NA FALSE FALSE 1
P15_3 factor 0 28 NA NA NA NA FALSE FALSE 1
POAC11_recat factor 0 3 NA NA NA NA TRUE FALSE 1
POAC12_recat factor 0 3 NA NA NA NA TRUE FALSE 1
POAC13_recat factor 0 3 NA NA NA NA TRUE FALSE 1
POAC14_recat factor 0 3 NA NA NA NA TRUE FALSE 1
POAC15_recat factor 0 3 NA NA NA NA TRUE FALSE 1
C11_clust factor 0 11 NA NA NA NA FALSE FALSE 1
C12_clust factor 0 11 NA NA NA NA FALSE FALSE 1
C13_clust factor 0 10 NA NA NA NA FALSE FALSE 1
C14_clust factor 0 11 NA NA NA NA FALSE FALSE 1
C15_clust factor 0 10 NA NA NA NA FALSE FALSE 1
TIMEINTING numeric 343645 NA 0.003 0.012 -0.951 1.295 FALSE FALSE 1
TIMETRAS1ING numeric 435155 NA 0.007 0.018 -0.003 0.765 FALSE FALSE 1
TIMETRAS2ING numeric 472907 NA 0.011 0.026 -0.003 0.767 FALSE FALSE 1
TIMETRAS3ING numeric 510962 NA 0.035 0.053 -0.003 0.975 FALSE FALSE 1
Prioridad 2
C5_group factor 0 22 NA NA NA NA TRUE FALSE 2
C6_group factor 0 22 NA NA NA NA TRUE FALSE 2
C7_group factor 0 22 NA NA NA NA TRUE FALSE 2
C8_group factor 0 22 NA NA NA NA TRUE FALSE 2
C9_group factor 0 22 NA NA NA NA TRUE FALSE 2
C10_group factor 0 22 NA NA NA NA TRUE FALSE 2
C1-20_group_once factor 0 39865 NA NA NA NA FALSE FALSE 2
POAC1-20_once factor 0 26 NA NA NA NA FALSE FALSE 2
M1_group factor 0 50 NA NA NA NA FALSE TRUE 2
M2_group factor 0 49 NA NA NA NA FALSE FALSE 2
M3_group factor 0 41 NA NA NA NA FALSE FALSE 2
M4_group factor 0 31 NA NA NA NA FALSE FALSE 2
M5_group factor 0 23 NA NA NA NA FALSE FALSE 2
M6_group factor 0 16 NA NA NA NA FALSE FALSE 2
M7_group factor 0 17 NA NA NA NA FALSE FALSE 2
P5_1 factor 0 19 NA NA NA NA FALSE FALSE 2
P6_1 factor 0 17 NA NA NA NA FALSE FALSE 2
P7_1 factor 0 18 NA NA NA NA FALSE FALSE 2
P8_1 factor 0 17 NA NA NA NA FALSE FALSE 2
P9_1 factor 0 17 NA NA NA NA FALSE FALSE 2
P10_1 factor 0 19 NA NA NA NA FALSE FALSE 2
P5_2 factor 0 35 NA NA NA NA FALSE FALSE 2
P6_2 factor 0 35 NA NA NA NA FALSE FALSE 2
P7_2 factor 0 35 NA NA NA NA FALSE FALSE 2
P8_2 factor 0 35 NA NA NA NA FALSE FALSE 2
P9_2 factor 0 35 NA NA NA NA FALSE FALSE 2
P10_2 factor 0 35 NA NA NA NA FALSE FALSE 2
P5_3 factor 0 34 NA NA NA NA FALSE FALSE 2
P6_3 factor 0 33 NA NA NA NA FALSE FALSE 2
P7_3 factor 0 33 NA NA NA NA FALSE FALSE 2
P8_3 factor 0 32 NA NA NA NA FALSE FALSE 2
P9_3 factor 0 33 NA NA NA NA FALSE FALSE 2
P10_3 factor 0 32 NA NA NA NA FALSE FALSE 2
POAC5_recat factor 0 3 NA NA NA NA TRUE FALSE 2
POAC6_recat factor 0 3 NA NA NA NA TRUE FALSE 2
POAC7_recat factor 0 3 NA NA NA NA TRUE FALSE 2
POAC8_recat factor 0 3 NA NA NA NA TRUE FALSE 2
POAC9_recat factor 0 3 NA NA NA NA TRUE FALSE 2
POAC10_recat factor 0 3 NA NA NA NA TRUE FALSE 2
C5_clust factor 0 11 NA NA NA NA FALSE FALSE 2
C6_clust factor 0 11 NA NA NA NA FALSE FALSE 2
C7_clust factor 0 11 NA NA NA NA FALSE FALSE 2
C8_clust factor 0 11 NA NA NA NA FALSE FALSE 2
C9_clust factor 0 11 NA NA NA NA FALSE FALSE 2
C10_clust factor 0 11 NA NA NA NA FALSE FALSE 2
M5_last factor 519807 7 NA NA NA NA FALSE FALSE 2
M6_last factor 519884 4 NA NA NA NA FALSE FALSE 2
M7_last factor 519922 5 NA NA NA NA FALSE FALSE 2
Prioridad 3
SEXO factor 0 3 NA NA NA NA FALSE TRUE 3
TIPING factor 0 3 NA NA NA NA TRUE TRUE 3
FECING_YEAR factor 0 2 NA NA NA NA TRUE TRUE 3
FECING_MONTH factor 0 12 NA NA NA NA TRUE TRUE 3
FECING_WEEKDAY factor 0 7 NA NA NA NA TRUE TRUE 3
FECING_HOUR factor 0 24 NA NA NA NA TRUE TRUE 3
FECALT_MONTH factor 0 12 NA NA NA NA TRUE FALSE 3
FECALT_WEEKDAY factor 0 7 NA NA NA NA TRUE FALSE 3
FECALT_HOUR factor 0 24 NA NA NA NA TRUE FALSE 3
FECURG_BIN factor 0 2 NA NA NA NA TRUE TRUE 3
FECINT_BIN factor 0 2 NA NA NA NA TRUE FALSE 3
FECINT2_BIN factor 0 2 NA NA NA NA TRUE FALSE 3
FECPART_BIN factor 0 2 NA NA NA NA TRUE FALSE 3
C1_group factor 0 21 NA NA NA NA FALSE TRUE 3
C2_group factor 0 22 NA NA NA NA TRUE FALSE 3
C3_group factor 0 22 NA NA NA NA TRUE FALSE 3
C4_group factor 0 22 NA NA NA NA TRUE FALSE 3
rel_C1-20_POAC1-20 factor 0 2 NA NA NA NA TRUE FALSE 3
P1_1 factor 0 19 NA NA NA NA FALSE TRUE 3
P2_1 factor 0 18 NA NA NA NA FALSE FALSE 3
P3_1 factor 0 18 NA NA NA NA FALSE FALSE 3
P4_1 factor 0 18 NA NA NA NA FALSE FALSE 3
P1_2 factor 0 35 NA NA NA NA FALSE TRUE 3
P2_2 factor 0 35 NA NA NA NA FALSE FALSE 3
P3_2 factor 0 35 NA NA NA NA FALSE FALSE 3
P4_2 factor 0 35 NA NA NA NA FALSE FALSE 3
P1_3 factor 0 34 NA NA NA NA FALSE TRUE 3
P2_3 factor 0 34 NA NA NA NA FALSE FALSE 3
P3_3 factor 0 34 NA NA NA NA FALSE FALSE 3
P4_3 factor 0 34 NA NA NA NA FALSE FALSE 3
rel_C1-20_P1-20 factor 0 2 NA NA NA NA TRUE FALSE 3
REINGRESADO factor 0 2 NA NA NA NA TRUE TRUE 3
TIP_CIP_recat factor 0 3 NA NA NA NA TRUE TRUE 3
PAIS_NAC_recat factor 0 3 NA NA NA NA TRUE TRUE 3
REGFIN_recat factor 0 3 NA NA NA NA TRUE TRUE 3
PROCED_recat factor 0 4 NA NA NA NA TRUE TRUE 3
SERVING_recat factor 0 20 NA NA NA NA FALSE TRUE 3
SERVALT_recat factor 0 19 NA NA NA NA FALSE FALSE 3
POAC1_recat factor 0 3 NA NA NA NA TRUE TRUE 3
POAC2_recat factor 0 3 NA NA NA NA TRUE FALSE 3
POAC3_recat factor 0 3 NA NA NA NA TRUE FALSE 3
POAC4_recat factor 0 3 NA NA NA NA TRUE FALSE 3
SEMGEST_recat factor 0 19 NA NA NA NA FALSE FALSE 3
CENTRO_recat factor 0 6 NA NA NA NA TRUE TRUE 3
HOSPROC_BIN factor 0 2 NA NA NA NA TRUE TRUE 3
HOSPDEST_BIN factor 0 2 NA NA NA NA TRUE TRUE 3
C1_clust factor 0 11 NA NA NA NA FALSE TRUE 3
C2_clust factor 0 11 NA NA NA NA FALSE FALSE 3
C3_clust factor 0 11 NA NA NA NA FALSE FALSE 3
C4_clust factor 0 11 NA NA NA NA FALSE FALSE 3
M1_last factor 435301 7 NA NA NA NA FALSE TRUE 3
M2_last factor 497081 7 NA NA NA NA FALSE FALSE 3
M3_last factor 517795 7 NA NA NA NA FALSE FALSE 3
M4_last factor 519512 7 NA NA NA NA FALSE FALSE 3
EDADING numeric 0 NA 56.228 26.270 0.000 116.194 TRUE TRUE 3
INT1-2_n numeric 0 NA 0.374 0.550 0.000 2.000 TRUE FALSE 3
C1-20_group_n numeric 0 NA 6.951 5.093 1.000 20.000 TRUE FALSE 3
C1-20_group_once_n numeric 0 NA 4.010 2.525 1.000 15.000 TRUE FALSE 3
C1_3_freq numeric 0 NA 0.007 0.008 0.000 0.030 TRUE TRUE 3
C2-20_3_freq numeric 0 NA 0.062 0.062 0.000 0.370 TRUE FALSE 3
POAC1-20_n numeric 0 NA 6.938 5.071 0.000 20.000 TRUE FALSE 3
POAC1-20_once_n numeric 0 NA 1.685 0.664 0.000 5.000 TRUE FALSE 3
M1-7_n numeric 0 NA 0.212 0.528 0.000 7.000 TRUE FALSE 3
P1-20_n numeric 0 NA 2.914 2.486 0.000 20.000 TRUE FALSE 3
P1-6_EXT_n numeric 0 NA 0.001 0.036 0.000 6.000 TRUE FALSE 3
SERVTRAS1-8_n numeric 0 NA 0.285 0.751 0.000 8.000 TRUE FALSE 3
C1_3_indeg numeric 1 NA 336.705 242.797 0.000 1122.000 FALSE TRUE 3
C1_3_outdeg numeric 1 NA 535.928 287.300 0.000 1089.000 FALSE TRUE 3
C1_3_close numeric 1 NA 0.088 0.001 0.001 0.095 FALSE TRUE 3
C1_3_betwe numeric 1 NA 0.003 0.003 0.000 0.010 FALSE TRUE 3
M1-7_last_avg numeric 435091 NA 2.877 1.626 0.000 9.000 FALSE FALSE 3
M1-7_last_mean numeric 435091 NA 2.798 1.533 0.000 9.000 FALSE FALSE 3

  • Prioridad -1: Son las variables que vamos a predecir: TIPALT_recat, REINGRESARA y TIMEALTING. Cada una puede participar del modelo que empleemos para predecir las otras, siempre que se encuentre disponible en el momento de predecir. Además se conserva la variable HISTORIA_Anonimo para facilitar la trazabilidad del proceso.
  • Prioridad 0: Son variables que hemos considerado prescindibles, ya sea por el alto número de NAs, por la inconsistencia interna de los datos o porque disponemos de otras variables equivalentes recategorizadas. De cara al TFM estas variables quedarán fuera del modelo.
  • Prioridad 1: Son variables de baja prioridad, se trata de variables solo presentes en pacientes que han sido diagnosticados e intervenidos en multitud de ocasiones y no son los casos más frecuentes entre los datos.
  • Prioridad 2: Son variables de prioridad moderada, algunas de ellas aún debemos pensar como incorporarlas al modelo y muchas únicamente amplían la información disponible sobre determinados campos respecto al set de alta prioridad.
  • Prioridad 3: Son las variables de alta prioridad y constituyen el conjunto de variables con el que comenzaremos a realizar los modelos. En general se encuentran en una situación adecuada a nivel de limpieza y suponen una cantidad de información que debería ser suficiente para obtener unos resultados aceptables.

Preparación

La columna ready del análisis de variables es FALSE tanto si la variable presenta datos missing, como si presenta más de 25 categorías o alguna de sus categorías aparece menos veces que número de columnas tienen los datos. Siempre que alguna de las variables que vamos a meter en el modelo aparezca como FALSE en ready deberá ser tratada, antes de incorporarla a la sesión de entrenamiento.

Hemos definido una serie de tratamientos para cada caso, de forma que emplearemos uno u otro en función de la variable que estemos tratando.

Inputación de datos missing

Para rellenar aquellos valores que traían un valor erróneo o que directamente no traían valor hemos definido los siguientes procesos:

  1. Categoría nueva o valor lógico: Asociar a los missings una categória nueva, o un valor que tenga lógica para la variable. Esto será frecuente ya que muchas variables no presentan el dato porque durante el proceso el paciente no ha pasado por la etapa cuya información recoge dicha variable.

  2. Inputación mediante media categórica aleatorizada: En variables numéricas, podemos mirar una variable categórica, escoger la categoría a la que pertenece el dato missing de nuestra variable numérica, ver la media y la desviación típica de la variable numérica entre los pacientes de esa categoría que si presentan el dato, y asociar al dato missing un valor procedente de una distribución normal con la media y desviación típica encontradas.

  3. Inputación de categoría más frecuente aleatorizada: En variables categóricas podemos realizar un proceso similar al definido para las numéricas, pero empleando una distribución que se corresponda con la distribución de frecuencias de las categorías de la variable que queremos imputar.

Recategorización

Muchas variables presentan un número excesivo de categorías o algunas categorías con muy poca representación, ambos casos derivan en problemas relacionados con que la muestra de entrenamiento no sea representativa de la de test, que el modelo pueda sobreajustarse debido al reducido número de casos de alguna categoría o que no haya memoria suficiente en el ordenador para tratar el número de dummies generadas. Para evitar estos casos recurriremos a:

  1. Agrupar categorías: Categorías poco representadas pueden agruparse en categorías nuevas, que acumulen esos casos raros y estén más representadas.

  2. Reemplazar por frecuencia: Cuando tenemos un número muy elevado de categorías, existe la posibilidad de reemplazarlas por su frecuencia (esto ya lo hemos hecho para algunas variables), es un recurso cuyo uso esta más o menos extendido y se ha comprobado que da buenos resultados.

Otras transformaciones

Aparte de las manipulaciones comentadas que están dirigidas a mejorar la calidad de las variables, también probaremos otras transformaciones tratando de magnificar la información que las variables aportan al modelo.

  1. Transformaciones funcionales: Con las variables numéricas, a veces empleando funciones analíticas (logaritmo, potencia, etc.) podemos aumentar la información aportada por la variable. Dado que estas transformaciones son infinitas y no hemos realizado un estudio sobre cuales puedan funcionar mejor, las pruebas se han realizado de forma intuitiva.

  2. Manipulación de las observaciones: El problema al que nos hemos enfrentado implica discriminar entre categorías cuya representación aparece desbalanceada, es decir, una de las categorías está ampliamente sobrerrepresentada frente a la otra (o las otras). Para paliar la tendencia del modelo a predecir las observaciones como la categoría más representada hemos trabajado en las métricas de ajuste y hemos manipulado el punto de corte en predicciones probabilísticas, pero también hemos probado a emplear técnicas como el undersampling que no es más que la eliminación de observaciones de la clase más representada, el oversampling que consiste en replicar observaciones de la clase menos representada, técnicas que combinan ambos procedimientos y técnicas que consisten en generar observaciones sintéticas similares a las de la categoría poco representada, que en general están basadas en esta investigación.

Las métricas

En problemas con las clases desbalaceadas, casi conviene definir una fórmula propia de tratamiento de las métricas ya que un modelo que predijera únicamente la clase mayoritaria (que equivaldría al procedimiento actual) alcanzaría una precisión muy elevada (~93% en nuestro caso). Por ello hemos manejado métricas como:

  • AUC (Área bajo la curva ROC): Es una métrica en la que la sensibilidad del modelo se hace depender de la tasa de falsos positivos, variando el punto de corte se miden ambas y se representa la curva.

    \[ AUC = \int_0^1 sens(1-spec)\\ sens = sensibilidad = \frac{verdaderos\ positivos}{positivos\ reales}\\ spec = especificidad = \frac{verdaderos\ negativos}{negativos\ reales} \]

  • Kappa: Es una métríca que sirve para hacerse una idea de la probabilidad de que la concorcancia entre dos predictores (en nuestro caso el modelo y la realidad) se deba al azar. Se calcula:

    \[ \kappa = \frac{P(a) - P(e)}{1-P(e)}\\ P(a) = Grado\ de\ concordancia = \frac{Verdaderos}{nº\ observaciones}\\ P(e) = Probabilidad\ de\ concordancia = \frac{PP \cdot PR + NP \cdot NR}{nº\ observaciones^2}\\ PP = Positivos\ predichos\ \ \ PR= Positivos\ reales\\ NP = Negativos\ predichos\ \ \ NR= Negativos\ reales \] La magnitud es poco indicativa de la calidad del modelo, pero su comportamiento si permite seleccionar el mejor punto de corte, siendo el punto con mejor kappa aquel donde hay la menor cantidad de predicciones que pudieran darse de forma puramente aleatoria.

Prioridad 3

Estos modelos han contado con todas las variables de prioridad 3. El procedimiento de modelado ha estado basado en la metodología de prueba y error, de manera que tratábamos de ir subsanando los errores que nos iban apareciendo sobre la marcha, y a la vez ir mejorando la capacidad predictiva del modelo.

Versión 0

En primera estancia tratamos de manipular sútilmente las variables, así si agrupábamos categorías, lo hicimos con aquellas que presentaban menos de 500 ocurrencias (~0.1% de las observaciones):

  • Neoplasias (M): Estas variables presentaban NAs que imputamos con ceros y las transformamos a numéricas, ya que las categorías si se ordenaban en cuanto a gravedad según el valor numérico asignado.

  • Sexo: La categoría representada con el número 3 estaba infrarrepresentada, así que la imputamos mediante la categoría más frecuente aleatorizada asociada al grupo del diagnóstico principal.

  • Diagnóstico principal (C1_group): La categoría g19 estaba infrarrepresentada y la imputamos mediante la categoría más frecuente aleatorizada asociada a la edad.

  • Procedimientos (P): En principio agrupamos las categorías menos representadas, y en los casos en que persistía el desbalanceo y se había reducido el número de categorías las pasamos a binario o mantuvimos únicamente 3 categorías.

  • Servicios (SERV): Agrupamos las categorías que aparecían poco representadas.

  • Semanas de gestación (SEMGEST): La convertimos a binaria, ya que había un elevadísimo porcentaje de NAs.

  • Clústeres diagnósticos (CX_clust): Agrupamos las categorías poco representadas.

Finalmente hicimos la división en Train y Test (para que los datos fueran comunes a todos los modelos) cuidando que toda la información sobre un paciente permaneciera en un único set y separamos entre variables disponibles al ingreso, y variables disponibles al alta, para que cada conjunto se adecuase al momento de predicción del modelo.

Reingresos

En primer lugar empleamos el paquete de Machine Learning Automático H2O, el cual estuvo trabajando durante unas 4 horas y mostraba el siguiente ranking:
model_id auc logloss mean_per_class_error rmse mse
StackedEnsemble_AllModels_AutoML_20190914_105807 0.799 0.226 0.324 0.248 0.062
XGBoost_1_AutoML_20190914_105807 0.798 0.219 0.330 0.246 0.061
StackedEnsemble_BestOfFamily_AutoML_20190914_105807 0.798 0.226 0.330 0.248 0.062
XGBoost_2_AutoML_20190914_105807 0.796 0.220 0.333 0.247 0.061

Donde vemos que únicamente aparecen dos modelos de XGBoost y dos ensamblados, siendo el mejor un ensamblado de todos los modelos. Los valores de AUC son bastante buenos para todos ellos (~ 0.8) y en general tienen buena pinta. Si representamos la curva ROC y la matriz de confusión para los datos test:

Como vemos la dificultad se presenta claramente a la hora de identificar reingresos, el modelo muestra una precisión del 80.42% en el set de test con una proporción de reingresos acertados del 52.44% entre los reingresos reales y del 18.20% entre los predichos, por su parte, de los no reingresos acierta un 82.50% de los reales y un 95.90% de los que predice. Estas son cifras bastante satisfactorias para tratarse de un modelo construido sin apenas esfuerzo, y de ahora en adelante trataremos de mejorarlas.

El primer modelo que elaboramos fue un Random Forest, dada su velocidad de implementación. Para ello nos valimos del paquete ranger de R y obtuvimos las siguientes curvas ROC:

No parecía existir sobreajuste dada la proximidad entre las curvas pero si sugerían que debía existir alguna fórmula para extraer más información de los datos. Eligiendo como punto de corte aquel asociado a un mayor Kappa (en test), nos quedaron los siguientes resultados:

Presentando un 85.89% de precisión acertando el 20.95% de los reingresos que se predecían, el 37.77% de los totales y el 89.42% de los no reingresos que se predecían, el 85.85% de los totales. Luego es un modelo mejor prediciendo reingresos que el H2O (acierta más de los que dice) y es peor prediciendo no reingresos, la precisión global es mejor, pero el porcentaje de reingresos acertados sobre los totales empeora. Nuestro objetivo es mejorar el procentaje de reingresos acertados entre los predichos, pero mejorar también el porcentaje entre los totales.

Aunque los resultados eran similares a los obtenidos con H2O, nos preocupaba el sobreajuste, así que decidimos manipular los datos de una forma más agresiva.

Tipo de Alta (Fallecimientos)

En este caso buscamos que esta predicción sea lo más prematura posible, para ello se han seleccionado las variables que se consideran disponibles al ingreso del paciente. Las variables con las que trabajaremos son:

  • El sexo del paciente.
  • La edad del paciente al momento del ingreso.
  • La nacionalidad del paciente.
  • El tipo de CIP del paciente (si posee tarjeta sanitaria, otro o indeterminado).
  • El régimen de financiación que se encarga de dicho ingreso (si es la seguridad social de la Comunidad de Madrid o no o indeterminado).
  • La semana de gestación del paciente (en caso de estar en estado).
  • Si el ingreso es debido a un traslado entre centros o no.
  • La localización geográfica del centro en el que está siendo ingresado el paciente.
  • El tipo de ingreso.
  • El servicio (agrupaciones de los mismos) que se encarga del paciente ingresado.
  • La procedencia del paciente (ingreso de urgencias, ingreso ambulatorio, otros).
  • Todas las variables relacionadas con la fecha de ingreso (hora, día de la semana, mes y año).
  • Si el ingreso ocurrió a través de previo paso por urgencias o no.
  • Las variables relacionadas con el diágnostico principal y uno de los secundarios que recogen las especiales, la frecuencia de las 3 primeras cifras del diagnóstico y la agrupacón de los mismos según un cluster (además de sus medidas de centralización por cada cluster).
  • Si las causas externas a los dos diagnósticos considerados se encuentran presentes en el momento del ingreso.
  • Variables relacionadas con dos procedimientos realizados al paciente.
  • Si dicho ingreso es un reingreso del paciente (ingreso de nuevo en menos de 30 días desde el último).

Para esta primera etapa hemos decidido iniciar la modelización ejecutando un ranger, incluyendo todas las variables antes citadas, con la finalidad de obtener una primera foto del comportamiento de nuestros datos, la importancia de las variables y el poder predictivo del modelo. Hemos generado la matriz de confusión, donde se observa que el modelo acierta 116 pacientes fallecidos y falla unos 6622, representando un acierto del 0.15% en la predicción de fallecimiento de los pacientes.

Como podemos observar, los resultados obtenidos con este primer modelo no son buenos. Pero sirven como punto de partida. Estudiando la importancia de las variables del modelo, se realizó una primera selección de variables sobre la cual se generaron una serie de modelos predictivos (regresión logística y xgboost, entre otros) con sus parámetros por defecto.

Los resultados obtenidos en esta primera fase de modelización no fueron muy distintos a los del primer ranger, por lo cual se realizó una reevaluación de los datos, dado que que las clases de la variable objetivo estaban bastante desbalanceadas, con sólo un 4% de los pacientes que fallecen. Consideramos necesario incorporar alguna técnica de balanceo de clases a nuestro dataset y ser más agresivos en la agrupación de categorías.

Versión 1

En esta etapa se mantuvo el tratamiento de la versión anterior sobre la mayoría de las variables, agrupando en este caso las categorías con menos de 26000 observaciones (~ 5% de los datos), salvo para las siguientes:

  • Procedimientos (PX_1, PX_2, P_3): A la vista de que las variables en que habíamos sustituido los diagnósticos por sus frecuencias habían dado muy buenos resultados (en cuanto a relevancia), para los procedimientos realizamos el mismo procedimiento, pasando así muchas variables a ser numéricas, lo que simplifica bastante su tratamiento.

Reingresos

La nueva situación de los datos los hace más manejables, así que sobre estos hemos desarrollado la mayor parte de los modelos

Mod. 0: Random Forest

De nuevo realizamos un Random Forest pero en este caso decidimos probar las técnicas de undersampling y oversampling que facilita el paquete ROSE obteniendo las siguientes curvas ROC para los conjuntos train y test, siendo el conjunto train el que manipulábamos.

Como se puede ver hay varios métodos que implican sobreajuste, en general aquellos basados en la repetición de observaciones de la clase desbalanceada. La mejora de los resultados obtenidos empleando estos métodos sobre la muestra test tampoco es significativa, sin embargo, si es llamativo que las tecnicas que implican undersampling y por lo tanto reducen el número de observaciones (hasta un -80%) no implican perdida de información, mientras que si reducen notablemente los tiempos de ejecución, por lo que si resultaron de utilidad.

El modelo realizado con los datos sin manipular devolvió las siguientes métricas.
Dando lugar a este ranking de variables y la correspondiente matriz de confusión:

Con un accuracy del 83.6% acertando un 19.97% de reingresos entre los predichos y un 45.66% entre los reales y un 95.54% de entre los no reingresos predichos y un 86.41% entre los reales. Aunque la precisión sea inferior a la de los modelos anteriores ya que acierta más de entre aquellos que predice y se aproxima al porcentaje de reingresos acertados entre los reales del modelo realizado con H20, moviéndonos ya en el entorno del 50% de acierto, lo que para un fenómeno que solo se da entre el 10% de la población es una tasa de acierto notable.

Mod. 1: XGBoost

En este caso de XGBoost se tunearon algunos parámetros como la reducción del tamaño del paso (eta) para evitar el sobreajuste, la profundidad máxima de un árbol (max_depth), el valor de min_child_weight (que a más alto, más conservador será el algoritmo), la proporción de la muestra (subsample), el número de árboles de decisión para el modelo final (nrounds). El resultado del tuneo nos llevó a los parámetros:

  • max_depth = 10
  • min_child_weight = 8.45
  • subsample = 0.661
  • colsample_bytree = 0.987
  • nrounds = 54
  • eta = 0.1
  • gamma = 0 (dafault)

Con el modelo optimizado generamos la siguiente gráfica, en la que tenemos la evolución de la tasa de verdaderos positivos, la tasa de verdaderos negativos y el parámetro Kappa en función del punto de corte.

Tomando un punto de corte óptimo de 0.1 conseguimos la siguiente matriz de confusión sobre datos test con una tasa de verdaderos positivos del 79.79% y una tasa de verdaderos negativos del 55.24%.
Mod. 2: XGBoost

En este caso de XGBoost se realizaron transformaciones cuadráticas para las variables continuas y se tunearon los parámetros de nuevo. El resultado del tuneo nos llevó a los parámetros:

  • max_depth = 9
  • min_child_weight = 5.74
  • subsample = 0.708
  • colsample_bytree = 0.671
  • nrounds = 56
  • eta = 0.1
  • gamma = 0 (dafault)

Selección del mejor punto de corte con datos test:

Tomando un punto de corte óptimo de 0.1 conseguimos la siguiente matriz de confusión sobre datos test con una tasa de verdaderos positivos del 82.09% y una tasa de verdaderos negativos del 35.37%.
Mod. 3: XGBoost

En este caso de XGBoost se realizaron transformaciones logarítmicas para las variables continuas y se tunearon los parámetros de nuevo. El resultado del tuneo nos llevó a los parámetros:

  • max_depth = 10
  • min_child_weight = 4.83
  • subsample = 0.815
  • colsample_bytree = 0.546
  • nrounds = 21
  • eta = 0.1
  • gamma = 0 (dafault)

Selección del mejor punto de corte con datos test:

Tomando un punto de corte óptimo de 0.32 conseguimos la siguiente matriz de confusión sobre datos test con una tasa de verdaderos positivos del 60.37% y una tasa de verdaderos negativos del 72.90%.
Mod. 4: Regresión Logística

En este caso de Regresión Logística se realizó una nueva selección de variables, tratamiento del dataset con undersampling y tratamiento de las variables con vtreat.

Selección del mejor punto de corte con datos test:

Tomando un punto de corte óptimo de 0.63 conseguimos la siguiente matriz de confusión sobre datos test con una tasa de verdaderos positivos del 32.68% y una tasa de verdaderos negativos del 89.24%.
Mod. 5: Gradient Boosting Machine (GBM)

En este caso de Gradient Boosting Machine se realizó una nueva selección de variables, tratamiento del dataset con undersampling y tratamiento de las variables con vtreat.

Selección del mejor punto de corte con datos test:

Tomando un punto de corte óptimo de 0.41 conseguimos la siguiente matriz de confusión sobre datos test con una tasa de verdaderos positivos del 34.66% y una tasa de verdaderos negativos del 91.14%.
Mod. 6: XGBoost

En este caso de XGBoost se realizó una nueva selección de variables, tratamiento del dataset con undersampling, tratamiento de las variables con vtreat, transformaciones logarítmicas de las variables continuas y tuneo del parámetro referente al número de árboles (nrounds) en el que se obtuvo que el mejor valor era 2500.

Selección del mejor punto de corte con datos test:

Tomando un punto de corte óptimo de 0.37 conseguimos la siguiente matriz de confusión sobre datos test con una tasa de verdaderos positivos del 40.46% y una tasa de verdaderos negativos del 89.91%.
Mod. 7: XGBoost

En este caso de XGBoost se realizó una nueva selección de variables, tratamiento del dataset con undersampling, tratamiento de las variables con vtreat y transformaciones logarítmicas de las variables continuas.

Selección del mejor punto de corte con datos test:

Tomando un punto de corte óptimo de 0.69 conseguimos la siguiente matriz de confusión sobre datos test con una tasa de verdaderos positivos del 37.94% y una tasa de verdaderos negativos del 89.21%.
Mod. 8: Ensamblado

El modelo de ensamblado se ha realizado a partir de los 3 mejores modelos obtenidos anteriormente que son los modelos número 5, 6 y 7.

Selección del mejor punto de corte con datos test:

Para el ensamblado probamos con dos puntos de corte distintos, uno que maximice el parámetro Kappa y otro que maximice la sensitividad/especificidad.

Con el punto de corte óptimo 0.49, para máximo Kappa generamos la matriz de confusión:

Con el punto de corte óptimo 0.33, para el valor máximo de Sensitividad/Especificidad generamos la matriz de confusión:

Por lo tanto, parece funcionar mucho mejor con el segundo punto de corte.

Mod. 9: Catboost

Llegado este punto tratamos de innovar un poco empleando un paquete llamado catboost que ha salido muy recientemente y que consiste en un modelo de gradient boosting dopado para casos en los que muchas de nuestras variables son categóricas. El modelo lo hemos desarrollado en Python y es una adaptación del tutorial seguido por Anna Veronika Dorogush durante el evento PyData de este año.

Con esta librería pudimos hacer validación cruzada, y ver como iban evolucionando las métricas, obteniendo los siguientes resultados:

Donde vimos que en general los valores de AUC son los que venaímos obteniendo en los casos anteriores, si miramos la curva ROC:
Y el comportamiento de las métricas:

Que nos sirvió para entender que este algoritmo tampoco iba a suponer una mejora sustantiva, y que si queríamos mejoras debíamos continuar tratando los datos.

Conclusiones

Con los resultados de estos modelos generamos la siguiente tabla que se ha construido a partir de los costes medios indicado al comienzo del informe. Se ha comparado el coste derivado de predecir un falso negativo (coste de reingreso urgente más estancia media de reingreso) con el coste derivado de predecir un falso positivo (teniendo en cuenta una extensión media de 5 días en el tiempo de hospitalización).

Como podemos ver el modelo que genera el menor coste por errores de predicción es el modelo 6 (XGBoost con tuneado de hiperparámetros y undersampling).

Tipos de Alta (Fallecimientos)

En esta etapa probamos con oversampling y undersampling, obteniendo mejores resultados con la segunda opción. Obtuvimos una muestra con clases balanceadas 80-20 sobre nuestros datos iniciales.

A continuación, se repitió la ejecución del ranger con el nuevo conjunto de datos, obteniendo unas cifras mucho mejores a pesar de seguir sin llegar al 50% de aciertos de los fallecimientos, como se muestra en la matriz de confusión siguiente:

En esta revisión de los datos, también se cayó en la cuenta de que, al tener una cantidad tan alta de categorías dentro de nuestras variables categóricas (todas las usadas salvo dos de ellas), al pasar dichas a dummies, el número de variables era bastante alto para trabajar con fluidez. Así pues, se nos recomendó utilizar la librería vtreat, la cual primeramente agrupa las categorías menos representadas de las variables y partiendo de esto genera las variables dummies.

Viendo que en la primera etapa los modelos creados no tardaban mucho tiempo en ser construidos y además contando con el cambio del dataset proporcionado por vtreat, en esta segunda etapa se partió del dataset con todos los datos al ingreso. Se volvieron a probar varios tipos de algoritmos (Logística, Redes Neuronales, Random Forest, XGBoost y Gradient Boosting Machine) con parámetros por defecto. Una vez entrenados, nos quedamos con los tres que mejores resultados sacaron comparando el estadístico Accuracy, el estadístico Kappa y la matriz de confusión; que fueron: Random Forest, XGBoost y Gradient Boosting.

Para intentar mejorar aún más estos modelos, se tunearon parámetros en todos los casos.

Modelo Gradient Boosting Machine (GBM)

Con caret se tunearon los parámetros shrinkage (parámetro v que mide la velocidad de ajuste), n.minobsinnode (tamaño máximo de nodos), n.trees (número de árboles) e interaction.depth (número de divisiones que tiene que realizar en un árbol). Con la finalidad de obtener resultados más robustos, se fijaron diferentes valores para estos parámetros. De esta manera, interaction.depth se fijó en 3 para tener árboles con 4 terminaciones (número de divisiones a partir de un solo nodo) lo cual evidencia que una estructura de árbol más compacta (profundidad de interacción ≈ 3) obtuvo un mejor resultado.

El resultado obtenido con GBM sugiere establecer primero un valor grande para el número de árboles, luego ajustar el parámetro shrinkage para lograr los mejores resultados. Específicamente, se prefirió un valor shrinkage de 0.1, un número de 2500 árboles y un n.minobsinnode igual a 20. De cierta manera, con n.trees mayor a 2500 se logró reducir el error en el train set aunque generó un ajuste excesivo de los datos.

También se pudo observar que a mayor shrinkage (mayor tasa de aprendizaje) proporcionó un menor accuracy, pero con mayores tasas de error. En cambio, a menor shrinkage (menor tasa de aprendizaje) proporcionó un accuracy mayor y menores tasas de error. En cuanto al n.minobsinnode (condición de parada) el valor óptimo es 20, pues se obtuvo un mayor accuracy.

Aplicamos GBM con validación cruzada, 5 iteraciones, y con el tuneo descrito anteriormente. A partir del modelo obtenido, se entrena con los datos test y se realiza un gráfico en el que se puede ver el punto de corte que maximiza tanto el Accuracy como la capacidad predictiva (kappa) del conjunto de variables seleccionado.

Así pues tenemos que 0.25 es el mejor punto de corte. Y con este punto de corte obtenemos la siguiente matriz de confusión junto con los estadísticos correspondientes.

Modelo XGBoost

En el caso de XGBoost se tunearon algunos parámetros como la reducción del tamaño del paso (eta) para evitar el sobreajuste, pues con un valor de 0.03 se logró reducir los pesos de las variables para hacer que el proceso boosting fuese más conservador. Con un max_depth (profundidad máxima de un árbol) mayor a 6 el modelo era más complejo y daba lugar a un sobreajuste. Por otro lado, cuanto mayor sea min_child_weight, más conservador será el algoritmo por lo cual se le asignó un valor igual a 5. En cuanto a la proporción de la muestra (subsample) en un principio se estableció en 1, lo cual significa que XGBoost realizó un muestreo al azar sobre el total de los datos de entrenamiento. Además, el número de árboles de decisión para el modelo final (nrounds) se estableció en 500, en un principio, pero al aumentarlo a 1000 se obtuvo un mejor accuracy y la capacidad predictiva del modelo fue mucho mayor.

De nuevo se realiza el gráfico en el que se puede ver el punto de corte que maximiza tanto el Accuracy como la capacidad predictiva (kappa) del conjunto de variables seleccionado.

En este caso es 0.23 es el punto de corte. Por lo tanto, con este punto de corte obtenemos la siguiente matriz de confusión junto con los estadísticos correspondientes.

Random Forest Model

La cobinación de predicciones de múltiples modelos, funciona mejor si las predicciones de los submodelos no están correlacionadas o, en el mejor de los casos, están débilmente correlacionadas. El algoritmo de random forest hace que las predicciones resultantes de todos los subárboles tengan menos correlación. Para Random Forest también se realizó el tuneo con validación cruzada simple, por el costo computacional. Se varió el número de mtry con que va a iterar el algoritmo, pues al formar cada división en un árbol, se seleccionan aleatoriamente variables del conjunto de predictores disponibles. Por lo tanto, al formar cada división, se selecciona un conjunto aleatorio diferente de variables dentro del cual se elige el mejor punto de división. En nuestro caso, la primera división se realiza con 10 variables predictoras, luego 20 y así sucesivamente hasta tomarlas todas.

Se observa que el mejor accuracy se obtuvo con 10 nodos, 100 árboles y 20 de variables predictoras.

De nuevo se realiza el gráfico en el que se puede ver el punto de corte que maximiza tanto el Accuracy como la capacidad predictiva (kappa) del conjunto de variables seleccionado.

En este caso es 0.31 es el punto de corte. Por lo tanto, con este punto de corte obtenemos la siguiente matriz de confusión junto con los estadísticos correspondientes.

Modelo Ensamblado

Finalmente, se realizó un ensamblado con la finalidad de combinar los modelos anteriores para producir un modelo predictivo óptimo. Anteriormente, se ha visto que XGBoost resultó ser el mejor algoritmo, en cuanto a su performance y en comparación con el modelo de Gradient Boosting Machine. Después de someter cada modelo al proceso de validación cruzada, se obtuvieron las predicciones correspondientes a cada uno (Yes) y a partir de estos resultados se crearon diferentes ensamblados. Ahora bien, en total se crearon cuatro ensamblados diferentes uniendo los modelos de dos en dos y los tres ganadores, teniendo en cuenta las predicciones obtenidas de cada modelo individual (Yes). Luego se calculó la matriz de confusión con el fin de tener en cuenta los tipos de predicciones correctas e incorrectas que ha realizado el clasificador.

  • Primer modelo de ensamblado En este primer modelo estamos juntando GBM y XGBoost. Los resultados obtenidos en referencia a la matriz de confusión y los estadísticos correspondientes tras decidir que el punto de corte óptimo era de 0.25 (mediante el gráfico como en los casos anteriores) son:
  • Segundo modelo de ensamblado En el segundo modelo de ensamblado se juntan GBM y Random Forest. Los resultados obtenidos en referencia a la matriz de confusión y los estadísticos correspondientes tras decidir que el punto de corte óptimo era de 0.29 (mediante el gráfico como en los casos anteriores) son:
  • Tercer modelo de ensamblado En el tercer ensamblado se ha trabajado con los modelos XGBoost y Random Forest. Los resultados obtenidos en referencia a la matriz de confusión y los estadísticos correspondientes tras decidir que el punto de corte óptimo era de 0.27 (mediante el gráfico como en los casos anteriores) son:
  • Cuarto modelo de ensamblado Por último, se ha realizado un modelo de ensamblado con los tres modelos básicos obtenidos en las etapas anteriores de modelización. Los resultados obtenidos en referencia a la matriz de confusión y los estadísticos correspondientes tras decidir que el punto de corte óptimo era de 0.27 (mediante el gráfico como en los casos anteriores) son:
Conclusiones

Se puede concluir que el modelo de Random Forest y el ensamblado número 2 dan mejores resultados en comparación a los demás, tomando en cuenta el Accuracy y la capacidad predictiva (Kappa). Sin embargo, el modelo de Random Forest (accuracy = 0.8139) resulta ser una buena estrategia para mejorar el performance y capacidad predictiva en comparación con el modelo de ensamblado 2, que incluye Gradient Boosting y Random Forest (accuracy = 0.8072).

Producción

De cara a una futura puesta en produción de los modelos, y a modo de muestra, tratamos de servir uno de los modelos (el realizado con catboost para reingresos) mediante una API, habilitando un contenedor Docker que la contuviese. De esta forma los modelos estarían levantados en contenedores cada uno con una API asociada y la aplicación que desarrolláramos en Shiny lanzaría peticiones a estas APIs, recogiendo los resultados necesarios para el cuadro de mando. Así futuros análisis u otras aplicaciones podrían valerse de nuestros datos lanzando peticiones directamente a las APIs, igual que hacemos nosotros.

 

A work by:

paula.sanz@gmail.com

jramirezneira@gmail.com

santibreo@gmail.com

jmontegonz@gmail.com

antonionardi231@gmail.com

vanessav@gmail.com