Daniela Ballari, 2017
dballari@uazuay.edu.ec



Este es un archivo Notebook de R Markdown, Cuando ejecutas el código con Run o Ctrl+Shift+Enter, el resultado aparecerá debajo del código

Prácticas en R para frecuencias (datos cuantitativos y cualitativos)

Histogramas

Los histogramas permiten visualizar la dispersión de los datos. Grafica un histograma del número de carburetors (carb) de la variable mtcars usando la función hist(). El primer argumento es un vector con los valores de la variable deseada. Luego, se pueden añadir argumentos adicionales para dar formato al gráfico. Por ejemplo hist(variable, argumento1, argumento2). En este caso utiliza el argumento main="Carburetors"

hist(mtcars$carb, main="Carburetors")


Formato del histograma. Cambia la escala del eje y añadiendo el argumento ylim. Aquí debes indicar el rango que deseas para el eje, por ejemplo para una escala de 0 a 50 usa ylim = c(0,50)). También incluye una etiqueta al eje x del siguiente modo xlab = "title". Finalmente cambia el color de las barras a azul con col = "blue". En este caso cambia la escala del eje y de 0 a 20, dibuja las barras en rojo “red” y utiliza la etiqueta para el eje x “Number of Carburetors”. Separa cada argumento con coma.

hist(mtcars$carb, main = "Carburetors", ylim=c(0,20), col="blue", xlab="Number of Carburetors")

******

Formato del histograma. Añade el argumento breaks para indicar un número diferente de clases, por ejemplo utiliza 3 breaks.

hist(mtcars$carb, main = "Carburetors", ylim=c(0,20), col="red", xlab="Number of Carburetors", breaks = 3)

Gráfico de barras

Dibuje un gráfico de barras para la variable mtcars$am con la función barplot(). Observe que el gráfico de barras se construye a partir de la frecuencia por ello, se utiliza previamente la función table().

barplot(table(mtcars$am))

Gráfico de barras vs. Histrograma. ¿Por qué se dibujo un gráfico de barras para la variable de tipo de transmisión mtcars$am y un histograma para carburadores mtcars$carb.

a-Porque transmisión es continua y carburadores es categórico
b-Porque transmisión es categórico y carburadores es continuo

Tabla de distribución de frecuencias (cualitativas)

Observa el resultado de table()

table(mtcars$am)
## 
##  0  1 
## 19 13

Tabla de distribución de frecuencias (cuantitativas)

Utiliza table() para las variables mtcars$carby mtcars$qsec. Discute el resultado.

table(mtcars$carb)
## 
##  1  2  3  4  6  8 
##  7 10  3 10  1  1
table(mtcars$qsec)
## 
##  14.5  14.6 15.41  15.5 15.84 16.46  16.7 16.87  16.9 17.02 17.05  17.3 
##     1     1     1     1     1     1     1     1     1     2     1     1 
##  17.4 17.42  17.6 17.82 17.98    18  18.3 18.52  18.6 18.61  18.9 19.44 
##     1     1     1     1     1     1     1     1     1     1     2     1 
## 19.47  19.9    20 20.01 20.22  22.9 
##     1     1     1     1     1     1

Tabla de distribución de frecuencias. Calcula primero el valor máximo y mínimo de los datos. Puedes hacerlo con range() o con min() y max(). Luego crea una variable breaks, a la que le asignas los quiebres de clases. Para ello inspecciona el siguiente código seq(1, 8, by=1) e identifica su función.

# Selecciona el número de clases
2**4 # 16 muy pequeño
## [1] 16
2**5 # 32 - 5 clases #alt 94
## [1] 32
#Intervalos de clases
range(mtcars$carb) 
## [1] 1 8
min(mtcars$carb)
## [1] 1
max(mtcars$carb)
## [1] 8
(8-1)/5 #= 1.4, 1.5 o 2 
## [1] 1.4
breaks = seq(1, 8, by=1.4)
breaks
## [1] 1.0 2.4 3.8 5.2 6.6 8.0

Con la función cut() aplica los quiebres a los datos de mtcars$carb para seleccionar las clases.

carb.cut = cut(mtcars$carb, breaks, right=FALSE)
carb.cut
##  [1] [3.8,5.2) [3.8,5.2) [1,2.4)   [1,2.4)   [1,2.4)   [1,2.4)   [3.8,5.2)
##  [8] [1,2.4)   [1,2.4)   [3.8,5.2) [3.8,5.2) [2.4,3.8) [2.4,3.8) [2.4,3.8)
## [15] [3.8,5.2) [3.8,5.2) [3.8,5.2) [1,2.4)   [1,2.4)   [1,2.4)   [1,2.4)  
## [22] [1,2.4)   [1,2.4)   [3.8,5.2) [1,2.4)   [1,2.4)   [1,2.4)   [1,2.4)  
## [29] [3.8,5.2) [5.2,6.6) <NA>      [1,2.4)  
## Levels: [1,2.4) [2.4,3.8) [3.8,5.2) [5.2,6.6) [6.6,8)

