1 Ejemplo guiado


No se trata de una pauta para repetir sino diferentes ejemplos para daros ideas e inspiraros.


1.1 Descripción del origen del conjunto de datos


Se ha seleccionado un conjunto de datos del National Highway Traffic Safety Administration. El sistema de informes de análisis de mortalidad fue creado en los Estados Unidos por la National Highway Traffic Safety Administration para proporcionar una medida global de la seguridad en las carreteras. (Fuente Wikipedia). Los datos pertenecen al año 2020. Se trata de un conjunto de registros de accidentes que recogen datos significativos que los describen. Todos los accidentes tienen alguna víctima mortal como mínimo. El objetivo analítico que tenemos en mente es entender que hace que un accidente sea grave y que quiere decir que sea grave. https://www.nhtsa.gov/crash-data-systems/fatality-analysis-reporting-system

1.2 Análisis exploratorio

Queremos hacer una primera aproximación al conjunto de datos escogido y responder a las preguntas más básicas: ¿Cuánto registros tiene? ¿Cuántas variables? ¿De qué tipología son? ¿Cómo se distribuyen los valores de las variables? ¿Hay problemas con los datos, por ejemplo, campos vacíos? ¿Puedo intuir ya el valor analítico de los datos? ¿Qué primeras conclusiones puedo extraer?

El primer paso para realizar un análisis exploratorio es cargar el fichero de datos.

path = 'accident-1.CSV'
accidentData <- read.csv(path, row.names=NULL)

1.2.1 Exploración del conjunto de datos

Verificamos la estructura del juego de datos principal. Vemos el número de columnas que tenemos y ejemplos de los contenidos de las filas.

structure = str(accidentData)
## 'data.frame':    35766 obs. of  81 variables:
##  $ STATE       : int  1 1 1 1 1 1 1 1 1 1 ...
##  $ STATENAME   : chr  "Alabama" "Alabama" "Alabama" "Alabama" ...
##  $ ST_CASE     : int  10001 10002 10003 10004 10005 10006 10007 10008 10009 10010 ...
##  $ VE_TOTAL    : int  1 4 2 1 1 2 1 2 2 2 ...
##  $ VE_FORMS    : int  1 4 2 1 1 2 1 2 2 2 ...
##  $ PVH_INVL    : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ PEDS        : int  0 0 0 0 0 0 1 0 0 0 ...
##  $ PERSONS     : int  4 6 2 5 1 3 1 2 4 3 ...
##  $ PERMVIT     : int  4 6 2 5 1 3 1 2 4 3 ...
##  $ PERNOTMVIT  : int  0 0 0 0 0 0 1 0 0 0 ...
##  $ COUNTY      : int  51 73 117 15 37 103 73 25 45 95 ...
##  $ COUNTYNAME  : chr  "ELMORE (51)" "JEFFERSON (73)" "SHELBY (117)" "CALHOUN (15)" ...
##  $ CITY        : int  0 350 0 0 0 0 330 0 0 1500 ...
##  $ CITYNAME    : chr  "NOT APPLICABLE" "BIRMINGHAM" "NOT APPLICABLE" "NOT APPLICABLE" ...
##  $ DAY         : int  1 2 2 3 4 4 7 8 9 10 ...
##  $ DAYNAME     : int  1 2 2 3 4 4 7 8 9 10 ...
##  $ MONTH       : int  1 1 1 1 1 1 1 1 1 1 ...
##  $ MONTHNAME   : chr  "January" "January" "January" "January" ...
##  $ YEAR        : int  2020 2020 2020 2020 2020 2020 2020 2020 2020 2020 ...
##  $ DAY_WEEK    : int  4 5 5 6 7 7 3 4 5 6 ...
##  $ DAY_WEEKNAME: chr  "Wednesday" "Thursday" "Thursday" "Friday" ...
##  $ HOUR        : int  2 17 14 15 0 16 19 7 20 10 ...
##  $ HOURNAME    : chr  "2:00am-2:59am" "5:00pm-5:59pm" "2:00pm-2:59pm" "3:00pm-3:59pm" ...
##  $ MINUTE      : int  58 18 55 20 45 55 23 15 0 2 ...
##  $ MINUTENAME  : chr  "58" "18" "55" "20" ...
##  $ NHS         : int  0 0 0 0 0 0 0 0 0 1 ...
##  $ NHSNAME     : chr  "This section IS NOT on the NHS" "This section IS NOT on the NHS" "This section IS NOT on the NHS" "This section IS NOT on the NHS" ...
##  $ ROUTE       : int  4 6 3 4 4 3 4 4 4 2 ...
##  $ ROUTENAME   : chr  "County Road" "Local Street - Municipality" "State Highway" "County Road" ...
##  $ TWAY_ID     : chr  "cr-4" "martin luther king jr dr" "sr-76" "CR-ALEXANDRIA WELLINGTON RD" ...
##  $ TWAY_ID2    : chr  "" "" "us-280" "" ...
##  $ RUR_URB     : int  1 2 1 1 1 1 2 1 1 1 ...
##  $ RUR_URBNAME : chr  "Rural" "Urban" "Rural" "Rural" ...
##  $ FUNC_SYS    : int  5 4 4 7 5 4 4 5 5 3 ...
##  $ FUNC_SYSNAME: chr  "Major Collector" "Minor Arterial" "Minor Arterial" "Local" ...
##  $ RD_OWNER    : int  2 4 1 2 2 1 4 2 2 1 ...
##  $ RD_OWNERNAME: chr  "County Highway Agency" "City or Municipal Highway Agency" "State Highway Agency" "County Highway Agency" ...
##  $ MILEPT      : int  0 0 49 0 0 390 0 0 0 3019 ...
##  $ MILEPTNAME  : chr  "None" "None" "49" "None" ...
##  $ LATITUDE    : num  32.4 33.5 33.3 33.8 32.8 ...
##  $ LATITUDENAME: chr  "32.43313333" "33.48465833" "33.29994167" "33.79507222" ...
##  $ LONGITUD    : num  -86.1 -86.8 -86.4 -85.9 -86.1 ...
##  $ LONGITUDNAME: chr  "-86.09485" "-86.83954444" "-86.36964167" "-85.88348611" ...
##  $ SP_JUR      : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ SP_JURNAME  : chr  "No Special Jurisdiction" "No Special Jurisdiction" "No Special Jurisdiction" "No Special Jurisdiction" ...
##  $ HARM_EV     : int  42 12 34 42 42 12 8 12 12 12 ...
##  $ HARM_EVNAME : chr  "Tree (Standing Only)" "Motor Vehicle In-Transport" "Ditch" "Tree (Standing Only)" ...
##  $ MAN_COLL    : int  0 6 0 0 0 2 0 1 1 2 ...
##  $ MAN_COLLNAME: chr  "The First Harmful Event was Not a Collision with a Motor Vehicle in Transport" "Angle" "The First Harmful Event was Not a Collision with a Motor Vehicle in Transport" "The First Harmful Event was Not a Collision with a Motor Vehicle in Transport" ...
##  $ RELJCT1     : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ RELJCT1NAME : chr  "No" "No" "No" "No" ...
##  $ RELJCT2     : int  1 1 3 1 1 1 3 1 8 1 ...
##  $ RELJCT2NAME : chr  "Non-Junction" "Non-Junction" "Intersection-Related" "Non-Junction" ...
##  $ TYP_INT     : int  1 1 3 1 1 1 2 1 1 1 ...
##  $ TYP_INTNAME : chr  "Not an Intersection" "Not an Intersection" "T-Intersection" "Not an Intersection" ...
##  $ WRK_ZONE    : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ WRK_ZONENAME: chr  "None" "None" "None" "None" ...
##  $ REL_ROAD    : int  4 1 4 4 4 1 1 1 1 1 ...
##  $ REL_ROADNAME: chr  "On Roadside" "On Roadway" "On Roadside" "On Roadside" ...
##  $ LGT_COND    : int  2 3 1 1 2 2 3 1 2 1 ...
##  $ LGT_CONDNAME: chr  "Dark - Not Lighted" "Dark - Lighted" "Daylight" "Daylight" ...
##  $ WEATHER     : int  1 2 2 10 2 1 1 1 10 10 ...
##  $ WEATHERNAME : chr  "Clear" "Rain" "Rain" "Cloudy" ...
##  $ SCH_BUS     : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ SCH_BUSNAME : chr  "No" "No" "No" "No" ...
##  $ RAIL        : chr  "0000000" "0000000" "0000000" "0000000" ...
##  $ RAILNAME    : chr  "Not Applicable" "Not Applicable" "Not Applicable" "Not Applicable" ...
##  $ NOT_HOUR    : int  99 17 14 99 0 17 19 7 20 10 ...
##  $ NOT_HOURNAME: chr  "Unknown" "5:00pm-5:59pm" "2:00pm-2:59pm" "Unknown" ...
##  $ NOT_MIN     : int  99 18 58 99 45 0 23 21 0 3 ...
##  $ NOT_MINNAME : chr  "Unknown" "18" "58" "Unknown" ...
##  $ ARR_HOUR    : int  3 17 15 99 0 17 19 7 20 10 ...
##  $ ARR_HOURNAME: chr  "3:00am-3:59am" "5:00pm-5:59pm" "3:00pm-3:59pm" "Unknown EMS Scene Arrival Hour" ...
##  $ ARR_MIN     : int  10 26 15 99 55 19 29 28 10 7 ...
##  $ ARR_MINNAME : chr  "10" "26" "15" "Unknown EMS Scene Arrival Minutes" ...
##  $ HOSP_HR     : int  99 99 99 99 88 18 88 88 99 10 ...
##  $ HOSP_HRNAME : chr  "Unknown" "Unknown" "Unknown" "Unknown" ...
##  $ HOSP_MN     : int  99 99 99 99 88 51 88 88 99 29 ...
##  $ HOSP_MNNAME : chr  "Unknown EMS Hospital Arrival Time" "Unknown EMS Hospital Arrival Time" "Unknown EMS Hospital Arrival Time" "Unknown EMS Hospital Arrival Time" ...
##  $ FATALS      : int  3 1 1 1 1 1 1 1 1 1 ...
##  $ DRUNK_DR    : int  1 0 0 0 0 0 0 0 0 0 ...

Vemos que tenemos 81 variables y 35766 registros

Revisamos la descripción de las variables contenidas en el fichero y si los tipos de variables se corresponden con las que hemos cargado. Las organizamos lógicamente para darles sentido y construimos un pequeño diccionario de datos utilizando la documentación auxiliar.

  • ST_CASE identificador de accidente

HECHOS A ESTUDIAR

  • FATAL muertes
  • DRUNK_DR conductores bebidos
  • VE_TOTAL número de vehículos implicados en total
  • VE_FORMS número de vehículos en movimiento implicados
  • PVH_INVL número de vehículos estacionados implicados
  • PEDS número de peatones implicados
  • PERSONS número de ocupantes de vehículo implicados
  • PERMVIT número conductores y ocupantes implicados
  • PERNOTMVIT número peatones, ciclistas, a caballo… Cualquier cosa menos vehículo motorizado

DIMENSIÓN GEOGRÁFICA

  • STATE codificación de estado
  • STATENAME nombre de estado
  • COUNTY identificador de contado
  • COUNTYNAME condado
  • CITY identificador de ciudad
  • CITYNAME ciudad
  • NHS 1 ha pasado a autopista del NHS 0 no
  • NHSNAME TBD
  • ROUTE identificador de ruta
  • ROUTENAME ruta
  • TWAY_ID vía de tránsito (1982)
  • TWAY_ID2 vía de tránsito (2004)
  • RUR_URB identificador de segmento rural o urbano
  • RUR_URBNAME segmento rural o urbano
  • FUNC_SYS clasificación funcional segmento
  • FUNC_SYSNAME TBD
  • RD_OWNER identificador propietario del segmento
  • RD_OWNERNAME propietario del segmento
  • MILEPT milla int
  • MILEPTNAME milla chr
  • LATITUDE latitud int
  • LATITUDENAME latitud chr
  • LONGITUD longitud int
  • LONGITUDNAME longitud chr
  • SP_JUR código jurisdicción
  • SP_JURNAME jurisdicción

DIMENSIÓN TEMPORAL

  • DAY día
  • DAYNAME día repetido
  • MONTH mes
  • MONTHNAME nombre de mes
  • YEAR año
  • DAY_WEEK día de la semana
  • DAY_WEEKNAME nombre de día de la semana
  • HOUR hora
  • HOURNAME franja hora
  • MINUTE minuto int
  • MINUTENAME minuto chr

DIMENSIÓN CONDICICIONES ACCIDENTE

  • HARM_EV código primer acontecimiento del accidente que produzca daños o lesiones
  • HARM_EVNAME primer acontecimiento del accidente que produzca daños o lesiones
  • MAN_COLL código de posición de los vehículos
  • MAN_COLLNAME posición de los vehículos
  • RELJCT1 código si hay área de intercambio
  • RELJCT1NAME si hay área de intercambio
  • RELJCT2 código proximidad cruce
  • RELJCT2NAME proximidad cruce
  • TYP_INT código tipo de intersección
  • TYP_INTNAME tipo de intersección
  • WRK_ZONE código tipología de obras
  • WRK_ZONENAME tipología de obras
  • RAIL_ROAD código ubicación vehículo a la vía
  • RAIL_ROADNAME ubicación vehículo a la vía
  • LGT_COND código condición lumínica
  • LGT_CONDNAME condición lumínica

DIMENSIÓN METEOROLOGIA

  • WEATHER código tiempo
  • WEATHERNAME tiempo

OTROS

  • SCH_BUSS código si vehículo escolar implicado
  • SCH_BUSNAME vehículo escolar implicado
  • RAIL código si dentro o cerca paso ferroviario
  • RAILNAME si dentro o cerca paso ferroviario

DIMENSIÓN SERVICIO EMERGENCIAS

  • NOT_HOUR hora notificación a emergencias int
  • NOT_HOURNAME hora notificación a emergencias franja
  • NOT_MIN minuto notificación a emergencias int
  • NOT_MINNAME minuto notificación a emergencias chr
  • ARR_HOUR hora llegada emergencias int
  • ARR_HOURNAME hora llegada emergencias franja
  • ARR_MIN minuto llegada emergencias int
  • ARR_MINNAME minuto llegada emergencias franja
  • HOSP_HR hora llegada hospital int
  • HOSP_HRNAME hora llegada hospital franja
  • HOSP_MN minuto llegada hospital int
  • HOSP_MNNAME minuto llegada hospital franja

DIMENSIÓN FACTORES RELACIONADOS ACCIDENTE

  • CF1 código factores relacionados con el accidente 1
  • CF1NAME factores relacionados con el accidente 1
  • CF2 código factores relacionados con el accidente 2
  • CF2NAME factores relacionados con el accidente 2
  • CF3 código factores relacionados con el accidente 3

1.3 Preprocesamiento y gestión de características

1.3.1 Limpieza

El siguiente paso será la limpieza de datos, mirando si hay valores vacíos o nulos.

print('NA')
## [1] "NA"
colSums(is.na(accidentData))
##        STATE    STATENAME      ST_CASE     VE_TOTAL     VE_FORMS     PVH_INVL 
##            0            0            0            0            0            0 
##         PEDS      PERSONS      PERMVIT   PERNOTMVIT       COUNTY   COUNTYNAME 
##            0            0            0            0            0            0 
##         CITY     CITYNAME          DAY      DAYNAME        MONTH    MONTHNAME 
##            0            0            0            0            0            0 
##         YEAR     DAY_WEEK DAY_WEEKNAME         HOUR     HOURNAME       MINUTE 
##            0            0            0            0            0            0 
##   MINUTENAME          NHS      NHSNAME        ROUTE    ROUTENAME      TWAY_ID 
##            0            0            0            0            0            0 
##     TWAY_ID2      RUR_URB  RUR_URBNAME     FUNC_SYS FUNC_SYSNAME     RD_OWNER 
##            0            0            0            0            0            0 
## RD_OWNERNAME       MILEPT   MILEPTNAME     LATITUDE LATITUDENAME     LONGITUD 
##            0            0            0            0            0            0 
## LONGITUDNAME       SP_JUR   SP_JURNAME      HARM_EV  HARM_EVNAME     MAN_COLL 
##            0            0            0            0            0            0 
## MAN_COLLNAME      RELJCT1  RELJCT1NAME      RELJCT2  RELJCT2NAME      TYP_INT 
##            0            0            0            0            0            0 
##  TYP_INTNAME     WRK_ZONE WRK_ZONENAME     REL_ROAD REL_ROADNAME     LGT_COND 
##            0            0            0            0            0            0 
## LGT_CONDNAME      WEATHER  WEATHERNAME      SCH_BUS  SCH_BUSNAME         RAIL 
##            0            0            0            0            0            0 
##     RAILNAME     NOT_HOUR NOT_HOURNAME      NOT_MIN  NOT_MINNAME     ARR_HOUR 
##            0            0            0            0            0            0 
## ARR_HOURNAME      ARR_MIN  ARR_MINNAME      HOSP_HR  HOSP_HRNAME      HOSP_MN 
##            0            0            0            0            0            0 
##  HOSP_MNNAME       FATALS     DRUNK_DR 
##            0            0            0
print('Blancos')
## [1] "Blancos"
colSums(accidentData=="")
##        STATE    STATENAME      ST_CASE     VE_TOTAL     VE_FORMS     PVH_INVL 
##            0            0            0            0            0            0 
##         PEDS      PERSONS      PERMVIT   PERNOTMVIT       COUNTY   COUNTYNAME 
##            0            0            0            0            0            0 
##         CITY     CITYNAME          DAY      DAYNAME        MONTH    MONTHNAME 
##            0            0            0            0            0            0 
##         YEAR     DAY_WEEK DAY_WEEKNAME         HOUR     HOURNAME       MINUTE 
##            0            0            0            0            0            0 
##   MINUTENAME          NHS      NHSNAME        ROUTE    ROUTENAME      TWAY_ID 
##            0            0            0            0            0            0 
##     TWAY_ID2      RUR_URB  RUR_URBNAME     FUNC_SYS FUNC_SYSNAME     RD_OWNER 
##        26997            0            0            0            0            0 
## RD_OWNERNAME       MILEPT   MILEPTNAME     LATITUDE LATITUDENAME     LONGITUD 
##            0            0            0            0            0            0 
## LONGITUDNAME       SP_JUR   SP_JURNAME      HARM_EV  HARM_EVNAME     MAN_COLL 
##            0            0            0            0            0            0 
## MAN_COLLNAME      RELJCT1  RELJCT1NAME      RELJCT2  RELJCT2NAME      TYP_INT 
##            0            0            0            0            0            0 
##  TYP_INTNAME     WRK_ZONE WRK_ZONENAME     REL_ROAD REL_ROADNAME     LGT_COND 
##            0            0            0            0            0            0 
## LGT_CONDNAME      WEATHER  WEATHERNAME      SCH_BUS  SCH_BUSNAME         RAIL 
##            0            0            0            0            0            0 
##     RAILNAME     NOT_HOUR NOT_HOURNAME      NOT_MIN  NOT_MINNAME     ARR_HOUR 
##            0            0            0            0            0            0 
## ARR_HOURNAME      ARR_MIN  ARR_MINNAME      HOSP_HR  HOSP_HRNAME      HOSP_MN 
##            0            0            0            0            0            0 
##  HOSP_MNNAME       FATALS     DRUNK_DR 
##            0            0            0

Vemos que no hay valores nulos en los datos. También verificamos si existen campos llenos de espacios en blanco. En este caso sí encontramos el campo TWAY_ID2 con 26997 valores en blanco. Valoramos no hacer ninguna acción de eliminar registros puesto que este campo no lo utilizaremos.

Vamos a crear histogramas y describir los valores para ver los datos en general de estos atributos para hacer una primera aproximación a los datos:

if (!require('ggplot2')) install.packages('ggplot2'); library('ggplot2')
if(!require('Rmisc')) install.packages('Rmisc'); library('Rmisc')
if(!require('dplyr')) install.packages('dplyr'); library('dplyr')
if(!require('xfun')) install.packages('xfun'); library('xfun')

summary(accidentData[c("FATALS","DRUNK_DR")])
##      FATALS         DRUNK_DR     
##  Min.   :1.000   Min.   :0.0000  
##  1st Qu.:1.000   1st Qu.:0.0000  
##  Median :1.000   Median :0.0000  
##  Mean   :1.085   Mean   :0.2664  
##  3rd Qu.:1.000   3rd Qu.:1.0000  
##  Max.   :8.000   Max.   :4.0000
histList<- list()

n = c("FATALS","DRUNK_DR")
accidentDataAux= accidentData %>% select(all_of(n))
for(y in 1:ncol(accidentDataAux)){
col <- names(accidentDataAux)[y]
ggp <- ggplot(accidentDataAux, aes_string(x = col)) +
geom_histogram(bins = 30, fill = "cornflowerblue", color = "black",ggtittle = "Contador de ocurrencias por variable")
histList[[y]] <- ggp # añadimos cada plot a la lista vacía
}
multiplot(plotlist = histList, coles = 1)

## [1] 1

Observaciones:

Número de muertes: Todos los accidentes recogidos en estos datos reportan una muerte como mínimo. Siendo el accidente más grave con ocho víctimas y vemos que la distribución se acumula de forma muy evidente en una muerte por accidente.

Conductores bebidos involucrados en el accidente: Analizaremos con más detalle este dato más adelante para derivar un nuevo dato: Accidentes donde el alcohol está presente o no. De entrada, la media es de 0.26% de accidentes donde interviene un conductor bebido. La franja de conductores bebidos por accidente va de un conductor como mínimo a cuatro como máximo.

