CASO 2. Tablas de Frecuencias

Objetivo:

Generar tablas de frecuencias con un conjunto de datos de 100 registros

Descripción:

Crear un conjunto de datos de 100 registros con cuatro variables: nombre, genero, edad y deporte favorito de cada persona. Una vez construido el conjunto de datos elaborar tablas de frecuencias de los nombres, géneros (sexo) y deporte favorito; de igual forma determinar la tabla de frecuencia de las edades de las personas.

1. Cargar librerías fdth

  • La librería fdth permite generar tablas de frecuencia
library(fdth)

2. Crear conjunto de datos llamado personas

  1. Crear 100 nombres a partir de 20 nombres (nombres)
  2. Crear aleatorio el género entre Femenino y Masculino (generos)
  3. Crear la edad aleatorio entre 15 y 60 (edades)
  4. Crear el deporte favorito de cada persona aleatorio entre 10 (deportes)
losnombres <- c("DANIELA","CARLOS","ALEJANDRO","DESHIRÉ","FABIO","JOEL","ITZEL","FERNANDO","RICARDO","AGNES","PAULA","SAMANTHA","LUIS","ROBERTO","CRISTIAN","FRNACISKA","MAURICIO","ABRAHAM","PAMELA","LITZY")
nombres <- sample(losnombres,100,replace = TRUE)
nombres
##   [1] "ITZEL"     "JOEL"      "FRNACISKA" "ITZEL"     "CRISTIAN"  "LUIS"     
##   [7] "LITZY"     "PAMELA"    "ROBERTO"   "JOEL"      "JOEL"      "DANIELA"  
##  [13] "FRNACISKA" "MAURICIO"  "CARLOS"    "SAMANTHA"  "PAMELA"    "LITZY"    
##  [19] "ROBERTO"   "PAULA"     "RICARDO"   "FABIO"     "DESHIRÉ"   "FABIO"    
##  [25] "FERNANDO"  "ABRAHAM"   "DESHIRÉ"   "LITZY"     "CRISTIAN"  "LUIS"     
##  [31] "AGNES"     "CRISTIAN"  "LITZY"     "ABRAHAM"   "AGNES"     "CRISTIAN" 
##  [37] "PAMELA"    "PAMELA"    "CARLOS"    "ALEJANDRO" "SAMANTHA"  "CRISTIAN" 
##  [43] "ALEJANDRO" "FRNACISKA" "PAULA"     "RICARDO"   "LUIS"      "FABIO"    
##  [49] "AGNES"     "DESHIRÉ"   "ABRAHAM"   "SAMANTHA"  "PAULA"     "ABRAHAM"  
##  [55] "ROBERTO"   "ABRAHAM"   "CRISTIAN"  "JOEL"      "LUIS"      "DESHIRÉ"  
##  [61] "ROBERTO"   "ROBERTO"   "DESHIRÉ"   "FRNACISKA" "CARLOS"    "ITZEL"    
##  [67] "ROBERTO"   "RICARDO"   "DESHIRÉ"   "LITZY"     "MAURICIO"  "RICARDO"  
##  [73] "ABRAHAM"   "JOEL"      "AGNES"     "MAURICIO"  "DESHIRÉ"   "DESHIRÉ"  
##  [79] "PAULA"     "RICARDO"   "FERNANDO"  "DANIELA"   "ITZEL"     "FABIO"    
##  [85] "CARLOS"    "CRISTIAN"  "ALEJANDRO" "PAMELA"    "DANIELA"   "JOEL"     
##  [91] "AGNES"     "ROBERTO"   "CRISTIAN"  "LUIS"      "PAULA"     "ALEJANDRO"
##  [97] "FABIO"     "CARLOS"    "RICARDO"   "JOEL"
generos <- sample(c("Femenino","Masculino"), 100, replace = TRUE)

edades <- sample(15:60, 100 ,replace = TRUE)

misdeportes <- c("BALLET","BASQUETBOL","CICLISMO","TENIS","NATACIÓN","BOX","AJEDREZ","ATLETISMO","WATERPOLO","GIMANASIA")
deportes <- sample(misdeportes, 100, replace = TRUE)

personal <- data.frame(nombres,generos,edades,deportes)

3. Crear tabla de frecuencias con table() de la variable nombres

La variable de interés es nombres Table() genera la frecuencia de cada elemento transform transforma … significa renglones columnas con data.frame se consrtuye un data.frame *con names() se modifica los nombres de variables de un data.name

#transform(table(personal$nombres))
tabla_frec.nombres <- data.frame(transform(table(personal$nombres)))
names(tabla_frec.nombres) <-c("nombres","freq") 
tabla_frec.nombres
##      nombres freq
## 1    ABRAHAM    6
## 2      AGNES    5
## 3  ALEJANDRO    4
## 4     CARLOS    5
## 5   CRISTIAN    8
## 6    DANIELA    3
## 7    DESHIRÉ    8
## 8      FABIO    5
## 9   FERNANDO    2
## 10 FRNACISKA    4
## 11     ITZEL    4
## 12      JOEL    7
## 13     LITZY    5
## 14      LUIS    5
## 15  MAURICIO    3
## 16    PAMELA    5
## 17     PAULA    5
## 18   RICARDO    6
## 19   ROBERTO    7
## 20  SAMANTHA    3

