Code
library(tidyverse)
library(kableExtra)
library(agricolae)
library(RColorBrewer)
library(ggplot2)Install.packages(“tidyverse”)
install.packages(“kableExtra”)
install.packages(“agricolae”)
install.packages(“RColorBrewer”)
install.packkages(“ggplos2”)
library(tidyverse)
library(kableExtra)
library(agricolae)
library(RColorBrewer)
library(ggplot2)La distribución de frecuencias es uno de los conceptos fundamentales en estadística y desempeña un papel crucial en la organización, resumen y análisis de datos. Esta herramienta estadística es esencial para comprender cómo se distribuyen los valores o categorías dentro de un conjunto de observaciones, lo que a su vez nos permite extraer información valiosa y patrones significativos de los datos.
En esta introducción, exploraremos en detalle qué es una distribución de frecuencias, cómo se construye y cuál es su utilidad en el campo de la estadística. Desde su concepto básico hasta su aplicación práctica en la toma de decisiones informadas, la distribución de frecuencias es una herramienta esencial que permite a los estadísticos y analistas explorar y comunicar de manera efectiva las características subyacentes de los datos, ya sean valores numéricos o categorías.
Las variables estadísticas son atributos, características o medidas que se utilizan para representar y describir aspectos de un conjunto de datos. Estas variables pueden tomar diversas formas y tipos, y desempeñan un papel fundamental en la estadística y el análisis de datos, permitiendo comprender, resumir y tomar decisiones basadas en la información contenida en esos datos.
Variables Cualitativas (Categóricas): Representan categorías o cualidades. Se dividen en:
Nominales: No tienen un orden intrínseco. Ejemplos: género, color, marca de automóvil.
Ordinales: Tienen un orden específico entre las categorías. Ejemplos: nivel de educación, clasificación socioeconómica.
Variables Cuantitativas (Numéricas): Representan valores numéricos. Se dividen en:
Continuas: Pueden tomar un número infinito de valores en un rango. Ejemplos: edad, temperatura, ingresos.
Discretas: Tienen valores contables y generalmente son enteros. Ejemplos: número de hijos, cantidad de productos vendidos.
Nivel Nominal: Las variables nominales representan categorías sin ningún orden intrínseco. Se utilizan principalmente para clasificar y contar. Ejemplo: género (masculino, femenino, otro).
Nivel Ordinal: Las variables ordinales tienen categorías con un orden específico, pero la diferencia entre los valores no es constante ni significativa. Se utilizan para clasificar y ordenar. Ejemplo: nivel de satisfacción (baja, media, alta).
Nivel de Intervalo: Las variables de intervalo tienen categorías con un orden específico, y la diferencia entre los valores es constante y significativa. El cero en estas variables no implica la ausencia de la característica. Ejemplo: temperatura en grados Celsius.
Nivel de Razón: Las variables de razón son similares a las de intervalo, pero tienen un punto de partida absoluto (cero) que implica la ausencia de la característica. Las operaciones matemáticas como la multiplicación y la división son significativas en este nivel. Ejemplo: ingresos, edad.
Variables Dependientes: Son aquellas que se estudian o analizan para comprender cómo cambian en respuesta a otras variables. A menudo se les llama “respuesta” o “variable de resultado”.
Variables Independientes: Son aquellas que se utilizan para explicar o predecir cambios en las variables dependientes. También se les llama “variables explicativas” o “predictores”.
Variables Confundidoras (Confounding Variables): Son aquellas que pueden influir en la relación entre las variables dependientes e independientes y deben controlarse en el análisis.
Variables Control: Son aquellas que se mantienen constantes o se controlan para aislar el efecto de las variables independientes en las variables dependientes.
Una distribución de frecuencias es una representación tabular o gráfica que muestra la frecuencia con la que aparecen diferentes valores en un conjunto de datos, lo que ayuda a resumir y visualizar la distribución de los datos.
RELATIVA
Se refiere a la proporción o el porcentaje de veces que ocurre un valor específico en relación con el total de observaciones. Se calcula dividiendo la frecuencia absoluta del valor por el tamaño total de la muestra.
\(fi= \frac{ni}{N}\)
ABSOLUTA Es el número de veces que ocurre un valor específico en un conjunto de datos.
\(Fi=\sum_{i=1}^{n} fi\)
RELATIVA ACOMULADA Es similar a la frecuencia acumulada, pero se expresa como una proporción acumulativa en lugar de un número acumulativo. Se calcula dividiendo la frecuencia acumulada por el tamaño total de la muestra.
\(fi= \frac{Ni}{N}\)
ABSOLUTA ACOMULADA
Es el número acumulado de observaciones iguales o menores a un valor específico en un conjunto de datos. Se calcula sumando las frecuencias absolutas de los valores en orden ascendente o descendente.
\(Fi=\sum_{i=1}^{n}fi\)
library(readr)
ESTUD_BASE <- read_delim("~/ESTUD_BASE.csv",
delim = ";", escape_double = FALSE, col_types = cols(`CALIFICACION FINAL` = col_character(),
ALTURA = col_character(), PESO = col_character()),
trim_ws = TRUE)
View(ESTUD_BASE)head(ESTUD_BASE)# A tibble: 6 × 6
GENERO `NOMBRES ESTUDIANTES` `NIVEL DE INTERES` `CALIFICACION FINAL` ALTURA
<chr> <chr> <chr> <chr> <chr>
1 Masculino Antonio Alto 50 1,65
2 Masculino Marcos Medio 35 1,65
3 Femenino Leidy Alto 50 1,55
4 Masculino Camilo Bajo 20 1,72
5 Femenino Hillary Alto 50 1,55
6 Femenino Tatiana Alto 48 1,55
# ℹ 1 more variable: PESO <chr>
length(ESTUD_BASE)[1] 6
names(ESTUD_BASE)[1] "GENERO" "NOMBRES ESTUDIANTES" "NIVEL DE INTERES"
[4] "CALIFICACION FINAL" "ALTURA" "PESO"
str(ESTUD_BASE)spc_tbl_ [19 × 6] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
$ GENERO : chr [1:19] "Masculino" "Masculino" "Femenino" "Masculino" ...
$ NOMBRES ESTUDIANTES: chr [1:19] "Antonio" "Marcos" "Leidy" "Camilo" ...
$ NIVEL DE INTERES : chr [1:19] "Alto" "Medio" "Alto" "Bajo" ...
$ CALIFICACION FINAL : chr [1:19] "50" "35" "50" "20" ...
$ ALTURA : chr [1:19] "1,65" "1,65" "1,55" "1,72" ...
$ PESO : chr [1:19] "68" "70" "51" "68" ...
- attr(*, "spec")=
.. cols(
.. GENERO = col_character(),
.. `NOMBRES ESTUDIANTES` = col_character(),
.. `NIVEL DE INTERES` = col_character(),
.. `CALIFICACION FINAL` = col_character(),
.. ALTURA = col_character(),
.. PESO = col_character()
.. )
- attr(*, "problems")=<externalptr>
as.data.frame(table(ESTUD_BASE$GENERO)) Var1 Freq
1 Femenino 10
2 Masculino 9
FrecAbs1 <- table(ESTUD_BASE$GENERO)
FrecAbs1
Femenino Masculino
10 9
FrecRel1 <- round(prop.table(FrecAbs1), 4)
FrecRel1
Femenino Masculino
0.5263 0.4737
FrecRelP1 <- FrecRel1*100
FrecRelP1
Femenino Masculino
52.63 47.37
tabla_genero <- cbind(FrecAbs1, FrecRel1, FrecRelP1)
tabla_genero FrecAbs1 FrecRel1 FrecRelP1
Femenino 10 0.5263 52.63
Masculino 9 0.4737 47.37
colnames(tabla_genero) <- c("fi", "hi", "hi%")
tabla_genero fi hi hi%
Femenino 10 0.5263 52.63
Masculino 9 0.4737 47.37
as.data.frame(table(ESTUD_BASE$GENERO)) Var1 Freq
1 Femenino 10
2 Masculino 9
FrecAbs2 <- table(ESTUD_BASE$`NIVEL DE INTERES`)
FrecAbs2
Alto Bajo Medio
8 4 7
FrecRel2 <- round(prop.table(FrecAbs2), 4)
FrecRel2
Alto Bajo Medio
0.4211 0.2105 0.3684
FrecRelP2 <- FrecRel2*100
FrecRelP2
Alto Bajo Medio
42.11 21.05 36.84
tabla_nivel<- cbind(FrecAbs2, FrecRel2, FrecRelP2)
tabla_nivel FrecAbs2 FrecRel2 FrecRelP2
Alto 8 0.4211 42.11
Bajo 4 0.2105 21.05
Medio 7 0.3684 36.84
colnames(tabla_nivel) <- c("fi", "hi", "hi%")
tabla_nivel fi hi hi%
Alto 8 0.4211 42.11
Bajo 4 0.2105 21.05
Medio 7 0.3684 36.84
kable(tabla_genero, format = "markdown", digits = 1)| fi | hi | hi% | |
|---|---|---|---|
| Femenino | 10 | 0.5 | 52.6 |
| Masculino | 9 | 0.5 | 47.4 |
Tabla_gener<- table(ESTUD_BASE$GENERO)
barp1 <- barplot(Tabla_gener, main = "DIAGRAMA DE BARRAS VARIABLE GENERO FRECUENCIA ABSOLUTA", xlab = "GENERO",ylab = "FRECUENCIA", ylim = c(0,14),
col = c("yellow", "orange"))
text(barp1, Tabla_gener + 0.5, labels =Tabla_gener)color <- brewer.pal(length(ESTUD_BASE$GENERO), "Set2")
pie1 <- pie(FrecAbs1, labels = FrecAbs1, col = c("yellow", "orange"), main = "DIAGRAMA CIRCULAR VARIABLE CUALITATIVA GENERO")
legend('topleft', legend=rownames(FrecAbs1), bty='n',
fill=c("yellow", "orange"))9 de 19 personas son masculinos que correponden al 47.4%
kable(tabla_nivel, format = "markdown", digits = 10)| fi | hi | hi% | |
|---|---|---|---|
| Alto | 8 | 0.4211 | 42.11 |
| Bajo | 4 | 0.2105 | 21.05 |
| Medio | 7 | 0.3684 | 36.84 |
tabla_nivel<- table(ESTUD_BASE$`NIVEL DE INTERES`)
barp1 <- barplot(tabla_nivel, main = "DIAGRAMA DE BARRAS VARIABLE NIVEL DE INTERES FRECUENCIA ABSOLUTA", xlab = "NIVEL DE INTERES",ylab = "FRECUENCIA", ylim = c(0,10),
col = c("pink", "skyblue","purple"))
text(barp1, tabla_nivel + 0.5, labels =tabla_nivel)color <- brewer.pal(length(ESTUD_BASE$`NIVEL DE INTERES`), "Set2")
pie1 <- pie(FrecAbs2, labels = FrecAbs2, col = c("pink", "skyblue","purple"), main = "DIAGRAMA CIRCULAR VARIABLE CUALITATIVA NIVEL DE INTERES")
legend('topleft', legend=rownames(FrecAbs2), bty='n',
fill=c("pink", "skyblue","purple"))El nivel de interes del 36.84% de los estudiantes es medio, el 21.05% de los estudiantes tienen un nivel de interes bajo y el 42.11% tiene un nivel de interes alto.
tabla_cruce <- table(ESTUD_BASE$GENERO,ESTUD_BASE$`NIVEL DE INTERES`)
tabla <- round(prop.table(tabla_cruce), 1)
tabla_cruce %>%
kable(align = "c") %>%
kable_styling(bootstrap_options = "basic")| Alto | Bajo | Medio | |
|---|---|---|---|
| Femenino | 4 | 3 | 3 |
| Masculino | 4 | 1 | 4 |
barp6 <- barplot(tabla_cruce, main = "DIAGRAM DE BARRAS APILADAS ", xlab = "NIVEL DE INTERES", ylab = "GENERO", ylim = c(0,20), legend.text = rownames(tabla_cruce), args.legend = list(x = "topright"), col = c("purple","green"), beside = FALSE)barp6 <- barplot(tabla_cruce,main = "Diagrama de barras Compuesta", xlab ="NIVEL DE INTERES", ylab = "GENERO", ylim = c(0,15), legend = rownames(tabla_cruce), col = c("purple","green"), beside = TRUE)
text(barp6, tabla_cruce + 0, labels = tabla_cruce, pos = 3)De 9 hombres 4 tienen un nivel de interes alto, 4 medio y 1 bajo. por lo tanto, de 10 mujeres 4 tienen un nivel de interes alto, 3 bajo y 3 medio
FrecAbs3 = table(ESTUD_BASE$`CALIFICACION FINAL`)
FrecAbsA3 = cumsum(FrecAbs3)
FrecRel3 = round(prop.table(FrecAbs3), 3)
FrecReP3 = FrecRel3*100
FrecRelAP3 = cumsum(FrecReP3)
Tabla_califica = cbind(FrecAbs3,FrecAbsA3,FrecRel3,FrecReP3,FrecRelAP3)
colnames(Tabla_califica) = c("ni","Ni","hi","hi%","Hi%")
Form.Basic <- c("striped", "bordered", "hover", "condensed", "responsive")
cbind.data.frame(Tabla_califica) %>%
kable(align = "c") %>%
kable_styling(bootstrap_options = Form.Basic)| ni | Ni | hi | hi% | Hi% | |
|---|---|---|---|---|---|
| 20 | 2 | 2 | 0.105 | 10.5 | 10.5 |
| 22 | 2 | 4 | 0.105 | 10.5 | 21.0 |
| 35 | 4 | 8 | 0.211 | 21.1 | 42.1 |
| 36 | 3 | 11 | 0.158 | 15.8 | 57.9 |
| 45 | 2 | 13 | 0.105 | 10.5 | 68.4 |
| 48 | 3 | 16 | 0.158 | 15.8 | 84.2 |
| 50 | 3 | 19 | 0.158 | 15.8 | 100.0 |
j <- c(0,2,2,4,3,2,3,3)
k <- c(10,20,22,35,36,45,48,50)
plot(x = k, y = j, xlab = "CALIFICACION FINAL", ylab = "Frecuencia", pch = 15, col = "red")
segments(x0 =k, y0 = 0, x1 =k, y1 =j, lwd = 2, col = "red")fx <- c(20, 22, 35, 36, 45, 48, 50)/50
Fx <- cumsum(fx)
x <- seq(20, 50, length.out = length(Fx))
plot(x, Fx, type = "s", xlab = "CALIFICACION FINAL", ylab = "Porcentaje acumulado", col = "red", lwd = 2)De 19 estudientes solo tres obtuvieron como calificacion final 50.
FrecAbs4 = table(ESTUD_BASE$PESO)
FrecAbsA4 = cumsum(FrecAbs4)
FrecRel4 = round(prop.table(FrecAbs4), 3)
FrecReP4 = FrecRel4*100
FrecRelAP4 = cumsum(FrecReP4)
tabla1_peso = cbind(FrecAbs4,FrecAbsA4,FrecRel4,FrecReP4,FrecRelAP4)
colnames(tabla1_peso) = c("ni","Ni","hi","hi%","Hi%")
Form.Basic <- c("striped", "bordered", "hover", "condensed", "responsive")
cbind.data.frame(tabla1_peso) %>%
kable(align = "c") %>%
kable_styling(bootstrap_options = Form.Basic)| ni | Ni | hi | hi% | Hi% | |
|---|---|---|---|---|---|
| 51 | 7 | 7 | 0.368 | 36.8 | 36.8 |
| 68 | 7 | 14 | 0.368 | 36.8 | 73.6 |
| 70 | 5 | 19 | 0.263 | 26.3 | 99.9 |
par(mfrow=c(2,2))
h1 <- graph.freq(tabla1_peso, col="purple", frequency =1, main="frecuencia absoluta\nh1")
h2 <- graph.freq(tabla1_peso, col="pink", frequency =2 , main="poligono de
frecuencia\nh2")
polygon.freq(h2, col="green", lwd=2, frequency =2)
h3 <- graph.freq(tabla1_peso, col="orange", frequency =3 ,main="densidad\nh3")
h4 <- graph.freq(tabla1_peso, col="blue", frequency =3 , main="densidad
normal\nh4", density=4)
normal.freq(h4, col="brown", lty=4,lwd=2, frequency=3)h9 <- ogive.freq(h1,axes=FALSE,type="b", main="ojiva de frecuencias",
col="red")
axis(2,round(h9[,2],1),las=2)
axis(1,round(h9[,1],1),las=2)hh <- hist(tabla1_peso,nclass=6, plot=FALSE)
h11<-graph.freq(hh, frequency=2, col=colors()[367]
,main="Histograma de frecuencias relativas" ,axes=F)
axis(1,h11$breaks,las=2)
axis(2,round(h11$relative,2),las=2)En total son 19 estudiantes de ellos 7 pesan 51 y el 73.6% pesa 68.