Ver
#Activar paquetes.
library(lattice)
library(tidyverse)
library(kableExtra)
library(agricolae)
library(ggplot2)
library(gridExtra)
install.packages(“tidyverse”), install.packages(“kableExtra”), install.packages(“agricolae”), install.packages(“ggplot2”), intall.packages(“gridExtra”), install.package(“lattice”)
(Wickham et al. 2019; Zhu 2021; Mendiburu 2021; Wickham 2016; Auguie 2017; Sarkar 2008)
#Activar paquetes.
library(lattice)
library(tidyverse)
library(kableExtra)
library(agricolae)
library(ggplot2)
library(gridExtra)
La distribución de frecuencias1, en otras palabras, es la manera en la que se ordena una serie de observaciones en diferentes grupos, y normalmente en modo ascendente o descendente.
Para verlo en un ejemplo, un grupo de personas puede agruparse de acuerdo con su edad en rangos de 18 a 25 años, de 26 a 40 años, de 41 a 60 años y de 61 años a más.
Conviene resaltar que la distribución de frecuencias suele efectuarse respecto a una muestra estadística2, aunque también podría ser en función de toda una población.
Tabla de frecuencias.
Es la cantidad de observaciones que pertenecen a cada grupo. También, se interpreta como la cantidad de veces que se repite un suceso. Por ejemplo, continuando con el caso anterior, puede ser que de un grupo de 100 personas, 20 de ellos tengan entre 26 y 40 años.
Se calcula dividiendo la frecuencia absoluta entre el número de datos, por ejemplo, volviendo a la situación planteada líneas arriba, \frac{20}{100} es igual a 0,2 o 20\%.
Resulta de sumar las frecuencias absolutas de una clase o grupo de la muestra (o población) con la anterior o las anteriores. Por ejemplo, para calcular la frecuencia absoluta acumulada del tercer grupo se suman las frecuencias absolutas del primer, segundo y tercer grupo.
Es el resultado de sumar las frecuencias relativas, tal y como explicamos para la frecuencia absoluta acumulada. Por ejemplo, para calcular la frecuencia relativa acumulada del cuarto grupo, se suman las frecuencias relativas del primer, segundo, tercer y cuarto grupo.
#Leer base de datos.
<- read.table("Base2.csv", sep = ",", header = TRUE) BASE
#Mostrar primeros elementos de la base de datos.
head(BASE)
Estrato Sexo Hijos Edad
1 5 2 1 29
2 1 1 0 20
3 4 2 0 20
4 1 1 2 21
5 3 2 2 36
6 5 1 4 38
Asignar categorias a las variables cualitativas.
#Asignar categorías a las variables cualitativas.
<- transform(BASE, Estrato=factor(Estrato, labels = c("Muy pobre", "Pobre", "Medio", "Rico", "Muy rico")))
BASE
<- transform(BASE, Sexo=factor(Sexo, labels = c("Masculino", "Femenino")))
BASE
#Volver a ver primeros elementos.
head(BASE)
Estrato Sexo Hijos Edad
1 Muy rico Femenino 1 29
2 Muy pobre Masculino 0 20
3 Rico Femenino 0 20
4 Muy pobre Masculino 2 21
5 Medio Femenino 2 36
6 Muy rico Masculino 4 38
#Frecuencias.
= table(BASE$Sexo)
FrecAbs1 = round(prop.table(FrecAbs1), 1)
FrecRel1 = FrecRel1*100
FrecReP1
#Nombres tabla.
= cbind(FrecAbs1,FrecRel1,FrecReP1)
Tabla_Sexo colnames(Tabla_Sexo) = c("ni","hi","hi%")
<- c("striped", "bordered", "hover", "condensed", "responsive")
Form.Basic
#Generar tabla.
<- cbind.data.frame(Tabla_Sexo) %>%
Tabla1 kable(align = "c") %>%
kable_styling(bootstrap_options = Form.Basic)
#Aspecto tabla.
%>%
Tabla1 row_spec(0, bold = TRUE, color = "white", background = "#CC7373") %>%
row_spec(1:nrow(Tabla_Sexo), align = "c")
ni | hi | hi% | |
---|---|---|---|
Masculino | 13 | 0.4 | 40 |
Femenino | 17 | 0.6 | 60 |
Tabla No.1: Distribución de frecuencias para 30 personas según su sexo. Ibagué, abril 23 de 2023.
Esta tabla de frecuencia muestra la distribución de la variable “Sexo” en un conjunto de datos que contiene 30 observaciones. En total, hay 13 observaciones de género masculino y 17 observaciones de género femenino.
La frecuencia relativa para cada categoría muestra que el 40\% de las observaciones son de género masculino, mientras que el 60\% son de género femenino.
La frecuencia acumulada relativa indica que el 40\% de las observaciones son de género masculino y el 100\%de las observaciones están divididas entre género masculino y femenino.
#Frecuencias.
= table(BASE$Estrato)
FrecAbs2 = cumsum(FrecAbs2)
FrecAbsA2 = round(prop.table(FrecAbs2), 3)
FrecRel2 = FrecRel2*100
FrecReP2 = cumsum(FrecReP2)
FrecRelAP2
#Nombres columnas de la tabla.
= cbind(FrecAbs2,FrecAbsA2,FrecRel2,FrecReP2,FrecRelAP2)
Tabla_Estrato colnames(Tabla_Estrato) = c("ni","Ni","hi","hi%","Hi%")
<- c("striped", "bordered", "hover", "condensed", "responsive")
Form.Basic
#Generar tabla.
<- cbind.data.frame(Tabla_Estrato) %>%
Tabla2 kable(align = "c") %>%
kable_styling(bootstrap_options = Form.Basic)
#Aspecto tabla.
%>%
Tabla2 row_spec(0, bold = TRUE, color = "white", background = "#CC7373") %>%
row_spec(1:nrow(Tabla_Estrato), align = "c")
ni | Ni | hi | hi% | Hi% | |
---|---|---|---|---|---|
Muy pobre | 5 | 5 | 0.167 | 16.7 | 16.7 |
Pobre | 3 | 8 | 0.100 | 10.0 | 26.7 |
Medio | 5 | 13 | 0.167 | 16.7 | 43.4 |
Rico | 6 | 19 | 0.200 | 20.0 | 63.4 |
Muy rico | 11 | 30 | 0.367 | 36.7 | 100.1 |
Tabla No.2: Distribución de frecuencias para 30 personas según su estrato. Ibagué, abril 23 de 2023.
Esta tabla de frecuencia muestra la distribución de la variable “Estrato” en un conjunto de datos que contiene 30 observaciones. La variable “Estrato” se divide en cinco categorías: “Muy pobre”, “Pobre”, “Medio”, “Rico” y “Muy rico”.
La mayoría de las observaciones en el conjunto de datos se encuentran en los estratos “Muy rico” (1 observaciones) y “Medio” (5 observaciones), mientras que el menor número de observaciones se encuentra en los estratos “Pobre” y “Muy pobre” (3 y 5 observaciones, respectivamente).
En términos de frecuencia relativa, el estrato “Muy rico” tiene la mayor proporción de observaciones (36.7\%), seguido por los estratos “Medio” y “Rico” (16.7\% cada uno).
<- hist(BASE$Hijos, plot = FALSE)
Lista3
<- table.freq(Lista3)
Tabla3_Kable colnames(Tabla3_Kable) = c("Li","Ls","Yi","ni","hi%","Ni","Hi%")
<- c("striped", "bordered", "hover", "condensed", "responsive")
Form.Basic
<- cbind.data.frame(Tabla3_Kable) %>%
Tabla3 kable(align = "c") %>%
kable_styling(bootstrap_options = Form.Basic)
%>%
Tabla3 row_spec(0, bold = TRUE, color = "white", background = "#CC7373") %>%
row_spec(1:nrow(Tabla3_Kable), align = "c")
Li | Ls | Yi | ni | hi% | Ni | Hi% |
---|---|---|---|---|---|---|
0 | 1 | 0.5 | 12 | 40.0 | 12 | 40.0 |
1 | 2 | 1.5 | 7 | 23.3 | 19 | 63.3 |
2 | 3 | 2.5 | 2 | 6.7 | 21 | 70.0 |
3 | 4 | 3.5 | 6 | 20.0 | 27 | 90.0 |
4 | 5 | 4.5 | 3 | 10.0 | 30 | 100.0 |
Tabla No.3: Distribución de frecuencias para 30 personas según su número de hijos. Ibagué, abril 23 de 2023.
Esta tabla de frecuencia muestra la distribución de la variable “Hijos” en un conjunto de datos que contiene 30 observaciones. La variable “Hijos” se divide en cinco categorías basadas en los límites de clase.
La columna “L_{i}” indica el límite inferior de cada clase, la columna “L_{s}” indica el límite superior de cada clase, la columna “Y_{i}” indica el punto medio de cada clase, la columna “n_{i}” indica la frecuencia absoluta (número de observaciones) de cada clase y la columna “h_{i}\%” indica la frecuencia relativa porcentual de cada clase. La columna “N_{i}” indica la frecuencia acumulada y la columna “H_{}i\%” indica la frecuencia acumulada relativa porcentual.
La mayoría de las observaciones en el conjunto de datos tienen 0 o 1 hijos (12 y 7 observaciones, respectivamente). Solo 5 observaciones tienen 2 o más hijos.
En términos de frecuencia relativa, el 40\% de las observaciones tienen 0 hijos y el 23.3\% tienen 1 hijo. El 6.7\% tienen 2 hijos, el 20\% tienen 3 hijos y el 10\% tienen 4 hijos.
<- hist(BASE$Edad, plot = FALSE)
Lista4 <- table.freq(Lista4)
Tabla4 colnames(Tabla4) = c("Li","Ls","Yi","ni","hi%","Ni","Hi%")
<- table.freq(Lista4)
Tabla4_kable colnames(Tabla4_kable) = c("Li","Ls","Yi","ni","hi%","Ni","Hi%")
<- cbind.data.frame(Tabla4_kable) %>%
Tabla4kable(align = "c", format = "html") %>%
kable_styling(bootstrap_options = c("striped", "bordered", "hover", "condensed", "responsive"))
%>%
Tabla4 row_spec(0, bold = TRUE, color = "white", background = "#CC7373") %>%
row_spec(1:nrow(Tabla4_kable), align = "c")
Li | Ls | Yi | ni | hi% | Ni | Hi% |
---|---|---|---|---|---|---|
20 | 25 | 22.5 | 11 | 36.7 | 11 | 36.7 |
25 | 30 | 27.5 | 4 | 13.3 | 15 | 50.0 |
30 | 35 | 32.5 | 6 | 20.0 | 21 | 70.0 |
35 | 40 | 37.5 | 6 | 20.0 | 27 | 90.0 |
40 | 45 | 42.5 | 3 | 10.0 | 30 | 100.0 |
Tabla No.4: Distribución de frecuencias para 30 personas según su edad. Ibagué, abril 23 de 2023.
Esta tabla de frecuencia muestra la distribución de la variable “Edad” en un conjunto de datos que contiene 30 observaciones. La variable “Edad” se divide en cinco categorías basadas en los límites de clase.
La columna “L_{i}” indica el límite inferior de cada clase, la columna “L_{s}” indica el límite superior de cada clase, la columna “Y_{i}” indica el punto medio de cada clase, la columna “n_{i}” indica la frecuencia absoluta (número de observaciones) de cada clase y la columna “hi\%” indica la frecuencia relativa porcentual de cada clase. La columna “N_{i}” indica la frecuencia acumulada y la columna “Hi\%” indica la frecuencia acumulada relativa porcentual.
La mayoría de las observaciones en el conjunto de datos tienen edades entre 20 y 35 años, con 11 observaciones en el rango de 20-25 años y 6 observaciones en el rango de 30-35 años y 35-40 años. Solo 7 observaciones tienen edades superiores a 35 años.
En términos de frecuencia relativa, el 36.7\% de las observaciones tienen edades entre 20-25 años, mientras que el 13.3\% y el 20\% tienen edades entre 25-30 años y 30-35 años, respectivamente. El 20\% tienen edades entre 35-40 años y el 10\% tienen edades entre 40-45 años.
<- table(BASE$Estrato,BASE$Sexo)
Tabla_Cruz <- round(prop.table(Tabla_Cruz), 4)
Tabla
%>%
Tabla_Cruz kable(align = "c") %>%
kable_styling(bootstrap_options = Form.Basic) %>%
row_spec(0, bold = TRUE, color = "white", background = "#CC7373") %>%
row_spec(1:nrow(Tabla_Cruz), align = "c")
Masculino | Femenino | |
---|---|---|
Muy pobre | 2 | 3 |
Pobre | 1 | 2 |
Medio | 2 | 3 |
Rico | 2 | 4 |
Muy rico | 6 | 5 |
Tabla No.5: Frecuencia de género y nivel socioeconómico.
Esta tabla de frecuencia es un cruce de dos variables cualitativas: “Estrato” y “Sexo”. El cruce permite observar la distribución de los individuos en las diferentes categorías de cada variable, en función del sexo.
En este caso, se observa que la mayoría de los individuos en todas las categorías de estrato son mujeres, aunque la diferencia no es muy grande en la mayoría de los casos. La categoría de “Muy rico” es la única en la que hay más hombres que mujeres. Además, se puede observar que el número de individuos varía significativamente entre las diferentes categorías de estrato.
<- table(BASE$Estrato,BASE$Sexo)
Tabla_Cruz <- round(prop.table(Tabla_Cruz), 4)
Tabla
%>%
Tabla kable(align = "c") %>%
kable_styling(bootstrap_options = Form.Basic) %>%
row_spec(0, bold = TRUE, color = "white", background = "#CC7373") %>%
row_spec(1:nrow(Tabla), align = "c")
Masculino | Femenino | |
---|---|---|
Muy pobre | 0.0667 | 0.1000 |
Pobre | 0.0333 | 0.0667 |
Medio | 0.0667 | 0.1000 |
Rico | 0.0667 | 0.1333 |
Muy rico | 0.2000 | 0.1667 |
Tabla No.6 : Frecuencia relativa de género y nivel socioeconómico.
Esta tabla es también un cruce de las variables cualitativas “Estrato” y “Sexo”, pero en este caso los porcentajes corresponden a la proporción de hombres y mujeres en cada categoría de estrato.
Se puede observar que, en general, la proporción de mujeres es mayor que la proporción de hombres en todas las categorías de estrato, aunque la diferencia no es muy grande en la mayoría de los casos. La excepción es la categoría de “Muy rico”, donde la proporción de hombres es mayor que la de mujeres.
Este tipo de análisis de cruce de variables puede ayudar a entender mejor las diferencias en la distribución de género según diferentes categorías socioeconómicas, y puede ser útil para identificar patrones y desigualdades en la sociedad.
<- BASE %>%
BASE_resumen group_by(Estrato) %>%
summarize(n = n())
ggplot(BASE_resumen, aes(x = Estrato, y = n, fill = Estrato)) +
geom_bar(stat = "identity",
width = 0.6,
color = "black",
size = 0.2) +
theme_minimal() +
theme(legend.position = "none",
panel.grid.major.x = element_blank(),
panel.grid.minor.x = element_blank(),
axis.line.x = element_line(size = 0.2, color = "black"),
axis.ticks = element_blank(),
axis.text = element_text(size = 12),
plot.title = element_text(size = 18, face = "bold"),
plot.caption = element_text(size = 12, hjust = 0)) +
labs(title = "Diagrama de barras Estrato. Frecuencia absoluta.",
x = "Estrato",
y = "Frecuencia") +
geom_text(aes(label = n),
position = position_stack(vjust = 1.1),
size = 5,
color = "black") +
scale_fill_brewer(palette = "Set3") +
scale_y_continuous(breaks = seq(0, max(BASE_resumen$n), 2))
Gráfica No.1: Diagrama de barras para 30 personas según su estrato. Frecuencia absoluta.
<- rainbow(nlevels(factor(BASE$Estrato)))
colores
barchart(BASE$Estrato,
xlab = "Estrato",
ylab = "Frecuencia",
main = "Diagrama de barras Estrato. Frecuencia absoluta.",
horizontal = FALSE,
col = colores,
panel = function(x, y, ...) {
panel.barchart(x, y, ...)
panel.text(x, y, labels = y, pos = 3, cex = 0.8)
})
Gráfica No.1: Diagrama de barras para 30 personas según su estrato. Frecuencia absoluta.
<- table(BASE$Estrato)
Tablaestr <- barplot(Tablaestr, main = "Diagrama de barras Estrato frecuencia absoluta", xlab = "Estrato",ylab = "Frecuencia", ylim = c(0,15),
barp1 col = c("brown", "blue", "green", "red", "orange"))
text(barp1, Tablaestr + 0.5, labels = Tablaestr)
Gráfica No.1: Diagrama de barras para 30 personas según su estrato. Frecuencia absoluta.
El análisis de la tabla muestra que la mayoría de las observaciones se encuentran en las categorías de “Medio”, “Rico” y “Muy rico”. La categoría de “Muy pobre” tiene la frecuencia más baja, seguida de “Pobre”. La categoría con la frecuencia absoluta más alta es “Muy rico”, con 11 observaciones.
En general, la distribución de frecuencia muestra una tendencia hacia niveles socioeconómicos más altos, lo que sugiere que la población estudiada tiende a estar concentrada en los niveles socioeconómicos superiores. Además, se observa una gran disparidad en la frecuencia absoluta entre las diferentes categorías, lo que puede tener implicaciones importantes en términos de desigualdad económica.
<- BASE %>%
BASE_resumen group_by(Estrato) %>%
summarize(n = n())
$FrecRelAP2 <- BASE_resumen$n / sum(BASE_resumen$n) * 100
BASE_resumen
ggplot(BASE_resumen, aes(x = Estrato, y = FrecRelAP2, fill = Estrato)) +
geom_bar(stat = "identity",
width = 0.6,
color = "black",
size = 0.2) +
theme_minimal() +
theme(legend.position = "none",
panel.grid.major.x = element_blank(),
panel.grid.minor.x = element_blank(),
axis.line.x = element_line(size = 0.2, color = "black"),
axis.ticks = element_blank(),
axis.text = element_text(size = 12),
plot.title = element_text(size = 18, face = "bold"),
plot.caption = element_text(size = 12, hjust = 0)) +
labs(title = "Diagrama de barras Estrato. Frecuencia relativa (%).",
x = "Estrato",
y = "Porcentaje") +
geom_text(aes(label = paste0(round(FrecRelAP2,1))),
position = position_stack(vjust = 1.1),
size = 5,
color = "black") +
scale_fill_brewer(palette = "Set3")
Gráfica No.2: Diagrama de barras para 30 personas según su estrato. Frecuencia relativa.
<- rainbow(nlevels(factor(BASE$Estrato)))
colores $FrecRelAP2 <- BASE_resumen$n / sum(BASE_resumen$n) *100
BASE_resumenbarchart(round(FrecRelAP2,2) ~ Estrato, data = BASE_resumen,
xlab = "Estrato", ylab = "Porcentaje", main = "Diagrama de barras Estrato. Frecuencia relativa (%).",
horizontal = FALSE,
col = colores,
panel = function(x, y, ...) {
panel.barchart(x, y, ...)
panel.text(x, y, labels = y, pos = 3, cex = 0.8)
})
Gráfica No.2: Diagrama de barras para 30 personas según su estrato. Frecuencia relativa.
<- barplot(FrecReP2, main = "Diagrama de barras Estrato frecuencia relativa (%).", xlab = "Estrato", ylab = "Porcentaje", ylim = c(0,40), col = rainbow(5))
barp2 text(barp2, FrecReP2 + 1.2, labels = FrecReP2)
Gráfica No.2: Diagrama de barras para 30 personas según su estrato. Frecuencia relativa.
La gráfica muestra la distribución de frecuencia relativa por estrato de una variable en una muestra de datos. Los valores de la variable han sido agrupados en cinco categorías (muy pobre, pobre, medio, rico y muy rico) y se ha calculado la frecuencia relativa de cada categoría en la muestra. La gráfica utiliza un diagrama de barras, donde cada barra representa una categoría y su altura representa la frecuencia relativa correspondiente. La gráfica también incluye etiquetas en la parte superior de cada barra con el valor de la frecuencia relativa redondeado a una decimal.
La gráfica es clara y fácil de interpretar. Se puede observar que la categoría con la frecuencia relativa más alta es la de estrato muy, seguida de la categoría de estrato rico. Las categorías de estrato muy pobre y pobre tienen frecuencias relativas más bajas.
<- ggplot(BASE_resumen, aes(x = Estrato, y = n, fill = Estrato)) +
p1 geom_bar(stat = "identity",
width = 0.6,
color = "black",
size = 0.2) +
theme_minimal() +
theme(legend.position = "none",
panel.grid.major.x = element_blank(),
panel.grid.minor.x = element_blank(),
axis.line.x = element_line(size = 0.2, color = "black"),
axis.ticks = element_blank(),
axis.text = element_text(size = 12),
plot.title = element_text(size = 18, face = "bold"),
plot.caption = element_text(size = 12, hjust = 0)) +
labs(x = "Estrato",
y = "Frecuencia") +
geom_text(aes(label = n),
position = position_stack(vjust = 1.1),
size = 5,
color = "black") +
scale_fill_brewer(palette = "Set3") +
scale_y_continuous(breaks = seq(0, max(BASE_resumen$n), 2))
<-ggplot(BASE_resumen, aes(x = Estrato, y = FrecRelAP2, fill = Estrato)) +
p2 geom_bar(stat = "identity",
width = 0.6,
color = "black",
size = 0.2) +
theme_minimal() +
theme(legend.position = "none",
panel.grid.major.x = element_blank(),
panel.grid.minor.x = element_blank(),
axis.line.x = element_line(size = 0.2, color = "black"),
axis.ticks = element_blank(),
axis.text = element_text(size = 12),
plot.title = element_text(size = 18, face = "bold"),
plot.caption = element_text(size = 12, hjust = 0)) +
labs(x = "Estrato",
y = "Porcentaje") +
geom_text(aes(label = paste0(round(FrecRelAP2,1))),
position = position_stack(vjust = 1.1),
size = 5,
color = "black") +
scale_fill_brewer(palette = "Set3")
grid.arrange(p1, p2, ncol=2)
Gráfica No.3: Diagrama de barras en una sola fila para 30 personas según su estrato. Frecuencia absoluta y relativa.
<- rainbow(nlevels(factor(BASE$Estrato)))
colores $FrecRelAP2 <- BASE_resumen$n / sum(BASE_resumen$n) *100
BASE_resumen
<- barchart(BASE$Estrato,
barras xlab = "Estrato",
ylab = "Frecuencia",
horizontal = FALSE,
col = colores,
panel = function(x, y, ...) {
panel.barchart(x, y, ...)
panel.text(x, y, labels = y, pos = 3, cex = 0.8)
})
print(barras, position = c(0, 0, 0.5, 1), more = TRUE)
<- barchart(round(FrecRelAP2,2) ~ Estrato,
barras2 data = BASE_resumen,
xlab = "Estrato", ylab = "Porcentaje",
horizontal = FALSE,
col = colores,
panel = function(x, y, ...) {
panel.barchart(x, y, ...)
panel.text(x, y, labels = y, pos = 3, cex = 0.8)
})
print(barras2, position = c(0.5, 0, 1, 1), more = FALSE)
Gráfica No.3: Diagrama de barras en una sola fila para 30 personas según su estrato. Frecuencia absoluta y relativa.
par(mfrow = c(1, 2))
<- table(BASE$Estrato)
Tablaestr <- barplot(Tablaestr, xlab = "Estrato",ylab = "Frecuencia", ylim = c(0,15), col = c("brown", "blue", "green", "red", "orange"))
barp1 text(barp1, Tablaestr + 0.5, labels = Tablaestr)
<- barplot(FrecReP2, xlab = "Estrato", ylab = "Porcentaje", ylim = c(0,40), col = rainbow(5))
barp2 text(barp2, FrecReP2 + 1.2, labels = FrecReP2)
Gráfica No.3: Diagrama de barras en una sola fila para 30 personas según su estrato. Frecuencia absoluta y relativa.
La figura muestra dos gráficos de barras relacionados con la variable “Estrato”. El primer gráfico muestra la frecuencia de cada estrato en la muestra, con las barras coloreadas de manera diferente para cada categoría de estrato. El segundo gráfico muestra los porcentajes de cada estrato, también coloreados de manera diferente.
En el primer gráfico, se puede observar que el estrato 1 tiene la mayor frecuencia, seguido del estrato 2 y el estrato 3, mientras que los estratos 4 y 5 tienen las frecuencias más bajas. El segundo gráfico muestra que el estrato 1 representa aproximadamente el 37\% de la muestra, mientras que el estrato 2 representa alrededor del 20\%, el estrato 3 representa alrededor del 17\%, el estrato 4 representa alrededor del 10\%, y el estrato 5 representa alrededor del 17\% de la muestra.
En general, se puede concluir que la muestra parece tener una distribución sesgada hacia los estratos más bajos, especialmente el estrato 2. Esto puede tener implicaciones para cualquier análisis estadístico posterior que se realice con los datos, ya que la muestra puede no ser representativa de la población en general.
#Gráfica
ggplot(BASE, aes(x = Sexo, fill = Estrato)) +
geom_bar(position = "dodge") +
theme_minimal() +
labs(title = "Diagrama de barras compuesto. Estrato vs Sexo.",
x = "Estrato",
y = "Frecuencia",
fill = "Estrato") +
scale_fill_brewer(palette = "Set3")
Gráfica No.4: Diagrama de barras compuesto para 30 personas según su estrato y sexo.
<- barplot(Tabla_Cruz, main = "Diagrama de barras Compuesta", xlab = "Estrato", ylab = "Frecuencia", ylim = c(0,10), legend = rownames(Tabla_Cruz), col = c("brown", "blue", "green", "red", "orange"), beside = TRUE) barp3
Gráfica No.4: Diagrama de barras compuesto para 30 personas según su estrato y sexo.
Esta gráfica es un diagrama de barras compuesto que muestra la frecuencia de los distintos estratos para hombres y mujeres. La variable “Sexo” se representa en el eje X y la variable “Estrato” se representa mediante la separación de las barras en diferentes colores.
La gráfica muestra que el estrato más común para ambos sexos es el estrato Muy rico, y el menos común es el estrato Pobre. Además, se puede observar que la frecuencia de hombres y mujeres en cada estrato es bastante similar.
En conclusión, esta gráfica proporciona una buena visualización de la relación entre el estrato y el sexo, permitiendo la comparación directa de la frecuencia de cada estrato para hombres y mujeres.
library(tidyverse)
<- as.data.frame(Tabla_Cruz)
df
ggplot(df, aes(x = Var2, y = Freq, fill = Var1)) +
geom_col(position = "stack") +
labs(title = "Diagrama de barras apilado",
x = "Sexo",
y = "Frecuencia",
fill = "Estrato") +
scale_fill_brewer(palette = "Set3") +
theme_minimal()
Gráfica No.5: Diagrama de barras compuesto para 30 personas según su estrato y sexo.
<- barplot(Tabla_Cruz, main = "Diagrama de barras Apilado", xlab = "Estrato", ylab = "Frecuencia", ylim = c(0,20), legend.text = rownames(Tabla_Cruz), args.legend = list(x = "topleft"), col = c("brown", "blue", "green", "red", "orange"), beside = FALSE) barp4
Gráfica No.5: Diagrama de barras compuesto para 30 personas según su estrato y sexo.
La gráfica resultante tiene en el eje X los valores de la variable Sexo (Masculino y Femenino), y en el eje Y la frecuencia de cada combinación de Estrato y Sexo. La leyenda se muestra en la esquina superior izquierda de la gráfica y contiene los nombres de las categorías de Estrato.
Se puede observar que el estrato Muy rico tiene la mayor frecuencia de observaciones para ambos sexos. El estrato Pobre tiene la menor frecuencia para ambos sexos. Además, se puede ver que la distribución de frecuencias por estrato y sexo varía ligeramente: el estrato Rico tiene una mayor frecuencia de observaciones para mujeres, mientras que el estrato Muy rico tiene una mayor frecuencia de observaciones para hombres.
ggplot(BASE, aes(y = Estrato, fill = Estrato)) +
geom_bar() +
theme_minimal() +
labs(title = "Diagrama de barras horizontal",
x = "Frecuencia",
y = "Estrato") +
scale_fill_brewer(palette = "Set3")
Gráfica No.6: Diagrama de barras horizontal para 30 personas según su estrato.
<- barplot(FrecAbs2, main = "Diagrama de barras horizontal Estrato ", xlab = "Frecuencia", ylab = "Estrato", horiz = TRUE,
barp5 col = c("brown", "blue", "green", "red", "orange"))
Gráfica No.6: Diagrama de barras horizontal para 30 personas según su estrato.
La gráfica de barras horizontal que se presenta muestra la frecuencia absoluta de cada uno de los estratos, representados por diferentes colores. La frecuencia es el número de observaciones que se encuentran en cada estrato. Se puede ver que el estrato muy rico es el que tiene la mayor frecuencia, seguido del estrato pobre rico, medio y muy pobre. El estratos Pobre tiene la frecuencia más baja.
El análisis de la tabla muestra que la mayoría de las observaciones se encuentran en las categorías de “Medio”, “Rico” y “Muy rico”. La categoría de “Muy pobre” tiene la frecuencia más baja, seguida de “Pobre”. La categoría con la frecuencia absoluta más alta es “Muy rico”, con 11 observaciones.
En general, la distribución de frecuencia muestra una tendencia hacia niveles socioeconómicos más altos, lo que sugiere que la población estudiada tiende a estar concentrada en los niveles socioeconómicos superiores. Además, se observa una gran disparidad en la frecuencia absoluta entre las diferentes categorías, lo que puede tener implicaciones importantes en términos de desigualdad económica.
# Convertir los datos a un data frame
<- data.frame(
datos categoria = c("Muy pobre", "Pobre", "Medio", "Rico", "Muy rico"))
# Crear la gráfica de pastel
<- ggplot(datos, aes(x="", y=FrecAbs2, fill=categoria)) +
grafica geom_bar(stat="identity", width=1) +
coord_polar("y", start=0) +
theme_void() +
scale_fill_manual(values=c("#73DFC3", "#FDFFB0", "#CDB2E5", "#FF6C6C", "blue"))
# Agregar etiquetas y leyenda
<- grafica +
grafica geom_text(aes(label=paste0(FrecAbs2)), position=position_stack(vjust=0.5), size=5) +
labs(title="Frecuencia Estrato") +
theme(plot.title = element_text(hjust = 0.5)) +
guides(fill=guide_legend(title="Estrato"))
# Mostrar Gráfica
grafica
Gráfica No.7: Diagrama de sectores para 30 personas según su estrato.
<- paste0(FrecAbs2)
etiquetas <- c("#73DFC3", "#FDFFB0", "#CDB2E5", "#FF6C6C", "blue")
col <- pie(FrecAbs2, labels = etiquetas, col = c("#73DFC3", "#FDFFB0", "#CDB2E5", "#FF6C6C", "blue"), main = "Frecuencia Estrato",init.angle = 30)
pie2 legend("bottomleft", c("Muy pobre", "Pobre", "Medio", "Rico", "Muy rico"), fill = col, border = "white", bty = "n", cex = 0.9)
Gráfica No.7: Diagrama de sectores para 30 personas según su estrato.
La gráfica de pastel que se presenta muestra la frecuencia absoluta de cada uno de los estratos, representados por diferentes secciones de la torta. La sección de la torta correspondiente al estrato muy rico es la más grande, lo que indica que es el estrato con la frecuencia absoluta más alta. La sección correspondiente al estrato rico es la segunda más grande, seguida de las secciones correspondientes a los estratos medio, muy pobre y pobre en orden descendente de tamaño.
El análisis de la gráfica muestra que la mayoría de las observaciones se encuentran en las categorías de “Medio”, “Rico” y “Muy rico”. La categoría de “Muy pobre” tiene la frecuencia más baja, seguida de “Pobre”. La categoría con la frecuencia absoluta más alta es “Muy rico”, con 11 observaciones.
library(ggplot2)
# Convertir los datos a un data frame
<- data.frame(
datos categoria = c("Muy pobre", "Pobre", "Medio", "Rico", "Muy rico"),
frecuencia = FrecRel2
)# Calcular los porcentajes
<- FrecRel2 * 100
porcentaje
# Crear la gráfica de pastel
<- ggplot(datos, aes(x="", y=porcentaje, fill=categoria)) +
grafica geom_bar(stat="identity", width=1) +
coord_polar("y", start=0) +
theme_void() +
scale_fill_manual(values=c("#73DFC3", "#FDFFB0", "#CDB2E5", "#FF6C6C", "blue"))
# Agregar etiquetas y leyenda
<- grafica +
grafica geom_text(aes(label=paste0(porcentaje, "%")), position=position_stack(vjust=0.5), size=5) +
labs(title="Porcentaje Frecuencia Estrato") +
theme(plot.title = element_text(hjust = 0.5)) +
guides(fill=guide_legend(title="Estrato"))
grafica
Gráfica No.8: Diagrama de sectores para el porcentaje de 30 personas según su estrato.
<- paste0(FrecRel2*100, "%")
etiquetas <- c("#73DFC3", "#FDFFB0", "#CDB2E5", "#FF6C6C", "blue")
col <- pie(FrecRel2, labels = etiquetas, col = c("#73DFC3", "#FDFFB0", "#CDB2E5", "#FF6C6C", "blue"), main = "Frecuencia Estrato",init.angle = 30)
pie2 legend("bottomleft", c("Muy pobre", "Pobre", "Medio", "Rico", "Muy rico"), fill = col, border = "white", bty = "n", cex = 0.9)
Gráfica No.8: Diagrama de sectores para el porcentaje de 30 personas según su estrato.
La gráfica de pastel que se presenta muestra la frecuencia relativa de cada uno de los estratos, representados por diferentes secciones de la torta. La sección de la torta correspondiente al estrato muy rico es la más grande, lo que indica que es el estrato con la frecuencia absoluta más alta. La sección correspondiente al estrato rico es la segunda más grande, seguida de las secciones correspondientes a los estratos medio, muy pobre y pobre en orden descendente de tamaño.
Se observa que los estratos medio y muy pobre tienen el mismo porcentaje de personas que pertenecen (16.7\%), mientras que al estatro pobre y muy rico, pertenecen el 10\% y 36.7\% respectivamente.
<- c(0, 1, 2, 3, 4, 5)
j <- c(5, 7, 7, 2, 6, 3)
k <- plot(x = j, y = k, xlab = "No. Hijos", ylab = "Frecuencia", pch = 15, main = "Variable Hijos", col = "#87CEFA")
p1 abline(h = seq(0, max(k), by = 1), lty = 2, col = "gray")
abline(v = seq(0, max(j), by = 0.5), lty = 2, col = "gray")
segments(x0 = j, y0 = 0, x1 = j, y1 = k, lwd = 2, col = "#87CEFA")
Gráfica No.9: Diagrama de bastones para la frecuencia de 30 personas según su número de hijos.
La gráfica muestra una distribución de frecuencia de la variable “No. Hijos” en una muestra de datos. En el eje x se encuentra la cantidad de hijos y en el eje y se encuentra la frecuencia de cada cantidad de hijos en la muestra.
Se puede observar que la mayoría de las personas en la muestra tienen 1 o 2 hijos, mientras que las personas con 3 o más hijos son menos frecuentes. La línea horizontal muestra los niveles de frecuencia, mientras que las líneas verticales representan cada valor de la variable “No. Hijos”.
La distribución parece ser asimétrica hacia la derecha, lo que sugiere que la mayoría de las personas en la muestra tienen un bajo número de hijos. También se puede notar que hay una mayor variabilidad en la frecuencia de las personas que tienen un número mayor de hijos.
<- 0:5
x <- c(5, 7, 7, 2, 6, 3)/30
fx <- cumsum(fx)*100
Fx plot(x = c(0, x), y = c(0, Fx), type = "s", xlab = "No. Hijos", ylab = "Porcentaje acumulado", col = "blue", lwd = 2)
abline(h = seq(0, max(Fx), by = 10), lty = 2, col = "gray")
abline(v = seq(0, max(x), by = 0.5), lty = 2, col = "gray")
points(x, Fx, col = "blue", pch = 15)
Gráfica No.10: Diagrama escalonado acumulado para la frecuencia de 30 personas según su número de hijos.
Esta gráfica representa una distribución acumulada de la variable “número de hijos” en una muestra de datos. El eje horizontal muestra los posibles valores de la variable (de 0 a 5 hijos) y el eje vertical muestra el porcentaje acumulado de individuos que tienen hasta ese número de hijos.
La línea azul muestra la curva de distribución acumulada, la cual es creciente y tiene un “salto” en los puntos en que la frecuencia relativa cambia. La línea punteada permite una rápida interpretación de los resultados. Por ejemplo, se puede ver que aproximadamente el 60\% de los individuos tienen 2 o menos hijos, mientras que el 90\% tienen 4 o menos hijos.
# Establecer la disposición de los gráficos en una matriz de 2x2
par(mfrow=c(2,2))
# Gráfico 1: Frecuencia Absoluta
<- graph.freq(BASE$Edad, col="#73DFC3", frequency=1, main="Frecuencia Absoluta", xlab = "Edad")
h1
# Gráfico 2: Polígono de Frecuencia
<- graph.freq(BASE$Edad, col="#FDFFB0", frequency=2, main="Polígono de Frecuencia",xlab = "Edad")
h2 polygon.freq(h2, col="blue", lwd=2, frequency=2)
# Gráfico 3: Densidad
<- graph.freq(BASE$Edad, col="#CDB2E5", frequency=3, main="Densidad", xlab = "Edad")
h3
# Gráfico 4: Densidad Normal
<- graph.freq(BASE$Edad, col="#FF6C6C", frequency=3, main="Densidad Normal", xlab = "Edad", density=4)
h4 normal.freq(h4, col="green", lty=4, lwd=2, frequency=3)
Gráfica No.11: Histograma, poligono, densidad y ojiva para la edad de 30 personas.
El código proporciona cuatro gráficos diferentes, que representan diferentes aspectos de la variable Edad en una base de datos. La disposición de los gráficos en una matriz de 2x2 es una buena opción para visualizarlos juntos y compararlos fácilmente.
El Gráfico 1 muestra la frecuencia absoluta de la variable Edad. El Gráfico 2 muestra el polígono de frecuencia de la variable Edad. También se ha añadido una sombra que ayuda a visualizar la distribución de los datos de una manera más clara. El Gráfico 3 muestra la densidad de la variable Edad. Nuevamente. El Gráfico 4 muestra la densidad normal de la variable Edad. La densidad normal se utiliza para comparar la distribución de la variable con una distribución normal. El gráfico muestra la densidad normal superpuesta a la densidad de la variable Edad. La elección de colores y las etiquetas están bien definidas.
En general, el código proporciona una visualización adecuada de la variable Edad y es fácil de interpretar para los estadísticos y para cualquier persona que desee comprender mejor los datos.
<- ogive.freq(h1,axes=FALSE,type="b", main="ojiva de frecuencias",
h9 col="red")
axis(2,round(h9[,2],1),las=2)
axis(1,round(h9[,1],1),las=2)
Gráfica No.12: Ojiva para la edad de 30 personas.
La gráfica muestra una ojiva de frecuencias acumuladas para la variable edad con valores en el eje x y frecuencias acumuladas en el eje y. Se puede observar que la distribución de los datos es positivamente sesgada, lo que indica que hay más valores más pequeños y menos valores más grandes.
Los valores extremos, es decir, los valores más pequeños y los valores más grandes, tienen frecuencias acumuladas bajas, lo que indica que son menos comunes en el conjunto de datos.
El tipo de clase de la función hist() es “histogram” y de grah.freq() es “graph.freq”, sin embargo es posible establecer compatibilidad entre ambas funciones.
<- hist(BASE$Edad,nclass=6, plot=FALSE)
hh <- c("#FDFFB0")
colors
<-graph.freq(hh, frequency=2, col=colors, main="Histograma de frecuencias relativas", xlab = "Edad" ,axes=F)
h11axis(1,h11$breaks,las=2)
axis(2,round(h11$relative,2),las=2)
Gráfica No.13: Histograma de porcentaje para la edad de 30 personas.
La gráfica muestra un histograma de frecuencias relativas de la variable “Edad” en el conjunto de datos. La variable “Edad” se divide en 6 clases, y se muestra la proporción de valores que caen en cada clase en el eje y.
La mayoría de los valores de edad en el conjunto de datos se encuentran entre los 20 y los 25 años, lo que indica que la distribución de la edad es relativamente joven. La distribución es relativamente simétrica, lo que sugiere que la edad está distribuida de manera uniforme en el conjunto de datos.
Si se tiene datos agrupados, con la función graph.freq() se puede graficar y obtener los resumenes del histograma; asi por ejemplo en la siguiente tabla:
0 - 10 | 10 - 20 | 20 - 30 | 30 - 40 | 40 - 50 |
3 | 8 | 15 | 18 | 6 |
# Define histogram data
<- c(0, 10, 20, 30, 40, 50)
clases <- c(3, 8, 15, 18, 6)
frec
# Create histogram plot
<- graph.freq(clases, counts = frec,
h12 xlab = "Clases",
main = "Histograma de frecuencias",
col = "#FDFFB0",
border = "black",
xlim = c(min(clases), max(clases)+10),
ylim = c(0, max(frec)*1.2),
ylab = "Frecuencia")
# Add a legend
legend("topright",
legend = "Frecuencias",
fill = "#FDFFB0",
border = "black")
Gráfica No.14: Histograma de frecuencia para la edad de 30 personas.
La gráfica que se muestra es un histograma de frecuencias de datos agrupados en clases. Las clases se han definido como “0-10”, “10-20”, “20-30”, “30-40” y “40-50”. La frecuencia de cada clase se ha dado en el eje y.
Observando la gráfica, se puede notar que la mayor frecuencia se encuentra en la clase “30-40”, lo que indica que la mayoría de los datos se concentran en ese intervalo. También se puede observar que las clases extremas, “0-10” y “40-50”, tienen una frecuencia menor. La forma de la gráfica sugiere una distribución aproximadamente simétrica, con una ligera asimetría hacia la derecha debido a la clase “30-40” que tiene una frecuencia más alta.
La distribución de frecuencias es la forma en la que un conjunto de datos se clasifica en distintos grupos excluyentes entre sí. Es decir, si un dato pertenece a un grupo no puede pertenecer a otro.↩︎
Una muestra estadística es un subconjunto de datos perteneciente a una población de datos. Estadísticamente hablando, debe estar constituido por un cierto número de observaciones que representen adecuadamente el total de los datos.↩︎