Estadística descriptiva (Parte I)

logo

1. ¿Qué es la estadística descriptiva?

La estadística descriptiva es una rama de la estadística que se centra en la descripción y presentación significativa de datos obtenidos de una muestra o población. Su objetivo es organizar y analizar los datos de manera clara y comprensible, utilizando diagramas, gráficos y tablas para representar visualmente la información.

Este tipo de análisis permite describir una situación con base en los datos disponibles, proporcionando una visión general y detallada de las características y patrones presentes en los datos. El análisis descriptivo no busca hacer inferencias o generalizaciones a una población más amplia, sino que se enfoca en explicar los datos observados en la muestra o población de interés, destacando sus tendencias, distribuciones y relaciones.

2. Distribución de frecuencia

La distribución de frecuencia en estadística descriptiva es una tabla que resume la frecuencia con la que ocurren los diferentes valores o rangos de datos en un conjunto de observaciones. Muestra cuántas veces aparece cada valor y facilita la identificación de patrones y características importantes en los datos.

2.1 Frecuencia absoluta

Número de veces que cada variable \(i\) aparece en la muestra o población.

2.2 Frecuencia relativa

Porcentaje asociado a la frecuencia absoluta.

2.3 Frecuencia acumulada

Suma de todos los valores iguales o menores al que está siendo analizado.

2.4 Frecuencia relativa acumulada

Porcentaje asociado a la frecuencia acumulada

Actividad 1

Representar la distribución de frecuencias de las calificaciones utilizando un histograma:

# Cargar librerías necesarias
library(plotly)
## Loading required package: ggplot2
## 
## 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
# Datos de la encuesta
calificaciones = c(85, 78, 92, 67, 80, 89, 70, 95, 83, 79)

# Crear el histograma interactivo con plotly
plot_ly(x = calificaciones, type = "histogram", histnorm = "probability", marker = list(color = "skyblue"), 
        xbins = list(size = 5), 
        title = "Distribución de Calificaciones",
        xaxis = list(title = "Calificaciones"),
        yaxis = list(title = "Probabilidad")) %>%
  layout(showlegend = FALSE)
## Warning: 'histogram' objects don't have these attributes: 'title'
## Valid attributes include:
## '_deprecated', 'alignmentgroup', 'autobinx', 'autobiny', 'bingroup', 'cliponaxis', 'constraintext', 'cumulative', 'customdata', 'customdatasrc', 'error_x', 'error_y', 'histfunc', 'histnorm', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'insidetextanchor', 'insidetextfont', 'legendgroup', 'legendgrouptitle', 'legendrank', 'marker', 'meta', 'metasrc', 'name', 'nbinsx', 'nbinsy', 'offsetgroup', 'opacity', 'orientation', 'outsidetextfont', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textangle', 'textfont', 'textposition', 'textsrc', 'texttemplate', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'x', 'xaxis', 'xbins', 'xcalendar', 'xhoverformat', 'xsrc', 'y', 'yaxis', 'ybins', 'ycalendar', 'yhoverformat', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

Actividad 2

Crear un gráfico de barras para comparar la cantidad de estudiantes masculinos y femeninos en la muestra:

# Datos de la encuesta
genero = c("Masculino", "Femenino", "Masculino", "Femenino", "Femenino", "Masculino", "Masculino", "Femenino", "Femenino")

# Crear una tabla de frecuencias para el género
tabla_genero = table(genero)

# Crear el gráfico de barras interactivo con plotly
plot_ly(x = names(tabla_genero), y = tabla_genero, type = "bar", marker = list(color = c("blue", "pink")),
        title = "Distribución de Género",
        xaxis = list(title = "Género"),
        yaxis = list(title = "Cantidad")) %>%
  layout(showlegend = FALSE)
