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 (género de sexo), 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 frecuencias
library(fdth)
## 
## Attaching package: 'fdth'
## The following objects are masked from 'package:stats':
## 
##     sd, var

2. Crear conjunto de datos llamado personas

  • Sembrar una semila set.seed()
set.seed(2020)
  • Crear 100 nombres a partir de 20 nombres
  • Crear aleatorio el género entre Femenino y Masculino
  • Crear la edad aletorio entre 15 y 60
  • Crear el deporte favorito de cada persona aleatorio entre 10
losnombres <- c("URIEL", 'ALONSO', 'ARNULFO', 'SERGIO', 'MARCOS',
                "JESSICA", 'SAHORY', 'ULISES', 'ALAN', 'YENNI', 'BERENICE', 'MARIANA', 'ANA', 'OCTAVIO', 'CLAUDIA', 'RUBEN', 'VICTOR', 'CINDY', 'ANELICE', 'FABIOLA')

nombres <- sample(losnombres, 100, replace = TRUE)
# nombres

generos <- sample(c('Femenino', 'Masculino'), 100, replace = TRUE)
                 
edades <- sample(15:60, 100, replace = TRUE)

misdeportes <- c("TIRO", 'VOLEIBOL', 'FUTBOL', 'BASQUETBOL', 'CICLISMO', 
                 'NATACION', 'KARATE', 'BEISBOL', 'FUTBOL AMERICANO', 'BOX')
deportes <- sample(misdeportes, 100, replace = TRUE)

personal <- data.frame(nombres, generos, edades, deportes)
personal
##      nombres   generos edades         deportes
## 1    MARIANA  Femenino     15           KARATE
## 2      URIEL Masculino     53         NATACION
## 3     VICTOR  Femenino     58             TIRO
## 4     SERGIO  Femenino     58         NATACION
## 5      YENNI  Femenino     36 FUTBOL AMERICANO
## 6    JESSICA Masculino     26         VOLEIBOL
## 7     VICTOR Masculino     26           KARATE
## 8        ANA Masculino     24           KARATE
## 9     ULISES  Femenino     27              BOX
## 10     YENNI Masculino     41         NATACION
## 11     CINDY  Femenino     59         NATACION
## 12     RUBEN Masculino     56              BOX
## 13    ALONSO Masculino     55       BASQUETBOL
## 14     RUBEN Masculino     58           KARATE
## 15   ARNULFO Masculino     43              BOX
## 16    ALONSO Masculino     39              BOX
## 17    ULISES  Femenino     33       BASQUETBOL
## 18    SERGIO  Femenino     16           FUTBOL
## 19     CINDY  Femenino     58              BOX
## 20   OCTAVIO Masculino     18         VOLEIBOL
## 21   OCTAVIO  Femenino     25           KARATE
## 22   MARIANA  Femenino     33       BASQUETBOL
## 23     RUBEN  Femenino     43           KARATE
## 24   CLAUDIA  Femenino     55         VOLEIBOL
## 25   OCTAVIO  Femenino     16           KARATE
## 26    SAHORY  Femenino     34          BEISBOL
## 27   FABIOLA  Femenino     21           KARATE
## 28     CINDY Masculino     22         VOLEIBOL
## 29   FABIOLA Masculino     28          BEISBOL
## 30   FABIOLA  Femenino     58       BASQUETBOL
## 31     RUBEN Masculino     39 FUTBOL AMERICANO
## 32   MARIANA  Femenino     50              BOX
## 33     CINDY Masculino     37             TIRO
## 34     YENNI  Femenino     24           FUTBOL
## 35   JESSICA  Femenino     27         NATACION
## 36   CLAUDIA Masculino     41         CICLISMO
## 37  BERENICE  Femenino     49         NATACION
## 38       ANA  Femenino     41          BEISBOL
## 39       ANA  Femenino     41           FUTBOL
## 40       ANA Masculino     34          BEISBOL
## 41    ALONSO  Femenino     37         CICLISMO
## 42     RUBEN  Femenino     21           FUTBOL
## 43       ANA  Femenino     42         CICLISMO
## 44     URIEL  Femenino     19         NATACION
## 45   JESSICA Masculino     41         CICLISMO
## 46   ARNULFO Masculino     53          BEISBOL
## 47       ANA  Femenino     36         NATACION
## 48  BERENICE Masculino     35 FUTBOL AMERICANO
## 49    MARCOS  Femenino     39       BASQUETBOL
## 50  BERENICE  Femenino     59         NATACION
## 51   JESSICA  Femenino     40           FUTBOL
## 52    ALONSO Masculino     30           FUTBOL
## 53   ARNULFO Masculino     33         NATACION
## 54     CINDY  Femenino     46           KARATE
## 55     URIEL  Femenino     40 FUTBOL AMERICANO
## 56    SAHORY Masculino     56         CICLISMO
## 57    ULISES Masculino     50              BOX
## 58       ANA Masculino     50             TIRO
## 59    ALONSO  Femenino     23         VOLEIBOL
## 60    MARCOS  Femenino     42         VOLEIBOL
## 61    SERGIO Masculino     15         CICLISMO
## 62   ANELICE Masculino     59          BEISBOL
## 63     RUBEN  Femenino     56           FUTBOL
## 64    SERGIO  Femenino     48          BEISBOL
## 65   FABIOLA Masculino     59         CICLISMO
## 66     CINDY Masculino     20         CICLISMO
## 67     YENNI  Femenino     55         CICLISMO
## 68     URIEL  Femenino     38         CICLISMO
## 69   CLAUDIA Masculino     17             TIRO
## 70      ALAN Masculino     40         CICLISMO
## 71     RUBEN Masculino     52              BOX
## 72   JESSICA Masculino     48         NATACION
## 73     YENNI Masculino     48           FUTBOL
## 74     URIEL  Femenino     18         NATACION
## 75     URIEL Masculino     54             TIRO
## 76    VICTOR  Femenino     23          BEISBOL
## 77    ULISES  Femenino     57           KARATE
## 78   CLAUDIA Masculino     24           FUTBOL
## 79   MARIANA  Femenino     57              BOX
## 80     CINDY  Femenino     56       BASQUETBOL
## 81       ANA  Femenino     26       BASQUETBOL
## 82    MARCOS Masculino     55           FUTBOL
## 83     RUBEN  Femenino     44       BASQUETBOL
## 84   FABIOLA Masculino     46             TIRO
## 85   FABIOLA  Femenino     45             TIRO
## 86   FABIOLA  Femenino     52           KARATE
## 87   OCTAVIO Masculino     41          BEISBOL
## 88       ANA  Femenino     25       BASQUETBOL
## 89    VICTOR  Femenino     46         CICLISMO
## 90       ANA  Femenino     16           FUTBOL
## 91    SAHORY Masculino     25 FUTBOL AMERICANO
## 92      ALAN  Femenino     15       BASQUETBOL
## 93    ULISES Masculino     28           FUTBOL
## 94   ARNULFO  Femenino     21              BOX
## 95   ARNULFO Masculino     33           FUTBOL
## 96    ALONSO  Femenino     20         CICLISMO
## 97       ANA Masculino     44           FUTBOL
## 98    ULISES Masculino     31           FUTBOL
## 99    SERGIO Masculino     59         CICLISMO
## 100   SAHORY  Femenino     24           FUTBOL

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()) tranforma … significa renglones columnas
  • Con data.frame se construye un data.frame
  • con names() se modifica los nombres de variables de un data.frame
  • a.Determinar frecuencia absoluta