summary(accidentData[c("VE_TOTAL","VE_FORMS","PVH_INVL")])
##     VE_TOTAL        VE_FORMS         PVH_INVL       
##  Min.   : 1.00   Min.   : 1.000   Min.   : 0.00000  
##  1st Qu.: 1.00   1st Qu.: 1.000   1st Qu.: 0.00000  
##  Median : 1.00   Median : 1.000   Median : 0.00000  
##  Mean   : 1.56   Mean   : 1.517   Mean   : 0.04269  
##  3rd Qu.: 2.00   3rd Qu.: 2.000   3rd Qu.: 0.00000  
##  Max.   :15.00   Max.   :15.000   Max.   :10.00000
#Crearemos una lista para mostrar los atributos que interesan.
histList<- list()
n = c("VE_TOTAL","VE_FORMS","PVH_INVL")
accidentDataAux= accidentData %>% select(all_of(n))
for(y in 1:ncol(accidentDataAux)){
col <- names(accidentDataAux)[y]
ggp <- ggplot(accidentDataAux, aes_string(x = col)) +
geom_histogram(bins = 30, fill = "cornflowerblue", color = "black")
histList[[y]] <- ggp # añadimos cada plot a la lista vacía
}
multiplot(plotlist = histList, coles = 1)

## [1] 1

Observaciones en cuanto a los vehículos implicados.

Número de vehículos implicados (VE_TOTAL) en total está en la franja de 1 hasta 59 siendo este el valor máximo y una media de 1.5. Número de vehículos en movimiento implicados (VE_FORMS), el valor más habitual es 1 con un valor máximo también de 59. Prevemos que hay un valor extremo que habrá que tratar para poder sacar más información de esta variable. Número de vehículos estacionados implicados (PVH_INVL): Por lo que respecta a esta variable lo habitual es que no haya vehículos estacionados en los incidentes recogidos en estos datos. Con todo aparecen casos aislados donde incluso había 10 coches estacionados.

summary(accidentData[c("PEDS","PERSONS","PERMVIT","PERNOTMVIT")])
##       PEDS           PERSONS          PERMVIT         PERNOTMVIT    
##  Min.   :0.0000   Min.   : 0.000   Min.   : 0.000   Min.   :0.0000  
##  1st Qu.:0.0000   1st Qu.: 1.000   1st Qu.: 1.000   1st Qu.:0.0000  
##  Median :0.0000   Median : 2.000   Median : 2.000   Median :0.0000  
##  Mean   :0.2285   Mean   : 2.173   Mean   : 2.163   Mean   :0.2387  
##  3rd Qu.:0.0000   3rd Qu.: 3.000   3rd Qu.: 3.000   3rd Qu.:0.0000  
##  Max.   :8.0000   Max.   :61.000   Max.   :61.000   Max.   :9.0000
#Crearemos una lista para mostrar los atributos que interesan.
histList<- list()
n = c("PEDS","PERSONS","PERMVIT","PERNOTMVIT")
accidentDataAux= accidentData %>% select(all_of(n))
for(y in 1:ncol(accidentDataAux)){
col <- names(accidentDataAux)[y]
ggp <- ggplot(accidentDataAux, aes_string(x = col)) +
geom_histogram(bins = 30, fill = "cornflowerblue", color = "black")
histList[[y]] <- ggp # añadimos cada plot a la lista vacía
}
multiplot(plotlist = histList, coles = 1)

## [1] 1

Observaciones en cuanto a las personas implicadas en un accidente.

El número de peatones implicados (PEDS) es muy bajo siendo coherente con el tipo de vía que se estudia y dónde no es habitual que haya gente andando. Con todo el valor como media de 0.22 y máximo de 8 obliga a investigar más este dato. (PERSONS) El número de ocupantes de vehículo implicados se sitúa como media en 2.1 (PERMVIT) El número conductores y ocupantes de vehículos en circulación implicados tiene un valor de media de 2.1. Estas dos variables recogen la misma información, pero la cuantifican de diferente manera. El accidente con el mayor número de ocupantes es de 61 personas. Por lo que respecta al número peatones, ciclistas, personas en vehículos aparcados y otros (PERNOTMVIT) vemos que aumenta un poco la media respecto a peatón puesto que entendemos que se incluyen más casos.

Vamos a profundizar un poco en el tema de la relación del alcohol en los conductores y el número de accidentes.

accidentData$alcohol <- ifelse(accidentData$DRUNK_DR %in% c(0), 0, 1)
counts <- table(accidentData$alcohol)
barplot(prop.table(counts),col=c("green","red"), main="Accidentes con conductor bebido", legend.texto=c("No Alcohol","Sí Alcohol"),xlab ="Presencia Alcohol", ylab = "Porcentaje",ylim=c(0,0.8) )
## Warning in plot.window(xlim, ylim, log = log, ...): "legend.texto" is not a
## graphical parameter
## Warning in axis(if (horiz) 2 else 1, at = at.l, labels = names.arg, lty =
## axis.lty, : "legend.texto" is not a graphical parameter
## Warning in title(main = main, sub = sub, xlab = xlab, ylab = ylab, ...):
## "legend.texto" is not a graphical parameter
## Warning in axis(if (horiz) 1 else 2, cex.axis = cex.axis, ...): "legend.texto"
## is not a graphical parameter

Vemos que porcentualmente, en la gran mayoría de accidentes, alrededor del 75% no hay presencia de alcohol en el conductor. Los conductores que dan positivo están alrededor de un 22%. Hemos buscado contrastar el dato con otros países y estarían en un valor central donde los valores extremos máximo por país superan el 50% y los mínimos están sobre el 10%

Observamos ahora como se distribuyen las muertes por accidente.

df1 <- accidentData %>%
group_by(accidentData$FATALS) %>%
dplyr::summarise(counts = n())
df1
## # A tibble: 8 × 2
##   `accidentData$FATALS` counts
##                   <int>  <int>
## 1                     1  33226
## 2                     2   2154
## 3                     3    289
## 4                     4     71
## 5                     5     20
## 6                     6      4
## 7                     7      1
## 8                     8      1
counts <- table(accidentData$FATALS)
barplot(prop.table(counts),col=("red"),ylim=c(0,0.99),main="Distribución de la mortalidad a los accidentes",xlab ="Número de muertos", ylab = "Porcentaje")

Vemos que la mayoría de los accidentes tienen como mínimo un muerto. Vamos ahora a relacionar mortalidad y alcohol.

counts <- table(accidentData$alcohol, accidentData$FATALS)
colors <- c("green", "red")
barplot(prop.table(counts), beside = TRUE, col = colors,
ylim = c(0, 1), axes = TRUE,
xlab = "Número de muertos",
ylab = "Porcentaje",
main = "Accidentes por muertes y conductores positivos en alcohol",
legend = c("No Alcohol", "Alcohol"),
fill = colors)
## Warning in plot.window(xlim, ylim, log = log, ...): "fill" is not a graphical
## parameter
## Warning in axis(if (horiz) 2 else 1, at = at.l, labels = names.arg, lty =
## axis.lty, : "fill" is not a graphical parameter
## Warning in title(main = main, sub = sub, xlab = xlab, ylab = ylab, ...): "fill"
## is not a graphical parameter
## Warning in axis(if (horiz) 1 else 2, cex.axis = cex.axis, ...): "fill" is not a
## graphical parameter

Probaremos ahora si hay relación entre el estado donde ha pasado el accidente y el número de conductores bebidos. Filtramos los cinco estados donde hay más accidentes.

accidentDataST5=subset(accidentData, accidentData$STATENAME == "California" | accidentData$STATENAME == "Texas" | accidentData$STATENAME == "Florida" | accidentData$STATENAME == "Georgia" | accidentData$STATENAME == "North Carolina")

files=dim(accidentDataST5)[1]
ggplot(data=accidentDataST5[1:files,],aes(x=DRUNK_DR,fill=STATENAME))+geom_bar()+ggtitle("Relación entre conductor bebido y Estado")+labs(x="Número de conductores bebidos implicados")

Como reflexión este gráfico tiene que pasar por el filtro de percentuar el número de accidentes por estado y la población del estado para no sacar conclusiones apresuradas.

Veamos ahora como en un mismo gráfico de frecuencias podemos trabajar con 3 variables: FATALS, STATENAME y WEATHERNAME.

ggplot(data = accidentDataST5[1:files,],aes(x=FATALS,fill=STATENAME))+geom_bar(position="fill")+facet_wrap(~WEATHERNAME)+ggtitle("Número de muertes en accidente por Estado y clima")+labs(x="Número de muertes")

Esta gráfica está bien como mecánica de construcción, pero los resultados los ponemos en entredicho. Está bien como paso inicial, pero hay que profundizar mucho más.

Vamos a buscar las correlaciones en función de las muertes y unas variables elegidas que creemos que pueden ayudar a explicar el aumento de muertes por accidente:

DRUNK_DR conductores bebidos VE_TOTAL número de vehículos implicados en total VE_FORMS número de vehículos en movimiento implicados PVH_INVL número de vehículos estacionados implicados PEDS número de peatón implicados PERSONS número de ocupante de vehículo implicados PERMVIT número conductores y ocupantes implicados PERNOTMVIT número peatones, ciclistas… Cualquier cosa menos vehículo motorizado

# Utilizamos esta librería para usar la funcio multiplot()
if(!require('Rmisc')) install.packages('Rmisc'); library('Rmisc')

n = c("DRUNK_DR","VE_TOTAL","VE_FORMS","PVH_INVL","PEDS","PERSONS","PERMVIT","PERNOTMVIT") 
accidentDataAux= accidentData %>% select(all_of(n))
histList2<- vector('list', ncol(accidentDataAux))
for(i in seq_along(accidentDataAux)){
  message(i)
histList2[[i]]<-local({
  i<-i
  col <-log(accidentDataAux[[i]])
  ggp<- ggplot(data = accidentDataAux, aes(x = accidentData$FATALS, y=col)) + 
    geom_point(color = "gray30") + geom_smooth(method = lm,color = "firebrick") + 
    theme_bw() + xlab("Muertes") + ylab(names(accidentDataAux)[i])
  })

}
multiplot(plotlist = histList2, cols = 3)

Podemos ver que:

  • De forma general cualquier aumento en las variables elegidas implica un aumento de las muertes en el accidente.

  • El factor que hace aumentar más el número de víctimas son las variables relacionadas con los peatones y pasajeros de los coches involucrados en el accidente.

Utilizamos las columnas que nos interesa para hacer la matriz y la visualizaremos utilizando la función corrplot.

# https://cran.r-project.org/web/packages/corrplot/vignettes/corrplot-intro.html
if(!require("corrplot")) install.packages("corrplot"); library("corrplot")
n = c("FATALS","DRUNK_DR","VE_TOTAL","VE_FORMS","PVH_INVL","PEDS","PERSONS","PERMVIT","PERNOTMVIT")
factores= accidentData %>% select(all_of(n))
res<-cor(factores)
corrplot(res,method="color",tl.col="black", tl.srt=30, order = "AOE",
number.cex=0.75,sig.level = 0.01, addCoef.col = "black")

No vemos que haya una correlación negativa significativa entre dos variables y sí una muy buena correlación ya previsible entre los peatones implicados y personas involucradas en el accidente que no van en coche (PEDS y PERNOTMVIT) Lo mismo podemos observar en cuanto al número de conductores y ocupantes implicados (PERMVIT) y el número de vehículos implicados en movimiento (VE_FORMS) o el total de vehículos (VE_TOTAL).

Vamos a probar si hay una correlación entre personas implicadas en el accidente y el número de muertes.

if (!require('tidyverse')) install.packages('tidyverse'); library('tidyverse')
## Loading required package: tidyverse
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ forcats   1.0.0     ✔ stringr   1.5.1
## ✔ lubridate 1.9.3     ✔ tibble    3.2.1
## ✔ purrr     1.0.2     ✔ tidyr     1.3.1
## ✔ readr     2.1.5     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::arrange()   masks plyr::arrange()
## ✖ purrr::compact()   masks plyr::compact()
## ✖ dplyr::count()     masks plyr::count()
## ✖ dplyr::desc()      masks plyr::desc()
## ✖ dplyr::failwith()  masks plyr::failwith()
## ✖ dplyr::filter()    masks stats::filter()
## ✖ dplyr::id()        masks plyr::id()
## ✖ dplyr::lag()       masks stats::lag()
## ✖ dplyr::mutate()    masks plyr::mutate()
## ✖ dplyr::rename()    masks plyr::rename()
## ✖ dplyr::summarise() masks plyr::summarise()
## ✖ dplyr::summarize() masks plyr::summarize()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
cor.test(x = accidentData$PERSONS, y = accidentData$FATALS, method = "kendall")
## 
##  Kendall's rank correlation tau
## 
## data:  accidentData$PERSONS and accidentData$FATALS
## z = 53.008, p-value < 2.2e-16
## alternative hypothesis: true tau is not equal to 0
## sample estimates:
##       tau 
## 0.2558174
ggplot(data = accidentData, aes(x = PERSONS, y = log(FATALS))) + geom_point(color = "gray30") + geom_smooth(color = "firebrick") + theme_bw() +ggtitle("Correlación entre personas implicadas en el accidente y número de muertes")
## `geom_smooth()` using method = 'gam' and formula = 'y ~ s(x, bs = "cs")'

De la observación de este gráfico podemos concluir que efectivamente el número de muertes aumenta en función de las personas implicadas en un accidente pero que la correlación no es tan elevada ni continúa como se podía prever.

1.4 Construcción de conjunto de datos final

Si dos variables están altamente correlacionadas obviamente darán casi exactamente la misma información en un modelo de regresión, por ejemplo. Pero, al incluir las dos variables, en realidad estamos debilitando el modelo. No estamos añadiendo información incremental. En lugar de esto, estamos haciendo un modelo ruidoso. No es una buena idea.

Cómo hemos visto antes tenemos una correlación muy grande entre PEDS y PERNOTMVIT, por lo tanto, podríamos eliminar la columna de peatones (PEDS) y dejar el total de peatones y otros reflejado a PERNOTMVIT.

# accidentData$PEDS<- NULL
str(accidentData)
## 'data.frame':    35766 obs. of  82 variables:
##  $ STATE       : int  1 1 1 1 1 1 1 1 1 1 ...
##  $ STATENAME   : chr  "Alabama" "Alabama" "Alabama" "Alabama" ...
##  $ ST_CASE     : int  10001 10002 10003 10004 10005 10006 10007 10008 10009 10010 ...
##  $ VE_TOTAL    : int  1 4 2 1 1 2 1 2 2 2 ...
##  $ VE_FORMS    : int  1 4 2 1 1 2 1 2 2 2 ...
##  $ PVH_INVL    : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ PEDS        : int  0 0 0 0 0 0 1 0 0 0 ...
##  $ PERSONS     : int  4 6 2 5 1 3 1 2 4 3 ...
##  $ PERMVIT     : int  4 6 2 5 1 3 1 2 4 3 ...
##  $ PERNOTMVIT  : int  0 0 0 0 0 0 1 0 0 0 ...
##  $ COUNTY      : int  51 73 117 15 37 103 73 25 45 95 ...
##  $ COUNTYNAME  : chr  "ELMORE (51)" "JEFFERSON (73)" "SHELBY (117)" "CALHOUN (15)" ...
##  $ CITY        : int  0 350 0 0 0 0 330 0 0 1500 ...
##  $ CITYNAME    : chr  "NOT APPLICABLE" "BIRMINGHAM" "NOT APPLICABLE" "NOT APPLICABLE" ...
##  $ DAY         : int  1 2 2 3 4 4 7 8 9 10 ...
##  $ DAYNAME     : int  1 2 2 3 4 4 7 8 9 10 ...
##  $ MONTH       : int  1 1 1 1 1 1 1 1 1 1 ...
##  $ MONTHNAME   : chr  "January" "January" "January" "January" ...
##  $ YEAR        : int  2020 2020 2020 2020 2020 2020 2020 2020 2020 2020 ...
##  $ DAY_WEEK    : int  4 5 5 6 7 7 3 4 5 6 ...
##  $ DAY_WEEKNAME: chr  "Wednesday" "Thursday" "Thursday" "Friday" ...
##  $ HOUR        : int  2 17 14 15 0 16 19 7 20 10 ...
##  $ HOURNAME    : chr  "2:00am-2:59am" "5:00pm-5:59pm" "2:00pm-2:59pm" "3:00pm-3:59pm" ...
##  $ MINUTE      : int  58 18 55 20 45 55 23 15 0 2 ...
##  $ MINUTENAME  : chr  "58" "18" "55" "20" ...
##  $ NHS         : int  0 0 0 0 0 0 0 0 0 1 ...
##  $ NHSNAME     : chr  "This section IS NOT on the NHS" "This section IS NOT on the NHS" "This section IS NOT on the NHS" "This section IS NOT on the NHS" ...
##  $ ROUTE       : int  4 6 3 4 4 3 4 4 4 2 ...
##  $ ROUTENAME   : chr  "County Road" "Local Street - Municipality" "State Highway" "County Road" ...
##  $ TWAY_ID     : chr  "cr-4" "martin luther king jr dr" "sr-76" "CR-ALEXANDRIA WELLINGTON RD" ...
##  $ TWAY_ID2    : chr  "" "" "us-280" "" ...
##  $ RUR_URB     : int  1 2 1 1 1 1 2 1 1 1 ...
##  $ RUR_URBNAME : chr  "Rural" "Urban" "Rural" "Rural" ...
##  $ FUNC_SYS    : int  5 4 4 7 5 4 4 5 5 3 ...
##  $ FUNC_SYSNAME: chr  "Major Collector" "Minor Arterial" "Minor Arterial" "Local" ...
##  $ RD_OWNER    : int  2 4 1 2 2 1 4 2 2 1 ...
##  $ RD_OWNERNAME: chr  "County Highway Agency" "City or Municipal Highway Agency" "State Highway Agency" "County Highway Agency" ...
##  $ MILEPT      : int  0 0 49 0 0 390 0 0 0 3019 ...
##  $ MILEPTNAME  : chr  "None" "None" "49" "None" ...
##  $ LATITUDE    : num  32.4 33.5 33.3 33.8 32.8 ...
##  $ LATITUDENAME: chr  "32.43313333" "33.48465833" "33.29994167" "33.79507222" ...
##  $ LONGITUD    : num  -86.1 -86.8 -86.4 -85.9 -86.1 ...
##  $ LONGITUDNAME: chr  "-86.09485" "-86.83954444" "-86.36964167" "-85.88348611" ...
##  $ SP_JUR      : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ SP_JURNAME  : chr  "No Special Jurisdiction" "No Special Jurisdiction" "No Special Jurisdiction" "No Special Jurisdiction" ...
##  $ HARM_EV     : int  42 12 34 42 42 12 8 12 12 12 ...
##  $ HARM_EVNAME : chr  "Tree (Standing Only)" "Motor Vehicle In-Transport" "Ditch" "Tree (Standing Only)" ...
##  $ MAN_COLL    : int  0 6 0 0 0 2 0 1 1 2 ...
##  $ MAN_COLLNAME: chr  "The First Harmful Event was Not a Collision with a Motor Vehicle in Transport" "Angle" "The First Harmful Event was Not a Collision with a Motor Vehicle in Transport" "The First Harmful Event was Not a Collision with a Motor Vehicle in Transport" ...
##  $ RELJCT1     : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ RELJCT1NAME : chr  "No" "No" "No" "No" ...
##  $ RELJCT2     : int  1 1 3 1 1 1 3 1 8 1 ...
##  $ RELJCT2NAME : chr  "Non-Junction" "Non-Junction" "Intersection-Related" "Non-Junction" ...
##  $ TYP_INT     : int  1 1 3 1 1 1 2 1 1 1 ...
##  $ TYP_INTNAME : chr  "Not an Intersection" "Not an Intersection" "T-Intersection" "Not an Intersection" ...
##  $ WRK_ZONE    : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ WRK_ZONENAME: chr  "None" "None" "None" "None" ...
##  $ REL_ROAD    : int  4 1 4 4 4 1 1 1 1 1 ...
##  $ REL_ROADNAME: chr  "On Roadside" "On Roadway" "On Roadside" "On Roadside" ...
##  $ LGT_COND    : int  2 3 1 1 2 2 3 1 2 1 ...
##  $ LGT_CONDNAME: chr  "Dark - Not Lighted" "Dark - Lighted" "Daylight" "Daylight" ...
##  $ WEATHER     : int  1 2 2 10 2 1 1 1 10 10 ...
##  $ WEATHERNAME : chr  "Clear" "Rain" "Rain" "Cloudy" ...
##  $ SCH_BUS     : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ SCH_BUSNAME : chr  "No" "No" "No" "No" ...
##  $ RAIL        : chr  "0000000" "0000000" "0000000" "0000000" ...
##  $ RAILNAME    : chr  "Not Applicable" "Not Applicable" "Not Applicable" "Not Applicable" ...
##  $ NOT_HOUR    : int  99 17 14 99 0 17 19 7 20 10 ...
##  $ NOT_HOURNAME: chr  "Unknown" "5:00pm-5:59pm" "2:00pm-2:59pm" "Unknown" ...
##  $ NOT_MIN     : int  99 18 58 99 45 0 23 21 0 3 ...
##  $ NOT_MINNAME : chr  "Unknown" "18" "58" "Unknown" ...
##  $ ARR_HOUR    : int  3 17 15 99 0 17 19 7 20 10 ...
##  $ ARR_HOURNAME: chr  "3:00am-3:59am" "5:00pm-5:59pm" "3:00pm-3:59pm" "Unknown EMS Scene Arrival Hour" ...
##  $ ARR_MIN     : int  10 26 15 99 55 19 29 28 10 7 ...
##  $ ARR_MINNAME : chr  "10" "26" "15" "Unknown EMS Scene Arrival Minutes" ...
##  $ HOSP_HR     : int  99 99 99 99 88 18 88 88 99 10 ...
##  $ HOSP_HRNAME : chr  "Unknown" "Unknown" "Unknown" "Unknown" ...
##  $ HOSP_MN     : int  99 99 99 99 88 51 88 88 99 29 ...
##  $ HOSP_MNNAME : chr  "Unknown EMS Hospital Arrival Time" "Unknown EMS Hospital Arrival Time" "Unknown EMS Hospital Arrival Time" "Unknown EMS Hospital Arrival Time" ...
##  $ FATALS      : int  3 1 1 1 1 1 1 1 1 1 ...
##  $ DRUNK_DR    : int  1 0 0 0 0 0 0 0 0 0 ...
##  $ alcohol     : num  1 0 0 0 0 0 0 0 0 0 ...

1.4.1 Codificación