#table(personal\(nombres) #transform(table(personal\)nombres))

tabla_frec.nombres <- data.frame(transform(table(personal$nombres)))
names(tabla_frec.nombres) <- c('nombres', 'freq') 
tabla_frec.nombres
##      nombres freq
## 1    ABRAHAM    6
## 2      AGNES    5
## 3  ALEJANDRO    4
## 4     CARLOS    5
## 5   CRISTIAN    8
## 6    DANIELA    3
## 7    DESHIRÉ    8
## 8      FABIO    5
## 9   FERNANDO    2
## 10 FRNACISKA    4
## 11     ITZEL    4
## 12      JOEL    7
## 13     LITZY    5
## 14      LUIS    5
## 15  MAURICIO    3
## 16    PAMELA    5
## 17     PAULA    5
## 18   RICARDO    6
## 19   ROBERTO    7
## 20  SAMANTHA    3
  • Total de elementos N
N <- nrow(personal)
N
## [1] 100
    1. Determinar frecuencia relativa
freq.r <- tabla_frec.nombres$freq / N
freq.r
##  [1] 0.06 0.05 0.04 0.05 0.08 0.03 0.08 0.05 0.02 0.04 0.04 0.07 0.05 0.05 0.03
## [16] 0.05 0.05 0.06 0.07 0.03
    1. Determinar frecuencia porcentual
freq.p <- freq.r * 100
freq.p
##  [1] 6 5 4 5 8 3 8 5 2 4 4 7 5 5 3 5 5 6 7 3
  • Construyendo tabla de distribución
tabla_frec.nombres <- cbind(tabla_frec.nombres, freq.r, freq.p)
tabla_frec.nombres
##      nombres freq freq.r freq.p
## 1    ABRAHAM    6   0.06      6
## 2      AGNES    5   0.05      5
## 3  ALEJANDRO    4   0.04      4
## 4     CARLOS    5   0.05      5
## 5   CRISTIAN    8   0.08      8
## 6    DANIELA    3   0.03      3
## 7    DESHIRÉ    8   0.08      8
## 8      FABIO    5   0.05      5
## 9   FERNANDO    2   0.02      2
## 10 FRNACISKA    4   0.04      4
## 11     ITZEL    4   0.04      4
## 12      JOEL    7   0.07      7
## 13     LITZY    5   0.05      5
## 14      LUIS    5   0.05      5
## 15  MAURICIO    3   0.03      3
## 16    PAMELA    5   0.05      5
## 17     PAULA    5   0.05      5
## 18   RICARDO    6   0.06      6
## 19   ROBERTO    7   0.07      7
## 20  SAMANTHA    3   0.03      3
install.packages("fdth")
## Warning: package 'fdth' is in use and will not be installed
library("fdth")

4. Crear tabla de frecuencias con fdt_cat() de la variable nombres

tabla_frec.nombres.2 <- data.frame(fdt_cat(personal$nombres))
names(tabla_frec.nombres.2) <- c('nombres', 'freq', 'freq.r', 'freq.p', 'freq.acum', 'frec.por.acum')
tabla_frec.nombres.2
##      nombres freq freq.r freq.p freq.acum frec.por.acum
## 1   CRISTIAN    8   0.08      8         8             8
## 2    DESHIRÉ    8   0.08      8        16            16
## 3       JOEL    7   0.07      7        23            23
## 4    ROBERTO    7   0.07      7        30            30
## 5    ABRAHAM    6   0.06      6        36            36
## 6    RICARDO    6   0.06      6        42            42
## 7      AGNES    5   0.05      5        47            47
## 8     CARLOS    5   0.05      5        52            52
## 9      FABIO    5   0.05      5        57            57
## 10     LITZY    5   0.05      5        62            62
## 11      LUIS    5   0.05      5        67            67
## 12    PAMELA    5   0.05      5        72            72
## 13     PAULA    5   0.05      5        77            77
## 14 ALEJANDRO    4   0.04      4        81            81
## 15 FRNACISKA    4   0.04      4        85            85
## 16     ITZEL    4   0.04      4        89            89
## 17   DANIELA    3   0.03      3        92            92
## 18  MAURICIO    3   0.03      3        95            95
## 19  SAMANTHA    3   0.03      3        98            98
## 20  FERNANDO    2   0.02      2       100           100

5. Visualizar tabla de frecuencias de nombres (Barra)

barplot(height = tabla_frec.nombres.2$freq, names.arg = tabla_frec.nombres.2$nombres)

6. Visualizar un histograma de la variable edades

hist(personal$edades, main = "Frecuencia de edades", xlab = "Edades", ylab = "Frecuencias")

7. Crear tabla de frecuencias con table() de la variable edades

tabla.frec.edades <- data.frame(transform(table(personal$edades)))
# tabla.frecuencias.edades

