15 Estadística descriptiva con dplyr
En este capítulo se mostrará como usar el paquete dplyr de R para hacer un análisis descriptivo usando una base de datos real.
Las variables de la base de datos que vamos a utilizar en el ejemplo de este capítulo se muestran a continuación.
- bwt: Peso del bebé al nacer, redondeado a la onza más cercana.
- gestación: Duración del embarazo en días, calculado a partir del primer día del último período menstrual normal.
- paridad: Indicador de si el bebé es el primogénito o desconocido.
- edad: edad de la madre en el momento de la concepción, en años.
- altura: Altura de la madre, en pulgadas.
- peso: peso de la madre antes del embarazo, en libras.
- fumar: estado de tabaquismo Indicador de si la madre fuma o no.
Las unidades de algunas de las variables están en sistema inglés, más adelante mostraremos cómo convertir esas variables.
Para leer la base de datos usamos el siguiente código.
url <- 'https://raw.githubusercontent.com/fhernanb/datos/master/babies.txt'
dt <- read.table(url, header=TRUE, sep='\t')
Par ver el encabezado de la base de datos.
## bwt gestation parity age height weight smoke
## 1 120 284 First born 27 62 100 Not
## 2 113 282 First born 33 64 135 Not
## 3 128 279 First born 28 64 115 Yes
## 4 123 NA First born 36 69 190 Not
## 5 108 282 First born 23 67 125 Yes
## 6 136 286 First born 25 62 93 Not
## 7 138 244 First born 33 62 178 Not
## 8 132 245 First born 23 65 140 Not
Ahora vamos a explorar la base de datos por medio de la función summary
.
## bwt gestation parity age
## Min. : 55.0 Min. :148.0 Length:1236 Min. :15.00
## 1st Qu.:108.8 1st Qu.:272.0 Class :character 1st Qu.:23.00
## Median :120.0 Median :280.0 Mode :character Median :26.00
## Mean :119.6 Mean :279.3 Mean :27.26
## 3rd Qu.:131.0 3rd Qu.:288.0 3rd Qu.:31.00
## Max. :176.0 Max. :353.0 Max. :45.00
## NA's :13 NA's :2
## height weight smoke
## Min. :53.00 Min. : 87.0 Length:1236
## 1st Qu.:62.00 1st Qu.:114.8 Class :character
## Median :64.00 Median :125.0 Mode :character
## Mean :64.05 Mean :128.6
## 3rd Qu.:66.00 3rd Qu.:139.0
## Max. :72.00 Max. :250.0
## NA's :22 NA's :36
Otra tabla de resumen se puede obtener con la función str
.
## 'data.frame': 1236 obs. of 7 variables:
## $ bwt : int 120 113 128 123 108 136 138 132 120 143 ...
## $ gestation: int 284 282 279 NA 282 286 244 245 289 299 ...
## $ parity : chr "First born" "First born" "First born" "First born" ...
## $ age : int 27 33 28 36 23 25 33 23 25 30 ...
## $ height : int 62 64 64 69 67 62 62 65 62 66 ...
## $ weight : int 100 135 115 190 125 93 178 140 125 136 ...
## $ smoke : chr "Not" "Not" "Yes" "Not" ...
Para conocer la imension de la base de datos usamos la función dim
.
## [1] 1236 7
Para ver el peso de las madres.
## [1] 100 135 115 190 125 93 178 140 125 136 120 124 128 99 154 130 125 125
## [19] 170 142 93 175 145 182 122 112 106 175 125 132 105 146 123 105 120 130
## [37] 115 92 101 NA 160 177 NA 119 130 110 150 90 147 119 130 148 110 126
## [55] 132 130 145 140 116 110 96 118 125 130 125 115 150 137 170 170 130 118
## [73] 125 120 149 110 107 130 126 103 116 104 135 148 145 NA 117 143 196 113
## [91] 117 112 104 130 103 100 100 162 110 137 121 120 NA 117 108 140 143 150
## [109] 125 154 NA 125 136 NA 145 114 109 215 145 170 103 133 130 155 150 150
## [127] 110 120 154 148 103 110 125 100 147 120 135 145 104 165 107 123 110 127
## [145] 115 155 125 175 140 250 148 128 NA 132 NA 152 135 104 NA 121 111 138
## [163] 190 123 125 160 123 105 123 110 109 118 115 105 131 155 170 123 125 120
## [181] 175 192 116 220 150 NA 117 93 97 135 136 110 124 NA 155 150 168 147
## [199] 117 110 140 132 97 112 NA 105 110 150 125 150 138 150 99 115 125 130
## [217] 145 130 125 130 135 121 180 145 136 142 128 120 106 106 NA 117 116 127
## [235] 135 135 160 120 155 110 190 140 105 125 117 125 128 124 169 125 110 105
## [253] 110 125 185 142 118 139 160 128 135 148 105 122 140 104 125 132 102 140
## [271] 103 119 165 115 156 150 120 135 160 140 142 140 118 103 146 126 135 189
## [289] 157 108 135 122 148 152 140 100 105 105 110 122 125 125 102 125 135 130
## [307] 130 112 145 117 176 NA 130 112 100 110 135 120 135 123 129 130 136 145
## [325] 120 120 120 106 135 130 132 110 110 135 127 130 107 NA 103 157 144 130
## [343] 112 130 130 130 103 110 117 122 110 113 NA 128 132 104 159 115 115 112
## [361] 135 110 130 NA 145 147 130 112 170 122 125 122 136 143 135 130 121 108
## [379] 128 105 125 109 100 145 137 150 115 155 112 130 145 124 145 118 100 140
## [397] 125 134 115 NA 133 105 104 105 117 135 129 120 140 139 116 180 124 143
## [415] 137 104 132 147 107 110 130 130 135 155 132 114 210 142 138 102 145 102
## [433] 115 150 110 140 130 120 148 NA 135 108 111 NA 138 130 120 140 127 140
## [451] 130 115 135 127 124 118 125 165 137 118 140 150 149 127 138 93 125 123
## [469] 111 133 147 99 125 154 141 115 135 NA NA 135 155 NA 135 110 130 144
## [487] 135 135 123 155 130 128 122 118 123 125 120 125 122 162 103 110 111 130
## [505] 117 95 129 126 NA 175 147 140 180 102 116 110 150 115 120 147 145 110
## [523] 200 140 130 NA 117 125 180 135 120 109 113 132 110 124 160 160 103 130
## [541] 128 96 127 120 106 122 89 108 138 125 95 145 140 107 125 135 155 105
## [559] 102 114 124 137 170 197 171 145 130 165 146 135 134 135 132 105 110 133
## [577] 132 112 159 135 150 125 105 125 113 98 130 135 119 130 150 127 120 140
## [595] 129 110 114 130 115 107 155 118 126 115 110 137 115 139 215 140 100 160
## [613] 107 108 132 116 165 109 98 110 110 115 202 135 112 108 108 118 125 126
## [631] 112 130 180 145 130 90 100 118 120 145 118 135 129 112 128 155 124 125
## [649] NA 165 132 124 135 NA 112 101 117 115 115 135 133 134 119 125 115 110
## [667] 108 98 105 145 120 140 130 110 107 132 115 118 124 95 116 94 145 125
## [685] 115 110 102 140 120 94 160 105 120 117 126 175 174 112 NA 144 125 169
## [703] 135 120 128 135 116 125 140 140 138 128 118 113 105 150 145 153 115 122
## [721] 127 160 130 198 118 125 110 165 157 120 140 148 126 190 130 100 114 136
## [739] 117 120 118 100 137 126 120 96 110 182 122 105 130 140 125 NA 98 135
## [757] 105 125 127 125 120 130 NA 142 105 118 147 106 127 110 104 130 118 111
## [775] 105 134 140 121 111 120 110 110 160 124 113 145 120 96 130 119 150 124
## [793] 130 127 100 164 135 155 149 139 130 134 127 110 140 108 124 127 112 120
## [811] 155 129 132 132 145 124 130 110 108 112 118 135 162 162 130 112 118 91
## [829] 103 107 100 112 125 134 115 141 118 123 148 125 120 122 126 118 110 108
## [847] 107 126 120 215 138 170 110 120 150 130 117 107 191 185 150 112 127 110
## [865] 140 210 111 124 130 133 160 125 143 125 NA 150 100 129 150 110 135 109
## [883] NA 125 118 110 132 125 181 123 117 135 130 110 110 140 120 155 114 159
## [901] 112 116 110 128 136 137 153 130 99 115 125 175 156 107 160 128 130 135
## [919] 137 125 175 108 137 155 217 126 130 135 156 115 109 105 137 143 123 178
## [937] 120 134 121 102 115 116 170 160 109 112 120 133 110 130 122 122 121 125
## [955] 105 112 130 145 145 124 113 120 135 118 118 133 122 125 126 112 137 135
## [973] 115 135 131 111 110 160 140 149 110 134 155 150 129 122 112 130 128 120
## [991] 108 98 127 130 145 130 113 156 110 132 140 159 164 114 130 140 127 115
## [1009] 185 124 114 116 112 NA 133 115 115 145 140 127 120 185 130 135 145 130
## [1027] 150 109 110 142 125 132 110 110 120 130 116 90 130 125 112 127 132 128
## [1045] NA 115 116 145 119 135 117 125 117 120 130 120 125 129 144 100 145 104
## [1063] 110 145 132 125 108 119 118 130 128 97 115 135 142 131 165 122 114 137
## [1081] 107 113 145 110 126 135 111 135 105 113 110 120 121 130 122 127 122 115
## [1099] 104 163 146 113 120 142 124 127 135 122 127 125 135 150 155 120 115 136
## [1117] 115 108 118 115 125 120 140 123 98 118 105 154 118 122 117 150 100 115
## [1135] 118 118 102 127 104 99 107 124 136 142 132 125 106 120 200 113 112 114
## [1153] 117 99 177 145 124 125 134 123 140 130 110 119 104 103 135 180 110 145
## [1171] 150 128 115 95 145 130 103 NA 126 101 113 130 137 112 127 140 110 145
## [1189] 140 89 NA 135 228 160 158 145 127 135 150 170 107 145 130 115 120 113
## [1207] 135 125 156 140 130 103 120 151 103 119 109 145 150 180 95 120 116 136
## [1225] 135 145 102 87 116 121 126 100 120 150 110 129
Otra forma de ver el peso almacenado en columna 6.
## [1] 100 135 115 190 125 93 178 140 125 136 120 124 128 99 154 130 125 125
## [19] 170 142 93 175 145 182 122 112 106 175 125 132 105 146 123 105 120 130
## [37] 115 92 101 NA 160 177 NA 119 130 110 150 90 147 119 130 148 110 126
## [55] 132 130 145 140 116 110 96 118 125 130 125 115 150 137 170 170 130 118
## [73] 125 120 149 110 107 130 126 103 116 104 135 148 145 NA 117 143 196 113
## [91] 117 112 104 130 103 100 100 162 110 137 121 120 NA 117 108 140 143 150
## [109] 125 154 NA 125 136 NA 145 114 109 215 145 170 103 133 130 155 150 150
## [127] 110 120 154 148 103 110 125 100 147 120 135 145 104 165 107 123 110 127
## [145] 115 155 125 175 140 250 148 128 NA 132 NA 152 135 104 NA 121 111 138
## [163] 190 123 125 160 123 105 123 110 109 118 115 105 131 155 170 123 125 120
## [181] 175 192 116 220 150 NA 117 93 97 135 136 110 124 NA 155 150 168 147
## [199] 117 110 140 132 97 112 NA 105 110 150 125 150 138 150 99 115 125 130
## [217] 145 130 125 130 135 121 180 145 136 142 128 120 106 106 NA 117 116 127
## [235] 135 135 160 120 155 110 190 140 105 125 117 125 128 124 169 125 110 105
## [253] 110 125 185 142 118 139 160 128 135 148 105 122 140 104 125 132 102 140
## [271] 103 119 165 115 156 150 120 135 160 140 142 140 118 103 146 126 135 189
## [289] 157 108 135 122 148 152 140 100 105 105 110 122 125 125 102 125 135 130
## [307] 130 112 145 117 176 NA 130 112 100 110 135 120 135 123 129 130 136 145
## [325] 120 120 120 106 135 130 132 110 110 135 127 130 107 NA 103 157 144 130
## [343] 112 130 130 130 103 110 117 122 110 113 NA 128 132 104 159 115 115 112
## [361] 135 110 130 NA 145 147 130 112 170 122 125 122 136 143 135 130 121 108
## [379] 128 105 125 109 100 145 137 150 115 155 112 130 145 124 145 118 100 140
## [397] 125 134 115 NA 133 105 104 105 117 135 129 120 140 139 116 180 124 143
## [415] 137 104 132 147 107 110 130 130 135 155 132 114 210 142 138 102 145 102
## [433] 115 150 110 140 130 120 148 NA 135 108 111 NA 138 130 120 140 127 140
## [451] 130 115 135 127 124 118 125 165 137 118 140 150 149 127 138 93 125 123
## [469] 111 133 147 99 125 154 141 115 135 NA NA 135 155 NA 135 110 130 144
## [487] 135 135 123 155 130 128 122 118 123 125 120 125 122 162 103 110 111 130
## [505] 117 95 129 126 NA 175 147 140 180 102 116 110 150 115 120 147 145 110
## [523] 200 140 130 NA 117 125 180 135 120 109 113 132 110 124 160 160 103 130
## [541] 128 96 127 120 106 122 89 108 138 125 95 145 140 107 125 135 155 105
## [559] 102 114 124 137 170 197 171 145 130 165 146 135 134 135 132 105 110 133
## [577] 132 112 159 135 150 125 105 125 113 98 130 135 119 130 150 127 120 140
## [595] 129 110 114 130 115 107 155 118 126 115 110 137 115 139 215 140 100 160
## [613] 107 108 132 116 165 109 98 110 110 115 202 135 112 108 108 118 125 126
## [631] 112 130 180 145 130 90 100 118 120 145 118 135 129 112 128 155 124 125
## [649] NA 165 132 124 135 NA 112 101 117 115 115 135 133 134 119 125 115 110
## [667] 108 98 105 145 120 140 130 110 107 132 115 118 124 95 116 94 145 125
## [685] 115 110 102 140 120 94 160 105 120 117 126 175 174 112 NA 144 125 169
## [703] 135 120 128 135 116 125 140 140 138 128 118 113 105 150 145 153 115 122
## [721] 127 160 130 198 118 125 110 165 157 120 140 148 126 190 130 100 114 136
## [739] 117 120 118 100 137 126 120 96 110 182 122 105 130 140 125 NA 98 135
## [757] 105 125 127 125 120 130 NA 142 105 118 147 106 127 110 104 130 118 111
## [775] 105 134 140 121 111 120 110 110 160 124 113 145 120 96 130 119 150 124
## [793] 130 127 100 164 135 155 149 139 130 134 127 110 140 108 124 127 112 120
## [811] 155 129 132 132 145 124 130 110 108 112 118 135 162 162 130 112 118 91
## [829] 103 107 100 112 125 134 115 141 118 123 148 125 120 122 126 118 110 108
## [847] 107 126 120 215 138 170 110 120 150 130 117 107 191 185 150 112 127 110
## [865] 140 210 111 124 130 133 160 125 143 125 NA 150 100 129 150 110 135 109
## [883] NA 125 118 110 132 125 181 123 117 135 130 110 110 140 120 155 114 159
## [901] 112 116 110 128 136 137 153 130 99 115 125 175 156 107 160 128 130 135
## [919] 137 125 175 108 137 155 217 126 130 135 156 115 109 105 137 143 123 178
## [937] 120 134 121 102 115 116 170 160 109 112 120 133 110 130 122 122 121 125
## [955] 105 112 130 145 145 124 113 120 135 118 118 133 122 125 126 112 137 135
## [973] 115 135 131 111 110 160 140 149 110 134 155 150 129 122 112 130 128 120
## [991] 108 98 127 130 145 130 113 156 110 132 140 159 164 114 130 140 127 115
## [1009] 185 124 114 116 112 NA 133 115 115 145 140 127 120 185 130 135 145 130
## [1027] 150 109 110 142 125 132 110 110 120 130 116 90 130 125 112 127 132 128
## [1045] NA 115 116 145 119 135 117 125 117 120 130 120 125 129 144 100 145 104
## [1063] 110 145 132 125 108 119 118 130 128 97 115 135 142 131 165 122 114 137
## [1081] 107 113 145 110 126 135 111 135 105 113 110 120 121 130 122 127 122 115
## [1099] 104 163 146 113 120 142 124 127 135 122 127 125 135 150 155 120 115 136
## [1117] 115 108 118 115 125 120 140 123 98 118 105 154 118 122 117 150 100 115
## [1135] 118 118 102 127 104 99 107 124 136 142 132 125 106 120 200 113 112 114
## [1153] 117 99 177 145 124 125 134 123 140 130 110 119 104 103 135 180 110 145
## [1171] 150 128 115 95 145 130 103 NA 126 101 113 130 137 112 127 140 110 145
## [1189] 140 89 NA 135 228 160 158 145 127 135 150 170 107 145 130 115 120 113
## [1207] 135 125 156 140 130 103 120 151 103 119 109 145 150 180 95 120 116 136
## [1225] 135 145 102 87 116 121 126 100 120 150 110 129
Para ver la información de las madres 2, 125, 569 y 830 podemos usar el siguiente código:
## bwt gestation parity age height weight smoke
## 2 113 282 First born 33 64 135 Not
## 125 117 276 First born 31 69 150 Not
## 569 127 254 First born 27 67 146 Yes
## 830 62 228 First born 24 61 107 Not
Para ver la edad y smoke de las mujeres 40, 58, 69 y 256 podemos usar el siguiente código:
## age smoke
## 40 31 Not
## 58 33 Not
## 69 31 Yes
## 256 31 <NA>
15.1 Medidas de tendencia central, variabilidad, posición y correlación
En esta sección vamos a mostrar como se pueden obtener algunas medidas de resumen para los datos usando funciones básicas de R como son:
mean(x, trim=0, na.rm=FALSE)
: para calcular el promedio.var(x, na.rm=FALSE)
: para calcular la varianza muestral.sd(x, na.rm=FALSE)
: para calcular la desviación estándar muestral.quantile(x, probs, na.rm=FALSE)
: para calcular cuantiles.min(x, na.rm=FALSE)
: para calcular el mínimo.max(x, na.rm=FALSE)
: para calcular el máximo.
¿Cuál es el peso promedio de las madres?
## [1] NA
El resultado de NA
se debe a los NA’s presentes en la base de datos. Para remover los NA’s podemos proceder de la siguiente manera:
## [1] 128.6258
Vamos ahora a averiguar características de resumen para el peso de los bebés.
¿Cual es el peso promedio de los bebés?
## [1] 119.5769
¿Cual es la varianza del peso de los bebés?
## [1] 332.5682
¿Cual es la desviación del peso de los bebés?
## [1] 18.23645
¿Cuales son Q1, D4 y P90 para el peso de los bebés?
## 25% 40% 90%
## 108.75 116.00 142.00
15.2 Paquete dplyr
El paquete dplyr es un paquete que se usa para manejar bases de datos. En este enlace puede consultar la ayuda del paquete y ver la viñetas con ejemplos de las funciones del paquete.
El paquete dplyr hace parte de un ecosistema llamado tidyverse, el cual es un conjunto de paquetes complementarios utilizados para hacer análisis de datos.
A continuación una figura con algunos de los paquetes de tidyverse.
A continuación se muestra el hexalogo del paquete dplyr que vamos a utilizar en esta publicación.
Para usar el paquete dplyr podemos cargar a tidyverse o directamente a dplyr así:
En el mensaje anterior se aclara que hay unas funciones de dplyr que enmarcaran otras funciones de los paquetes stats y base.
15.3 Pipes en R
En R se tienen dos tipos de operadores pipe:
%>%
del paquete magrittr.|>
nativo y pertenece a la base de R.
Los operadores pipe sirve para escribir instrucciones de manera secuencial. A continuación vamos a mostrar dos ejemplos de la misma operación usando ambos pipe.
El objetivo es tomar la base de datos dt
, extraer la variable bwt
y al vector o variable resultante calcularle la media con mean
.
## [1] 119.5769
## [1] 119.5769
De la salida anterior vemos que los resultados son idénticos.
Para ver una comparación de los dos pipe se recomienda ver el siguiente video.
15.4 Estadística descriptiva con dplyr
La función glimpse
del paquete dplyr nos da un resumen de las variables de la base de datos.
## Rows: 1,236
## Columns: 7
## $ bwt <int> 120, 113, 128, 123, 108, 136, 138, 132, 120, 143, 140, 144, …
## $ gestation <int> 284, 282, 279, NA, 282, 286, 244, 245, 289, 299, 351, 282, 2…
## $ parity <chr> "First born", "First born", "First born", "First born", "Fir…
## $ age <int> 27, 33, 28, 36, 23, 25, 33, 23, 25, 30, 27, 32, 23, 36, 30, …
## $ height <int> 62, 64, 64, 69, 67, 62, 62, 65, 62, 66, 68, 64, 63, 61, 63, …
## $ weight <int> 100, 135, 115, 190, 125, 93, 178, 140, 125, 136, 120, 124, 1…
## $ smoke <chr> "Not", "Not", "Yes", "Not", "Yes", "Not", "Not", "Not", "Not…
Vamos a extraer una sola variable con pull
y luego a calcular la media, varianza y desviación estándar del peso de los bebés.
## [1] 119.5769
## [1] 332.5682
## [1] 18.23645
## 25% 40% 90%
## 108.75 116.00 142.00
Vamos a calcular las mismas medidas de resumen anteriores pero con escritura secuencial usando el operador pipe |>
y la función summarise
.
dt |> summarise(media_peso = mean(bwt),
varianza_peso = var(bwt),
desvi_peso = sd(bwt),
Q1 = quantile(bwt, probs=0.25),
D4 = quantile(bwt, probs=0.40),
P90 = quantile(bwt, probs=0.90))
## media_peso varianza_peso desvi_peso Q1 D4 P90
## 1 119.5769 332.5682 18.23645 108.75 116 142
Vamos a ver cómo cambian las medidas anteriores cuando diferenciamos por el tipo de embarazo.
dt |> group_by(parity) |>
summarise(media_peso = mean(bwt),
varianza_peso = var(bwt),
desvi_peso = sd(bwt),
Q1 = quantile(bwt, probs=0.25),
D4 = quantile(bwt, probs=0.40),
P90 = quantile(bwt, probs=0.90),
n = n())
## # A tibble: 2 × 8
## parity media_peso varianza_peso desvi_peso Q1 D4 P90 n
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <int>
## 1 First born 120. 345. 18.6 109 116 143 921
## 2 Unknown 118. 294. 17.1 107 114 139 315
Vamos a ver como cambiar las medidas anteriores cuando diferenciamos por fumar.
dt |> group_by(smoke) |>
summarise(media_peso = mean(bwt),
varianza_peso = var(bwt),
desvi_peso = sd(bwt),
Q1 = quantile(bwt, probs=0.25),
D4 = quantile(bwt, probs=0.40),
P90 = quantile(bwt, probs=0.90),
n = n())
## # A tibble: 3 × 8
## smoke media_peso varianza_peso desvi_peso Q1 D4 P90 n
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <int>
## 1 Not 123. 303. 17.4 113 119 144 742
## 2 Yes 114. 328. 18.1 102 109. 138 484
## 3 <NA> 127. 476. 21.8 110. 122. 152. 10
Vamos a ver como cambiar las medidas anteriores cuando diferenciamos por el tipo de embarazo y fumar.
dt |> group_by(parity, smoke) |>
summarise(media_peso = mean(bwt),
varianza_peso = var(bwt),
desvi_peso = sd(bwt),
Q1 = quantile(bwt, probs=0.25),
D4 = quantile(bwt, probs=0.40),
P90 =quantile(bwt, probs=0.90),
n = n())
## `summarise()` has grouped output by 'parity'. You can override using
## the `.groups` argument.
## # A tibble: 5 × 9
## # Groups: parity [2]
## parity smoke media_peso varianza_peso desvi_peso Q1 D4 P90 n
## <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <int>
## 1 First born Not 124. 308. 17.6 113 120 145 548
## 2 First born Yes 114. 345. 18.6 101 110 139. 363
## 3 First born <NA> 127. 476. 21.8 110. 122. 152. 10
## 4 Unknown Not 121. 284. 16.8 112 117 140 194
## 5 Unknown Yes 113. 275. 16.6 102 109 131 121
Calculando la correlación entre peso bebe y peso madre.
## bwt weight
## bwt 1 NA
## weight NA 1
Como hay NA en alguna de las variables vamos a agregar use='complete.obs'
para obtener la correlación.
## bwt weight
## bwt 1.0000000 0.1540382
## weight 0.1540382 1.0000000
De la salida anterior vemos que la correlación lineal de Pearson entre ambas variables es 0.1541.
15.5 Creando nuevas variables
En esta sección vamos a mostrar cómo crear nuevas variables a partir de variables ya existentes en la base de datos.
Vamos a transformar la altura y el peso de la madre al sistema internacional de unidades.
## bwt gestation parity age height weight smoke height_mt weight_kg
## 1 120 284 First born 27 62 100 Not 1.5748 45.35920
## 2 113 282 First born 33 64 135 Not 1.6256 61.23492
## 3 128 279 First born 28 64 115 Yes 1.6256 52.16308
## 4 123 NA First born 36 69 190 Not 1.7526 86.18248
Ahora vamos a calcular el IMC con las nuevas variables así:
## bwt gestation parity age height weight smoke height_mt weight_kg imc
## 1 120 284 First born 27 62 100 Not 1.5748 45.35920 18.29004
## 2 113 282 First born 33 64 135 Not 1.6256 61.23492 23.17244
## 3 128 279 First born 28 64 115 Yes 1.6256 52.16308 19.73949
## 4 123 NA First born 36 69 190 Not 1.7526 86.18248 28.05778
De la salida anterior vemos la nueva base de datos con las tres nuevas variables creadas con mutate
.
15.6 Tablas de frecuencia
Vamos a una la variable de clasificación según peso. Recien nacidos con pesos inferiores a 100 onzas son considerados livianos, aquellos con pesos entre 100 (inclusive) y 140 son aceptables y con pesos de 140 o más se consideran sanos.
dt |> mutate(clasi = cut(bwt,
breaks=c(-Inf, 100, 140, Inf),
labels=c("Liviano","Aceptable","Sano"),
include.lowest = TRUE)) -> dt
Tabla de frecuencia absoluta para clasificación.
##
## Liviano Aceptable Sano
## 174 917 145
Tabla de frecuencia relativa para clasificación.
##
## Liviano Aceptable Sano
## 0.1408 0.7419 0.1173
Tabla de frecuencia absoluta para fumar y clasificación.
## clasi
## smoke Liviano Aceptable Sano Sum
## Not 62 581 99 742
## Yes 111 331 42 484
## Sum 173 912 141 1226
Tabla de frecuencia relativa para fumar y clasificación.
## clasi
## smoke Liviano Aceptable Sano
## Not 0.05057096 0.47389886 0.08075041
## Yes 0.09053834 0.26998369 0.03425775
Tabla de frecuencia relativa por columnas para fumar y clasificación.
## clasi
## smoke Liviano Aceptable Sano
## Not 0.3583815 0.6370614 0.7021277
## Yes 0.6416185 0.3629386 0.2978723
15.7 Gráficos
En esta sección se mostrará como crear algunos gráficos básicos. Para más detalles de como construir otros gráficos se recomienda consultar el libro Gráficos con R.
Boxplot para el peso de los bebés.
Boxplot horizontal para el peso de los bebés.
Boxplot para el peso de los bebés diferenciando por la variable smoke.
Editando el boxplot para obtener una mejor apariencia.
boxplot(dt$bwt ~ dt$smoke, las=1,
col=c("dodgerblue", "hotpink2"),
main='Babies weight given smoke status',
xlab='Does the mother smoke?',
ylab='Weight (ounces)')
¿Como cambiar Not y Yes de smoke para colocar el gráfico en español?
Boxplot en español
## Warning in (function (z, notch = FALSE, width = NULL, varwidth = FALSE, :
## Duplicated argument las = 1 is disregarded
¿Cual es la relación entre peso del bebe y de la madre?
Diagrama de dispersión entre pesos diferenciando por fumar
dt2 <- na.omit(dt)
plot(x=dt2$weight, y=dt2$bwt, pch=20, las=1,
xlab='Peso de la madre (libras)',
ylab='Peso del bebe (onzas)',
col=as.factor(dt2$smoke))
legend('bottomright', legend=c('No', 'Si'),
pch=20, col=1:2)
Para ver la relación entre el peso de la madre y la edad de la madre.
plot(dt$age, dt$weight, pch=20, col="tomato", las=1,
xlab="Edad de la madre",
ylab="Peso de la madre")