## Warning: 'bar' objects don't have these attributes: 'title'
## Valid attributes include:
## '_deprecated', 'alignmentgroup', 'base', 'basesrc', 'cliponaxis', 'constraintext', 'customdata', 'customdatasrc', 'dx', 'dy', 'error_x', 'error_y', 'hoverinfo', 'hoverinfosrc', 'hoverlabel', 'hovertemplate', 'hovertemplatesrc', 'hovertext', 'hovertextsrc', 'ids', 'idssrc', 'insidetextanchor', 'insidetextfont', 'legendgroup', 'legendgrouptitle', 'legendrank', 'marker', 'meta', 'metasrc', 'name', 'offset', 'offsetgroup', 'offsetsrc', 'opacity', 'orientation', 'outsidetextfont', 'selected', 'selectedpoints', 'showlegend', 'stream', 'text', 'textangle', 'textfont', 'textposition', 'textpositionsrc', 'textsrc', 'texttemplate', 'texttemplatesrc', 'transforms', 'type', 'uid', 'uirevision', 'unselected', 'visible', 'width', 'widthsrc', 'x', 'x0', 'xaxis', 'xcalendar', 'xhoverformat', 'xperiod', 'xperiod0', 'xperiodalignment', 'xsrc', 'y', 'y0', 'yaxis', 'ycalendar', 'yhoverformat', 'yperiod', 'yperiod0', 'yperiodalignment', 'ysrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

Actividad 3

Supongamos que hemos realizado una encuesta a un grupo de personas sobre su identidad de género, y las opciones de género son “Masculino”, “Femenino” y “No binario”. Queremos representar la distribución de género utilizando un gráfico de torta, y utilizaremos los colores de la bandera lésbica (naranja, blanco y rosa) para las diferentes secciones del gráfico.

# Datos de la encuesta
genero = c("Masculino", "Femenino", "Masculino", "No binario", "Femenino", "Masculino", "Femenino", "No binario", "Femenino", "Femenino")

# Crear una tabla de frecuencias para el género
tabla_genero = table(genero)

# Definir una paleta de colores personalizada que combina con los otros gráficos
colores_personalizados = c("skyblue", "pink", "purple")

# Crear el gráfico de torta interactivo con plotly
plot_ly(labels = names(tabla_genero), 
        values = tabla_genero, 
        type = "pie", 
        marker = list(colors = colores_personalizados),
        textinfo = "label+percent",  # Mostrar etiquetas y porcentaje
        textposition = "inside",     # Posición del texto (dentro del pedazo)
        insidetextfont = list(size = 14, color = "white"),  # Estilo del texto dentro del pedazo
        hoverinfo = "text",          # Mostrar texto al hacer hover
        hovertext = paste(names(tabla_genero), ": ", tabla_genero),  # Texto al hacer hover
        title = "Distribución de Género") %>%
  layout(showlegend = FALSE)

3. Medidas de posición: tendencia central

3.1 Media aritmética

suma de todos los valores de una variable dividida por el número de observaciones.

Actividad

Dados los siguientes datos: 10, 15, 20, 25, 30. Calcula la media aritmética.

# Datos
datos = c(10, 15, 20, 25, 30)

# Calcular la media aritmética
media_aritmetica = mean(datos)

# Imprimir el resultado
print(media_aritmetica)
## [1] 20

3.2 Media aritmética ponderada

Aplica cuando la importancia de cada observación es diferente y se aplican pesos.

Actividad

Supongamos que tienes una lista de precios de productos y sus respectivas cantidades vendidas. Calcula la media aritmética ponderada del precio de los productos vendidos, utilizando las cantidades como ponderaciones. Precios de productos: 50, 80, 65, 100, 120 Cantidades vendidas: 10, 15, 8, 20, 12

# Datos
precios_productos = c(50, 80, 65, 100, 120)
cantidades_vendidas = c(10, 15, 8, 20, 12)

# Calcular la media aritmética ponderada
media_ponderada = sum(precios_productos * cantidades_vendidas) / sum(cantidades_vendidas)

# Imprimir el resultado
print(media_ponderada)
## [1] 87.07692

3.3 Madia aritmética para datos discretos agrupados

Se basa en los datos de frecuencia

Actividad

Dada la siguiente tabla de frecuencias, calcula la media aritmética para datos discretos agrupados:

Intervalo Frecuencia
10 - 20 5
20 - 30 8
30 - 40 12
40 - 50 7
# Datos
intervalos = c("10 - 20", "20 - 30", "30 - 40", "40 - 50")
frecuencias = c(5, 8, 12, 7)