Seguidamente vayamos a asignar un 1 por accidentes que se producen de madrugada (01h a 06h en invierno) y un 0 para el resto de franja horaria, es decir, vamos a categorizar la variable HOUR y así tendremos una variable numérica que nos permitirá trabajar mejor en el futuro. La denominaremos madrugada. Después la utilizaremos para ver cómo se distribuyen los accidentes en las dos franjas horarias. Debemos tener en cuenta que la hora incluye el código 99 qué quiere decir que la hora no está informada. Miraremos de filtrar los registros con este valor para excluirlos.

accidentDataAux=subset(accidentData, accidentData$HOUR <= 24)

accidentData$madrugada <- NA
accidentData$madrugada[accidentDataAux$HOUR >=1 & accidentDataAux$HOUR <= 6] <- 1
accidentData$madrugada[accidentDataAux$HOUR ==0 | accidentDataAux$HOUR >6 ] <- 0

counts <- table(accidentData$madrugada)
barplot(prop.table(counts),col=c("green","red"),legend.texto=c("Resto del día","Madrugada"),ylim=c(0,1), main="Distribución de accidentes la madrugada y resto del día",xlab="0 Resto del día 1 Madrugada",ylab="Porcentaje" )
## Warning in plot.window(xlim, ylim, log = log, ...): "legend.texto" is not a
## graphical parameter
## Warning in axis(if (horiz) 2 else 1, at = at.l, labels = names.arg, lty =
## axis.lty, : "legend.texto" is not a graphical parameter
## Warning in title(main = main, sub = sub, xlab = xlab, ylab = ylab, ...):
## "legend.texto" is not a graphical parameter
## Warning in axis(if (horiz) 1 else 2, cex.axis = cex.axis, ...): "legend.texto"
## is not a graphical parameter

1.4.2 Discretización

Ahora añadiremos un campo nuevo a los datos. Este campo contendrá el valor de la hora del accidente discretizada con un método simple de intervalos de igual amplitud.

summary(accidentDataAux[,"HOUR"])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    0.00    7.00   15.00   13.19   19.00   23.00

Discretizamos con intervalos. Los criterios de corte están cogidos de la Web del Parlamento de Cataluña.

accidentDataAux["segmento_horario"] <- cut(accidentDataAux$HOUR, breaks = c(0,4,11,14,18,22), labels = c("Madrugada", "Mañana", "Mediodía", "Anochecer","Noche"))

Observamos los datos discretizados y construimos un gráfico para analizar cómo se agrupan los accidentes.

head(accidentDataAux$segmento_horario)
## [1] Madrugada Anochecer Mediodía  Anochecer <NA>      Anochecer
## Levels: Madrugada Mañana Mediodía Anochecer Noche
plot(accidentDataAux$segmento_horario,main="Número de accidentes por segmento horario",xlab="Segmento horario", ylab="Cantidad",col = "ivory")

Ahora vamos a discretizar la variable que contiene el número de vehículos implicados en un accidente (VE_TOTALS) puesto que era una de las variables en que las distancias entre sus valores eran muy grandes:

# Utilizaremos la función discretize de arules: This function implements several basic unsupervised methods to convert a continuous variable into a categorical variable (factor) using different binning strategies. 
# https://cran.r-project.org/web/packages/arules/index.html
if (!require('arules')) install.packages('arules'); library('arules')
## Loading required package: arules
## Loading required package: Matrix
## 
## Attaching package: 'Matrix'
## The following objects are masked from 'package:tidyr':
## 
##     expand, pack, unpack
## 
## Attaching package: 'arules'
## The following object is masked from 'package:dplyr':
## 
##     recode
## The following objects are masked from 'package:base':
## 
##     abbreviate, write
set.seed(2)
table(discretize(accidentData$VE_TOTAL, "cluster" ))
## 
##    [1,1.57) [1.57,3.38)   [3.38,15] 
##       19972       14972         822
hist(accidentData$VE_TOTAL, main="Número de accidentes por vehículos implicados con kmeans",xlab="Vehículos implicados", ylab="Cantidad",col = "ivory")
abline(v=discretize(accidentData$VE_TOTAL, method="cluster", onlycuts=TRUE),col="red")

Podemos observar que sin pasar ningún argumento y permitiendo que el algoritmo elija el conjunto de particiones se muestran tres clústeres que agrupan los vehículos implicados en las franjas mencionadas. Podemos asignar el propio clúster como una variable más al dataset para trabajar después.

accidentData$VE_TOTAL_KM<- (discretize(accidentData$VE_TOTAL, "cluster" ))
head(accidentData$VE_TOTAL_KM)
## [1] [1,1.5)    [2.73,15]  [1.5,2.73) [1,1.5)    [1,1.5)    [1.5,2.73)
## Levels: [1,1.5) [1.5,2.73) [2.73,15]

1.4.3 Normalización

Ahora normalizaremos el número de muertes por el máximo añadiendo un nuevo campo a los datos que contendrá el valor.

accidentData$FATALS_NM<- (accidentData$FATALS/max(accidentData[,"FATALS"]))
head(accidentData$FATALS_NM)
## [1] 0.375 0.125 0.125 0.125 0.125 0.125

Supongamos que queremos normalizar por la diferencia para ubicar entre 0 y 1 la variable del número de muertes del accidente dado que el algoritmo de minería que utilizaremos así lo requiere. Observamos la distribución de la variable original y las generadas.

accidentData$FATALS_ND = (accidentData$FATALS-min(accidentData$FATALS))/(max(accidentData$FATALS)-min(accidentData$FATALS))

max(accidentData$FATALS)
## [1] 8
min(accidentData$FATALS)
## [1] 1
hist(accidentData$FATALS,xlab="Muertos", col="ivory",ylab="Cantidad", main="Número de muertes en accidente")

hist(accidentData$FATALS_NM,xlab="Muertos",ylab="Cantidad",col="ivory", main="Muertos normalizado por el máximo")

hist(accidentData$FATALS_ND,xlab="Muertos",ylab="Cantidad", col="ivory", main="Muertos normalizado por la diferencia")

A continuación, vamos a normalizar las otras columnas para asegurarnos que cada variable contribuye por igual en nuestro análisis.

# Definimos la función de normalización
nor <-function(x) { (x -min(x))/(max(x)-min(x))}
# Guardamos un nuevo dataset normalizado

accidentData$type<- NULL
n = c("FATALS","DRUNK_DR","VE_TOTAL","VE_FORMS","PVH_INVL","PEDS","PERSONS","PERMVIT","PERNOTMVIT")
accidentData<- accidentData %>% select(all_of(n))
accidentData_nor <- as.data.frame(lapply(accidentData, nor))

head(accidentData_nor)
##      FATALS DRUNK_DR   VE_TOTAL   VE_FORMS PVH_INVL PEDS    PERSONS    PERMVIT
## 1 0.2857143     0.25 0.00000000 0.00000000        0    0 0.06557377 0.06557377
## 2 0.0000000     0.00 0.21428571 0.21428571        0    0 0.09836066 0.09836066
## 3 0.0000000     0.00 0.07142857 0.07142857        0    0 0.03278689 0.03278689
## 4 0.0000000     0.00 0.00000000 0.00000000        0    0 0.08196721 0.08196721
## 5 0.0000000     0.00 0.00000000 0.00000000        0    0 0.01639344 0.01639344
## 6 0.0000000     0.00 0.07142857 0.07142857        0    0 0.04918033 0.04918033
##   PERNOTMVIT
## 1          0
## 2          0
## 3          0
## 4          0
## 5          0
## 6          0

1.5 Proceso de PCA

Tanto el análisis de componentes principales, principal componente analysis (PCA) en inglés, como la descomposición de valores singulares, singular value decomposition (SVD) en inglés, son técnicas que nos permitan trabajar con nuevas características llamadas componentes, que ciertamente son independientes entre sí. En realidad, estas dos técnicas nos permiten representar el juego de datos en un nuevo sistema de coordenadas que denominamos componentes principales. Este sistema está mejor adaptado a la distribución del juego de datos, de forma que recoge mejor su variabilidad.

Aplicamos el análisis de componentes principales al dataset. Empezamos ejecutando la función prcomp().

pca.acc <- prcomp(accidentData_nor)
summary(pca.acc)
## Importance of components:
##                           PC1     PC2    PC3    PC4     PC5     PC6     PC7
## Standard deviation     0.1168 0.08755 0.0690 0.0484 0.03269 0.02437 0.01072
## Proportion of Variance 0.4520 0.25389 0.1577 0.0776 0.03539 0.01967 0.00381
## Cumulative Proportion  0.4520 0.70584 0.8635 0.9411 0.97652 0.99619 1.00000
##                              PC8       PC9
## Standard deviation     5.213e-15 2.159e-15
## Proportion of Variance 0.000e+00 0.000e+00
## Cumulative Proportion  1.000e+00 1.000e+00

Como se puede observar la función summary, nos devuelve la proporción de varianza aplicada al conjunto total de cada atributo. Gracias a esto, el atributo 1 explica el 0.452 de variabilidad del total de datos; en cambio, el atributo 7 explica solo el 0.000381.

A continuación, se muestra un histograma para ver el peso de cada atributo sobre el conjunto total de datos:

if (!require('factoextra')) install.packages('factoextra'); library('factoextra')
## Loading required package: factoextra
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
#Los valores propios corresponden a la cantidad de variación explicada por cada componente principal (PC).
ev= get_eig(pca.acc)
ev
##         eigenvalue variance.percent cumulative.variance.percent
## Dim.1 1.364366e-02     4.519469e+01                    45.19469
## Dim.2 7.664656e-03     2.538921e+01                    70.58391
## Dim.3 4.760727e-03     1.576993e+01                    86.35384
## Dim.4 2.342530e-03     7.759642e+00                    94.11348
## Dim.5 1.068327e-03     3.538839e+00                    97.65232
## Dim.6 5.937915e-04     1.966938e+00                    99.61926
## Dim.7 1.149407e-04     3.807416e-01                   100.00000
## Dim.8 2.717197e-29     9.000729e-26                   100.00000
## Dim.9 4.659472e-30     1.543453e-26                   100.00000
fviz_eig(pca.acc)

En este ejercicio se decidió utilizar el método de Káiser para decidir cuales de las variables obtenidas serán escogidas. Este criterio mantendrá todas aquellas variables cuya varianza sea superior a 1.

# Calculamos la varianza de los componentes principales a partir de la desviación estándar

var_acc <- pca.acc$sdev^2

var_acc
## [1] 1.364366e-02 7.664656e-03 4.760727e-03 2.342530e-03 1.068327e-03
## [6] 5.937915e-04 1.149407e-04 2.717197e-29 4.659472e-30

Con los resultados obtenidos es muy complicado decidir cuáles son los componentes principales componentes a escoger. Este hecho podría estar causado por no haber escalado los datos previamente. Por lo tanto, el siguiente paso es escalar los datos y volver a calcular la varianza para ver qué datos selecciona.

# Escalamos los datos
acc_scale <- scale(accidentData_nor)
# Calculamos las componentes principales
pca.acc_scale <- prcomp(acc_scale)
# Mostramos la varianza de dichas variables:
var_acc_scale <- pca.acc_scale$sdev^2
head(var_acc_scale)
## [1] 3.5632826 1.8581532 1.1186798 1.0185157 0.8423082 0.5603141

Después de analizar la varianza y aplicando el criterio de Káiser nos quedaremos con los componentes principales 1,2,3 y 4 que son los superiores a 1. Este criterio tiene el problema de sobreestimar el número de factores, pero a pesar de ello es el que aplicaremos para analizar los resultados.

Mostramos el histograma de porcentaje de varianza explicado con los datos escalados:

fviz_eig(pca.acc_scale)

ev = get_eig(pca.acc_scale)
ev
##         eigenvalue variance.percent cumulative.variance.percent
## Dim.1 3.563283e+00     3.959203e+01                    39.59203
## Dim.2 1.858153e+00     2.064615e+01                    60.23817
## Dim.3 1.118680e+00     1.242978e+01                    72.66795
## Dim.4 1.018516e+00     1.131684e+01                    83.98479
## Dim.5 8.423082e-01     9.358980e+00                    93.34377
## Dim.6 5.603141e-01     6.225712e+00                    99.56948
## Dim.7 3.874645e-02     4.305161e-01                   100.00000
## Dim.8 4.353003e-26     4.836670e-25                   100.00000
## Dim.9 2.164538e-26     2.405042e-25                   100.00000

Los valores propios se pueden utilizar para determinar el número de componentes principales a retener después de la PCA (Kaiser 1961):

  • Un valor propio > 1 indica que los PCs representan más varianza de la que representa una de las variables originales de los datos estandarizados. Esto se utiliza habitualmente como punto de corte para el cual se conservan los PCs. Esto solo es cierto cuando los datos están estandarizados.

  • También podemos limitar el número de componentes a este número que representa una determinada fracción de la varianza total. Por ejemplo, si estamos satisfecho con el 80% de la varianza total explicada, usamos el número de componentes para conseguirlo que son los 4 componentes principales vistos antes.

Continuamos con el análisis de los componentes principales. Después de aplicar el método Káiser se han seleccionado los 4 componentes principales.

var <- get_pca_var(pca.acc_scale)
var
## Principal Component Analysis Results for variables
##  ===================================================
##   Name       Description                                    
## 1 "$coord"   "Coordinates for the variables"                
## 2 "$cor"     "Correlations between variables and dimensions"
## 3 "$cos2"    "Cos2 for the variables"                       
## 4 "$contrib" "contributions of the variables"

Los componentes de get_pca_var() se pueden utilizar en el diagrama de variables de la siguiente manera:

  • var$coord: coordenadas de variables para crear un diagrama de dispersión.
  • var$cos2: representa la calidad de representación de las variables al mapa de factores. Se calcula como las coordenadas al cuadrado: var.cos2 = var.coord * var.coord.
  • var$contrib: contiene las contribuciones (en porcentaje) de las variables a los componentes principales. La contribución de una variable (var) a un determinado componente principal es (en porcentaje): (var.cos2 * 100) / (cos2 total del componente).
#Utilizamos los 4 componentes principales encontrados antes
head(var$coord[,1:4],11)
##                  Dim.1       Dim.2       Dim.3       Dim.4
## FATALS     -0.30725642  0.07606945  0.28817514 -0.73967833
## DRUNK_DR   -0.04921565 -0.38170799 -0.26454706 -0.58497489
## VE_TOTAL   -0.83708697  0.28706095 -0.34390477  0.13727724
## VE_FORMS   -0.86483356  0.18416941 -0.02398033  0.21866655
## PVH_INVL   -0.06062570  0.30358100 -0.85844575 -0.18336810
## PEDS        0.48249027  0.82661079  0.13673775 -0.08353380
## PERSONS    -0.88514448  0.21755791  0.19732665 -0.07582156
## PERMVIT    -0.88736748  0.19749105  0.22352113 -0.06716534
## PERNOTMVIT  0.45872440  0.85355861  0.04773257 -0.10804664

1.5.1 Calidad de representación

La calidad de representación de las variables en el mapa de factores se denomina cos2 (coseno cuadrado, coordenadas cuadradas). Podemos acceder al cos2 de la siguiente manera:

head(var$cos2[,1:4],11)
##                  Dim.1       Dim.2       Dim.3       Dim.4
## FATALS     0.094406509 0.005786562 0.083044911 0.547124037
## DRUNK_DR   0.002422180 0.145700988 0.069985146 0.342195618
## VE_TOTAL   0.700714591 0.082403990 0.118270488 0.018845040
## VE_FORMS   0.747937080 0.033918370 0.000575056 0.047815060
## PVH_INVL   0.003675475 0.092161422 0.736929104 0.033623861
## PEDS       0.232796860 0.683285394 0.018697211 0.006977896
## PERSONS    0.783480750 0.047331446 0.038937806 0.005748910
## PERMVIT    0.787421038 0.039002717 0.049961697 0.004511183
## PERNOTMVIT 0.210428078 0.728562294 0.002278398 0.011674076
corrplot(var$cos2[,1:4], is.corre=FALSE)
## Warning in text.default(pos.xlabel[, 1], pos.xlabel[, 2], newcolnames, srt =
## tl.srt, : "is.corre" is not a graphical parameter
## Warning in text.default(pos.ylabel[, 1], pos.ylabel[, 2], newrownames, col =
## tl.col, : "is.corre" is not a graphical parameter
## Warning in title(title, ...): "is.corre" is not a graphical parameter

También es posible crear un diagrama de barras de variables cos2 mediante la función fviz_cos2():

fviz_cos2(pca.acc_scale, choice = "var", axes = 1:2)

  • Un cos2 elevado indica una buena representación de la variable en el componente principal. En este caso, la variable se coloca cerca de la circunferencia del círculo de correlación.

  • Un cos2 bajo indica que la variable no está perfectamente representada por los PC. En este caso, la variable está cerca del centro del círculo.

Para una variable dada, la suma del cos2 de todos los componentes principales es igual a uno.

Si una variable está perfectamente representada por solo dos componentes principales (Dim.1 y Dim.2), la suma del cos2 en estos dos PCs es igual a uno. En este caso las variables se colocarán en el círculo de correlaciones.

Para algunas de las variables, pueden ser necesarios más de 2 componentes para representar perfectamente los datos. En este caso las variables se sitúan dentro del círculo de correlaciones.

En resumen:

  • Los valores de cos2 se utilizan para estimar la calidad de la representación
  • Cuanto más próxima esté una variable al círculo de correlaciones, mejor será su representación en el mapa de factores (y más importante es interpretar estos componentes)
  • Las variables que están próximas en el centro de la trama son menos importantes para los primeros componentes.
fviz_pca_var(pca.acc_scale,
col.var = "cos2",
gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"),
repel = TRUE
)

1.5.2 Contribución

Las contribuciones de las variables en la contabilización de la variabilidad de un determinado componente principal se expresan en porcentaje.

Las variables que están correlacionadas con PC1 (es decir, Dim.1) y PC2 (es decir, Dim.2) son las más importantes para explicar la variabilidad en el conjunto de datos.

Las variables que no están correlacionadas con ningún PC o con las últimas dimensiones son variables con una contribución baja y se pueden eliminar para simplificar el análisis global.

La contribución de las variables se puede extraer de la siguiente manera:

head(var$contrib[,1:4],11)
##                  Dim.1      Dim.2       Dim.3      Dim.4
## FATALS      2.64942527  0.3114147  7.42347448 53.7177824
## DRUNK_DR    0.06797608  7.8411720  6.25604798 33.5974816
## VE_TOTAL   19.66486180  4.4347254 10.57232696  1.8502454
## VE_FORMS   20.99011424  1.8253807  0.05140488  4.6945826
## PVH_INVL    0.10314857  4.9598398 65.87489045  3.3012610
## PEDS        6.53321358 36.7722855  1.67136397  0.6851044
## PERSONS    21.98761218  2.5472306  3.48069265  0.5644400
## PERMVIT    22.09819245  2.0990044  4.46613018  0.4429174
## PERNOTMVIT  5.90545583 39.2089469  0.20366845  1.1461852

Cuando más grande sea el valor de la contribución, más contribución habrá al componente.

corrplot(var$contrib[,1:4], is.cor=FALSE)

Las variables más importantes (que más contribuyen) se pueden resaltar a la gráfica de correlación de la siguiente manera:

fviz_pca_var(pca.acc_scale, col.var = "contrib",
gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07")
)

Las variables correlacionadas positivas apuntan al mismo lado de la trama. Las variables correlacionadas negativas apuntan a lados opuestos del gráfico. Por ejemplo, vemos que las personas involucradas en un accidente (PVH_INVL) y conductor bebido (DRUNK_DR) apuntan direcciones opuestas por tanto no están nada correlacionas, además lo hemos visto antes puesto que tienen un coeficiente de correlación de -0.01.

Se observa que las variables que más aportan a las componentes principales son PEDS y PERNOTMVIT por un lado y VE_TOTAL, VE_FORMS, PERSONS y PERMVIT por otro. Esto es debido al hecho que están correlacionadas. En concreto por el diagrama de correlación de antes de que PEDS está muy bien correlacionada con PERNOTMVIT. De otra banda VE_TOTAL, VE_FORMS, PERSONS y PERMVIT están también bastante correlacionadas. La correlación de FATALS con este grupo de variables no es elevada, pero apunta en la misma dirección.

Podrían ahora rehacer los componentes excluyendo las variables que no aportan información. Una vez rehechas estas nuevas variables sustituyen a las originales que las forman y se podrían utilizar por ejemplo como un indicador de gravedad de accidente puesto que incluye vehículo en movimiento, parado, peatones, conductores y otros implicados en una sola variable.

1.6 Interpretación de los resultados

Los datos estudiados contemplan accidentes de tráfico con víctimas en las redes de autopistas en los EUUU a largo del 2020. Todos los registros tienen un identificador único de accidente y una serie de hechos principales como número de muertos, número de conductores bebidos, vehículos y personas implicadas. Tenemos que añadir otras variables que los caracterizan agrupadas por ubicación geográfica, temporal, condiciones específicas del accidente, meteorológicas, la intervención del servicio de emergencias y otros factores.

Revisados los datos parecen bien informados. Los datos están bastante limpios y bien documentados. No plantean graves problemas de campos con valores nulos o vacíos y tienen bastante potencial para generar nuevos indicadores a partir de los datos.

Podemos afirmar que a lo largo del 2020 en las autopistas de EE. UU. sucedieron 35766 accidentes en los que perdieron la vida 38824 personas. Pretendiamos extraer relaciones entre la presencia de alcohol en los conductores y el número de accidentes, pero las conclusiones no fueron claras. Las relaciones más obvias comprobadas son el incremento de muertes en función del incremento del número de vehículos, pasajeros y peatones implicados.

Habría que profundizar mucho más. Sí que podemos perfilar cómo son los accidentes típicos en cuanto al número de vehículos y personas, conductores o peatones implicados.

El más habitual es un muerto por accidente incrementándose este valor en función de las variables relacionadas. Los conductores bebidos aparecen en uno de cada cuatro accidentes mortales aproximadamente. Los vehículos implicados en los accidentes son típicamente uno pudiéndose incrementar a dos en los casos más típicos. El número de peatones implicados es relativamente bajo dado el tipo de vía que estamos estudiando.

En cuanto al consumo de alcohol, con el grado de profundidad estudiado, no se observa un estado donde las proporcionalidades del número de conductor con presencia de alcohol sean superiores a otros estados.