Finalmente, calcula la tabla de frecuencias con table().

carb.freq = table(carb.cut)
carb.freq
## carb.cut
##   [1,2.4) [2.4,3.8) [3.8,5.2) [5.2,6.6)   [6.6,8) 
##        17         3        10         1         0

Para mostrar la tabla de forma vertical usa la función cbind().

cbind(carb.freq)
##           carb.freq
## [1,2.4)          17
## [2.4,3.8)         3
## [3.8,5.2)        10
## [5.2,6.6)         1
## [6.6,8)           0
barplot(carb.freq)

Guardar los datos del histograma. Asigna el gráfico del historama a una variable h. Observa la información almacenada en la variable h a través de h$breaks, h$counts y h$mids. ¿Qué tipo de información almacenan breaks, counts y mids?

h= hist(mtcars$carb, main = "Carburetors", ylim=c(0,20), col="red", xlab="Number of Carburetors")

names(h)
## [1] "breaks"   "counts"   "density"  "mids"     "xname"    "equidist"
h$breaks
## [1] 1 2 3 4 5 6 7 8
h$counts
## [1] 17  3 10  0  1  0  1
h$mids
## [1] 1.5 2.5 3.5 4.5 5.5 6.5 7.5

Polígono de frecuencias

Dibuja una línea extra en el histograma de manera que represente el polígono de frecuencias. Observa la estructura del código.

hist(mtcars$carb, main = "Carburetors", xlim=c(0,8), ylim=c(0,20), col="red", xlab="Number of Carburetors")
lines(c(0,h$mids),c(0,h$counts), type = "b", pch = 20, col = "blue", lwd = 3)

Polígono de frecuencias acumulada

Dibuja un gráfico que represente el polígono de frecuencias acumulada . Observa la estructura del código.¿Qué hace la función cumsum()?

plot(c(0,h$mids), c(0,cumsum(h$counts)), type = "b", col = "blue", pch = 20)

Tabla de distribución de frecuencias relativas

Divide la variable carb.freq por el número total de registros en mtcars y multiplica por 100 para calcular la frecuencia relativa en %. Usa cbind() para añadir los nuevos datos carb.relfreq a carb.freq.

carb.relfreq = carb.freq / nrow(mtcars) *100 
cbind(carb.freq, carb.relfreq) 
##           carb.freq carb.relfreq
## [1,2.4)          17       53.125
## [2.4,3.8)         3        9.375
## [3.8,5.2)        10       31.250
## [5.2,6.6)         1        3.125
## [6.6,8)           0        0.000

Tabla de distribución de frecuencias acumuladas

Acumula las frecuencias relativas con la función cumsum().

carb.cumfreq = cumsum(carb.relfreq)
carb.cumfreq
##   [1,2.4) [2.4,3.8) [3.8,5.2) [5.2,6.6)   [6.6,8) 
##    53.125    62.500    93.750    96.875    96.875

Gráfica las frecuencias acumulada

cumfreq0 = c(0, cumsum(carb.freq)) 
plot(breaks, cumfreq0,            # plot 
main="Carburadores",  # título 
 xlab=" ",        #etiqueta x???axis 
 ylab="Acumulado")   # etiqueta y???axis 
lines(breaks, cumfreq0)           # unir los puntos 

### Actividad individual 1 Explore el tipo de variables que contiene el data.frame mtcars. Defina si son variables cuantitativas o cualitativas y su nivel de medición. Dibuje el histograma o gráfico de barras para cada variable, identificando el tipo de distribución de la misma.

Actividad individual 2

Trabaja con los datos data(precip), ya contenidos en R, que muestra datos de precipitación media anual para los Estados Unidos del año 1975. El tipo de datos es vector, por ello utiliza la variable como precip. Además, por ser vector el número de elementos totales se obtiene con length().

Explora la estructura y dimensiones de los datos y calcula.
1. Histograma con un número de clases apropiado.
2. Tabla de frecuencia, frecuencia relativa y frecuencia acumulada.
3. Polígono de frecuencia.
4. Polígono de frecuencia acumulada.

Responde
* Cuántas clases se recomienda?
* Cuál es el intervalo recomendado?
* Qué tipo de distribución se observa en el histograma?
* Aproximadamente qué frecuencia relativa tiene los 40 mm anuales?

Actividad individual 3

Repite la actividad anterior pero esta vez con datos propios. Cargalos en R, explora sus dimensiones, variables y datos. Crea una tabla de frecuencias y un histograma, dependiendo del tipo de variable de interes.

nclasses <- ceiling(log2(length(unname(precip)))) #Opcional para determinar el número de clases