#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      ALAN    2
## 2    ALONSO    6
## 3       ANA   11
## 4   ANELICE    1
## 5   ARNULFO    5
## 6  BERENICE    3
## 7     CINDY    7
## 8   CLAUDIA    4
## 9   FABIOLA    7
## 10  JESSICA    5
## 11   MARCOS    3
## 12  MARIANA    4
## 13  OCTAVIO    4
## 14    RUBEN    8
## 15   SAHORY    4
## 16   SERGIO    5
## 17   ULISES    6
## 18    URIEL    6
## 19   VICTOR    4
## 20    YENNI    5
  • Total de elementos N
N <- nrow(personal)
N
## [1] 100
  • b.Determinar frecuencia relativa
freq.r <- tabla_frec.nombres$freq / N
freq.r
##  [1] 0.02 0.06 0.11 0.01 0.05 0.03 0.07 0.04 0.07 0.05 0.03 0.04 0.04 0.08 0.04
## [16] 0.05 0.06 0.06 0.04 0.05
  • c.Determinar frecuencia porcentual
freq.p <- freq.r * 100
freq.p
##  [1]  2  6 11  1  5  3  7  4  7  5  3  4  4  8  4  5  6  6  4  5
  • 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      ALAN    2   0.02      2
## 2    ALONSO    6   0.06      6
## 3       ANA   11   0.11     11
## 4   ANELICE    1   0.01      1
## 5   ARNULFO    5   0.05      5
## 6  BERENICE    3   0.03      3
## 7     CINDY    7   0.07      7
## 8   CLAUDIA    4   0.04      4
## 9   FABIOLA    7   0.07      7
## 10  JESSICA    5   0.05      5
## 11   MARCOS    3   0.03      3
## 12  MARIANA    4   0.04      4
## 13  OCTAVIO    4   0.04      4
## 14    RUBEN    8   0.08      8
## 15   SAHORY    4   0.04      4
## 16   SERGIO    5   0.05      5
## 17   ULISES    6   0.06      6
## 18    URIEL    6   0.06      6
## 19   VICTOR    4   0.04      4
## 20    YENNI    5   0.05      5

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

  • fdt_cat() es una función que genera la tabla de distribución
  • La variable de interés sigue siendo nombres
  • Genera los mismos valores que ‘tabla_frec.nombres’ , sólo que se agregan los acumulados
  • La función data.frame() convierte la tabla de distribución generada por fdt_cat() en un data.frame (conjunto de datos).
  • La función names() cambia los nombres de la tabla_frec.nombres.2
  • Finalmente la tabla de distribución generada se construye ordenado de mayor a menor con repecto a la frecuencia.
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       ANA   11   0.11     11        11            11
## 2     RUBEN    8   0.08      8        19            19
## 3     CINDY    7   0.07      7        26            26
## 4   FABIOLA    7   0.07      7        33            33
## 5    ALONSO    6   0.06      6        39            39
## 6    ULISES    6   0.06      6        45            45
## 7     URIEL    6   0.06      6        51            51
## 8   ARNULFO    5   0.05      5        56            56
## 9   JESSICA    5   0.05      5        61            61
## 10   SERGIO    5   0.05      5        66            66
## 11    YENNI    5   0.05      5        71            71
## 12  CLAUDIA    4   0.04      4        75            75
## 13  MARIANA    4   0.04      4        79            79
## 14  OCTAVIO    4   0.04      4        83            83
## 15   SAHORY    4   0.04      4        87            87
## 16   VICTOR    4   0.04      4        91            91
## 17 BERENICE    3   0.03      3        94            94
## 18   MARCOS    3   0.03      3        97            97
## 19     ALAN    2   0.02      2        99            99
## 20  ANELICE    1   0.01      1       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

  • La función table() genera frecuencias
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    3
## 2      16    3
## 3      17    1
## 4      18    2
## 5      19    1
## 6      20    2
## 7      21    3
## 8      22    1
## 9      23    2
## 10     24    4
## 11     25    3
## 12     26    3
## 13     27    2
## 14     28    2
## 15     30    1
## 16     31    1
## 17     33    4
## 18     34    2
## 19     35    1
## 20     36    2
## 21     37    2
## 22     38    1
## 23     39    3
## 24     40    3
## 25     41    6
## 26     42    2
## 27     43    2
## 28     44    2
## 29     45    1
## 30     46    3
## 31     48    3
## 32     49    1
## 33     50    3
## 34     52    2
## 35     53    2
## 36     54    1
## 37     55    4
## 38     56    4
## 39     57    2
## 40     58    5
## 41     59    5
  • 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

    1. Determinar frecuencia absoluta
    1. Determinar frecuencia relativa
    1. Determinar frecuencia porcentual
    1. Determinar frecuencia acumulada
    1. Determinar frecuencia porcentual acumulada
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.442)   12   0.12     12        12            12
## 2 [20.442,26.035)   16   0.16     16        28            28
## 3 [26.035,31.627)    6   0.06      6        34            34
## 4  [31.627,37.22)   11   0.11     11        45            45
## 5  [37.22,42.812)   15   0.15     15        60            60
## 6 [42.812,48.405)   11   0.11     11        71            71
## 7 [48.405,53.998)    8   0.08      8        79            79
## 8  [53.998,59.59)   21   0.21     21       100           100

