datos = datasets::CO2 # Dataset de experimento con plantas

Distribución de frecuencia

Variables cualitativas - Tipo de Planta

fi = -as.numeric(sort(-table(datos$Type))) # Frecuencia absoluta
fac = cumsum(fi) # Frecuencia acumulada
fri = as.numeric(fi/sum(fi))*100 # Frecuencia relativa
frac = cumsum(fri) # Frecuencia relativa acumulada
types = unique(datos$Type) # Para obtener cada nombre de planta único
frec_types = data.frame(types, fi, fac, fri = round(fri, 2), frac = round(frac,2))
knitr::kable(frec_types)
types fi fac fri frac
Quebec 42 42 50 50
Mississippi 42 84 50 100

Variables cuantitativas - Concentración de CO2 ambiental

fi = as.numeric(table(datos$conc))
fac = cumsum(fi)
fri = as.numeric(fi/sum(fi))*100
frac = cumsum(fri)
conc = sort(unique(datos$conc)) # Para obtener cada valor de concentración único
frec_conc = data.frame(conc, fi, fac, fri=round(fri,2), frac=round(frac,2))
knitr::kable(frec_conc)
conc fi fac fri frac
95 12 12 14.29 14.29
175 12 24 14.29 28.57
250 12 36 14.29 42.86
350 12 48 14.29 57.14
500 12 60 14.29 71.43
675 12 72 14.29 85.71
1000 12 84 14.29 100.00

Pregunta: ¿Qué ocurre al construir directamente una tabla de frecuencia? ¿Qué conclusiones se pueden extraer?

En la estadística la frecuencia corresponde a una medición que toma en cuenta la cantidad de veces que se repite un proceso, teniendo esto en cuenta, al construir una tabla de frecuencia podremos ver de manera más compacta la información, se puede concluir de este tipo de tablas cosas como el número de sucesos y el porcentaje que estos cubren en relación al total.

conc = sort(unique(datos$conc))
n = length(conc)
k = round(1 + 3.3 * log(n)) # Regla de Sturges
h = round((max(conc)-min(conc))/k) # Intervalos

intervalos = hist(datos$conc, plot=FALSE, breaks = k)$breaks
intervalos = paste("(",intervalos[1:(length(intervalos)-1)], "-", intervalos[2:(length(intervalos))], "]", sep = "")

fi = hist(datos$conc, plot = FALSE, breaks = k)$counts
fac = cumsum(fi)
fri = as.numeric(fi/sum(fi))*100
frac = cumsum(fri)

frec_conc = data.frame(conc = intervalos, fi, fac, fri=round(fri,2), frac=round(frac,2))
knitr::kable(frec_conc)
conc fi fac fri frac
(0-100] 12 12 14.29 14.29
(100-200] 12 24 14.29 28.57
(200-300] 12 36 14.29 42.86
(300-400] 12 48 14.29 57.14
(400-500] 12 60 14.29 71.43
(500-600] 0 60 0.00 71.43
(600-700] 12 72 14.29 85.71
(700-800] 0 72 0.00 85.71
(800-900] 0 72 0.00 85.71
(900-1000] 12 84 14.29 100.00

Gráficos

Variables cuantitativas - Tipo de planta

Gráfico de barras

library(ggplot2)
library(plotly)
## 
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
## 
##     last_plot
## The following object is masked from 'package:stats':
## 
##     filter
## The following object is masked from 'package:graphics':
## 
##     layout
p = ggplot(data=frec_types, aes(x=reorder(types, -fri), y=fi)) +
  geom_bar(stat="identity", fill="maroon", alpha= 0.8) + theme_minimal() +
  labs(title="Frecuencia absoluta - Tipo de planta", x = "Nombre", y = "Frecuencia absoluta")
ggplotly(p)

Gráfico tipo pie

# Se actualizan los datos sobreescritos por la variable cuantitativa para operar con los datos de la variable cualitativa

fi = -as.numeric(sort(-table(datos$Type)))
fac = cumsum(fi)
fri = as.numeric(fi/sum(fi))*100
frac = cumsum(fri)


p = ggplot(frec_types, aes(x="", y=fri, fill=reorder(types, -fri))) + geom_bar(stat = "identity", width = 1) + coord_polar("y", start = 0) + theme_minimal() + labs(title = "Frecuencia relativa - Tipos de plantas", x = "Tipo de planta", y = "Frecuencia relativa (%)")

p = p + scale_fill_brewer(palette = "Set3", name = "Tipo de planta")
plot(p)

Gráfico tipo Pareto

p = ggplot(data = frec_types, aes(x = reorder(types, -fri), y=fi)) + geom_bar(stat = "identity", fill = "maroon", alpha = 0.8) + theme_minimal() + labs(title = "Frecuencia absoluta y absoluta acumulada - Tipos de plantas", x = "Tipo de planta", y = "Frecuencia absoluta")

p = p + geom_point(aes(y = fac))
ggplotly(p)

Variables cuantitativas - Concentración de CO2 ambiental

Diagrama de punto

# Se redefinen las frecuencias correspondientes a la variable cuantitativa ya que fueron sobreescritas por las frecuencias de la variable cualitativa
fi = as.numeric(table(datos$conc))
fac = cumsum(fi)
fri = as.numeric(fi/sum(fi))*100
frac = cumsum(fri)

library("BHH2")
dotPlot(datos$conc, xlab = "Concentración (mL/L)",)

Histograma

fi = as.numeric(table(datos$conc))
fac = cumsum(fi)
fri = as.numeric(fi/sum(fi))*100
frac = cumsum(fri)

grafico = ggplot(datos, aes(conc))
grafico = grafico + geom_histogram(bins = 30, fill = "maroon", color = "maroon", alpha = 0.8)
grafico = grafico + theme_bw()
grafico = grafico + ylab("Frecuencia absoluta (Concentración)") + xlab("Concentración (mL/L)")
grafico = grafico + ggtitle("Histograma")
ggplotly(grafico)