-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy path08_tablas.Rmd
235 lines (161 loc) · 9.6 KB
/
08_tablas.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
# Tablas de frecuencia {#tablas}
Las tablas de frecuencia son muy utilizadas en estadística y R permite crear tablas de una forma sencilla. En este capítulo se explican las principales funciones para la elaboración de tablas.
## Tabla de contingencia con `table` \index{table}
La función `table` sirve para construir tablas de frecuencia de una vía, a continuación la estrctura de la función.
```{r, eval=F}
table(..., exclude, useNA)
```
Los parámetros de la función son:
- `...` espacio para ubicar los nombres de los objetos (variables o vectores) para los cuales se quiere construir la tabla.
- `exclude`: vector con los niveles a remover de la tabla. Si `exclude=NULL` implica que se desean ver los `NA`, lo que equivale a `useNA = 'always'`.
- `useNA`: instrucción de lo que se desea con los `NA`. Hay tres posibles valores para este parámetro: `'no'` si no se desean usar, `'ifany'` y `'always'` si se desean incluir.
### Ejemplo: tabla de frecuencia de una vía {-}
Considere el vector `fuma` mostrado a continuación y construya una tabla de frecuencias absolutas para los niveles de la variable frecuencia de fumar.
```{r}
fuma <- c('Frecuente', 'Nunca', 'A veces', 'A veces', 'A veces',
'Nunca', 'Frecuente', NA, 'Frecuente', NA, 'hola',
'Nunca', 'Hola', 'Frecuente', 'Nunca')
```
A continuación se muestra el código para crear la tabla de frecuencias para la variable `fuma`.
```{r}
table(fuma)
```
De la tabla anterior vemos que NO aparece el conteo de los `NA`, para obtenerlo usamos lo siguiente.
```{r}
table(fuma, useNA='always')
```
Vemos que hay dos niveles errados en la tabla anterior, `Hola` y `hola`. Para construir la tabla sin esos niveles errados usamos lo siguiente.
```{r}
table(fuma, exclude=c('Hola', 'hola'))
```
Por último construyamos la tabla sin los niveles errados y los `NA`, a esta última tabla la llamaremos `tabla1` para luego poder usarla. Las instrucciones para hacer esto son las siguientes.
```{r}
tabla1 <- table(fuma, exclude=c('Hola', 'hola', NA))
tabla1
```
```{block2, type='rmdnote'}
Al crear una tabla con la instrucción `table(var1, var2)`, la variable 1 quedará por filas mientras que la variable 2 estará en las columnas.
```
### Ejemplo: tabla de frecuencia de dos vías {-}
Considere otro vector `sexo` mostrado a continuación y construya una tabla de frecuencias absolutas para ver cómo se relaciona el sexo con fumar del ejemplo anterior.
```{r}
sexo <- c('Hombre', 'Hombre', 'Hombre', NA, 'Mujer',
'Casa', 'Mujer', 'Mujer', 'Mujer', 'Hombre', 'Mujer',
'Hombre', NA, 'Mujer', 'Mujer')
```
Para construir la tabla solicitada usamos el siguiente código.
```{r}
table(sexo, fuma)
```
De la tabla anterior vemos que aparecen niveles errados en fuma y en sexo, para retirarlos usamos el siguiente código incluyendo en el parámetro `exclude` un vector con los niveles que __NO__ deseamos en la tabla.
```{r}
tabla2 <- table(sexo, fuma, exclude=c('Hola', 'hola', 'Casa', NA))
tabla2
```
## Función `prop.table` \index{prop.table}
La función `prop.table` se utiliza para crear tablas de frecuencia relativa a partir de tablas de frecuencia absoluta, la estructura de la función se muestra a continuación.
```{r, eval=F}
prop.table(x, margin=NULL)
```
- `x`: tabla de frecuencia.
- `margin`: valor de 1 si se desean proporciones por filas, 2 si se desean por columnas, `NULL` si se desean frecuencias globales.
### Ejemplo: tabla de frecuencia relativa de una vía {-}
Obtener la tabla de frencuencia relativa para la `tabla1`.
Para obtener la tabla solicitada se usa el siguiente código.
```{r}
prop.table(x=tabla1)
```
### Ejemplo: tabla de frecuencia relativa de dos vías {-}
Obtener la tabla de frencuencia relativa para la `tabla2`.
Si se desea la tabla de frecuencias relativas global se usa el siguiente código. El resultado se almacena en el objeto `tabla3` para ser usado luego.
```{r}
tabla3 <- prop.table(x=tabla2)
tabla3
```
Si se desea la tabla de frecuencias relativas marginal por __columnas__ se usa el siguiente código.
```{r}
tabla4 <- prop.table(x=tabla2, margin=2)
tabla4
```
## Función `addmargins` \index{addmargins}
Esta función se puede utilizar para agregar los totales por filas o por columnas a una tabla de frecuencia absoluta o relativa. La estructura de la función es la siguiente.
```{r, eval=F}
addmargins(A, margin)
```
- `A`: tabla de frecuencia.
- `margin`: valor de 1 si se desean proporciones por columnas, 2 si se desean por filas, `NULL` si se desean frecuencias globales.
### Ejemplo {-}
Obtener las tablas `tabla3` y `tabla4` con los totales margines global y por columnas respectivamente.
Para hacer lo solicitado usamos las siguientes instrucciones.
```{r}
addmargins(tabla3)
addmargins(tabla4, margin=1)
```
```{block2, type='rmdwarning'}
Note que los valores de 1 y 2 en el parámetro `margin` de las funciones `prop.table` y `addmargins` significan lo contrario.
```
## Función `hist` \index{hist}
Construir tablas de frecuencias para variables cuantitativas es necesario en muchos procedimientos estadísticos, la función `hist` sirve para obtener este tipo de tablas. La estructura de la función es la siguiente.
```{r, eval=F}
hist(x, breaks='Sturges', include.lowest=TRUE, right=TRUE,
plot=FALSE)
```
Los parámetros de la función son:
- `x`: vector numérico.
- `breaks`: vector con los límites de los intervalos. Si no se especifica se usar la regla de Sturges para definir el número de intervalos y el ancho.
- `include.lowest`: valor lógico, si `TRUE` una observación $x_i$ que coincida con un límite de intervalo será ubicada en el intervalo izquierdo, si `FALSE` será incluída en el intervalo a la derecha.
- `right`: valor lógico, si `TRUE` los intervalos serán cerrados a derecha de la forma $(lim_{inf}, lim_{sup}]$, si es `FALSE` serán abiertos a derecha.
- `plot`: valor lógico, si `FALSE` sólo se obtiene la tabla de frecuencias mientras que con `TRUE` se obtiene la representación gráfica llamada histograma.
### Ejemplo {-}
Genere 200 observaciones aleatorias de una distribución normal con media $\mu=170$ y desviación $\sigma=5$, luego construya una tabla de frecuencias para la muestra obtenida usando (a) la regla de Sturges y (b) tres intervalos con límites 150, 170, 180 y 190.
Primero se construye el vector `x` con las observaciones de la distribución normal por medio de la función `rnorm` y se especifica la media y desviación solicitada. Luego se aplica la función `hist` con el parámetro `breaks='Sturges'`, a continuación el código utilizado.
```{r}
x <- rnorm(n=200, mean=170, sd=5)
res1 <- hist(x=x, breaks='Sturges', plot=FALSE)
res1
```
El objeto `res1` es una lista donde se encuentra la información de la tabla de frecuencias para `x`. Esa lista tiene en el elemento `breaks` los límites inferior y superior de los intervalos y en el elemento `counts` están las frecuencias de cada uno de los intervalos.
Para obtener las frecuencias de tres intervalos con límites 150, 170, 180 y 190 se especifica en el parámetros `breaks` los límites. El código para obtener la segunda tabla de frecuencias se muestra a continuación.
```{r}
res2 <- hist(x=x, plot=FALSE,
breaks=c(150, 170, 180, 190))
res2
```
### Ejemplo {-}
Construya el vector `x` con los siguientes elementos: 1.0, 1.2, 1.3, 2.0, 2.5, 2.7, 3.0 y 3.4. Obtenga varias tablas de frecuencia con la función `hist` variando los parámetros `include.lowest` y `right`. Use como límite de los intervalos los valores 1, 2, 3 y 4.
Lo primero que debemos hacer es crear el vector `x` solicitado así:
```{r}
x <- c(1.1, 1.2, 1.3, 2.0, 2.0, 2.5, 2.7, 3.0, 3.4)
```
En la Figura \@ref(fig:dots) se muestran los `r length(x)` puntos y con color azul se representan los límites de los intervalos.
```{r dots, fig.cap='Ubicación de los puntos del ejemplo con límites en color azul.', fig.asp=0.8, fig.width=5, echo=F}
dotchart(x, xlab='Valores de x', xlim=c(0.5, 4.5), pch=19)
abline(v=c(1, 2, 3, 4), lty='longdash', col='blue')
```
A continuación se presenta el código para obtener la tabla de frecuencia usando `rigth=TRUE`, los resultados se almacenan en el objeto `res3` y se solicitan sólo los dos primeros elementos que corresponden a los límites y frecuencias.
```{r}
res3 <- hist(x, breaks=c(1, 2, 3, 4), right=TRUE, plot=FALSE)
res3[1:2]
```
Ahora vamos a repetir la tabla pero usando `rigth=FALSE` para ver la diferencia, en `res4` están los resultados.
```{r}
res4 <- hist(x, breaks=c(1, 2, 3, 4), right=FALSE, plot=FALSE)
res4[1:2]
```
Al comparar los últimos dos resultados vemos que la primera frecuencia es 5 cuando `right=TRUE` porque los intervalos se consideran cerrados a la derecha.
Ahora vamos a construir una tabla de frecuencia usando `FALSE` para los parámetros `include.lowest` y `right`.
```{r}
res5 <- hist(x, breaks=c(1, 2, 3, 4),
include.lowest=FALSE, right=FALSE,
plot=FALSE)
res5[1:2]
```
De este último resultado se ve claramente el efecto de los parámetros `include.lowest` y `right` en la construcción de tablas de frecuencia.
## EJERCICIOS {-}
Use funciones o procedimientos (varias líneas) de R para responder cada una de las siguientes preguntas.
En el Cuadro \@ref(tab:toy) se presenta una base de datos sencilla. Lea la base de datos usando la funcion `read.table` y construya lo que se solicita a continuación.
1. Construya una tabla de frecuencia absoluta para la variable pasatiempo.
2. Construya una tabla de frecuencia relativa para la variable fuma.
3. Construya una tabla de frecuencia relativa para las variables pasatiempo y fuma.
4. ¿Qué porcentaje de de los que no fuman tienen como pasatiempo la lectura.
5. ¿Qué porcentaje de los que corren no fuman?