Estudiando el número de muertes en accidente en relación con el estado donde ha sucedido y la condición climática, vemos necesario profundizar con técnicas por ejemplo de agregación para ver cómo se agrupan y poder obtener un perfil.

Se ha estudiado la franja horaria de la madrugada para ver si acumula un mayor número de accidentes, no siendo así. Parece que el número de accidentes mantiene también proporcionalidad respecto las franjas horarias. Se ha estudiado el número de accidentes por segmento horario con una discretización fijada en intervalo arbitrarios. La mayor presencia de accidentes en horario por la mañana y anochecer (ir y volver al trabajo) hace pensar en que queda pendiente estudiar dado el tipo de vía la distribución horaria de los accidentes lunes a viernes respecto a los fines de semana y festivos para ver si hay horas donde se acumulan más accidentes mortales.

Finalmente, con la técnica de los componentes principales hemos generado una nueva variable que combina otras variables con una correlación inicial que se podría considerar como índice de gravedad del accidente.


2 Ejercicio 1


A partir de un juego de datos que te parezca interesante, propón un proyecto completo de minería de datos. La organización de la respuesta tiene que coincidir en las fases típicas del ciclo de vida de un proyecto de minería de datos. No hay que realizar las tareas de la fase.

Se espera por lo tanto que se responda de forma argumentada a las siguientes preguntas (Metodología CRISP-DM):

  1. Comprensión del negocio - ¿Qué necesita el negocio?
  2. Comprensión de los datos - ¿Qué datos tenemos/necesitamos? ¿Están limpios?
  3. Preparación de los datos - ¿Cómo organizamos los datos para el modelado?
  4. Modelado - ¿Qué técnicas de modelado debemos aplicar?
  5. Evaluación - ¿Qué modelo cumple mejor con los objetivos del negocio?
  6. Implementación - ¿Cómo acceden los interesados a los resultados?

Para cada fase indica cuál es el objetivo de la fase y el producto que se obtendrá. Utiliza ejemplos de qué y cómo podrían ser las tareas. Si hay alguna característica que hace diferente el ciclo de vida de un proyecto de minería respecto a otros proyectos indícalo.

Extensión mínima: 400 palabras

Para este ejercicio, vamos a trabajar con el famoso videojuego POKEMON. Dicho videojuego es una adaptación de la seríe de dibujos animados o “anime” del mismo nombre. En dicho videojuego, el jugador es un entrenador de pokemons. Los pokemos son animales imaginarios con ciertas caracteristicas fisicas que además tienen habilidades de combate. El fin del juego es enfrentarse con los pokemos de otro jugador, el ganador del combate recibe puntos de experiencia que sirven para aprender nuevas habilidades o, evolucionar al siguiente nivel.

Para el proceso de obtención de conocimiento que nos brinda la minería de datos, tilizaremos el dataset “pokedex.csv” descargado de la web https://www.kaggle.com/. En dicho dataset encontramos las caracteristicas de todos y cada uno de los pokemos de la seríe de anime y el videjuego del mismo nombre.

Para el proceso de miníera de datos vamos a implementar cada una de las fases del ciclo de vida de minado de datos y resolviendo las cuestiones asociadas a cada una.

1.- Definición de la tarea de minería de datos.

Vamos a precisar cual es el objetivo el proyecto, para ello, respondemos a la pregunta ¿Qué neceista el negocio?. El objetivo del proyecto es evaluar que tipo de pokemon es el más idoneo para ganar todos los combates y de ese modo poder crear el algoritmo del siguiente videojuego de la saga POKEMON, en el cual se equilibren las posibilidades de éxito en el videojuego independientemente del poquemon que escoja el jugador, y que de ese modo, el jugador pueda conseguir subir de nivel en el videojuego por su destreza jugando y no por el tipo de pokemon elegido. De este modo, la recompensa de juegar al videojuego será mayor al experimentar la satisfacción de conseguir el objetivo por méritos propios.

En este mismo punto, también, debemos responder a la siguiente pregunta ¿Qué datos tenemos/necesitamos?¿Están limpios?.

En primer lugar vamos a obtener todos los campos que componen el dataset y vamos a discernir los valiosos de los vanales.

path = 'pokedex.csv'
pokemonData <- read.csv(path, row.names=NULL)
structure = str(pokemonData)
## 'data.frame':    1215 obs. of  12 variables:
##  $ Image   : chr  "images/1.png" "images/2.png" "images/3.png" "images/4.png" ...
##  $ Index   : int  1 2 3 3 4 5 6 6 6 7 ...
##  $ Name    : chr  "Bulbasaur" "Ivysaur" "Venusaur" "Venusaur Mega Venusaur" ...
##  $ Type.1  : chr  "Grass" "Grass" "Grass" "Grass" ...
##  $ Type.2  : chr  "Poison" "Poison" "Poison" "Poison" ...
##  $ Total   : int  318 405 525 625 309 405 534 634 634 314 ...
##  $ HP      : int  45 60 80 80 39 58 78 78 78 44 ...
##  $ Attack  : int  49 62 82 100 52 64 84 130 104 48 ...
##  $ Defense : int  49 63 83 123 43 58 78 111 78 65 ...
##  $ SP..Atk.: int  65 80 100 122 60 80 109 130 159 50 ...
##  $ SP..Def : int  65 80 100 120 50 65 85 85 115 64 ...
##  $ Speed   : int  45 60 80 80 65 80 100 100 100 43 ...

Podemos observar que tenemos 1215 objetos, los cuales están definidos por 12 variables. A continuación, explicamos cada variable y su valor dentro del proceso de minería para obtener el conocimiento deseado, descartando aquellos que sean innecesarios.

  • Image, este campo nos muestra la imagen del pokemon. Puesto que necesitamos saber cuales son sus habilidades de combate, este campo es descartado por ser innecesario.
  • Index, este campo nos muestra la posición del pokemon dentro del listado de todos los pokemos. Este campo no define una habilidad de combate, es solamente un indice de ordenación y por ese motivo, es eliminado del proceso por ser innecesario.
  • Name, este campo identifica a cada pokemon de forma univoca, ya que, solo se dispone de un nombre por pokemon. Al identificar cada pokemon este campo se utilizara.
  • Type.1, es el tipo, familia o grupo al que pertenece un pokemon. Tiene importancia al haber familias o tipos que son superiores a otros y por lo tanto, será utilizado aunque su presencia en el proceso de minado está supeditado a que no produzca inconsistencias.
  • Type.2, es un segundo tipo, familio o grupo por el cual pueden ser agrupados los pokemos. Al igual que con la variable Type.1, su necesidad está relacionada con la posiblidad de producir algún problema en el minado.
  • Total, es el valor de la suma de todos los puntos de sus caracteristicas. Si bien, tiene elementos repetidos, es un valor descriptivo en combinación con los valores de las direferentes caracteristicas o destrezas. Se mantiene en el proceso.
  • HP, es el nivel de energía o la capacidad máxima de sufrir daño. Es fundamental en el proceso de minado, ya que es una caracteristica descriptiva del poder de un pokemon.
  • Attack, es el nivel de energía que se le resta al oponenete por ataque. Este dato es significativo, un pokemon con mucho poder de ataque puede eliminar a un pokemon que tenga un bajo nivel de HP en pocos golpes y demúestra, el pdoer de un pokemon sobre otro.
  • Defense, es el nivel de energía capaz de bloquear del ataque del oponenete. Este dato es significativo, hace a los pokemon resistentes y junto con un buen attacke, marca la direferencia.
  • SP..Atk y SP..Def, hacen referencia a los mismos valores anteriores, pero especifican un nivel de ataque o defensa superiores a los normales al ser especiales. Estas caracteristicas se activan de forma aleatoria o en momentos determinados. Aunque, puede darse el caso de no activarse en un combate, estas caracteristicas tienen su importancia al igual que las anteriores.
  • Speed, marca la velocidad de ataque y designa al pokemon que será el pimero en atacar. Es vital, al ser una caracteristica que da ventaja al pokemon con mayor velocidad.

A continuación, vamos a buscar valores nulos en las variables y tras ver los resultados volveremos a plantear la decisión de las variables seleccionadas.

print('NA')
## [1] "NA"
colSums(is.na(pokemonData))
##    Image    Index     Name   Type.1   Type.2    Total       HP   Attack 
##        0        0        0        0        0        0        0        0 
##  Defense SP..Atk.  SP..Def    Speed 
##        0        0        0        0
print('Blancos')
## [1] "Blancos"
colSums(pokemonData=="")
##    Image    Index     Name   Type.1   Type.2    Total       HP   Attack 
##        0        0        0        0      546        0        0        0 
##  Defense SP..Atk.  SP..Def    Speed 
##        0        0        0        0

Obsevamos que no hay valores nulos en el dataset, pero si existen 546 objetos que no tienen un segundo typo. De los 1215 objetos totales, hace un 44,94% de objetos que no disponen de un segundo typo. Ya que es un valor muy elevado y puedo provocar insconsistencias, no se considerá necesario y también se eliminara para los siguientes pasos del proceso de minado.

No vamos a buscar duplicados, aunque hay valores muy repetidos, su importancia es en conjunto y no por separado, con el resto de caracteristicas.

Los campos seleccionados para el minado serán los siguientes: Name, Type.1, HP, Attack, Defense, SP..Atk, SP..Def, Speed

Ahora entramos en la segunda fase en la cual, prepararemos los datos para el minado.

2.- Prepración de datos.

Para empezar vamos a eliminar las variables que no han sido seleccionadas, que son: Image, Index, Type.2 y Total. Una vez eliminado esos datos vamos a calcular nuevos datos de la siguiente manera: Debido a que las defensas protegen de gastar x puntos de HP, vamos a crear una columna que sea Capacity y que marcara el numero de ataques capaz de soportar con su nivel de defensa. Del mismo modo para calcular dicha capacidad se sumarán tanto las habilitades Defense y SP..Def y se dividira HP por el resultado de la suma

A continuación Sumamos la capacidad de ataque total que tiene cada pokemon y calcularemos la medía aritmetica, ya que cuando se produce un ataque especial, no se realice además una ataque normal. Con la medía cubrimos la posibilidad de que se pueda producir uno u otro.

Por último eliminaremos todos los campos utilizados para los calculos y dejaremos los campos calculados

Una vez reducida la dimensionalidad del dataset, vamos a normalizarla en un rango de [0,1] y para ello utilizaremos el procedimiento min-max, que consiste en dividir todos los valores de una variable por el máximo de ellos.

Con estos procesos hemos respondido a la pregunta ¿cómo organizamos los datos?

