Quarto se erige como una herramienta de edición fundamental en el contexto de la ciencia de datos en la medida que permite la integración de diversas herramientas de análisis para la generación de informes con apariencia profesional, elegante y bella.
Así, en este documento se hará una demostración de las diapositivas que pueden ser generadas usando Quarto aplicándola al análisis de una base de datos relacionada con los pasajeros a bordo del RMS Titanic en su viaje inaugural de abril de 1912.
El RMS Titanic fue un trasatlántico de la White Star Line que en su momento fue el mayor barco de pasajeros del mundo y célebre por haberse hundido en su viaje inaugural desde Southampton (Reino Unido) hacia Nueva York (EE.UU.) a unos 600 kilómetros de la isla de Terranova (Canadá) luego de haber impactado con un íceberg.
Pintura del RMS Titanic
El RMS Titanic zarpó hacia Nueva York con 2208 personas abordo entre pasajeros y miembros de la tripulación el 10 de abril de 1912. A las 11:40 pm aproximadamente chocó un íceberg provocando su hundimiento. Ante la ausencia de suficientes botes salvavidas para todos los pasajeros, y dado que la mayoría no fueron llenados hasta su entera capacidad, 1496 pasajeros fallecieron. El resto fueron rescatados hacia el amanecer del 15 de abril por el RMS Carpathia.
‘Der Untergang der Titanic’. Pintura de Willy Stöwer.
Trayectoria del Titanic. En rojo sólido el recorrido realizado y en línea discontinua el hipótetico de no haberse hundido.
En la plataforma Kaggle se tienen algunas bases de datos con información de los pasajeros del RMS Titanic. Esta está dividida de antemano en un conjunto de entrenamiento y en un conjunto de validación. Así, el objetivo es usar los datos del conjunto de entrenamiento para poder predecir si cuáles pasajeros del conjunto de validación logran sobrevivir de la tragedia y cuáles no.
A continuación se revisan las dimensiones de cada base de datos:
'data.frame': 891 obs. of 12 variables:
$ passenger_id: int 1 2 3 4 5 6 7 8 9 10 ...
$ survived : int 0 1 1 1 0 0 0 0 1 1 ...
$ pclass : int 3 1 3 1 3 3 1 3 3 2 ...
$ name : chr "Braund, Mr. Owen Harris" "Cumings, Mrs. John Bradley (Florence Briggs Thayer)" "Heikkinen, Miss. Laina" "Futrelle, Mrs. Jacques Heath (Lily May Peel)" ...
$ sex : chr "male" "female" "female" "female" ...
$ age : num 22 38 26 35 35 NA 54 2 27 14 ...
$ sib_sp : int 1 1 0 1 0 0 0 3 0 1 ...
$ parch : int 0 0 0 0 0 0 0 1 2 0 ...
$ ticket : chr "A/5 21171" "PC 17599" "STON/O2. 3101282" "113803" ...
$ fare : num 7.25 71.28 7.92 53.1 8.05 ...
$ cabin : chr "" "C85" "" "C123" ...
$ embarked : chr "S" "C" "S" "S" ...
Las variables categóricas serán recodificadas para que sean de tipo factor.
'data.frame': 418 obs. of 11 variables:
$ passenger_id: int 892 893 894 895 896 897 898 899 900 901 ...
$ pclass : int 3 3 2 3 3 3 3 2 3 3 ...
$ name : chr "Kelly, Mr. James" "Wilkes, Mrs. James (Ellen Needs)" "Myles, Mr. Thomas Francis" "Wirz, Mr. Albert" ...
$ sex : chr "male" "female" "male" "male" ...
$ age : num 34.5 47 62 27 22 14 30 26 18 21 ...
$ sib_sp : int 0 1 0 0 1 0 0 1 0 2 ...
$ parch : int 0 0 0 0 1 0 0 1 0 0 ...
$ ticket : chr "330911" "363272" "240276" "315154" ...
$ fare : num 7.83 7 9.69 8.66 12.29 ...
$ cabin : chr "" "" "" "" ...
$ embarked : chr "Q" "S" "Q" "S" ...
Se analizarán algunas características generales de los datos de los pasajeros. Para ello, se van a unir las dos bases de datos excluyendo la columna que tiene información sobre los supervivientes.
Se va considerar inicialmente un modelo de clasificación binomial usando las variables asociadas a la clase, el sexo, la edad, el número de hermanos o padres abordo en el Titanic con el pasajero, el puerto de embarque y la tarifa pagada por el pasajero.
Call:
glm(formula = survived ~ pclass + sex + age + sib_sp + parch +
fare + embarked, family = "binomial", data = train)
Deviance Residuals:
Min 1Q Median 3Q Max
-2.7220 -0.6455 -0.3770 0.6293 2.4461
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 16.691979 607.920015 0.027 0.978095
pclass2 -1.189637 0.329197 -3.614 0.000302 ***
pclass3 -2.395220 0.343356 -6.976 3.04e-12 ***
sexmale -2.637859 0.223006 -11.829 < 2e-16 ***
age -0.043308 0.008322 -5.204 1.95e-07 ***
sib_sp -0.362925 0.129290 -2.807 0.005000 **
parch -0.060365 0.123944 -0.487 0.626233
fare 0.001451 0.002595 0.559 0.576143
embarkedC -12.259048 607.919885 -0.020 0.983911
embarkedQ -13.082427 607.920088 -0.022 0.982831
embarkedS -12.661895 607.919868 -0.021 0.983383
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 964.52 on 713 degrees of freedom
Residual deviance: 632.34 on 703 degrees of freedom
(177 observations deleted due to missingness)
AIC: 654.34
Number of Fisher Scoring iterations: 13
Confusion Matrix and Statistics
Reference
Prediction 0 1
0 365 83
1 59 207
Accuracy : 0.8011
95% CI : (0.7699, 0.8298)
No Information Rate : 0.5938
P-Value [Acc > NIR] : < 2e-16
Kappa : 0.5823
Mcnemar's Test P-Value : 0.05359
Sensitivity : 0.8608
Specificity : 0.7138
Pos Pred Value : 0.8147
Neg Pred Value : 0.7782
Prevalence : 0.5938
Detection Rate : 0.5112
Detection Prevalence : 0.6275
Balanced Accuracy : 0.7873
'Positive' Class : 0
En el conjunto de entrenamiento se tienen a 142 pasajeros clasificados de forma incorrecta, de los cuales 83 fueron clasificados como supervivientes cuando en realidad fallecieron, mientras que 59 fueron clasificados como muertos cuando en realidad sobrevivieron. Se tiene que la tasa de clasificación incorrecta es del 19.89 %.
Confusion Matrix and Statistics
Reference
Prediction 0 1
0 186 14
1 18 113
Accuracy : 0.9033
95% CI : (0.8663, 0.9329)
No Information Rate : 0.6163
P-Value [Acc > NIR] : <2e-16
Kappa : 0.7968
Mcnemar's Test P-Value : 0.5959
Sensitivity : 0.9118
Specificity : 0.8898
Pos Pred Value : 0.9300
Neg Pred Value : 0.8626
Prevalence : 0.6163
Detection Rate : 0.5619
Detection Prevalence : 0.6042
Balanced Accuracy : 0.9008
'Positive' Class : 0
En este modelo, para el conjunto de validación, 32 pasajeros fueron clasificados de forma incorrecta, de los cuales 14 se salvaron y fueron clasificados como fallecidos, mientras que 18 fallecidos fueron clasificados como salvados. La tasa de clasificación incorrecta es del 9.67 %.
Nótese que en el conjunto de entrenamiento se tiene una tasa de clasificación incorrecta diez puntos porcentuales mayor que en el conjunto de validación, y esta de todos modos roza el 20 %, es decir, un quinto de los pasajeros en el conjunto de entrenamiento es clasificado de forma incorrecta. Así, vale la pena intentar otras metodologías de clasificación.