9. Visualizar tabla de frecuencias de edades (Barra)

  • Gráfica de frecuencias de tabla_frec.edades
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

    1. Determinar frecuencia absoluta
    1. Determinar frecuencia relativa
    1. Determinar frecuencia porcentual
    1. Determinar frecuencia acumulada
    1. Determinar frecuencia porcentual acumulada
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  Femenino   55   0.55     55        55            55
## 2 Masculino   45   0.45     45       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

    1. Determinar frecuencia absoluta
    1. Determinar frecuencia relativa
    1. Determinar frecuencia porcentual
    1. Determinar frecuencia acumulada
    1. Determinar frecuencia porcentual acumulada
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            FUTBOL   16   0.16     16        16            16
## 2          CICLISMO   14   0.14     14        30            30
## 3          NATACION   12   0.12     12        42            42
## 4            KARATE   11   0.11     11        53            53
## 5        BASQUETBOL   10   0.10     10        63            63
## 6               BOX   10   0.10     10        73            73
## 7           BEISBOL    9   0.09      9        82            82
## 8              TIRO    7   0.07      7        89            89
## 9          VOLEIBOL    6   0.06      6        95            95
## 10 FUTBOL AMERICANO    5   0.05      5       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")

14. Describir el caso. Por medio de 80 a 100 palabras describir el CASO 3

Va una descripción libre, generar ideas de los puntos

  • De acuerdo a la representación de la tabla de distribución de los nombres del conjunto de datos, se observa que “ANA” es el nombre con mayor frecuencia que representa el 11% del total de los casos.
  • El caso refleja que existe mas personas de entre 48 y 53 años de acuerdo al histograma.
  • El Genero Femenino es el que mas se repite con una frecuencia del 55%
  • El ‘FUTBOL’ es el deporte con mayor frecuencia, representa un 16% de los casos