pokemonData<- pokemonData[, !(names(pokemonData) %in% c("Image", "Index","Type.2", "Total"))]
pokemonData$Capacity <- 0
pokemonData$Capacity <- pokemonData$HP / (pokemonData$Defense + pokemonData$SP..Def)
pokemonData$Power <- 0
pokemonData$Power <- (pokemonData$Attack + pokemonData$SP..Atk)/2
pokemonData<- pokemonData[, !(names(pokemonData) %in% c("Attack","HP","Defense","SP..Atk.","SP..Def"))]
pokemonData$Speed<- pokemonData$Speed / max(pokemonData$Speed)
pokemonData$Capacity <- pokemonData$Capacity/max(pokemonData$Capacity)
pokemonData$Power<- pokemonData$Power / max(pokemonData$Power)
print(pokemonData)
##                                   Name   Type.1 Speed    Capacity      Power
## 1                            Bulbasaur    Grass 0.225 0.153508772 0.31666667
## 2                              Ivysaur    Grass 0.300 0.163170163 0.39444444
## 3                             Venusaur    Grass 0.400 0.170006072 0.50555556
## 4               Venusaur Mega Venusaur    Grass 0.400 0.128029264 0.61666667
## 5                           Charmander     Fire 0.325 0.163082437 0.31111111
## 6                           Charmeleon     Fire 0.400 0.183378500 0.40000000
## 7                            Charizard     Fire 0.500 0.186094070 0.53611111
## 8           Charizard Mega Charizard X     Fire 0.500 0.154761905 0.72222222
## 9           Charizard Mega Charizard Y     Fire 0.500 0.157167530 0.73055556
## 10                            Squirtle    Water 0.215 0.132644272 0.27222222
## 11                           Wartortle    Water 0.290 0.143402778 0.35555556
## 12                           Blastoise    Water 0.390 0.149864499 0.46666667
## 13            Blastoise Mega Blastoise    Water 0.390 0.130732861 0.66111111
## 14                            Caterpie      Bug 0.225 0.318181818 0.13888889
## 15                             Metapod      Bug 0.150 0.243055556 0.12500000
## 16                          Butterfree      Bug 0.350 0.179487179 0.37500000
## 17                              Weedle      Bug 0.250 0.311111111 0.15277778
## 18                              Kakuna      Bug 0.175 0.233333333 0.13888889
## 19                            Beedrill      Bug 0.375 0.210648148 0.37500000
## 20              Beedrill Mega Beedrill      Bug 0.725 0.210648148 0.45833333
## 21                              Pidgey   Normal 0.280 0.207407407 0.22222222
## 22                           Pidgeotto   Normal 0.355 0.233333333 0.30555556
## 23                             Pidgeot   Normal 0.505 0.222605364 0.41666667
## 24                Pidgeot Mega Pidgeot   Normal 0.605 0.201736111 0.59722222
## 25                             Rattata   Normal 0.360 0.166666667 0.22500000
## 26              Rattata Alolan Rattata     Dark 0.360 0.166666667 0.22500000
## 27                            Raticate   Normal 0.485 0.164529915 0.36388889
## 28            Raticate Alolan Raticate     Dark 0.385 0.194444444 0.30833333
## 29                             Spearow   Normal 0.350 0.255009107 0.25277778
## 30                              Fearow   Normal 0.500 0.200617284 0.41944444
## 31                               Ekans   Poison 0.275 0.138888889 0.27777778
## 32                               Arbok   Poison 0.400 0.157657658 0.44444444
## 33                             Pikachu Electric 0.450 0.151234568 0.29166667
## 34             Pikachu Partner Pikachu Electric 0.600 0.159090909 0.43055556
## 35                              Raichu Electric 0.550 0.172839506 0.50000000
## 36                Raichu Alolan Raichu Electric 0.550 0.172839506 0.50000000
## 37                           Sandshrew   Ground 0.200 0.169082126 0.26388889
## 38          Sandshrew Alolan Sandshrew      Ice 0.200 0.155555556 0.23611111
## 39                           Sandslash   Ground 0.325 0.176767677 0.40277778
## 40          Sandslash Alolan Sandslash      Ice 0.325 0.157657658 0.34722222
## 41                            Nidoran♀   Poison 0.205 0.232487923 0.24166667
## 42                            Nidorina   Poison 0.280 0.223132969 0.32500000
## 43                           Nidoqueen   Poison 0.380 0.203488372 0.46388889
## 44                            Nidoran♂   Poison 0.250 0.223611111 0.26944444
## 45                            Nidorino   Poison 0.325 0.211805556 0.35277778
## 46                            Nidoking   Poison 0.425 0.207236842 0.51944444
## 47                            Clefairy    Fairy 0.175 0.240904621 0.29166667
## 48                            Clefable    Fairy 0.300 0.226653033 0.45833333
## 49                              Vulpix     Fire 0.325 0.140740741 0.25277778
## 50                Vulpix Alolan Vulpix      Ice 0.325 0.140740741 0.25277778
## 51                           Ninetales     Fire 0.500 0.162222222 0.43611111
## 52          Ninetales Alolan Ninetales      Ice 0.545 0.162222222 0.41111111
## 53                          Jigglypuff   Normal 0.100 0.993827160 0.25000000
## 54                          Wigglytuff   Normal 0.225 0.573099415 0.43055556
## 55                               Zubat   Poison 0.275 0.207407407 0.20833333
## 56                              Golbat   Poison 0.450 0.201149425 0.40277778
## 57                              Oddish    Grass 0.150 0.145833333 0.34722222
## 58                               Gloom    Grass 0.200 0.160919540 0.41666667
## 59                           Vileplume    Grass 0.250 0.166666667 0.52777778
## 60                               Paras      Bug 0.125 0.123737374 0.31944444
## 61                            Parasect      Bug 0.150 0.145833333 0.43055556
## 62                             Venonat      Bug 0.225 0.222222222 0.26388889
## 63                            Venomoth      Bug 0.450 0.201646091 0.43055556
## 64                             Diglett   Ground 0.475 0.055555556 0.25000000
## 65              Diglett Alolan Diglett   Ground 0.450 0.051851852 0.25000000
## 66                             Dugtrio   Ground 0.600 0.113425926 0.41666667
## 67              Dugtrio Alolan Dugtrio   Ground 0.550 0.104700855 0.41666667
## 68                              Meowth   Normal 0.450 0.207407407 0.23611111
## 69                Meowth Alolan Meowth     Dark 0.450 0.207407407 0.23611111
## 70              Meowth Galarian Meowth    Steel 0.200 0.204678363 0.29166667
## 71                             Persian   Normal 0.575 0.202222222 0.37500000
## 72              Persian Alolan Persian     Dark 0.575 0.202222222 0.37500000
## 73                             Psyduck    Water 0.275 0.198412698 0.32500000
## 74                             Golduck    Water 0.425 0.196905767 0.49166667
## 75                              Mankey Fighting 0.350 0.194444444 0.31944444
## 76                            Primeape Fighting 0.475 0.194444444 0.45833333
## 77                           Growlithe     Fire 0.300 0.225146199 0.38888889
## 78         Growlithe Hisuian Growlithe     Fire 0.275 0.245614035 0.38888889
## 79                            Arcanine     Fire 0.475 0.218750000 0.58333333
## 80           Arcanine Hisuian Arcanine     Fire 0.450 0.230902778 0.58333333
## 81                             Poliwag    Water 0.450 0.194444444 0.25000000
## 82                           Poliwhirl    Water 0.450 0.219806763 0.31944444
## 83                           Poliwrath    Water 0.350 0.189189189 0.45833333
## 84                                Abra  Psychic 0.450 0.138888889 0.34722222
## 85                             Kadabra  Psychic 0.525 0.155555556 0.43055556
## 86                            Alakazam  Psychic 0.600 0.152777778 0.51388889
## 87              Alakazam Mega Alakazam  Psychic 0.750 0.125816993 0.62500000
## 88                              Machop Fighting 0.175 0.320261438 0.31944444
## 89                             Machoke Fighting 0.225 0.239316239 0.41666667
## 90                             Machamp Fighting 0.275 0.212121212 0.54166667
## 91                          Bellsprout    Grass 0.200 0.299145299 0.40277778
## 92                          Weepinbell    Grass 0.275 0.266081871 0.48611111
## 93                          Victreebel    Grass 0.350 0.230452675 0.56944444
## 94                           Tentacool    Water 0.350 0.115226337 0.25000000
## 95                          Tentacruel    Water 0.500 0.168168168 0.41666667
## 96                             Geodude     Rock 0.100 0.119658120 0.30555556
## 97              Geodude Alolan Geodude     Rock 0.100 0.119658120 0.30555556
## 98                            Graveler     Rock 0.175 0.133680556 0.38888889
## 99            Graveler Alolan Graveler     Rock 0.175 0.133680556 0.38888889
## 100                              Golem     Rock 0.225 0.159544160 0.48611111
## 101                 Golem Alolan Golem     Rock 0.225 0.159544160 0.48611111
## 102                             Ponyta     Fire 0.450 0.162037037 0.41666667
## 103             Ponyta Galarian Ponyta  Psychic 0.450 0.162037037 0.41666667
## 104                           Rapidash     Fire 0.525 0.168518519 0.50000000
## 105         Rapidash Galarian Rapidash  Psychic 0.525 0.168518519 0.50000000
## 106                           Slowpoke    Water 0.075 0.333333333 0.29166667
## 107         Slowpoke Galarian Slowpoke  Psychic 0.075 0.333333333 0.29166667
## 108                            Slowbro    Water 0.150 0.194444444 0.48611111
## 109               Slowbro Mega Slowbro    Water 0.150 0.142094017 0.56944444
## 110           Slowbro Galarian Slowbro   Poison 0.150 0.223905724 0.55555556
## 111                          Magnemite Electric 0.225 0.077777778 0.36111111
## 112                           Magneton Electric 0.350 0.117845118 0.50000000
## 113                         Farfetch'd   Normal 0.300 0.172839506 0.41111111
## 114     Farfetch'd Galarian Farfetch'd Fighting 0.275 0.172839506 0.42500000
## 115                              Doduo   Normal 0.375 0.170138889 0.33333333
## 116                             Dodrio   Normal 0.550 0.179487179 0.47222222
## 117                               Seel    Water 0.225 0.202222222 0.25000000
## 118                            Dewgong    Water 0.350 0.200000000 0.38888889
## 119                             Grimer   Poison 0.125 0.311111111 0.33333333
## 120               Grimer Alolan Grimer   Poison 0.125 0.311111111 0.33333333
## 121                                Muk   Poison 0.250 0.233333333 0.47222222
## 122                     Muk Alolan Muk   Poison 0.250 0.233333333 0.47222222
## 123                           Shellder    Water 0.200 0.093333333 0.30555556
## 124                           Cloyster    Water 0.350 0.086419753 0.50000000
## 125                             Gastly    Ghost 0.400 0.179487179 0.37500000
## 126                            Haunter    Ghost 0.475 0.175000000 0.45833333
## 127                             Gengar    Ghost 0.550 0.172839506 0.54166667
## 128                 Gengar Mega Gengar    Ghost 0.650 0.133333333 0.65277778
## 129                               Onix     Rock 0.350 0.066395664 0.20833333
## 130                            Drowzee  Psychic 0.210 0.172839506 0.25277778
## 131                              Hypno  Psychic 0.335 0.178678679 0.40555556
## 132                             Krabby    Water 0.250 0.101449275 0.36111111
## 133                            Kingler    Water 0.375 0.129629630 0.50000000
## 134                            Voltorb Electric 0.500 0.148148148 0.23611111
## 135            Voltorb Hisuian Voltorb Electric 0.500 0.148148148 0.23611111
## 136                          Electrode Electric 0.750 0.155555556 0.36111111
## 137        Electrode Hisuian Electrode Electric 0.750 0.155555556 0.36111111
## 138                          Exeggcute    Grass 0.200 0.186666667 0.27777778
## 139                          Exeggutor    Grass 0.275 0.230902778 0.61111111
## 140         Exeggutor Alolan Exeggutor    Grass 0.225 0.230902778 0.63888889
## 141                             Cubone   Ground 0.175 0.134099617 0.25000000
## 142                            Marowak   Ground 0.225 0.122807018 0.36111111
## 143             Marowak Alolan Marowak     Fire 0.225 0.122807018 0.36111111
## 144                          Hitmonlee Fighting 0.435 0.119291070 0.43055556
## 145                         Hitmonchan Fighting 0.380 0.102880658 0.38888889
## 146                          Lickitung   Normal 0.150 0.233333333 0.31944444
## 147                            Koffing   Poison 0.175 0.111111111 0.34722222
## 148                            Weezing   Poison 0.300 0.133040936 0.48611111
## 149           Weezing Galarian Weezing   Poison 0.300 0.133040936 0.48611111
## 150                            Rhyhorn   Ground 0.125 0.248888889 0.31944444
## 151                             Rhydon   Ground 0.200 0.247474747 0.48611111
## 152                            Chansey   Normal 0.250 0.883838384 0.11111111
## 153                            Tangela    Grass 0.300 0.163082437 0.43055556
## 154                         Kangaskhan   Normal 0.450 0.255208333 0.37500000
## 155         Kangaskhan Mega Kangaskhan   Normal 0.500 0.204166667 0.51388889
## 156                             Horsea    Water 0.300 0.122807018 0.30555556
## 157                             Seadra    Water 0.425 0.152777778 0.44444444
## 158                            Goldeen    Water 0.315 0.159090909 0.28333333
## 159                            Seaking    Water 0.340 0.214559387 0.43611111
## 160                             Staryu    Water 0.425 0.106060606 0.31944444
## 161                            Starmie    Water 0.575 0.137254902 0.48611111
## 162                           Mr. Mime  Psychic 0.450 0.084084084 0.40277778
## 163         Mr. Mime Galarian Mr. Mime      Ice 0.500 0.125448029 0.43055556
## 164                            Scyther      Bug 0.525 0.170138889 0.45833333
## 165                               Jynx      Ice 0.475 0.194444444 0.45833333
## 166                         Electabuzz Electric 0.525 0.178012520 0.49444444
## 167                             Magmar     Fire 0.465 0.178012520 0.54166667
## 168                             Pinsir      Bug 0.425 0.148692810 0.50000000
## 169                 Pinsir Mega Pinsir      Bug 0.525 0.120370370 0.61111111
## 170                             Tauros   Normal 0.550 0.176767677 0.38888889
## 171                Tauros Combat Breed Fighting 0.500 0.166666667 0.38888889
## 172                 Tauros Blaze Breed Fighting 0.500 0.166666667 0.38888889
## 173                  Tauros Aqua Breed Fighting 0.500 0.166666667 0.38888889
## 174                           Magikarp    Water 0.400 0.103703704 0.06944444
## 175                           Gyarados    Water 0.405 0.206393544 0.51388889
## 176             Gyarados Mega Gyarados    Water 0.405 0.154579265 0.62500000
## 177                             Lapras    Water 0.300 0.288888889 0.47222222
## 178                              Ditto   Normal 0.240 0.194444444 0.26666667
## 179                              Eevee   Normal 0.275 0.185990338 0.27777778
## 180                Eevee Partner Eevee   Normal 0.375 0.163082437 0.38888889
## 181                           Vaporeon    Water 0.325 0.326164875 0.48611111
## 182                            Jolteon Electric 0.650 0.163082437 0.48611111
## 183                            Flareon     Fire 0.325 0.148692810 0.62500000
## 184                            Porygon   Normal 0.200 0.174329502 0.40277778
## 185                            Omanyte     Rock 0.175 0.087813620 0.36111111
## 186                            Omastar     Rock 0.275 0.139601140 0.48611111
## 187                             Kabuto     Rock 0.275 0.086419753 0.37500000
## 188                           Kabutops     Rock 0.400 0.133333333 0.50000000
## 189                         Aerodactyl     Rock 0.650 0.222222222 0.45833333
## 190         Aerodactyl Mega Aerodactyl     Rock 0.750 0.172839506 0.56944444
## 191                            Snorlax   Normal 0.150 0.355555556 0.48611111
## 192                           Articuno      Ice 0.425 0.155555556 0.50000000
## 193         Articuno Galarian Articuno  Psychic 0.475 0.189189189 0.58333333
## 194                             Zapdos Electric 0.500 0.200000000 0.59722222
## 195             Zapdos Galarian Zapdos Fighting 0.500 0.194444444 0.58333333
## 196                            Moltres     Fire 0.450 0.200000000 0.62500000
## 197           Moltres Galarian Moltres     Dark 0.450 0.162790698 0.51388889
## 198                            Dratini   Dragon 0.250 0.167836257 0.31666667
## 199                          Dragonair   Dragon 0.350 0.175720165 0.42777778
## 200                          Dragonite   Dragon 0.400 0.181481481 0.65000000
## 201                             Mewtwo  Psychic 0.650 0.229012346 0.73333333
## 202               Mewtwo Mega Mewtwo X  Psychic 0.650 0.206111111 0.95555556
## 203               Mewtwo Mega Mewtwo Y  Psychic 0.700 0.216959064 0.95555556
## 204                                Mew  Psychic 0.500 0.194444444 0.55555556
## 205                          Chikorita    Grass 0.225 0.134615385 0.27222222
## 206                            Bayleef    Grass 0.300 0.145833333 0.34722222
## 207                           Meganium    Grass 0.400 0.155555556 0.45833333
## 208                          Cyndaquil     Fire 0.325 0.163082437 0.31111111
## 209                            Quilava     Fire 0.400 0.183378500 0.40000000
## 210                         Typhlosion     Fire 0.500 0.186094070 0.53611111
## 211      Typhlosion Hisuian Typhlosion     Fire 0.475 0.174164963 0.56388889
## 212                           Totodile    Water 0.215 0.173611111 0.30277778
## 213                           Croconaw    Water 0.290 0.176767677 0.38611111
## 214                         Feraligatr    Water 0.390 0.180631451 0.51111111
## 215                            Sentret   Normal 0.100 0.172292546 0.22500000
## 216                             Furret   Normal 0.450 0.277777778 0.33611111
## 217                           Hoothoot   Normal 0.250 0.271317829 0.18333333
## 218                            Noctowl   Normal 0.350 0.266362253 0.37777778
## 219                             Ledyba      Bug 0.275 0.141414141 0.16666667
## 220                             Ledian      Bug 0.425 0.133680556 0.25000000
## 221                           Spinarak      Bug 0.150 0.194444444 0.27777778
## 222                            Ariados      Bug 0.200 0.194444444 0.41666667
## 223                             Crobat   Poison 0.650 0.206597222 0.44444444
## 224                           Chinchou    Water 0.335 0.310283688 0.26111111
## 225                            Lanturn    Water 0.335 0.362769486 0.37222222
## 226                              Pichu Electric 0.300 0.155555556 0.20833333
## 227                             Cleffa    Fairy 0.075 0.234270415 0.19444444
## 228                          Igglybuff   Normal 0.075 1.000000000 0.19444444
## 229                             Togepi    Fairy 0.100 0.104700855 0.16666667
## 230                            Togetic    Fairy 0.200 0.112573099 0.33333333
## 231                               Natu  Psychic 0.350 0.172839506 0.33333333
## 232                               Xatu  Psychic 0.475 0.180555556 0.47222222
## 233                             Mareep Electric 0.175 0.251633987 0.29166667
## 234                            Flaaffy Electric 0.225 0.236714976 0.37500000
## 235                           Ampharos Electric 0.275 0.200000000 0.52777778
## 236             Ampharos Mega Ampharos Electric 0.225 0.162790698 0.72222222
## 237                          Bellossom    Grass 0.250 0.149572650 0.47222222
## 238                             Marill    Water 0.200 0.272222222 0.11111111
## 239                          Azumarill    Water 0.250 0.243055556 0.30555556
## 240                          Sudowoodo     Rock 0.150 0.151234568 0.36111111
## 241                           Politoed    Water 0.350 0.200000000 0.45833333
## 242                             Hoppip    Grass 0.250 0.143274854 0.19444444
## 243                           Skiploom    Grass 0.400 0.185990338 0.25000000
## 244                           Jumpluff    Grass 0.550 0.176767677 0.30555556
## 245                              Aipom   Normal 0.425 0.194444444 0.30555556
## 246                            Sunkern    Grass 0.150 0.194444444 0.16666667
## 247                           Sunflora    Grass 0.150 0.208333333 0.50000000
## 248                              Yanma      Bug 0.475 0.280864198 0.38888889
## 249                             Wooper    Water 0.075 0.305555556 0.19444444
## 250              Wooper Paldean Wooper   Poison 0.075 0.305555556 0.19444444
## 251                           Quagsire    Water 0.175 0.246296296 0.41666667
## 252                             Espeon  Psychic 0.550 0.163082437 0.54166667
## 253                            Umbreon     Dark 0.325 0.153935185 0.34722222
## 254                            Murkrow     Dark 0.455 0.277777778 0.47222222
## 255                           Slowking    Water 0.150 0.194444444 0.48611111
## 256         Slowking Galarian Slowking   Poison 0.150 0.194444444 0.48611111
## 257                         Misdreavus    Ghost 0.425 0.160919540 0.40277778
## 258                              Unown  Psychic 0.240 0.194444444 0.40000000
## 259                          Wobbuffet  Psychic 0.165 0.636973180 0.18333333
## 260                          Girafarig   Normal 0.425 0.209401709 0.47222222
## 261                             Pineco      Bug 0.075 0.155555556 0.27777778
## 262                         Forretress      Bug 0.200 0.145833333 0.41666667
## 263                          Dunsparce   Normal 0.225 0.288065844 0.37500000
## 264                             Gligar   Ground 0.425 0.148692810 0.30555556
## 265                            Steelix    Steel 0.150 0.110062893 0.38888889
## 266               Steelix Mega Steelix    Steel 0.150 0.089743590 0.50000000
## 267                           Snubbull    Fairy 0.150 0.259259259 0.33333333
## 268                           Granbull    Fairy 0.225 0.259259259 0.50000000
## 269                           Qwilfish    Water 0.425 0.180555556 0.41666667
## 270          Qwilfish Hisuian Qwilfish     Dark 0.425 0.180555556 0.41666667
## 271                             Scizor      Bug 0.325 0.151234568 0.51388889
## 272                 Scizor Mega Scizor      Bug 0.375 0.113425926 0.59722222
## 273                            Shuckle      Bug 0.025 0.016908213 0.05555556
## 274                          Heracross      Bug 0.425 0.183006536 0.45833333
## 275           Heracross Mega Heracross      Bug 0.375 0.141414141 0.62500000
## 276                            Sneasel     Dark 0.575 0.164529915 0.36111111
## 277            Sneasel Hisuian Sneasel Fighting 0.575 0.164529915 0.36111111
## 278                          Teddiursa   Normal 0.200 0.233333333 0.36111111
## 279                           Ursaring   Normal 0.275 0.233333333 0.56944444
## 280                             Slugma     Fire 0.100 0.194444444 0.30555556
## 281                           Magcargo     Fire 0.150 0.116666667 0.38888889
## 282                             Swinub      Ice 0.250 0.277777778 0.22222222
## 283                          Piloswine      Ice 0.250 0.277777778 0.44444444
## 284                            Corsola    Water 0.175 0.133040936 0.33333333
## 285           Corsola Galarian Corsola    Ghost 0.150 0.116666667 0.33333333
## 286                           Remoraid    Water 0.325 0.194444444 0.36111111
## 287                          Octillery    Water 0.225 0.194444444 0.58333333
## 288                           Delibird      Ice 0.375 0.194444444 0.33333333
## 289                            Mantine    Water 0.350 0.157407407 0.33333333
## 290                           Skarmory    Steel 0.350 0.120370370 0.33333333
## 291                           Houndour     Dark 0.325 0.218750000 0.38888889
## 292                           Houndoom     Dark 0.475 0.224358974 0.55555556
## 293             Houndoom Mega Houndoom     Dark 0.575 0.162037037 0.63888889
## 294                            Kingdra    Water 0.425 0.153508772 0.52777778
## 295                             Phanpy   Ground 0.200 0.350000000 0.27777778
## 296                            Donphan   Ground 0.250 0.194444444 0.50000000
## 297                           Porygon2   Normal 0.300 0.178678679 0.51388889
## 298                           Stantler   Normal 0.425 0.223534558 0.50000000
## 299                           Smeargle   Normal 0.375 0.267361111 0.11111111
## 300                            Tyrogue Fighting 0.175 0.194444444 0.19444444
## 301                          Hitmontop Fighting 0.350 0.094850949 0.36111111
## 302                           Smoochum      Ice 0.325 0.218750000 0.31944444
## 303                             Elekid Electric 0.475 0.190217391 0.35555556
## 304                              Magby     Fire 0.415 0.190217391 0.40277778
## 305                            Miltank   Normal 0.500 0.211111111 0.33333333
## 306                            Blissey   Normal 0.275 0.683908046 0.23611111
## 307                             Raikou Electric 0.575 0.200000000 0.55555556
## 308                              Entei     Fire 0.500 0.279513889 0.56944444
## 309                            Suicune    Water 0.425 0.169082126 0.45833333
## 310                           Larvitar     Rock 0.205 0.194444444 0.30277778
## 311                            Pupitar     Rock 0.255 0.194444444 0.41388889
## 312                          Tyranitar     Rock 0.305 0.185185185 0.63611111
## 313           Tyranitar Mega Tyranitar     Rock 0.355 0.144032922 0.71944444
## 314                              Lugia  Psychic 0.550 0.145148670 0.50000000
## 315                              Ho-oh     Fire 0.450 0.168943534 0.66666667
## 316                             Celebi  Psychic 0.500 0.194444444 0.55555556
## 317                            Treecko    Grass 0.350 0.172839506 0.30555556
## 318                            Grovyle    Grass 0.475 0.176767677 0.41666667
## 319                           Sceptile    Grass 0.600 0.181481481 0.52777778
## 320             Sceptile Mega Sceptile    Grass 0.725 0.170138889 0.70833333
## 321                            Torchic     Fire 0.225 0.194444444 0.36111111
## 322                          Combusken     Fire 0.275 0.194444444 0.47222222
## 323                           Blaziken     Fire 0.400 0.222222222 0.63888889
## 324             Blaziken Mega Blaziken     Fire 0.500 0.194444444 0.80555556
## 325                             Mudkip    Water 0.200 0.194444444 0.33333333
## 326                          Marshtomp    Water 0.250 0.194444444 0.40277778
## 327                           Swampert    Water 0.300 0.216049383 0.54166667
## 328             Swampert Mega Swampert    Water 0.350 0.176767677 0.68055556
## 329                          Poochyena     Dark 0.175 0.209401709 0.23611111
## 330                          Mightyena     Dark 0.350 0.209401709 0.41666667
## 331                          Zigzagoon   Normal 0.300 0.180216802 0.16666667
## 332       Zigzagoon Galarian Zigzagoon     Dark 0.300 0.180216802 0.16666667
## 333                            Linoone   Normal 0.500 0.248633880 0.33333333
## 334           Linoone Galarian Linoone     Dark 0.500 0.248633880 0.33333333
## 335                            Wurmple      Bug 0.100 0.269230769 0.18055556
## 336                            Silcoon      Bug 0.075 0.243055556 0.16666667
## 337                          Beautifly      Bug 0.325 0.233333333 0.47222222
## 338                            Cascoon      Bug 0.075 0.243055556 0.16666667
## 339                             Dustox      Bug 0.325 0.145833333 0.27777778
## 340                              Lotad    Water 0.150 0.194444444 0.19444444
## 341                             Lombre    Water 0.250 0.194444444 0.30555556
## 342                           Ludicolo    Water 0.350 0.183006536 0.44444444
## 343                             Seedot    Grass 0.150 0.194444444 0.19444444
## 344                            Nuzleaf    Grass 0.300 0.340277778 0.36111111
## 345                            Shiftry    Grass 0.400 0.291666667 0.52777778
## 346                            Taillow   Normal 0.425 0.259259259 0.23611111
## 347                            Swellow   Normal 0.625 0.212121212 0.44444444
## 348                            Wingull    Water 0.425 0.259259259 0.23611111
## 349                           Pelipper    Water 0.325 0.137254902 0.40277778
## 350                              Ralts  Psychic 0.200 0.181481481 0.19444444
## 351                             Kirlia  Psychic 0.250 0.164197531 0.27777778
## 352                          Gardevoir  Psychic 0.400 0.146913580 0.52777778
## 353           Gardevoir Mega Gardevoir  Psychic 0.500 0.132222222 0.69444444
## 354                            Surskit      Bug 0.325 0.185185185 0.22222222
## 355                         Masquerain      Bug 0.400 0.189043210 0.44444444
## 356                          Shroomish    Grass 0.175 0.194444444 0.22222222
## 357                            Breloom    Grass 0.350 0.166666667 0.52777778
## 358                            Slakoth   Normal 0.150 0.245614035 0.26388889
## 359                           Vigoroth   Normal 0.450 0.230452675 0.37500000
## 360                            Slaking   Normal 0.500 0.353535354 0.70833333
## 361                            Nincada      Bug 0.200 0.100462963 0.20833333
## 362                            Ninjask      Bug 0.800 0.249707602 0.38888889
## 363                           Shedinja      Bug 0.200 0.005185185 0.33333333
## 364                            Whismur   Normal 0.140 0.541062802 0.28333333
## 365                            Loudred   Normal 0.240 0.379844961 0.39444444
## 366                            Exploud   Normal 0.340 0.297385621 0.50555556
## 367                           Makuhita Fighting 0.125 0.466666667 0.22222222
## 368                           Hariyama Fighting 0.250 0.466666667 0.44444444
## 369                            Azurill   Normal 0.100 0.243055556 0.11111111
## 370                           Nosepass     Rock 0.150 0.051851852 0.25000000
## 371                             Skitty   Normal 0.250 0.243055556 0.22222222
## 372                           Delcatty   Normal 0.450 0.226851852 0.33333333
## 373                            Sableye     Dark 0.250 0.138888889 0.38888889
## 374               Sableye Mega Sableye     Dark 0.100 0.081018519 0.47222222
## 375                             Mawile    Steel 0.250 0.138888889 0.38888889
## 376                 Mawile Mega Mawile    Steel 0.250 0.088383838 0.44444444
## 377                               Aron    Steel 0.150 0.138888889 0.30555556
## 378                             Lairon    Steel 0.200 0.122807018 0.38888889
## 379                             Aggron    Steel 0.250 0.113425926 0.47222222
## 380                 Aggron Mega Aggron    Steel 0.250 0.087813620 0.55555556
## 381                           Meditite Fighting 0.300 0.106060606 0.22222222
## 382                           Medicham Fighting 0.400 0.155555556 0.33333333
## 383             Medicham Mega Medicham Fighting 0.500 0.137254902 0.50000000
## 384                          Electrike Electric 0.325 0.194444444 0.30555556
## 385                          Manectric Electric 0.525 0.226851852 0.50000000
## 386           Manectric Mega Manectric Electric 0.675 0.170138889 0.58333333
## 387                             Plusle Electric 0.475 0.202898551 0.37500000
## 388                              Minun Electric 0.475 0.172839506 0.31944444
## 389                            Volbeat      Bug 0.425 0.157986111 0.33333333
## 390                           Illumise      Bug 0.425 0.157986111 0.33333333
## 391                            Roselia    Grass 0.325 0.155555556 0.44444444
## 392                             Gulpin   Poison 0.200 0.256813417 0.23888889
## 393                             Swalot   Poison 0.275 0.234270415 0.40555556
## 394                           Carvanha    Water 0.325 0.437500000 0.43055556
## 395                           Sharpedo    Water 0.475 0.340277778 0.59722222
## 396             Sharpedo Mega Sharpedo    Water 0.525 0.201646091 0.69444444
## 397                            Wailmer    Water 0.300 0.722222222 0.38888889
## 398                            Wailord    Water 0.300 0.734567901 0.50000000
## 399                              Numel     Fire 0.175 0.274509804 0.34722222
## 400                           Camerupt     Fire 0.200 0.187739464 0.56944444
## 401             Camerupt Mega Camerupt     Fire 0.100 0.132791328 0.73611111
## 402                            Torkoal     Fire 0.100 0.129629630 0.47222222
## 403                             Spoink  Psychic 0.300 0.202898551 0.26388889
## 404                            Grumpig  Psychic 0.400 0.177777778 0.37500000
## 405                             Spinda   Normal 0.300 0.194444444 0.33333333
## 406                           Trapinch   Ground 0.050 0.194444444 0.40277778
## 407                            Vibrava   Ground 0.350 0.194444444 0.33333333
## 408                             Flygon   Ground 0.500 0.194444444 0.50000000
## 409                             Cacnea    Grass 0.175 0.243055556 0.47222222
## 410                           Cacturne    Grass 0.275 0.226851852 0.63888889
## 411                             Swablu   Normal 0.250 0.129629630 0.22222222
## 412                            Altaria   Dragon 0.400 0.149572650 0.38888889
## 413               Altaria Mega Altaria   Dragon 0.400 0.135658915 0.61111111
## 414                           Zangoose   Normal 0.450 0.236574074 0.48611111
## 415                            Seviper   Poison 0.325 0.236574074 0.55555556
## 416                           Lunatone     Rock 0.350 0.233333333 0.41666667
## 417                            Solrock     Rock 0.350 0.233333333 0.41666667
## 418                           Barboach    Water 0.300 0.231481481 0.26111111
## 419                           Whiscash    Water 0.300 0.297067901 0.42777778
## 420                           Corphish    Water 0.175 0.167222222 0.36111111
## 421                          Crawdaunt    Water 0.275 0.175000000 0.58333333
## 422                             Baltoy   Ground 0.275 0.124444444 0.22222222
## 423                            Claydol   Ground 0.375 0.103703704 0.38888889
## 424                             Lileep     Rock 0.115 0.156504065 0.28333333
## 425                            Cradily     Rock 0.215 0.163943355 0.45000000
## 426                            Anorith     Rock 0.375 0.175000000 0.37500000
## 427                            Armaldo     Rock 0.225 0.162037037 0.54166667
## 428                             Feebas    Water 0.400 0.103703704 0.06944444
## 429                            Milotic    Water 0.405 0.181100218 0.44444444
## 430                           Castform   Normal 0.350 0.194444444 0.38888889
## 431                Castform Sunny Form     Fire 0.350 0.194444444 0.38888889
## 432                Castform Rainy Form    Water 0.350 0.194444444 0.38888889
## 433                Castform Snowy Form      Ice 0.350 0.194444444 0.38888889
## 434                            Kecleon   Normal 0.200 0.122807018 0.41666667
## 435                            Shuppet    Ghost 0.225 0.251633987 0.38333333
## 436                            Banette    Ghost 0.325 0.194444444 0.55000000
## 437               Banette Mega Banette    Ghost 0.375 0.157524613 0.71666667
## 438                            Duskull    Ghost 0.125 0.043209877 0.19444444
## 439                           Dusclops    Ghost 0.125 0.059829060 0.36111111
## 440                            Tropius    Grass 0.255 0.226470588 0.38888889
## 441                           Chimecho  Psychic 0.325 0.171568627 0.40277778
## 442                              Absol     Dark 0.375 0.210648148 0.56944444
## 443                   Absol Mega Absol     Dark 0.575 0.210648148 0.73611111
## 444                             Wynaut  Psychic 0.115 0.384837963 0.12777778
## 445                            Snorunt      Ice 0.250 0.194444444 0.27777778
## 446                             Glalie      Ice 0.400 0.194444444 0.44444444
## 447                 Glalie Mega Glalie      Ice 0.500 0.194444444 0.66666667
## 448                             Spheal      Ice 0.125 0.272222222 0.26388889
## 449                             Sealeo      Ice 0.225 0.250000000 0.37500000
## 450                            Walrein      Ice 0.325 0.237654321 0.48611111
## 451                           Clamperl    Water 0.160 0.097222222 0.38333333
## 452                            Huntail    Water 0.260 0.118827160 0.55000000
## 453                           Gorebyss    Water 0.260 0.118827160 0.55000000
## 454                          Relicanth    Water 0.275 0.199430199 0.37500000
## 455                            Luvdisc    Water 0.485 0.139351852 0.19444444
## 456                              Bagon   Dragon 0.250 0.194444444 0.31944444
## 457                            Shelgon   Dragon 0.250 0.168518519 0.43055556
## 458                          Salamence   Dragon 0.500 0.230902778 0.68055556
## 459           Salamence Mega Salamence   Dragon 0.600 0.167929293 0.73611111
## 460                             Beldum    Steel 0.150 0.111111111 0.25000000
## 461                             Metang    Steel 0.250 0.129629630 0.36111111
## 462                          Metagross    Steel 0.350 0.141414141 0.63888889
## 463           Metagross Mega Metagross    Steel 0.550 0.119658120 0.69444444
## 464                           Regirock     Rock 0.250 0.103703704 0.41666667
## 465                             Regice      Ice 0.250 0.103703704 0.41666667
## 466                          Registeel    Steel 0.250 0.103703704 0.41666667
## 467                             Latias   Dragon 0.550 0.141414141 0.52777778
## 468                 Latias Mega Latias   Dragon 0.550 0.115226337 0.66666667
## 469                             Latios   Dragon 0.550 0.163742690 0.61111111
## 470                 Latios Mega Latios   Dragon 0.550 0.141414141 0.80555556
## 471                             Kyogre    Water 0.450 0.169082126 0.69444444
## 472               Kyogre Primal Kyogre    Water 0.450 0.155555556 0.91666667
## 473                            Groudon   Ground 0.450 0.169082126 0.69444444
## 474             Groudon Primal Groudon   Ground 0.450 0.155555556 0.91666667
## 475                           Rayquaza   Dragon 0.475 0.226851852 0.83333333
## 476             Rayquaza Mega Rayquaza   Dragon 0.575 0.204166667 1.00000000
## 477                            Jirachi    Steel 0.500 0.194444444 0.55555556
## 478                Deoxys Normal Forme  Psychic 0.750 0.194444444 0.83333333
## 479                Deoxys Attack Forme  Psychic 0.750 0.486111111 1.00000000
## 480               Deoxys Defense Forme  Psychic 0.450 0.060763889 0.38888889
## 481                 Deoxys Speed Forme  Psychic 0.900 0.108024691 0.52777778
## 482                            Turtwig    Grass 0.155 0.179738562 0.31388889
## 483                             Grotle    Grass 0.180 0.194444444 0.40000000
## 484                           Torterra    Grass 0.280 0.194444444 0.51111111
## 485                           Chimchar     Fire 0.305 0.194444444 0.32222222
## 486                           Monferno     Fire 0.405 0.239316239 0.43333333
## 487                          Infernape     Fire 0.540 0.208137715 0.57777778
## 488                             Piplup    Water 0.200 0.189092762 0.31111111
## 489                           Prinplup    Water 0.250 0.172839506 0.40833333
## 490                           Empoleon    Water 0.300 0.172839506 0.54722222
## 491                             Starly   Normal 0.300 0.259259259 0.23611111
## 492                           Staravia   Normal 0.400 0.237654321 0.31944444
## 493                          Staraptor   Normal 0.500 0.254273504 0.47222222
## 494                             Bidoof   Normal 0.155 0.286805556 0.22222222
## 495                            Bibarel   Normal 0.355 0.256018519 0.38888889
## 496                          Kricketot      Bug 0.125 0.175474255 0.13888889
## 497                         Kricketune      Bug 0.325 0.293572985 0.38888889
## 498                              Shinx Electric 0.225 0.257352941 0.29166667
## 499                              Luxio Electric 0.300 0.238095238 0.40277778
## 500                             Luxray Electric 0.350 0.196905767 0.59722222
## 501                              Budew    Grass 0.275 0.148148148 0.22222222
## 502                           Roserade    Grass 0.450 0.137254902 0.54166667
## 503                           Cranidos     Rock 0.290 0.372222222 0.43055556
## 504                          Rampardos     Rock 0.290 0.342929293 0.63888889
## 505                           Shieldon     Rock 0.150 0.056634304 0.23333333
## 506                          Bastiodon     Rock 0.150 0.076252723 0.27500000
## 507                  Burmy Plant Cloak      Bug 0.180 0.172839506 0.16111111
## 508                  Burmy Sandy Cloak      Bug 0.180 0.172839506 0.16111111
## 509                  Burmy Trash Cloak      Bug 0.180 0.172839506 0.16111111
## 510               Wormadam Plant Cloak      Bug 0.180 0.122807018 0.38333333
## 511               Wormadam Sandy Cloak      Bug 0.180 0.122807018 0.38333333
## 512               Wormadam Trash Cloak      Bug 0.180 0.122807018 0.38333333
## 513                             Mothim      Bug 0.330 0.272222222 0.52222222
## 514                             Combee      Bug 0.350 0.138888889 0.16666667
## 515                          Vespiquen      Bug 0.200 0.133442266 0.44444444
## 516                          Pachirisu Electric 0.475 0.145833333 0.25000000
## 517                             Buizel    Water 0.425 0.329059829 0.34722222
## 518                           Floatzel    Water 0.575 0.314814815 0.52777778
## 519                            Cherubi    Grass 0.175 0.178571429 0.26944444
## 520                            Cherrim    Grass 0.425 0.183933934 0.40833333
## 521                            Shellos    Water 0.170 0.268686869 0.29166667
## 522                          Gastrodon    Water 0.195 0.287777778 0.48611111
## 523                            Ambipom   Normal 0.575 0.220959596 0.44444444
## 524                           Drifloon    Ghost 0.350 0.448717949 0.30555556
## 525                           Drifblim    Ghost 0.400 0.595238095 0.47222222
## 526                            Buneary   Normal 0.425 0.213888889 0.30555556
## 527                            Lopunny   Normal 0.525 0.140432099 0.36111111
## 528               Lopunny Mega Lopunny   Normal 0.675 0.133040936 0.52777778
## 529                          Mismagius    Ghost 0.525 0.141414141 0.45833333
## 530                          Honchkrow     Dark 0.355 0.373931624 0.63888889
## 531                            Glameow   Normal 0.425 0.241209564 0.26944444
## 532                            Purugly   Normal 0.560 0.224480578 0.40555556
## 533                          Chingling  Psychic 0.225 0.175000000 0.26388889
## 534                             Stunky   Poison 0.370 0.278409091 0.28888889
## 535                           Skuntank   Poison 0.420 0.312934028 0.45555556
## 536                            Bronzor    Steel 0.115 0.128875969 0.13333333
## 537                           Bronzong    Steel 0.165 0.112308429 0.46666667
## 538                             Bonsly     Rock 0.050 0.138888889 0.25000000
## 539                           Mime Jr.  Psychic 0.300 0.057613169 0.26388889
## 540                            Happiny   Normal 0.150 0.555555556 0.05555556
## 541                             Chatot   Normal 0.455 0.339719029 0.43611111
## 542                          Spiritomb    Ghost 0.175 0.090020576 0.51111111
## 543                              Gible   Dragon 0.210 0.250617284 0.30555556
## 544                             Gabite   Dragon 0.410 0.220370370 0.38888889
## 545                           Garchomp   Dragon 0.510 0.233333333 0.58333333
## 546             Garchomp Mega Garchomp   Dragon 0.460 0.200000000 0.80555556
## 547                           Munchlax   Normal 0.025 0.420000000 0.34722222
## 548                              Riolu Fighting 0.300 0.194444444 0.29166667
## 549                            Lucario Fighting 0.450 0.194444444 0.62500000
## 550               Lucario Mega Lucario Fighting 0.560 0.172292546 0.79166667
## 551                         Hippopotas   Ground 0.160 0.220370370 0.30555556
## 552                          Hippowdon   Ground 0.235 0.221052632 0.50000000
## 553                            Skorupi   Poison 0.325 0.107279693 0.22222222
## 554                            Drapion   Poison 0.475 0.147147147 0.41666667
## 555                           Croagunk   Poison 0.250 0.233333333 0.33888889
## 556                          Toxicroak   Poison 0.425 0.248290598 0.53333333
## 557                          Carnivine    Grass 0.230 0.199845679 0.52777778
## 558                            Finneon    Water 0.330 0.162867996 0.27222222
## 559                           Lumineon    Water 0.455 0.165637860 0.38333333
## 560                            Mantyke    Water 0.250 0.102941176 0.22222222
## 561                             Snover    Grass 0.200 0.212121212 0.34444444
## 562                          Abomasnow    Grass 0.300 0.218750000 0.51111111
## 563           Abomasnow Mega Abomasnow    Grass 0.150 0.166666667 0.73333333
## 564                            Weavile     Dark 0.625 0.181481481 0.45833333
## 565                          Magnezone Electric 0.300 0.132791328 0.55555556
## 566                         Lickilicky   Normal 0.250 0.225146199 0.45833333
## 567                          Rhyperior   Ground 0.200 0.241741742 0.54166667
## 568                          Tangrowth    Grass 0.250 0.222222222 0.58333333
## 569                         Electivire Electric 0.475 0.191885965 0.60555556
## 570                          Magmortar     Fire 0.415 0.180041152 0.61111111
## 571                           Togekiss    Fairy 0.400 0.157407407 0.47222222
## 572                            Yanmega      Bug 0.475 0.235524257 0.53333333
## 573                            Leafeon    Grass 0.475 0.129629630 0.47222222
## 574                            Glaceon      Ice 0.325 0.123306233 0.52777778
## 575                            Gliscor   Ground 0.475 0.145833333 0.38888889
## 576                          Mamoswine      Ice 0.400 0.305555556 0.55555556
## 577                          Porygon-Z   Normal 0.450 0.227969349 0.59722222
## 578                            Gallade  Psychic 0.400 0.146913580 0.52777778
## 579               Gallade Mega Gallade  Psychic 0.550 0.125925926 0.63888889
## 580                          Probopass     Rock 0.200 0.079096045 0.36111111
## 581                           Dusknoir    Ghost 0.225 0.064814815 0.45833333
## 582                           Froslass      Ice 0.550 0.194444444 0.44444444
## 583                              Rotom Electric 0.455 0.126262626 0.40277778
## 584                   Rotom Heat Rotom Electric 0.430 0.090861890 0.47222222
## 585                   Rotom Wash Rotom Electric 0.430 0.090861890 0.47222222
## 586                  Rotom Frost Rotom Electric 0.430 0.090861890 0.47222222
## 587                    Rotom Fan Rotom Electric 0.430 0.090861890 0.47222222
## 588                    Rotom Mow Rotom Electric 0.430 0.090861890 0.47222222
## 589                               Uxie  Psychic 0.475 0.112179487 0.41666667
## 590                            Mesprit  Psychic 0.400 0.148148148 0.58333333
## 591                              Azelf  Psychic 0.575 0.208333333 0.69444444
## 592                             Dialga    Steel 0.450 0.176767677 0.75000000
## 593                Dialga Origin Forme    Steel 0.450 0.162037037 0.69444444
## 594                             Palkia    Water 0.500 0.159090909 0.75000000
## 595                Palkia Origin Forme    Water 0.600 0.159090909 0.69444444
## 596                            Heatran     Fire 0.385 0.166928721 0.61111111
## 597                          Regigigas   Normal 0.500 0.194444444 0.66666667
## 598             Giratina Altered Forme    Ghost 0.450 0.243055556 0.55555556
## 599              Giratina Origin Forme    Ghost 0.450 0.291666667 0.66666667
## 600                          Cresselia  Psychic 0.425 0.202898551 0.40277778
## 601                             Phione    Water 0.400 0.194444444 0.44444444
## 602                            Manaphy    Water 0.500 0.194444444 0.55555556
## 603                            Darkrai     Dark 0.625 0.151234568 0.62500000
## 604                 Shaymin Land Forme    Grass 0.500 0.194444444 0.55555556
## 605                  Shaymin Sky Forme    Grass 0.635 0.259259259 0.61944444
## 606                             Arceus   Normal 0.600 0.194444444 0.66666667
## 607                            Victini  Psychic 0.500 0.194444444 0.55555556
## 608                              Snivy    Grass 0.315 0.159090909 0.25000000
## 609                            Servine    Grass 0.415 0.155555556 0.33333333
## 610                          Serperior    Grass 0.565 0.153508772 0.41666667
## 611                              Tepig     Fire 0.225 0.280864198 0.30000000
## 612                            Pignite     Fire 0.275 0.318181818 0.45277778
## 613                             Emboar     Fire 0.325 0.329059829 0.61944444
## 614                           Oshawott    Water 0.225 0.237654321 0.32777778
## 615                             Dewott    Water 0.300 0.243055556 0.43888889
## 616                           Samurott    Water 0.350 0.238351254 0.57777778
## 617          Samurott Hisuian Samurott    Water 0.425 0.241379310 0.57777778
## 618                             Patrat   Normal 0.210 0.224358974 0.25000000
## 619                            Watchog   Normal 0.385 0.169082126 0.40277778
## 620                           Lillipup   Normal 0.275 0.194444444 0.23611111
## 621                            Herdier   Normal 0.300 0.194444444 0.31944444
## 622                          Stoutland   Normal 0.400 0.183641975 0.43055556
## 623                           Purrloin     Dark 0.330 0.215465465 0.27777778
## 624                            Liepard     Dark 0.530 0.248888889 0.48888889
## 625                            Pansage    Grass 0.320 0.202546296 0.29444444
## 626                           Simisage    Grass 0.505 0.231481481 0.54444444
## 627                            Pansear     Fire 0.320 0.202546296 0.29444444
## 628                           Simisear     Fire 0.505 0.231481481 0.54444444
## 629                            Panpour    Water 0.320 0.202546296 0.29444444
## 630                           Simipour    Water 0.505 0.231481481 0.54444444
## 631                              Munna  Psychic 0.120 0.295555556 0.25555556
## 632                           Musharna  Psychic 0.145 0.250617284 0.45000000
## 633                             Pidove   Normal 0.215 0.243055556 0.25277778
## 634                          Tranquill   Normal 0.325 0.231837607 0.35277778
## 635                           Unfezant   Normal 0.465 0.230452675 0.50000000
## 636                            Blitzle Electric 0.380 0.273437500 0.30555556
## 637                          Zebstrika Electric 0.580 0.231481481 0.50000000
## 638                         Roggenrola     Rock 0.075 0.194444444 0.27777778
## 639                            Boldore     Rock 0.100 0.187739464 0.43055556
## 640                           Gigalith     Rock 0.125 0.157407407 0.54166667
## 641                             Woobat  Psychic 0.360 0.293927649 0.27777778
## 642                            Swoobat  Psychic 0.570 0.236868687 0.37222222
## 643                            Drilbur   Ground 0.340 0.274509804 0.31944444
## 644                          Excadrill   Ground 0.440 0.342222222 0.51388889
## 645                             Audino   Normal 0.250 0.232881137 0.33333333
## 646                 Audino Mega Audino   Normal 0.250 0.158950617 0.38888889
## 647                            Timburr Fighting 0.175 0.324074074 0.29166667
## 648                            Gurdurr Fighting 0.200 0.244855967 0.40277778
## 649                         Conkeldurr Fighting 0.225 0.255208333 0.54166667
## 650                            Tympole    Water 0.320 0.243055556 0.27777778
## 651                          Palpitoad    Water 0.345 0.265151515 0.36111111
## 652                         Seismitoad    Water 0.370 0.272222222 0.50000000
## 653                              Throh Fighting 0.225 0.274509804 0.36111111
## 654                               Sawk Fighting 0.425 0.194444444 0.43055556
## 655                           Sewaddle      Bug 0.210 0.134615385 0.25833333
## 656                           Swadloon      Bug 0.210 0.125816993 0.31388889
## 657                           Leavanny      Bug 0.460 0.182291667 0.48055556
## 658                           Venipede      Bug 0.285 0.119047619 0.20833333
## 659                         Whirlipede      Bug 0.235 0.087390762 0.26388889
## 660                          Scolipede      Bug 0.560 0.147679325 0.43055556
## 661                           Cottonee    Grass 0.330 0.141414141 0.17777778
## 662                         Whimsicott    Grass 0.580 0.145833333 0.40000000
## 663                            Petilil    Grass 0.150 0.175000000 0.29166667
## 664                          Lilligant    Grass 0.450 0.181481481 0.47222222
## 665        Lilligant Hisuian Lilligant    Grass 0.525 0.181481481 0.43055556
## 666          Basculin Red-Striped Form    Water 0.490 0.226851852 0.47777778
## 667         Basculin Blue-Striped Form    Water 0.490 0.226851852 0.47777778
## 668        Basculin White-Striped Form    Water 0.490 0.226851852 0.47777778
## 669                            Sandile   Ground 0.325 0.277777778 0.29722222
## 670                           Krokorok   Ground 0.370 0.259259259 0.35277778
## 671                         Krookodile   Ground 0.460 0.246296296 0.50555556
## 672                           Darumaka     Fire 0.250 0.302469136 0.29166667
## 673         Darumaka Galarian Darumaka      Ice 0.250 0.302469136 0.29166667
## 674           Darmanitan Standard Mode     Fire 0.475 0.371212121 0.47222222
## 675                Darmanitan Zen Mode     Fire 0.275 0.194444444 0.47222222
## 676  Darmanitan Galarian Standard Mode      Ice 0.475 0.371212121 0.47222222
## 677       Darmanitan Galarian Zen Mode      Ice 0.675 0.371212121 0.52777778
## 678                           Maractus    Grass 0.300 0.217661692 0.53333333
## 679                            Dwebble      Bug 0.275 0.162037037 0.27777778
## 680                            Crustle      Bug 0.225 0.136111111 0.47222222
## 681                            Scraggy     Dark 0.240 0.138888889 0.30555556
## 682                            Scrafty     Dark 0.290 0.109903382 0.37500000
## 683                           Sigilyph  Psychic 0.485 0.175000000 0.44722222
## 684                             Yamask    Ghost 0.150 0.098518519 0.23611111
## 685             Yamask Galarian Yamask   Ground 0.150 0.098518519 0.23611111
## 686                         Cofagrigus    Ghost 0.150 0.090222222 0.40277778
## 687                           Tirtouga    Water 0.110 0.141891892 0.36388889
## 688                         Carracosta    Water 0.160 0.145342312 0.53055556
## 689                             Archen     Rock 0.350 0.237654321 0.51666667
## 690                           Archeops     Rock 0.550 0.224358974 0.70000000
## 691                           Trubbish   Poison 0.325 0.156810036 0.25000000
## 692                           Garbodor   Poison 0.375 0.189701897 0.43055556
## 693                              Zorua     Dark 0.325 0.194444444 0.40277778
## 694                Zorua Hisuian Zorua   Normal 0.350 0.170138889 0.40277778
## 695                            Zoroark     Dark 0.525 0.194444444 0.62500000
## 696            Zoroark Hisuian Zoroark   Normal 0.550 0.178240741 0.62500000
## 697                           Minccino   Normal 0.375 0.267361111 0.25000000
## 698                           Cinccino   Normal 0.575 0.243055556 0.44444444
## 699                            Gothita  Psychic 0.225 0.152173913 0.23611111
## 700                          Gothorita  Psychic 0.275 0.150537634 0.33333333
## 701                         Gothitelle  Psychic 0.325 0.132791328 0.41666667
## 702                            Solosis  Psychic 0.100 0.194444444 0.37500000
## 703                            Duosion  Psychic 0.150 0.229797980 0.45833333
## 704                          Reuniclus  Psychic 0.150 0.267361111 0.52777778
## 705                           Ducklett    Water 0.275 0.241111111 0.24444444
## 706                             Swanna    Water 0.490 0.231481481 0.48333333
## 707                          Vanillite      Ice 0.220 0.127272727 0.31944444
## 708                          Vanillish      Ice 0.295 0.141666667 0.40277778
## 709                          Vanilluxe      Ice 0.395 0.153395062 0.56944444
## 710                           Deerling   Normal 0.375 0.233333333 0.27777778
## 711                           Sawsbuck   Normal 0.475 0.222222222 0.44444444
## 712                             Emolga Electric 0.515 0.178240741 0.41666667
## 713                         Karrablast      Bug 0.300 0.216049383 0.31944444
## 714                         Escavalier      Bug 0.100 0.129629630 0.54166667
## 715                            Foongus    Grass 0.075 0.268333333 0.30555556
## 716                          Amoonguss    Grass 0.150 0.295555556 0.47222222
## 717                           Frillish    Water 0.200 0.158436214 0.29166667
## 718                          Jellicent    Water 0.300 0.222222222 0.40277778
## 719                          Alomomola    Water 0.325 0.513333333 0.31944444
## 720                             Joltik      Bug 0.325 0.194444444 0.28888889
## 721                         Galvantula      Bug 0.540 0.226851852 0.48333333
## 722                          Ferroseed    Grass 0.050 0.096672944 0.20555556
## 723                         Ferrothorn    Grass 0.100 0.116509222 0.41111111
## 724                              Klink    Steel 0.150 0.119658120 0.27777778
## 725                              Klang    Steel 0.250 0.129629630 0.41666667
## 726                          Klinklang    Steel 0.450 0.116666667 0.47222222
## 727                             Tynamo Electric 0.300 0.170138889 0.27777778
## 728                          Eelektrik Electric 0.200 0.180555556 0.44444444
## 729                         Eelektross Electric 0.250 0.206597222 0.61111111
## 730                             Elgyem  Psychic 0.150 0.194444444 0.38888889
## 731                           Beheeyem  Psychic 0.200 0.171568627 0.55555556
## 732                            Litwick    Ghost 0.100 0.176767677 0.26388889
## 733                            Lampent    Ghost 0.275 0.194444444 0.37500000
## 734                         Chandelure    Ghost 0.400 0.129629630 0.55555556
## 735                               Axew   Dragon 0.285 0.178888889 0.32500000
## 736                            Fraxure   Dragon 0.335 0.213888889 0.43611111
## 737                            Haxorus   Dragon 0.485 0.184722222 0.57500000
## 738                            Cubchoo      Ice 0.200 0.267361111 0.36111111
## 739                            Beartic      Ice 0.250 0.230902778 0.55555556
## 740                          Cryogonal      Ice 0.525 0.168168168 0.40277778
## 741                            Shelmet      Bug 0.125 0.129629630 0.22222222
## 742                           Accelgor      Bug 0.725 0.311111111 0.47222222
## 743                           Stunfisk   Ground 0.160 0.231633273 0.40833333
## 744         Stunfisk Galarian Stunfisk   Ground 0.160 0.231633273 0.40833333
## 745                            Mienfoo Fighting 0.325 0.175000000 0.38888889
## 746                           Mienshao Fighting 0.525 0.210648148 0.61111111
## 747                          Druddigon   Dragon 0.240 0.166358025 0.50000000
## 748                             Golett   Ground 0.175 0.229444444 0.30277778
## 749                             Golurk   Ground 0.275 0.216319444 0.49722222
## 750                           Pawniard     Dark 0.300 0.159090909 0.34722222
## 751                            Bisharp     Dark 0.350 0.148692810 0.51388889
## 752                         Bouffalant   Normal 0.275 0.194444444 0.41666667
## 753                            Rufflet   Normal 0.300 0.272222222 0.33333333
## 754                           Braviary   Normal 0.400 0.259259259 0.50000000
## 755          Braviary Hisuian Braviary  Psychic 0.325 0.305555556 0.54166667
## 756                            Vullaby     Dark 0.300 0.194444444 0.27777778
## 757                          Mandibuzz     Dark 0.400 0.213888889 0.33333333
## 758                            Heatmor     Fire 0.325 0.250420875 0.56111111
## 759                             Durant      Bug 0.545 0.140972222 0.43611111
## 760                              Deino     Dark 0.190 0.202222222 0.30555556
## 761                           Zweilous     Dark 0.290 0.200000000 0.41666667
## 762                          Hydreigon     Dark 0.490 0.198765432 0.63888889
## 763                           Larvesta      Bug 0.300 0.194444444 0.37500000
## 764                          Volcarona      Bug 0.500 0.194444444 0.54166667
## 765                           Cobalion    Steel 0.540 0.176064124 0.50000000
## 766                          Terrakion     Rock 0.540 0.196604938 0.55833333
## 767                           Virizion    Grass 0.540 0.176064124 0.50000000
## 768           Tornadus Incarnate Forme   Flying 0.555 0.204814815 0.66666667
## 769             Tornadus Therian Forme   Flying 0.605 0.180718954 0.58333333
## 770          Thundurus Incarnate Forme Electric 0.555 0.204814815 0.66666667
## 771            Thundurus Therian Forme Electric 0.505 0.204814815 0.69444444
## 772                           Reshiram   Dragon 0.450 0.176767677 0.75000000
## 773                             Zekrom   Dragon 0.450 0.176767677 0.75000000
## 774           Landorus Incarnate Forme   Ground 0.505 0.203594771 0.66666667
## 775             Landorus Therian Forme   Ground 0.455 0.203594771 0.69444444
## 776                             Kyurem   Dragon 0.475 0.270061728 0.72222222
## 777                Kyurem White Kyurem   Dragon 0.475 0.255847953 0.80555556
## 778                Kyurem Black Kyurem   Dragon 0.475 0.255847953 0.80555556
## 779               Keldeo Ordinary Form    Water 0.540 0.196604938 0.55833333
## 780               Keldeo Resolute Form    Water 0.540 0.196604938 0.55833333
## 781                Meloetta Aria Forme   Normal 0.450 0.189701897 0.56944444
## 782           Meloetta Pirouette Forme   Normal 0.640 0.232867598 0.56944444
## 783                           Genesect      Bug 0.495 0.145321637 0.66666667
## 784                            Chespin    Grass 0.190 0.197979798 0.30277778
## 785                          Quilladin    Grass 0.285 0.155047204 0.37222222
## 786                         Chesnaught    Grass 0.320 0.173716864 0.50277778
## 787                           Fennekin     Fire 0.300 0.155555556 0.29722222
## 788                            Braixen     Fire 0.365 0.179253472 0.41388889
## 789                            Delphox     Fire 0.520 0.169573643 0.50833333
## 790                            Froakie    Water 0.355 0.189814815 0.32777778
## 791                          Frogadier    Water 0.485 0.194444444 0.40555556
## 792                           Greninja    Water 0.610 0.202898551 0.55000000
## 793              Greninja Ash-Greninja    Water 0.660 0.202898551 0.82777778
## 794                           Bunnelby   Normal 0.285 0.199699700 0.18888889
## 795                          Diggersby   Normal 0.390 0.214646465 0.29444444
## 796                         Fletchling   Normal 0.310 0.216049383 0.25000000
## 797                        Fletchinder     Fire 0.420 0.225337487 0.35833333
## 798                         Talonflame     Fire 0.630 0.216666667 0.43055556
## 799                         Scatterbug      Bug 0.175 0.227350427 0.17222222
## 800                             Spewpa      Bug 0.145 0.194444444 0.13611111
## 801                           Vivillon      Bug 0.445 0.311111111 0.39444444
## 802                             Litleo     Fire 0.360 0.215277778 0.34166667
## 803                             Pyroar     Fire 0.530 0.242351047 0.49166667
## 804                            Flabébé    Fairy 0.210 0.145009416 0.27500000
## 805                            Floette    Fairy 0.260 0.144827586 0.33333333
## 806                            Florges    Fairy 0.375 0.136636637 0.49166667
## 807                             Skiddo    Grass 0.260 0.244444444 0.35277778
## 808                             Gogoat    Grass 0.340 0.334498834 0.54722222
## 809                            Pancham Fighting 0.215 0.236868687 0.35555556
## 810                            Pangoro Fighting 0.290 0.247949292 0.53611111
## 811                            Furfrou   Normal 0.510 0.194444444 0.40277778
## 812                             Espurr  Psychic 0.340 0.211500975 0.30833333
## 813                      Meowstic Male  Psychic 0.520 0.183297948 0.36388889
## 814                    Meowstic Female  Psychic 0.520 0.183297948 0.36388889
## 815                            Honedge    Steel 0.140 0.127737226 0.31944444
## 816                           Doublade    Steel 0.175 0.115298716 0.43055556
## 817             Aegislash Shield Forme    Steel 0.300 0.083333333 0.27777778
## 818              Aegislash Blade Forme    Steel 0.300 0.233333333 0.77777778
## 819                           Spritzee    Fairy 0.115 0.242666667 0.31944444
## 820                         Aromatisse    Fairy 0.145 0.243961353 0.47500000
## 821                            Swirlix    Fairy 0.245 0.196025294 0.29722222
## 822                           Slurpuff    Fairy 0.360 0.198067633 0.45833333
## 823                              Inkay     Dark 0.225 0.208193042 0.25277778
## 824                            Malamar     Dark 0.365 0.205180641 0.44444444
## 825                            Binacle     Rock 0.250 0.132791328 0.25277778
## 826                         Barbaracle     Rock 0.340 0.139303483 0.44166667
## 827                             Skrelp   Poison 0.150 0.162037037 0.33333333
## 828                           Dragalge   Poison 0.220 0.118675013 0.47777778
## 829                          Clauncher    Water 0.220 0.155555556 0.30833333
## 830                          Clawitzer    Water 0.295 0.155994978 0.53611111
## 831                         Helioptile Electric 0.350 0.225146199 0.27500000
## 832                          Heliolisk Electric 0.545 0.165144597 0.45555556
## 833                             Tyrunt     Rock 0.240 0.184881603 0.37222222
## 834                          Tyrantrum     Rock 0.355 0.179151061 0.52777778
## 835                             Amaura     Rock 0.230 0.264995084 0.35000000
## 836                            Aurorus     Rock 0.290 0.291666667 0.48888889
## 837                            Sylveon    Fairy 0.300 0.189458689 0.48611111
## 838                           Hawlucha Fighting 0.590 0.219806763 0.46111111
## 839                            Dedenne Electric 0.505 0.210125448 0.38611111
## 840                            Carbink     Rock 0.250 0.064814815 0.27777778
## 841                              Goomy   Dragon 0.200 0.159090909 0.29166667
## 842                            Sliggoo   Dragon 0.300 0.159303882 0.43888889
## 843            Sliggoo Hisuian Sliggoo    Steel 0.200 0.115079365 0.43888889
## 844                             Goodra   Dragon 0.400 0.159090909 0.58333333
## 845              Goodra Hisuian Goodra    Steel 0.300 0.124444444 0.58333333
## 846                             Klefki    Steel 0.375 0.124531835 0.44444444
## 847                           Phantump    Ghost 0.190 0.154835391 0.33333333
## 848                          Trevenant    Ghost 0.280 0.209212377 0.48611111
## 849             Pumpkaboo Average Size    Ghost 0.255 0.152444444 0.30555556
## 850               Pumpkaboo Small Size    Ghost 0.280 0.136888889 0.30555556
## 851               Pumpkaboo Large Size    Ghost 0.230 0.168000000 0.30555556
## 852               Pumpkaboo Super Size    Ghost 0.205 0.183555556 0.30555556
## 853             Gourgeist Average Size    Ghost 0.420 0.128313593 0.41111111
## 854               Gourgeist Small Size    Ghost 0.495 0.108573040 0.39722222
## 855               Gourgeist Large Size    Ghost 0.345 0.148054146 0.42500000
## 856               Gourgeist Super Size    Ghost 0.270 0.167794698 0.43888889
## 857                           Bergmite      Ice 0.140 0.178240741 0.28055556
## 858                            Avalugg      Ice 0.140 0.160628019 0.44722222
## 859            Avalugg Hisuian Avalugg      Ice 0.190 0.167929293 0.44722222
## 860                             Noibat   Flying 0.275 0.207407407 0.20833333
## 861                            Noivern   Flying 0.615 0.206597222 0.46388889
## 862                            Xerneas    Fairy 0.495 0.253886010 0.72777778
## 863                            Yveltal     Dark 0.495 0.253886010 0.72777778
## 864                  Zygarde 50% Forme   Dragon 0.475 0.194444444 0.50277778
## 865                  Zygarde 10% Forme   Dragon 0.575 0.134615385 0.44722222
## 866             Zygarde Complete Forme   Dragon 0.425 0.388888889 0.53055556
## 867                            Diancie     Rock 0.250 0.064814815 0.55555556
## 868               Diancie Mega Diancie     Rock 0.550 0.088383838 0.88888889
## 869               Hoopa Hoopa Confined  Psychic 0.350 0.163742690 0.72222222
## 870                Hoopa Hoopa Unbound  Psychic 0.400 0.163742690 0.91666667
## 871                          Volcanion     Fire 0.350 0.148148148 0.66666667
## 872                             Rowlet    Grass 0.210 0.251851852 0.29166667
## 873                            Dartrix    Grass 0.260 0.209195402 0.40277778
## 874                          Decidueye    Grass 0.350 0.173333333 0.57500000
## 875        Decidueye Hisuian Decidueye    Grass 0.300 0.195555556 0.57500000
## 876                             Litten     Fire 0.350 0.218750000 0.34722222
## 877                           Torracat     Fire 0.450 0.252777778 0.45833333
## 878                         Incineroar     Fire 0.300 0.205246914 0.54166667
## 879                            Popplio    Water 0.200 0.176767677 0.33333333
## 880                            Brionne    Water 0.250 0.155555556 0.44444444
## 881                          Primarina    Water 0.300 0.163742690 0.55555556
## 882                            Pikipek   Normal 0.325 0.226851852 0.29166667
## 883                           Trumbeak   Normal 0.375 0.213888889 0.34722222
## 884                          Toucannon   Normal 0.300 0.207407407 0.54166667
## 885                            Yungoos   Normal 0.225 0.311111111 0.27777778
## 886                           Gumshoos   Normal 0.225 0.285185185 0.45833333
## 887                            Grubbin      Bug 0.230 0.203086420 0.32500000
## 888                          Charjabug      Bug 0.180 0.130392157 0.38055556
## 889                           Vikavolt      Bug 0.215 0.181481481 0.59722222
## 890                         Crabrawler Fighting 0.315 0.175747863 0.34444444
## 891                       Crabominable Fighting 0.215 0.261959877 0.53888889
## 892               Oricorio Baile Style     Fire 0.465 0.208333333 0.46666667
## 893             Oricorio Pom-Pom Style Electric 0.465 0.208333333 0.46666667
## 894                Oricorio Pa'u Style  Psychic 0.465 0.208333333 0.46666667
## 895               Oricorio Sensu Style    Ghost 0.465 0.208333333 0.46666667
## 896                           Cutiefly      Bug 0.420 0.194444444 0.27777778
## 897                           Ribombee      Bug 0.620 0.179487179 0.41666667
## 898                           Rockruff     Rock 0.300 0.218750000 0.26388889
## 899        Rockruff Own Tempo Rockruff     Rock 0.300 0.218750000 0.26388889
## 900               Lycanroc Midday Form     Rock 0.560 0.224358974 0.47222222
## 901             Lycanroc Midnight Form     Rock 0.410 0.220370370 0.47222222
## 902                 Lycanroc Dusk Form     Rock 0.550 0.224358974 0.47777778
## 903               Wishiwashi Solo Form    Water 0.200 0.388888889 0.12500000
## 904             Wishiwashi School Form    Water 0.150 0.066037736 0.77777778
## 905                           Mareanie   Poison 0.225 0.170565302 0.26666667
## 906                            Toxapex   Poison 0.175 0.066137566 0.32222222
## 907                            Mudbray   Ground 0.225 0.217777778 0.40277778
## 908                           Mudsdale   Ground 0.175 0.210210210 0.50000000
## 909                           Dewpider    Water 0.135 0.119175627 0.22222222
## 910                          Araquanid    Water 0.210 0.118055556 0.33333333
## 911                           Fomantis    Grass 0.175 0.222222222 0.29166667
## 912                           Lurantis    Grass 0.225 0.151234568 0.51388889
## 913                           Morelull    Grass 0.075 0.119658120 0.27777778
## 914                          Shiinotic    Grass 0.150 0.129629630 0.37500000
## 915                           Salandit   Poison 0.385 0.233333333 0.31944444
## 916                           Salazzle   Poison 0.585 0.220370370 0.48611111
## 917                            Stufful   Normal 0.250 0.272222222 0.33333333
## 918                             Bewear   Normal 0.300 0.333333333 0.50000000
## 919                          Bounsweet    Grass 0.160 0.214912281 0.16666667
## 920                            Steenee    Grass 0.310 0.210648148 0.22222222
## 921                           Tsareena    Grass 0.360 0.142857143 0.47222222
## 922                             Comfey    Fairy 0.500 0.099166667 0.37222222
## 923                           Oranguru   Normal 0.300 0.184210526 0.41666667
## 924                          Passimian Fighting 0.400 0.259259259 0.44444444
## 925                             Wimpod      Bug 0.400 0.138888889 0.15277778
## 926                          Golisopod      Bug 0.200 0.126811594 0.51388889
## 927                          Sandygast    Ghost 0.075 0.171111111 0.34722222
## 928                          Palossand    Ghost 0.175 0.178678679 0.48611111
## 929                          Pyukumuku    Water 0.025 0.082264957 0.25000000
## 930                         Type: Null   Normal 0.295 0.194444444 0.52777778
## 931                           Silvally   Normal 0.475 0.194444444 0.52777778
## 932                 Minior Meteor Form     Rock 0.300 0.116666667 0.33333333
## 933                   Minior Core Form     Rock 0.600 0.194444444 0.55555556
## 934                             Komala   Normal 0.325 0.157986111 0.52777778
## 935                         Turtonator     Fire 0.180 0.106060606 0.46944444
## 936                         Togedemaru Electric 0.480 0.185866013 0.38333333
## 937                            Mimikyu    Ghost 0.480 0.115615616 0.38888889
## 938                            Bruxish    Water 0.460 0.188888889 0.48611111
## 939                             Drampa   Normal 0.180 0.172348485 0.54166667
## 940                           Dhelmise    Ghost 0.200 0.143274854 0.60277778
## 941                           Jangmo-o   Dragon 0.225 0.159090909 0.27777778
## 942                           Hakamo-o   Dragon 0.325 0.133680556 0.38888889
## 943                            Kommo-o   Dragon 0.425 0.126811594 0.58333333
## 944                          Tapu Koko Electric 0.650 0.170138889 0.58333333
## 945                          Tapu Lele  Psychic 0.475 0.143274854 0.59722222
## 946                          Tapu Bulu    Grass 0.375 0.129629630 0.59722222
## 947                          Tapu Fini    Water 0.425 0.111111111 0.47222222
## 948                             Cosmog  Psychic 0.185 0.269713262 0.16111111
## 949                            Cosmoem  Psychic 0.185 0.063825276 0.16111111
## 950                           Solgaleo  Psychic 0.485 0.271825397 0.69444444
## 951                             Lunala  Psychic 0.485 0.271825397 0.69444444
## 952                           Nihilego     Rock 0.515 0.238139825 0.50000000
## 953                           Buzzwole      Bug 0.395 0.216724537 0.53333333
## 954                          Pheromosa      Bug 0.755 0.373123123 0.76111111
## 955                          Xurkitree Electric 0.415 0.227308294 0.72777778
## 956                         Celesteela    Steel 0.305 0.184912854 0.57777778
## 957                            Kartana    Grass 0.545 0.141632373 0.66666667
## 958                           Guzzlord     Dark 0.215 0.818134172 0.55000000
## 959                           Necrozma  Psychic 0.395 0.198538012 0.65000000
## 960        Necrozma Dusk Mane Necrozma  Psychic 0.385 0.159839925 0.75000000
## 961       Necrozma Dawn Wings Necrozma  Psychic 0.385 0.159839925 0.75000000
## 962            Necrozma Ultra Necrozma  Psychic 0.645 0.194444444 0.92777778
## 963                           Magearna    Steel 0.325 0.135265700 0.62500000
## 964                          Marshadow Fighting 0.625 0.205882353 0.59722222
## 965                            Poipole   Poison 0.365 0.194444444 0.40555556
## 966                          Naganadel   Poison 0.605 0.194444444 0.55555556
## 967                          Stakataka     Rock 0.065 0.076032764 0.51111111
## 968                        Blacephalon     Fire 0.535 0.156144781 0.77222222
## 969                            Zeraora Electric 0.715 0.220788530 0.59444444
## 970                             Meltan    Steel 0.170 0.178888889 0.33333333
## 971                           Melmetal    Steel 0.170 0.252403846 0.61944444
## 972                            Grookey    Grass 0.325 0.216049383 0.29166667
## 973                           Thwackey    Grass 0.400 0.209401709 0.38888889
## 974                          Rillaboom    Grass 0.425 0.243055556 0.51388889
## 975                          Scorbunny     Fire 0.345 0.243055556 0.30833333
## 976                             Raboot     Fire 0.470 0.210648148 0.39166667
## 977                          Cinderace     Fire 0.595 0.207407407 0.50277778
## 978                             Sobble    Water 0.350 0.243055556 0.30555556
## 979                           Drizzile    Water 0.450 0.229797980 0.43055556
## 980                           Inteleon    Water 0.600 0.209401709 0.58333333
## 981                            Skwovet   Normal 0.125 0.302469136 0.25000000
## 982                           Greedent   Normal 0.100 0.274509804 0.41666667
## 983                           Rookidee   Flying 0.285 0.211111111 0.22222222
## 984                        Corvisquire   Flying 0.385 0.240404040 0.30555556
## 985                        Corviknight   Flying 0.335 0.200584795 0.38888889
## 986                            Blipbug      Bug 0.225 0.149572650 0.12500000
## 987                            Dottler      Bug 0.150 0.114379085 0.23611111
## 988                           Orbeetle      Bug 0.450 0.101449275 0.34722222
## 989                             Nickit     Dark 0.250 0.194444444 0.20833333
## 990                            Thievul     Dark 0.450 0.181481481 0.40277778
## 991                         Gossifleur    Grass 0.050 0.129629630 0.22222222
## 992                           Eldegoss    Grass 0.300 0.111111111 0.36111111
## 993                             Wooloo   Normal 0.240 0.163333333 0.22222222
## 994                            Dubwool   Normal 0.440 0.147368421 0.38888889
## 995                            Chewtle    Water 0.220 0.220959596 0.28333333
## 996                            Drednaw    Water 0.370 0.221518987 0.45277778
## 997                             Yamper Electric 0.130 0.229444444 0.23611111
## 998                            Boltund Electric 0.605 0.223611111 0.50000000
## 999                           Rolycoly     Rock 0.150 0.116666667 0.22222222
## 1000                            Carkol     Rock 0.250 0.194444444 0.33333333
## 1001                         Coalossal     Rock 0.150 0.203703704 0.44444444
## 1002                            Applin    Grass 0.100 0.129629630 0.22222222
## 1003                           Flapple    Grass 0.350 0.194444444 0.56944444
## 1004                          Appletun    Grass 0.150 0.267361111 0.51388889
## 1005                         Silicobra   Ground 0.230 0.161777778 0.25555556
## 1006                        Sandaconda   Ground 0.355 0.143589744 0.47777778
## 1007                         Cramorant   Flying 0.425 0.181481481 0.47222222
## 1008                          Arrokuda    Water 0.330 0.227777778 0.28611111
## 1009                       Barraskewda    Water 0.680 0.215656566 0.50833333
## 1010                             Toxel Electric 0.200 0.222222222 0.25555556
## 1011             Toxtricity Amped Form Electric 0.375 0.208333333 0.58888889
## 1012           Toxtricity Low Key Form Electric 0.375 0.208333333 0.58888889
## 1013                        Sizzlipede     Fire 0.225 0.204678363 0.31944444
## 1014                       Centiskorch     Fire 0.325 0.250896057 0.56944444
## 1015                         Clobbopus Fighting 0.160 0.176767677 0.32777778
## 1016                         Grapploct Fighting 0.210 0.183006536 0.52222222
## 1017                          Sinistea    Ghost 0.250 0.157126824 0.33055556
## 1018                       Polteageist    Ghost 0.350 0.130353818 0.55277778
## 1019                           Hatenna  Psychic 0.195 0.166666667 0.23888889
## 1020                           Hattrem  Psychic 0.245 0.160628019 0.35000000
## 1021                         Hatterene  Psychic 0.145 0.111952862 0.62777778
## 1022                          Impidimp     Dark 0.250 0.250000000 0.27777778
## 1023                           Morgrem     Dark 0.350 0.252777778 0.37500000
## 1024                        Grimmsnarl     Dark 0.300 0.263888889 0.59722222
## 1025                         Obstagoon     Dark 0.475 0.198717949 0.41666667
## 1026                        Perrserker    Steel 0.250 0.170138889 0.44444444
## 1027                           Cursola    Ghost 0.150 0.129629630 0.66666667
## 1028                        Sirfetch'd Fighting 0.325 0.136220967 0.56388889
## 1029                          Mr. Rime      Ice 0.350 0.177777778 0.54166667
## 1030                         Runerigus   Ground 0.150 0.090222222 0.40277778
## 1031                           Milcery    Fairy 0.170 0.173267327 0.25000000
## 1032                          Alcremie    Fairy 0.320 0.128968254 0.47222222
## 1033                           Falinks Fighting 0.375 0.157986111 0.47222222
## 1034                        Pincurchin Electric 0.075 0.103703704 0.53333333
## 1035                              Snom      Ice 0.100 0.179487179 0.19444444
## 1036                          Frosmoth      Ice 0.325 0.181481481 0.52777778
## 1037                       Stonjourner     Rock 0.350 0.250896057 0.40277778
## 1038                   Eiscue Ice Face      Ice 0.250 0.145833333 0.40277778
## 1039                 Eiscue Noice Face      Ice 0.650 0.243055556 0.40277778
## 1040                     Indeedee Male  Psychic 0.475 0.155555556 0.47222222
## 1041                   Indeedee Female  Psychic 0.425 0.160130719 0.41666667
## 1042           Morpeko Full Belly Mode Electric 0.485 0.194444444 0.45833333
## 1043               Morpeko Hangry Mode Electric 0.485 0.194444444 0.45833333
## 1044                            Cufant    Steel 0.200 0.285714286 0.33333333
## 1045                        Copperajah    Steel 0.150 0.343800322 0.58333333
## 1046                         Dracozolt Electric 0.375 0.218750000 0.50000000
## 1047                         Arctozolt Electric 0.275 0.205882353 0.52777778
## 1048                         Dracovish    Water 0.375 0.194444444 0.44444444
## 1049                         Arctovish    Water 0.275 0.184210526 0.47222222
## 1050                         Duraludon    Steel 0.425 0.164983165 0.59722222
## 1051                            Dreepy   Dragon 0.410 0.181481481 0.27777778
## 1052                          Drakloak   Dragon 0.510 0.264444444 0.38888889
## 1053                         Dragapult   Dragon 0.710 0.228148148 0.61111111
## 1054       Zacian Hero of Many Battles    Fairy 0.690 0.155555556 0.55555556
## 1055              Zacian Crowned Sword    Fairy 0.740 0.155555556 0.63888889
## 1056    Zamazenta Hero of Many Battles Fighting 0.690 0.155555556 0.55555556
## 1057          Zamazenta Crowned Shield Fighting 0.640 0.127777778 0.55555556
## 1058                         Eternatus   Poison 0.650 0.286549708 0.63888889
## 1059               Eternatus Eternamax   Poison 0.650 0.198333333 0.66666667
## 1060                             Kubfu Fighting 0.360 0.212121212 0.39722222
## 1061       Urshifu Single Strike Style Fighting 0.485 0.243055556 0.53611111
## 1062        Urshifu Rapid Strike Style Fighting 0.485 0.243055556 0.53611111
## 1063                            Zarude     Dark 0.525 0.204166667 0.52777778
## 1064                         Regieleki Electric 1.000 0.311111111 0.55555556
## 1065                         Regidrago   Dragon 0.400 0.777777778 0.55555556
## 1066                         Glastrier      Ice 0.150 0.162037037 0.58333333
## 1067                         Spectrier    Ghost 0.650 0.277777778 0.58333333
## 1068                           Calyrex  Psychic 0.400 0.243055556 0.44444444
## 1069                 Calyrex Ice Rider  Psychic 0.250 0.138888889 0.69444444
## 1070              Calyrex Shadow Rider  Psychic 0.750 0.216049383 0.69444444
## 1071                           Wyrdeer   Normal 0.325 0.272486772 0.58333333
## 1072                           Kleavor      Bug 0.425 0.164983165 0.50000000
## 1073                          Ursaluna   Ground 0.250 0.273273273 0.51388889
## 1074                Ursaluna Bloodmoon   Ground 0.260 0.237537538 0.56944444
## 1075                  Basculegion Male    Water 0.390 0.333333333 0.53333333
## 1076                Basculegion Female    Water 0.390 0.333333333 0.53333333
## 1077                          Sneasler Fighting 0.600 0.222222222 0.47222222
## 1078                          Overqwil     Dark 0.425 0.206597222 0.50000000
## 1079          Enamorus Incarnate Forme    Fairy 0.530 0.191851852 0.69444444
## 1080            Enamorus Therian Forme    Fairy 0.230 0.137037037 0.69444444
## 1081                        Sprigatito    Grass 0.325 0.157126824 0.29444444
## 1082                         Floragato    Grass 0.415 0.188271605 0.38888889
## 1083                       Meowscarada    Grass 0.615 0.211111111 0.53055556
## 1084                           Fuecoco     Fire 0.180 0.263187430 0.30000000
## 1085                          Crocalor     Fire 0.245 0.231617647 0.40277778
## 1086                        Skeledirge     Fire 0.330 0.231111111 0.51388889
## 1087                            Quaxly    Water 0.250 0.237654321 0.31944444
## 1088                          Quaxwell    Water 0.325 0.217777778 0.41666667
## 1089                         Quaquaval    Water 0.425 0.213261649 0.56944444
## 1090                           Lechonk   Normal 0.175 0.247058824 0.22222222
## 1091                   Oinkologne Male   Normal 0.325 0.275985663 0.44166667
## 1092                 Oinkologne Female   Normal 0.325 0.279513889 0.41388889
## 1093                        Tarountula      Bug 0.100 0.160130719 0.19444444
## 1094                           Spidops      Bug 0.175 0.131086142 0.36388889
## 1095                            Nymble      Bug 0.225 0.197435897 0.18611111
## 1096                             Lokix      Bug 0.460 0.207602339 0.42777778
## 1097                             Pawmi Electric 0.300 0.388888889 0.25000000
## 1098                             Pawmo Electric 0.425 0.291666667 0.34722222
## 1099                            Pawmot Electric 0.525 0.209401709 0.51388889
## 1100                         Tandemaus   Normal 0.375 0.216049383 0.25000000
## 1101           Maushold Family of Four   Normal 0.555 0.198467433 0.38888889
## 1102          Maushold Family of Three   Normal 0.555 0.198467433 0.38888889
## 1103                           Fidough    Fairy 0.325 0.115111111 0.23611111
## 1104                          Dachsbun    Fairy 0.475 0.113675214 0.36111111
## 1105                            Smoliv    Grass 0.150 0.166087963 0.25833333
## 1106                            Dolliv    Grass 0.165 0.146537842 0.36388889
## 1107                          Arboliva    Grass 0.195 0.152428811 0.53888889
## 1108        Squawkabilly Green Plumage   Normal 0.460 0.312636166 0.39166667
## 1109         Squawkabilly Blue Plumage   Normal 0.460 0.312636166 0.39166667
## 1110       Squawkabilly Yellow Plumage   Normal 0.460 0.312636166 0.39166667
## 1111        Squawkabilly White Plumage   Normal 0.460 0.312636166 0.39166667
## 1112                             Nacli     Rock 0.125 0.194444444 0.25000000
## 1113                         Naclstack     Rock 0.175 0.141414141 0.26388889
## 1114                         Garganacl     Rock 0.175 0.176767677 0.40277778
## 1115                         Charcadet     Fire 0.175 0.194444444 0.27777778
## 1116                         Armarouge     Fire 0.375 0.183641975 0.51388889
## 1117                         Ceruledge     Fire 0.425 0.162037037 0.51388889
## 1118                           Tadbulb Electric 0.225 0.312134503 0.25000000
## 1119                         Bellibolt Electric 0.225 0.243614304 0.46388889
## 1120                           Wattrel Electric 0.350 0.207407407 0.26388889
## 1121                       Kilowattrel Electric 0.625 0.226851852 0.48611111
## 1122                          Maschiff     Dark 0.255 0.210210210 0.32777778
## 1123                        Mabosstiff     Dark 0.425 0.194444444 0.50000000
## 1124                          Shroodle   Poison 0.375 0.222222222 0.29166667
## 1125                          Grafaiai   Poison 0.550 0.178832117 0.48611111
## 1126                          Bramblin    Grass 0.300 0.239316239 0.30555556
## 1127                      Brambleghast    Grass 0.450 0.152777778 0.54166667
## 1128                         Toedscool   Ground 0.350 0.115226337 0.25000000
## 1129                        Toedscruel   Ground 0.500 0.168168168 0.41666667
## 1130                             Klawf     Rock 0.375 0.160130719 0.37500000
## 1131                          Capsakid    Grass 0.250 0.243055556 0.34444444
## 1132                        Scovillain    Grass 0.375 0.194444444 0.60000000
## 1133                            Rellor      Bug 0.150 0.135122411 0.22500000
## 1134                            Rabsca      Bug 0.225 0.157657658 0.45833333
## 1135                           Flittle  Psychic 0.375 0.194444444 0.25000000
## 1136                          Espathra  Psychic 0.525 0.307870370 0.44722222
## 1137                         Tinkatink    Fairy 0.290 0.178389399 0.22222222
## 1138                         Tinkatuff    Fairy 0.390 0.184509327 0.27777778
## 1139                          Tinkaton    Fairy 0.470 0.181623932 0.40277778
## 1140                           Wiglett    Water 0.475 0.077777778 0.25000000
## 1141                           Wugtrio    Water 0.600 0.113425926 0.41666667
## 1142                        Bombirdier   Flying 0.410 0.160130719 0.45277778
## 1143                           Finizen    Water 0.375 0.340277778 0.25000000
## 1144                 Palafin Zero Form    Water 0.500 0.290215589 0.34166667
## 1145                 Palafin Hero Form    Water 0.500 0.211352657 0.73888889
## 1146                            Varoom    Steel 0.235 0.162037037 0.27777778
## 1147                         Revavroom    Steel 0.450 0.198159943 0.48055556
## 1148                          Cyclizar   Dragon 0.605 0.209401709 0.50000000
## 1149                          Orthworm    Steel 0.325 0.136111111 0.40277778
## 1150                           Glimmet     Rock 0.300 0.183006536 0.38888889
## 1151                          Glimmora     Rock 0.430 0.188758934 0.51388889
## 1152                          Greavard    Ghost 0.170 0.169082126 0.25277778
## 1153                        Houndstone    Ghost 0.340 0.142131980 0.41944444
## 1154                           Flamigo   Flying 0.450 0.231078905 0.52777778
## 1155                          Cetoddle      Ice 0.215 0.494117647 0.27222222
## 1156                           Cetitan      Ice 0.365 0.550925926 0.43888889
## 1157                            Veluza    Water 0.350 0.253623188 0.50000000
## 1158                           Dondozo    Water 0.175 0.324074074 0.45833333
## 1159              Tatsugiri Curly Form   Dragon 0.410 0.170609319 0.47222222
## 1160             Tatsugiri Droopy Form   Dragon 0.410 0.170609319 0.47222222
## 1161           Tatsugiri Stretchy Form   Dragon 0.410 0.170609319 0.47222222
## 1162                        Annihilape Fighting 0.450 0.251633987 0.45833333
## 1163                          Clodsire   Poison 0.100 0.315972222 0.33333333
## 1164                         Farigiraf   Normal 0.300 0.333333333 0.55555556
## 1165      Dudunsparce Two-Segment Form   Normal 0.275 0.313620072 0.51388889
## 1166    Dudunsparce Three-Segment Form   Normal 0.275 0.313620072 0.51388889
## 1167                         Kingambit     Dark 0.250 0.189701897 0.54166667
## 1168                        Great Tusk   Ground 0.435 0.243055556 0.51111111
## 1169                       Scream Tail    Fairy 0.555 0.208982347 0.36111111
## 1170                      Brute Bonnet    Grass 0.275 0.218013468 0.57222222
## 1171                      Flutter Mane    Ghost 0.675 0.112573099 0.52777778
## 1172                      Slither Wing      Bug 0.405 0.179649758 0.61111111
## 1173                      Sandy Shocks Electric 0.505 0.181623932 0.56111111
## 1174                       Iron Treads   Ground 0.530 0.184210526 0.51111111
## 1175                       Iron Bundle      Ice 0.680 0.125159642 0.56666667
## 1176                        Iron Hands Fighting 0.250 0.340277778 0.52777778
## 1177                      Iron Jugulis     Dark 0.540 0.220214190 0.56111111
## 1178                         Iron Moth     Fire 0.550 0.183006536 0.58333333
## 1179                       Iron Thorns     Rock 0.360 0.200458190 0.56666667
## 1180                          Frigibax   Dragon 0.275 0.280864198 0.30555556
## 1181                          Arctibax   Dragon 0.310 0.267175573 0.38888889
## 1182                        Baxcalibur   Dragon 0.435 0.251248439 0.61111111
## 1183             Gimmighoul Chest Form    Ghost 0.050 0.125000000 0.29166667
## 1184           Gimmighoul Roaming Form    Ghost 0.400 0.250000000 0.29166667
## 1185                         Gholdengo    Steel 0.420 0.181899642 0.53611111
## 1186                          Wo-Chien     Dark 0.350 0.140661939 0.50000000
## 1187                         Chien-Pao     Dark 0.675 0.214559387 0.58333333
## 1188                           Ting-Lu     Dark 0.225 0.294037940 0.45833333
## 1189                            Chi-Yu     Dark 0.500 0.106944444 0.59722222
## 1190                      Roaring Moon   Dragon 0.595 0.237403101 0.53888889
## 1191                      Iron Valiant    Fairy 0.580 0.191851852 0.69444444
## 1192                          Koraidon Fighting 0.675 0.180878553 0.61111111
## 1193                          Miraidon Electric 0.675 0.180878553 0.61111111
## 1194                      Walking Wake    Water 0.545 0.221264368 0.57777778
## 1195                       Iron Leaves    Grass 0.520 0.178571429 0.55555556
## 1196                           Dipplin    Grass 0.200 0.163742690 0.48611111
## 1197                      Poltchageist    Grass 0.250 0.157126824 0.33055556
## 1198                         Sinistcha    Grass 0.350 0.148446834 0.50277778
## 1199                           Okidogi   Poison 0.400 0.170259812 0.51666667
## 1200                         Munkidori   Poison 0.530 0.219373219 0.56944444
## 1201                       Fezandipiti   Poison 0.495 0.165324745 0.44722222
## 1202                 Ogerpon Teal Mask    Grass 0.550 0.172839506 0.50000000
## 1203           Ogerpon Wellspring Mask    Grass 0.550 0.172839506 0.50000000
## 1204          Ogerpon Hearthflame Mask    Grass 0.550 0.172839506 0.50000000
## 1205          Ogerpon Cornerstone Mask    Grass 0.550 0.172839506 0.50000000
## 1206                        Archaludon    Steel 0.425 0.179487179 0.63888889
## 1207                         Hydrapple    Grass 0.220 0.216959064 0.55555556
## 1208                      Gouging Fire     Fire 0.455 0.190809969 0.50000000
## 1209                       Raging Bolt Electric 0.375 0.270061728 0.58333333
## 1210                      Iron Boulder     Rock 0.620 0.186170213 0.52222222
## 1211                        Iron Crown    Steel 0.490 0.168269231 0.53888889
## 1212             Terapagos Normal Form   Normal 0.300 0.205882353 0.36111111
## 1213           Terapagos Terastal Form   Normal 0.425 0.167929293 0.55555556
## 1214            Terapagos Stellar Form   Normal 0.425 0.282828283 0.65277778
## 1215                         Pecharunt   Poison 0.440 0.137992832 0.48888889

