Distribución de frecuencias

Cátedra de Bioestadística - Escuela de Ciencias Biológicas UNA

2024-02-22

DISTRIBUCIÓN DE FRECUENCIAS

La distribución de frecuencias es una técnica descriptiva de los datos usada principalmente para reunir y resumir una gran cantidad de información, de tal manera que sea interpretable fácilmente para el lector.

En el ambiente de R se requiere de instalar algunas librerías en las cuales se agrupan funciones que permiten resolver los distintos análisis estadísticos.

Veamos un primer ejemplo ingresando datos en un vector denominado “x”:

Ingresamos el conjunto de datos:

x <- c(61,33,35,74,48,53,53,48,23,19,15,57,72,40,27,25,75,66,34,27,38,16,42,57,27,59,37,63,71,48)

Cargar la librería fdth

Para poder utilizar la librería fdth debemos instalarla previamente. Las librerías se instalan una única vez en el computador, y dependiendo del grupo de trabajo o programación, puede requerirse una actualización a futuro.

Nota: El término librería y paquete se utilizan de forma homóloga

Deberá instalar el paquete que vamos a utilizar. install.packages(“fdth”, dependencies = FALSE); también se puede realizar en el sistema de paquetes.

library(fdth) # carga la extensión fdth (para el cálculo de distribución de frecuencias.

Ejecución de una prueba

dist <- fdt(x,breaks="Sturges") # calcula la distribución de frecuencias utilizando la regla Sturges

dist #nos brinda una tabla con los cálculos de la distribución de frecuencias.
 Class limits f   rf rf(%) cf  cf(%)
   [14.85,25) 4 0.13 13.33  4  13.33
   [25,35.15) 7 0.23 23.33 11  36.67
 [35.15,45.3) 4 0.13 13.33 15  50.00
 [45.3,55.45) 5 0.17 16.67 20  66.67
 [55.45,65.6) 5 0.17 16.67 25  83.33
 [65.6,75.75) 5 0.17 16.67 30 100.00

Nótese que se utiliza el nombre dist para el resultado del análisis. Los componentes mostrados en el resultado son los siguientes:

f= frecuencia absoluta

rf= frecuencia relativa

rf(%)= frecuencia relativa porcentual

cf= frecuencia acumulada

cf(%)=frecuencia acumulada porcentual

Además, es posible entregar una representación gráfica de los resultados, lo cual se llama histograma:

par(mfrow=c(3,2)) # particiona la ventana gráfica en 3x2. Facilita colocar distintos gráficos en una única ventana
hist(x, breaks = "Sturges") #histograma utilizando el numero de clases según Sturges

Otras funciones gráficas para representar un histograma de frecuencias

Histograma de frecuencias acumuladas

plot(dist, type="cfh")

Polígono de frecuencias acumulado

plot(dist, type="cfp")

Además, puede utilizar otros argumentos en la función plot para lograr realizar otras representaciones. Explore los otros argumentos graficos,“fh”, “fp”, “rfh”, “rfp”, “rfph”, “rfpp”, “d”, “cdh”, “cdp”, “cfh”, “cfp”, “cfph”, “cfpp”.

Por ejemplo:

plot(dist, type="fh")

plot(dist, type="fh", col="blue") #si desea añadir color a su gráfico

Nota: Mediante el comando ?plot() puede acceder a las ayudas que el ambiente R guarda para cada función. Por ejemplo, ?c() accede a la ayuda de la función concatenado; ?fdth() la ayuda de la función fdth().

Ejemplo 1

Utilizando una base de datos realizaremos un análisis de frecuencias para un dataset disponible dentro del ambiente R.

Utilice el set de datos que presenta R. Para visualizarlos utilice la siguiente función

data()  # visualiza los datos de R y asociados a las extensiones que ha cargado

Loblolly #nombre del set de datos que utilizaremos
   height age Seed
1    4.51   3  301
15  10.89   5  301
29  28.72  10  301
43  41.74  15  301
57  52.70  20  301
71  60.92  25  301
2    4.55   3  303
16  10.92   5  303
30  29.07  10  303
44  42.83  15  303
58  53.88  20  303
72  63.39  25  303
3    4.79   3  305
17  11.37   5  305
31  30.21  10  305
45  44.40  15  305
59  55.82  20  305
73  64.10  25  305
4    3.91   3  307
18   9.48   5  307
32  25.66  10  307
46  39.07  15  307
60  50.78  20  307
74  59.07  25  307
5    4.81   3  309
 [ reached 'max' / getOption("max.print") -- omitted 59 rows ]

Para visualizar los títulos que contienen los datos Loblolly utillizamos la siguiente función:

head(Loblolly, n=5) #n=5 permite visualizar las primeras 5 filas.
   height age Seed
1    4.51   3  301
15  10.89   5  301
29  28.72  10  301
43  41.74  15  301
57  52.70  20  301

Para crear la distribución de frecuencia, buscamos primeramente el rango de los valores de la variable de interés, en nuestro caso trabajaremos con la variable “age”.

datosfreq<- Loblolly $ age #utilizamos el símbolo de $ para separar de los datos la variable de interés.
datosfreq
 [1]  3  5 10 15 20 25  3  5 10 15 20 25  3  5 10 15 20 25  3  5 10 15 20 25  3
[26]  5 10 15 20 25  3  5 10 15 20 25  3  5 10 15 20 25  3  5 10 15 20 25  3  5
[51] 10 15 20 25  3  5 10 15 20 25  3  5 10 15 20 25  3  5 10 15 20 25  3  5 10
 [ reached getOption("max.print") -- omitted 9 entries ]
range(datosfreq) 
[1]  3 25

En este caso observamos el rango de los datos, va de 3 a 25.