names(tabla.frec.edades) <- c("edades", "freq")
tabla.frec.edades
##    edades freq
## 1      15    1
## 2      16    6
## 3      17    2
## 4      18    2
## 5      19    3
## 6      20    2
## 7      21    3
## 8      22    3
## 9      23    1
## 10     24    1
## 11     25    1
## 12     26    6
## 13     27    4
## 14     28    4
## 15     30    2
## 16     31    1
## 17     32    2
## 18     33    3
## 19     34    2
## 20     35    4
## 21     36    2
## 22     37    1
## 23     39    2
## 24     40    2
## 25     41    4
## 26     45    2
## 27     47    1
## 28     48    2
## 29     49    4
## 30     50    3
## 31     51    3
## 32     52    1
## 33     53    4
## 34     54    3
## 35     56    2
## 36     57    2
## 37     58    5
## 38     59    2
## 39     60    2
  • Gráfica de frecuencias de tabla_frec.edades
barplot(height = tabla.frec.edades$freq, 
        names.arg = tabla.frec.edades$edades,
        main = "Frecuencias de Edades",
        xlab = "Edades", ylab = "Frecuencias")

8. Crear tabla de frecuencias con fdt() de la variable edades

tabla.frec.edades_2 <- fdt(personal$edades)
tabla.frec.edades_2 <- data.frame(tabla.frec.edades_2$table)

names(tabla.frec.edades_2) <- c('clases', 'freq', 'freq.r', 'freq.p', 'freq.acum', 'frec.por.acum') 
tabla.frec.edades_2
##          clases freq freq.r freq.p freq.acum frec.por.acum
## 1 [14.85,20.57)   16   0.16     16        16            16
## 2 [20.57,26.29)   15   0.15     15        31            31
## 3 [26.29,32.01)   13   0.13     13        44            44
## 4 [32.01,37.73)   12   0.12     12        56            56
## 5 [37.73,43.44)    8   0.08      8        64            64
## 6 [43.44,49.16)    9   0.09      9        73            73
## 7 [49.16,54.88)   14   0.14     14        87            87
## 8  [54.88,60.6)   13   0.13     13       100           100

9. Visualizar tabla de frecuencias de edades (Barra)

barplot(height = tabla.frec.edades_2$freq, 
        names.arg = tabla.frec.edades_2$clases,
        main = "Frecuencias de Clases",
        xlab = "Clases de edades", ylab = "Frecuencias")

10. Crear tabla de frecuencias con fdt_cat() de la variable genero

tabla_frec.genero <- data.frame(fdt_cat(personal$generos))
names(tabla_frec.genero) <- c('generos', 'freq', 'freq.r', 'freq.p', 'freq.acum', 'frec.por.acum')
tabla_frec.genero
##     generos freq freq.r freq.p freq.acum frec.por.acum
## 1 Masculino   58   0.58     58        58            58
## 2  Femenino   42   0.42     42       100           100

11. Visualizar tabla de frecuencias de generos (Barra)

barplot(height = tabla_frec.genero$freq, 
        names.arg = tabla_frec.genero$generos,
        main = "Frecuencias de Géneros",
        xlab = "Géneros", ylab = "Frecuencias")

pie(x = tabla_frec.genero$freq, 
    labels = tabla_frec.genero$generos,
    col = c(155,100))

12. Crear tabla de frecuencias con fdt_cat() de a variable deportes

tabla_frec.deporte <- data.frame(fdt_cat(personal$deportes))
names(tabla_frec.deporte) <- c('deportes', 'freq', 'freq.r', 'freq.p', 'freq.acum', 'frec.por.acum')
tabla_frec.deporte
##      deportes freq freq.r freq.p freq.acum frec.por.acum
## 1    NATACIÓN   15   0.15     15        15            15
## 2     AJEDREZ   13   0.13     13        28            28
## 3      BALLET   13   0.13     13        41            41
## 4   GIMANASIA   12   0.12     12        53            53
## 5   ATLETISMO    9   0.09      9        62            62
## 6  BASQUETBOL    8   0.08      8        70            70
## 7         BOX    8   0.08      8        78            78
## 8       TENIS    8   0.08      8        86            86
## 9    CICLISMO    7   0.07      7        93            93
## 10  WATERPOLO    7   0.07      7       100           100

13. Visualizar tabla de frecuencias de deportes (Barra)

barplot(height = tabla_frec.deporte$freq, 
        names.arg = tabla_frec.deporte$deportes,
        main = "Frecuencias de deportes",
        xlab = "Deportes", ylab = "Frecuencias")

• De acuerdo a la representación de la tabla de distribución de los nombres del conjunto de datos, se observa que “ALEJANDRO” es el nombre con mayor frecuencia que representa el 11% del total de los casos. • El caso refleja que hay mas personas de 21 y 56 años de acuerdo al histograma. • De acuerdo con las graficas de barra y pastel, refleja que hay mas personas de genero femenino que masculino. • Según la tabla de frecuencia de los deportes que mas se practica es atletismo con un 15% y el que menos se frecuenta practicar es ajedrez 4%.