2.- Modelado

Vamos a tomar como ejemplo para el modelado, el arbol de decisión. (https://www.crehana.com/blog/transformacion-digital/arboles-decision-mineria-datos/)

Debido a que nos enfrenteamos aun escenario simple, donde solo disponemos de unas pocas variables normalizadas y el conocimiento que queremos encontrar es muy conciso, vamos a utilizar este modelo por su facilidad de implementación y sobre todo de interprestación. Vamos a poder ver claramente las decisiones tomadas y obtener el conocimiento esperado.

Además, hay que tener en cuenta que tenemos la variable Type.1, que nos sirve para crear categorías y precimanete el modelo de arboles de decisión, pueden trabajar tanto con valores númericos como categoricos.

Para el modelado se utilizarán las varaibles Power, Capacity y Speed. El proceso trata de crear grupos cada vez más homogeneos basandose en las variables.

Se creara un entrenamiento en el cual el modelo, trabajara con el dataset y creara subconjuntos relacionando las variables seleccioandas para ello. Tras realizar el entrenamiento, podremos ver el resultado en forma de árbol, donde sus ramas son las decisiones según las variables y el resultado posible.

library(rpart)
library(rpart.plot)
set.seed(123)#Nos aseguramos que siempre se crean las mismas particiones
pokemonData$victoria<- sample(c(0,1), size = nrow(pokemonData), replace = TRUE)#creamos una variable victoria, que la rellenaremos con valores 0 ó 1.
trainingObjects<- sample(1:nrow(pokemonData), size = 0.7 * nrow(pokemonData))#capturamos el 70% por ciento de los objetos para el grupo entrenamiento.
trainingData<- pokemonData[trainingObjects, ]#cargamos los objetos de entrenamiento en su grupo.
testData<- pokemonData[-trainingObjects, ]#cargamos el resto de objetos en el grupo de prueba.
modelTree<- rpart(victoria ~ Power + Capacity + Speed, data = trainingData, method = "class")#configuramos el árbol para su posterior ejecución.
rpart.plot(modelTree)

3.- Evaluación

Ahora vamos a responder a la pregunta ¿qué modelo cumple mejor con los objetivos del negocio?.

Claramente es mejor el árbol de decisión. Tenemos que tener en cuenta que necesitamos saber en que situaciones tenemos a un pokemon que puede ganar todo los combates, para ello, debemos entender que caracteristicas son las que hacen posible este hecho. Las preguntas que, en este caso, se hace el árbol de decisión, nos informa con que valor de una propiedad se puede ganar un combate. Esta información es expuesta de forma clara y concisa.

Del mismo modo que nos informa de que valor tiene que tener una caracteristica para llevar al exito en el combate, tambien nos informa de que variables son las más relevantes. En este caso, no nos dice que poquemos es más fuerte, pero si nos informa de que combinación de caracteristicas en cada momento es la que lleva al existo.

Por último, es un modelo que es robusto ante inconsistencias y ruido.

4.- Implementación.


3 Ejercicio 2


A partir del juego de datos utilizado en el ejemplo de la PEC, realiza las tareas previas a la generación de un modelo de minería de datos explicadas en los módulos “El proceso de minería de datos” y “Preprocesado de los datos y gestión de características”.

Puedes utilizar de referencia el ejemplo de la PEC, pero procura cambiar el enfoque y analizar los datos en función de las diferentes dimensiones que presentan los datos. Así, no se puede utilizar la combinación de variables utilizada en el ejemplo: “FATALS”,“DRUNK_DR”,“VE_TOTAL”,“VE_FORMS”,“PVH_INVL”,“PEDS”,“PERSONS”,“PERMVIT”,“PERNOTMVIT”. Se debe analizar cualquier otra combinación que puede incluir (o no) algunas de estas variables con otras nuevas.

Opcionalmente y valorable se pueden añadir al estudio datos de otros años para realizar comparaciones temporales (https://www.nhtsa.gov/file-downloads?p=nhtsa/downloads/FARS/) o añadir otros hechos a estudiar relacionados, por ejemplo, el consumo de drogas en los accidentes (https://static.nhtsa.gov/nhtsa/downloads/FARS/2020/National/FARS2020NationalCSV.zip)

# Cargamos el juego de datos

# Redacta aquí el código R para el estudio del juego de datos

Escribe aquí la respuesta a la pregunta