dist1 <- fdt(Loblolly $ age,breaks="Sturges") 

dist1
   Class limits  f   rf rf(%) cf  cf(%)
   [2.97,5.755) 28 0.33 33.33 28  33.33
   [5.755,8.54)  0 0.00  0.00 28  33.33
  [8.54,11.325) 14 0.17 16.67 42  50.00
 [11.325,14.11)  0 0.00  0.00 42  50.00
 [14.11,16.895) 14 0.17 16.67 56  66.67
 [16.895,19.68)  0 0.00  0.00 56  66.67
 [19.68,22.465) 14 0.17 16.67 70  83.33
 [22.465,25.25) 14 0.17 16.67 84 100.00

Si queremos utilizar un rango diferente (start, end) con amplitud definida (\(h\)), utilizamos lo siguiente:

dist2 <- fdt(Loblolly $ age, start=3, end=28, h=5)
dist2
 Class limits  f   rf rf(%) cf  cf(%)
        [3,8) 28 0.33 33.33 28  33.33
       [8,13) 14 0.17 16.67 42  50.00
      [13,18) 14 0.17 16.67 56  66.67
      [18,23) 14 0.17 16.67 70  83.33
      [23,28) 14 0.17 16.67 84 100.00

Si quisieramos utilizar un numero de clases diferente utilizamos el argumento \(k\):

dist3 <- fdt(Loblolly $ age, k=9) #utilizamos k para determinar el numero de clases deseado.

dist3
    Class limits  f   rf rf(%) cf  cf(%)
   [2.97,5.4456) 28 0.33 33.33 28  33.33
 [5.4456,7.9211)  0 0.00  0.00 28  33.33
 [7.9211,10.397) 14 0.17 16.67 42  50.00
 [10.397,12.872)  0 0.00  0.00 42  50.00
 [12.872,15.348) 14 0.17 16.67 56  66.67
 [15.348,17.823)  0 0.00  0.00 56  66.67
 [17.823,20.299) 14 0.17 16.67 70  83.33
 [20.299,22.774)  0 0.00  0.00 70  83.33
  [22.774,25.25) 14 0.17 16.67 84 100.00

Cálculo de la obtención del número de clases en la distribución de frecuencias

Caso 1. Regla de Stockes

Utilizamos la siguiente fórmula:

\(K = 1+(Log (n) / Log(2))\)

en donde \(K\) es el numero de clases (intervalos), y \(n\) el numero de muestras.

Si observamos los datos Loblolly contiene 84 datos:

k<-(1+log(84) /log(2)) #obtenemos el numero de clases sugeridas para nuestros datos
k
[1] 7.392317

Caso 2. Regla de Sturges

Utilizamos la siguiente fórmula:

\(K=1 + (3.322*Log10(n))\) en donde \(n\) el numero de muestras.

Cálculo de la dimensión de los intervalos de clase:

\(w = R/k\), donde \(R\) es el rango de los datos (max-min).

k1<-1 + (3.322*log10(84))

k1
[1] 7.392456

El número de clase a formar: 7 aproximadamente, también podemos utilizar la siguiente función:

nclass.Sturges(datosfreq)
[1] 8
#Esta función nos recomienda 8 clases.

Opciones gráficas:

palette() #muestra los colores disponibles
[1] "black"   "#DF536B" "#61D04F" "#2297E6" "#28E2E5" "#CD0BBC" "#F5C710"
[8] "gray62" 
par(mfrow=c(3,2)) 

Utilizaremos la variable “height””

hist(Loblolly $ height,xlab="cantidad",ylab="frecuencia",main="Histograma", col="green3")

hist(Loblolly $ height, xlab="cantidad",ylab="frecuencia",main="histograma", col="56")

RESUMEN ESTADÍSTICO DE UNA SOLA VARIABLE, DENTRO DEL ANÁLISIS DE FRECUENCIA

head(Loblolly)
   height age Seed
1    4.51   3  301
15  10.89   5  301
29  28.72  10  301
43  41.74  15  301
57  52.70  20  301
71  60.92  25  301
attach(Loblolly) #función que adjunta los datos al programa
summary(age) #note que ya no tendremos que separar por $, dado la función attach
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
    3.0     5.0    12.5    13.0    20.0    25.0 
summary(height)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
   3.46   10.47   34.00   32.36   51.36   64.10 

En este caso, la función attach() permite accesar de forma directa a la variable dentro del set de datos; detach() libera la variable. Esta función puede generar conflictos si no tiene en cuenta que se realizó el paso attach().

Ejercicios

Obtenga el set completo de la distribución de frecuencia para la variable -weight-.

  1. Interprete la primera clase de la Frecuencia Absoluta.______________________________

  2. Interprete la tercera clase de Frecuencia relativa:_________________________________

  3. Interprete la segunda clase de Frecuencia Acumulada:_____________________________

Interprete la segunda clase de Frecuencia Relativa Acumulada:_________________________

Elabore un polígono de frecuencia, póngale titulo y color a su figura.:___________________________________________________________

Resumen de funciones utilizados en R

#library() Carga un paquete especifico de R
#attach() permite adjuntar los datos de acuerdo a como fueron nombradas las variable
#data() muestra conjunto de datos que contiene los paquetes que ha cargado
#head() visualiza los titulos que contiene los datos
#fdt() Función del paquete fdth que permite elaborar distribuciones de frecuencias
#hist() elabora un histograma de frecuencias.
#palette() muestra los colores disponibles
#par(mfrow=c(3,2)) permite dividir la ventana de graficos (3 filas, 2 columnas)
#range() obtiene el rango de datos de un vector
#sort() ordena los datos de la variable de interes en forma ascendente