# Calcular la media aritmética para datos discretos agrupados
puntos_medios = c(15, 25, 35, 45)  # Calcula los puntos medios de cada intervalo
suma_productos = sum(puntos_medios * frecuencias)
n = sum(frecuencias)

media_aritmetica_discreta = suma_productos / n

# Imprimir el resultado
print(media_aritmetica_discreta)
## [1] 31.5625

4. Medidas de posición: cuantiles

4.1 Cuantiles

Cuantiles que se multiplican por un cuarto del conjunto de datos.

Actividad

Supongamos que tienes las siguientes edades de un grupo de personas: 25, 28, 30, 32, 35, 36, 38, 40, 45, 50. Calcula los cuantiles que se multiplican por un cuarto del conjunto de datos.

# Datos
edades = c(25, 28, 30, 32, 35, 36, 38, 40, 45, 50)

# Calcular los cuantiles
cuantiles = quantile(edades, probs = 1:3/4)

# Imprimir los cuantiles
print(cuantiles)
##  25%  50%  75% 
## 30.5 35.5 39.5

4.2 Deciles

Cuantiles que se multiplican por un décimo del conjunto de datos.

Actividad

Supongamos que tienes los siguientes datos de ventas diarias de una tienda: 1000, 1200, 1300, 1400, 1500, 1600, 1700, 1800, 1900, 2000. Calcula los deciles que se multiplican por un décimo del conjunto de datos.

# Datos
ventas_diarias = c(1000, 1200, 1300, 1400, 1500, 1600, 1700, 1800, 1900, 2000)

# Calcular los deciles
deciles = quantile(ventas_diarias, probs = 1:9/10)

# Imprimir los deciles
print(deciles)
##  10%  20%  30%  40%  50%  60%  70%  80%  90% 
## 1180 1280 1370 1460 1550 1640 1730 1820 1910

4.3 Percentiles

Cuantiles que se multiplican por un céntimo del conjunto de datos.

Actividad

Supongamos que tienes los siguientes datos de tiempos de respuesta de un servidor (en milisegundos): 50, 55, 60, 65, 70, 75, 80, 85, 90, 95. Calcula los percentiles que se multiplican por un céntimo del conjunto de datos.

# Datos
tiempos_respuesta = c(50, 55, 60, 65, 70, 75, 80, 85, 90, 95)

# Calcular los percentiles
percentiles = quantile(tiempos_respuesta, probs = 1:99/100)

# Imprimir los percentiles
print(percentiles)
##    1%    2%    3%    4%    5%    6%    7%    8%    9%   10%   11%   12%   13% 
## 50.45 50.90 51.35 51.80 52.25 52.70 53.15 53.60 54.05 54.50 54.95 55.40 55.85 
##   14%   15%   16%   17%   18%   19%   20%   21%   22%   23%   24%   25%   26% 
## 56.30 56.75 57.20 57.65 58.10 58.55 59.00 59.45 59.90 60.35 60.80 61.25 61.70 
##   27%   28%   29%   30%   31%   32%   33%   34%   35%   36%   37%   38%   39% 
## 62.15 62.60 63.05 63.50 63.95 64.40 64.85 65.30 65.75 66.20 66.65 67.10 67.55 
##   40%   41%   42%   43%   44%   45%   46%   47%   48%   49%   50%   51%   52% 
## 68.00 68.45 68.90 69.35 69.80 70.25 70.70 71.15 71.60 72.05 72.50 72.95 73.40 
##   53%   54%   55%   56%   57%   58%   59%   60%   61%   62%   63%   64%   65% 
## 73.85 74.30 74.75 75.20 75.65 76.10 76.55 77.00 77.45 77.90 78.35 78.80 79.25 
##   66%   67%   68%   69%   70%   71%   72%   73%   74%   75%   76%   77%   78% 
## 79.70 80.15 80.60 81.05 81.50 81.95 82.40 82.85 83.30 83.75 84.20 84.65 85.10 
##   79%   80%   81%   82%   83%   84%   85%   86%   87%   88%   89%   90%   91% 
## 85.55 86.00 86.45 86.90 87.35 87.80 88.25 88.70 89.15 89.60 90.05 90.50 90.95 
##   92%   93%   94%   95%   96%   97%   98%   99% 
## 91.40 91.85 92.30 92.75 93.20 93.65 94.10 94.55