Análisis descriptivo univariante - bivariante

Medidas de tendencia central y percentiles

Author

Grupo 06

Published

November 3, 2023

SEMESTRE 2023 II

Facultad: Facultad de Ciencias Matemáticas

Integrantes:

1 Introducción

Las medidas de tendencia central y los percentiles son herramientas fundamentales en la estadística descriptiva que nos permiten comprender y resumir la información contenida en conjuntos de datos. Estas medidas proporcionan una visión general de la distribución de datos y son esenciales para la toma de decisiones, análisis y presentación de resultados en una amplia variedad de campos, desde la investigación científica hasta el mundo empresarial.

Las medidas de tendencia central, como la media, la mediana y la moda, nos brindan información sobre el valor central o típico de un conjunto de datos. Estas medidas nos ayudan a responder preguntas como: “¿Cuál es el valor promedio de una variable?” o “¿Cuál es el valor que se encuentra en el centro de la distribución?”.

Por otro lado, los percentiles son una forma de dividir los datos en partes iguales, lo que nos permite comprender cómo se distribuyen los valores en un conjunto de datos y cómo se comparan con valores específicos de referencia. Los percentiles son particularmente útiles para analizar la posición relativa de un valor en relación con otros valores y para identificar valores atípicos o extremos en la distribución.

En esta exposición, exploraremos en detalle las medidas de tendencia central, incluyendo cómo calcular y usar la media, la mediana y la moda en RStudio. También exploraremos cómo calcular percentiles y su aplicación en la comprensión de datos. A lo largo de esta presentación, aprenderemos cómo estas herramientas estadísticas pueden ayudarnos a tomar decisiones informadas y a obtener información valiosa de nuestros conjuntos de datos.

2 Medidas de tendencia central

Las medidas de tendencia central son medidas estadísticas que pretenden resumir en un solo valor a un conjunto de valores. Representan un centro en torno al cual se encuentra ubicado el conjunto de los datos. Las medidas de tendencia central más utilizadas son: media, mediana y moda. Las medidas de dispersión en cambio miden el grado de dispersión de los valores de la variable. Dicho en otros términos las medidas de dispersión pretenden evaluar en qué medida los datos difieren entre sí. De esta forma, ambos tipos de medidas usadas en conjunto permiten describir un conjunto de datos entregando información acerca de su posición y su dispersión. Los procedimientos para obtener las medidas estadísticas difieren levemente dependiendo de la forma en que se encuentren los datos. Si los datos se encuentran ordenados en una tabla estadística diremos que se encuentran “agrupados” y si los datos no están en una tabla hablaremos de datos “no agrupados”. Según este criterio, haremos primero el estudio de las medidas estadísticas para datos no agrupados y luego para datos agrupados.

2.1 Medidas estadísticas

2.1.1 Promedio o media

La “media aritmética” es una medida de tendencia central utilizada para calcular el valor promedio de un conjunto de datos. Se obtiene sumando todos los valores en el conjunto y luego dividiendo la suma por el número de valores. La media aritmética proporciona una estimación del valor central de los datos y se utiliza ampliamente en estadísticas para resumir la distribución de datos.

Media Aritmética (Datos no Agrupados)

La “media aritmética para datos no agrupados” es una medida de tendencia central utilizada cuando se tienen valores individuales sin categorizar. Se obtiene sumando todos los valores y dividiendo la suma por la cantidad total de valores. Esta medida es la forma más común de calcular el valor promedio y se utiliza cuando se dispone de datos puntuales en lugar de intervalos o categorías y se expresa como:

Media de la población:

\[\begin{equation} u = \frac{\sum_{i=1}^{n} X_i}{N} \end{equation}\]

Media de una muestra:

\[\begin{equation} \overline{x} = \frac{\sum_{i=1}^{n} X_i}{n} \end{equation}\]

Donde:

  • \((\bar{x})\) es la media arítmetica del conjunto de datos
  • \((n)\) es el número de valores en el conjunto de datos.
  • \((X_i)\) representa cada uno de los valores individuales en el conjunto de datos.
  • El \(\sum\) (Sigma) símbolo se utiliza para denotar la suma de todos los valores \((X_i)\) en el conjunto de datos.

Por ejemplo:

Supongamos que tenemos un conjunto de 10 valores numéricos:

\(72,88,65,90,78,82,75,95,87,70\)

Para calcular la media aritmética de estos 10 valores, simplemente sumamos todos los valores y luego dividimos la suma por la cantidad de valores (en este caso, 10):

\[\begin{equation} \overline{x} = \frac{\sum_{i=1}^{10} X_i}{10} = \frac{802}{10} = {80.2} \end{equation}\]

EJEMPLO USANDO CODIGO R

# Supongamos que tenemos un conjunto de 10 valores numéricos
valores <- c(72, 88, 65, 90, 78, 82, 75, 95, 87, 70)

# Calculamos la media aritmética
media_aritmetica <- mean(valores)

media_aritmetica
[1] 80.2

Media Aritmética (Datos Agrupados)

La “media aritmética para datos agrupados” es una medida de tendencia central utilizada cuando los datos se presentan en forma de intervalos o clases en lugar de valores individuales. Se calcula sumando el producto de los puntos medios de los intervalos y sus frecuencias, y luego dividiendo por el número total de datos en el conjunto. Esta medida es útil cuando se trabaja con datos categóricos o discretos agrupados en intervalos.

\[\begin{equation} \overline{x} = \frac{\sum_{i=1}^{n} (X_i \cdot f_i)}{N} \end{equation}\]

Donde:

  • \((\bar{x})\) es el valor promedio que estamos calculando para los datos agrupados.
  • \((n)\) es el número de intervalos o clases en los que se agrupan los datos.
  • \((X_i)\) es el punto medio de cada intervalo o clase.
  • El \((f_i)\) es la frecuencia (cantidad de datos) en el intervalo \(i\).
  • \(N\) es el número total de datos en el conjunto.

La fórmula implica sumar el producto de los puntos medios de los intervalos y sus respectivas frecuencias y luego dividir esta suma por el número total de datos. Esta fórmula es útil para calcular la media aritmética cuando se trabaja con datos agrupados en intervalos o clases en lugar de valores individuales.

Ejemplo:

Supongamos que tenemos los siguientes datos de calificaciones de un grupo de estudiantes agrupados en intervalos de 10 puntos:

Intervalo de Calificaciones Frecuencia (Cantidad de Estudiantes)
40 - 49 5
50 - 59 12
60 - 69 20
70 - 79 18
80 - 89 15
90 - 99 10

Para calcular la media aritmética de estas calificaciones agrupadas, primero debes determinar el punto medio (marca de clase) de cada intervalo, usando la fórmula:

\[\begin{equation} X = \frac{L_i + L_s}{2} \end{equation}\]

y luego aplicar la fórmula de la media aritmética para datos agrupados:

Calcular los puntos medios de los intervalos:

  • Punto medio del intervalo \(40-49 = (40 + 49) / 2 = 44.5\)

  • Punto medio del intervalo \(50-59 = (50 + 59) / 2 = 54.5\)

  • Punto medio del intervalo \(60-69 = (60 + 69) / 2 = 64.5\)

  • Punto medio del intervalo \(70-79 = (70 + 79) / 2 = 74.5\)

  • Punto medio del intervalo \(80-89 = (80 + 89) / 2 = 84.5\)

  • Punto medio del intervalo \(90-99 = (90 + 99) / 2 = 94.5\)

Aplicar la fórmula de la media aritmética para datos agrupados:

\[\begin{equation} \overline{x} = \frac{(44.5⋅5)+(54.5⋅12)+(64.5⋅20)+(74.5⋅18)+(84.5⋅15)+(94.5⋅10)}{80} \end{equation}\] \[\begin{equation} \overline{x} = \frac{222.5+654+1290+1341+1267.5+945}{80} = 75.2375 \end{equation}\]

Por lo tanto, la media aritmética de las calificaciones de los estudiantes en estos intervalos agrupados es aproximadamente 71.5. Esto significa que, en promedio, los estudiantes obtuvieron una calificación de alrededor de 71.5.

EJEMPLO USANDO CODIGO R

# Crear un vector con las frecuencias de calificaciones
frecuencias <- c(5, 12, 20, 18, 15, 10)

# Crear un vector con los límites inferiores y superiores de los intervalos
limites_inferiores <- c(40, 50, 60, 70, 80, 90)
limites_superiores <- c(49, 59, 69, 79, 89, 99)

# Calcular los puntos medios de los intervalos
puntos_medios <- (limites_inferiores + limites_superiores) / 2

# Calcular el número total de estudiantes
N <- sum(frecuencias)

# Calcular la suma de (puntos medios * frecuencias)
suma_productos <- sum(puntos_medios * frecuencias)

# Calcular la media aritmética para datos agrupados
media_aritmetica_agrupados <- suma_productos / N

media_aritmetica_agrupados
[1] 71.5

Otra forma de hallar la media aritmética:

#install.packages("dplyr")
library(dplyr)

Attaching package: 'dplyr'
The following objects are masked from 'package:stats':

    filter, lag
The following objects are masked from 'package:base':

    intersect, setdiff, setequal, union
# Crear un data frame con los datos agrupados
data <- data.frame(
  Intervalo = c("40-49", "50-59", "60-69", "70-79", "80-89", "90-99"),
  Frecuencia = c(5, 12, 20, 18, 15, 10),
  LimiteInferior = c(40, 50, 60, 70, 80, 90),
  LimiteSuperior = c(49, 59, 69, 79, 89, 99)
)

# Calcular el punto medio para cada intervalo y la suma ponderada
media_aritmetica <- data %>%
  mutate(PuntoMedio = (LimiteInferior + LimiteSuperior) / 2) %>%
  summarise(MediaAritmetica = sum(PuntoMedio * Frecuencia) / sum(Frecuencia))

media_aritmetica
  MediaAritmetica
1            71.5

2.1.2 Mediana

En el ámbito de la estadística, la mediana representa el valor de la variable de posición central en un conjunto de datos ordenados. Se le denota mediana. Si la serie tiene un número par de puntuaciones, la mediana es la media entre las dos puntuaciones centrales.

La mediana se puede dividir en dos tipos principales según el tipo de datos:

Mediana (Datos no Agrupados)

Se define como aquella medida de un conjunto de observaciones que no es superado ni supera a más de la mitad de las observaciones, arregladas en orden de magnitud #creciente o decreciente. Esta medida se calcula de la siguiente forma:

\[\begin{equation} {M_e} = x_ \frac{(n+1)}{2} \ \end{equation}\]

Por ejemplo, considera el siguiente conjunto de datos: 5, 7, 9, 11, 13, 15, 17

Como hay un número impar de datos (7 en total), la mediana es el valor que se encuentra en el medio de la distribución, que en este caso es 11. Entonces, la mediana de este conjunto de datos no agrupados es 11.

*EJEMPLO USANDO CODIGO R

#Datos no agrupados
datos <- c(5, 7, 9, 11, 13, 15, 17)

# Calcular la mediana
mediana <- median(datos)

# Imprimir la mediana
print(mediana)
[1] 11

Mediana (Datos Agrupados)

Cuando sólo se disponga de información resumida en una tabla de frecuencias, se puede hacer el cálculo de la Mediana, mediante la siguiente expresión:

\[\begin{equation} \text{Me}= L + c (\frac{n/2 - F_j-1}{(f_j)}) \end{equation}\]

Donde:

  • \((L)\): es el Límite inferior del intervalo que contiene la mediana
  • \((f_j)\):es la Frecuencia Absoluta del Intervalo que contiene la Mediana
  • \((f_j-1)\) es la Frecuencia Absoluta Acumulada del intervalo anterior al que contiene la Mediana
  • \((c)\) es el Ancho de clase del intervalo que contiene a la Mediana

Ejemplo:

CLASES FRECUENCIA FRECUENCIA ACUMULADA
10 - 20 4 4
20 - 30 5 9
30 - 40 9 18
40 - 50 11 29
50 - 60 13 42

Con la información de las frecuencias, podemos calcular la mediana utilizando la fórmula específica para datos agrupados.

\[\begin{equation} \text{Me}= L + c (\frac{n/2 - F_j-1}{(f_j)})\ \end{equation}\] \[\begin{equation} \text{Me}= 40 + 10(\frac{42/2 - 18}{(11)})\ \end{equation}\] \[\begin{equation} \text{Me}= 40 + 10(\frac{3}{11})\ \end{equation}\] \[\begin{equation} \text{Me}= 40 + 2.72\ \end{equation}\] \[\begin{equation} \text{Me}= 42.72\ \end{equation}\]

En este ejemplo, la mediana sería aproximadamente 42.72 para los datos agrupados dados.

*EJEMPLO USANDO CODIGO R

# Definir los datos agrupados
intervalos <- c("10 - 20", "20 - 30", "30 - 40", "40 - 50", "50 - 60")
frecuencia <- c(4, 5, 9, 11, 13)
frecuencia_acumulada <- c(4, 9, 18, 29, 42)

# Calcular el número total de datos (N)
N <- sum(frecuencia)

# Encontrar el intervalo que contiene la mediana
intervalo_mediana <- intervalos[which(frecuencia_acumulada >= N/2)[1]]

# Extraer el límite inferior y superior del intervalo de la mediana
limites_mediana <- as.numeric(unlist(strsplit(intervalo_mediana, " - ")))
limite_inferior_mediana <- limites_mediana[1]
limite_superior_mediana <- limites_mediana[2]

# Calcular la amplitud del intervalo (I)
I <- limite_superior_mediana - limite_inferior_mediana

# Calcular la frecuencia del intervalo de la mediana (f)
f <- frecuencia[which(intervalos == intervalo_mediana)]

# Calcular la mediana
mediana <- limite_inferior_mediana + ((N/2 - frecuencia_acumulada[which(intervalos == intervalo_mediana) - 1]) * I) / f

# Imprimir la mediana
print(paste("La mediana es:", round(mediana, 2)))
[1] "La mediana es: 42.73"

2.1.3 Moda

La moda es una medida de tendencia central que representa el valor más frecuente en un conjunto de datos. En general, la moda se utiliza para identificar el valor que aparece con mayor frecuencia y puede ser aplicada a conjuntos de datos numéricos o categóricos. Es particularmente útil para comprender la distribución de datos y encontrar valores representativos dentro de un conjunto.

La moda se puede dividir en dos tipos principales según el tipo de datos:

Moda (Datos no Agrupados)

La moda para datos no agrupados se refiere al valor que aparece con mayor frecuencia en un conjunto de datos sin que estos estén organizados en clases. En este caso, se puede identificar simplemente observando cuál es el valor que se repite con mayor frecuencia. Por ejemplo, considera el siguiente conjunto de datos:

2,4,4,5,6,6,6,7,8,9

En este caso, la moda sería 6, ya que es el valor que más se repite en el conjunto de datos proporcionado.

EJEMPLO USANDO CODIGO R

# Datos no agrupados
datos <- c(2, 4, 4, 5, 6, 6, 6, 7, 8, 9)

# Calcular la moda
moda_result <- as.numeric(names(table(datos))[table(datos) == max(table(datos))])

# Imprimir la moda
print(moda_result)
[1] 6

Otra forma:

# install.packages("DescTools")
library(DescTools)
Warning: package 'DescTools' was built under R version 4.3.2
#creamos nuestro vector
datos <- c(2, 4, 4, 5, 6, 6, 6, 7, 8, 9)

#Calculamos la moda con la herramienta mode 
moda<- Mode(datos)

#Imprimimos resultado
cat("la moda de los datos es:", moda)
la moda de los datos es: 6

Como observamos al imprimir la moda obtenemos el mismo resultado que el encontrado anteriormente.

Moda (Datos Agrupados)

en el contexto de datos agrupados, la moda se refiere al valor o rango de valores que tiene la mayor frecuencia en un conjunto de datos que ha sido agrupado en clases. La clase modal es aquella que tiene la frecuencia más alta entre todas las clases y representa el valor más frecuente en el conjunto de datos. El valor o el rango de valores dentro de la clase modal se considera la moda en el contexto de datos agrupados.

Formula: \(\text{Moda} = L + \frac{f_1 - f_0}{(f_1 - f_0) + (f_1 - f_2)} \times h\)

Donde:

  • (L) es el límite inferior de la clase modal
  • (h) es la amplitud de clase
  • \((f_1)\) es la frecuencia de la clase modal
  • \((f_0)\) es la frecuencia de la clase anterior a la modal
  • \((f_2)\) es la frecuencia de la clase siguiente a la modal.

Ejemplo:

CLASES FRECUENCIA
50 - 60 4
60 - 70 7
70 - 80 9
80 - 90 13
90 - 100 10

Aplicando la fórmula para datos agrupados, primero necesitamos identificar la clase modal, que en este caso es 80-90. Luego, con la información de las frecuencias, podemos calcular la moda utilizando la fórmula específica para datos agrupados.

\(\text{Moda} = L + \frac{f_1 - f_0}{(f_1 - f_0) + (f_1 - f_2)} \times h\)

\(\text{Moda} = 80 + \frac{13 - 9}{(13-9) + (13-10)} \times 10\)

\(\text{Moda} = 80 + \frac{4}{7} \times 10\)

\(\text{Moda} = 85.71\)

En este ejemplo, la moda sería aproximadamente 85.71 para los datos agrupados dados.

*EJEMPLO USANDO CODIGO R

# Datos agrupados
clases <- c("50-60", "60-70", "70-80", "80-90", "90-100")
frecuencias <- c(4, 7, 9, 13, 10)

# Crear un dataframe con las clases y frecuencias
df <- data.frame(Clases = clases, Frecuencia = frecuencias)

# Calcular la moda exacta para datos agrupados
h <- 10
index_moda <- which.max(frecuencias)
limite_inferior <- as.numeric(sub("-.*", "", df$Clases[index_moda]))
frecuencia_moda <- df$Frecuencia[index_moda]
frecuencia_anterior <- ifelse(index_moda - 1 > 0, df$Frecuencia[index_moda - 1], 0)
frecuencia_siguiente <- ifelse(index_moda + 1 <= length(frecuencias), df$Frecuencia[index_moda + 1], 0)
moda_exacta <- limite_inferior + ((frecuencia_moda - frecuencia_anterior) / ((frecuencia_moda - frecuencia_anterior) + (frecuencia_moda - frecuencia_siguiente))) * h

# Imprimir el resultado
print(paste("La moda exacta para datos agrupados es:", round(moda_exacta, 2)))
[1] "La moda exacta para datos agrupados es: 85.71"

2.1.4 Percentiles

Los percentiles son, tal vez, las medidas más utilizadas para propósitos de ubicación o clasificación de las personas cuando atienden características tales como peso, estatura, etc. Los percentiles son ciertos números que dividen la sucesión de datos ordenados en cien partes porcentualmente iguales. Estos son los valores que dividen en cien partes iguales el conjunto de datos ordenados.

El percentil 50 del data set es la mediana, el percentil 25 es el primer cuartil y el percentil 75 es el tercer cuartil.

Percentiles (Datos no Agrupados)

Si se tienen una serie de valores \(X_1, X_2, X_3 … X_n\), se localiza mediante las siguientes fórmulas:

Para los percentiles, n es par cuando: \(\frac{(K * (n + 1))}{100}\)

en R studio:

calcular_valor <- function(K, n) {
  resultado <- (K * (n + 1)) / 100
  return(resultado)}

NOTA: para hallar los Percentiles se sigue el mismo procedimiento que los Cuartiles.

Ejemplo:

Datos: 12, 15, 18, 20, 22, 25, 28, 30, 35, 40

Posición del \({P_(25)}\)

\(\frac{(K * (n + 1))}{100}\) = \(\frac{(25 * (10 + 1))}{100}\) = \(\frac{(25 * (11))}{100}\) = \(\frac{(275)}{100}\) = \({2.75}\)

Posición del \({P_(75)}\)

\(\frac{(K * (n + 1))}{100}\) = \(\frac{(75 * (11))}{100}\) = \(\frac{(825)}{100}\) = \({8.25}\)

Aplicación R studio:

datos <- c(12, 15, 18, 20, 22, 25, 28, 30, 35, 40)

# Ordena los datos de menor a mayor
datos_ordenados <- sort(datos)

# Calcula la posición del percentil 25
n <- length(datos_ordenados)
posicion_P25 <- (25 / 100) * (n + 1)

# Identifica las posiciones inferior y superior
posicion_inf <- floor(posicion_P25)
posicion_sup <- ceiling(posicion_P25)

# Realiza la interpolación lineal para encontrar el percentil 25
P25 <- datos_ordenados[posicion_inf] + (posicion_P25 - posicion_inf) * (datos_ordenados[posicion_sup] - datos_ordenados[posicion_inf])

P25
[1] 17.25

Ejemplo 02:

Datos: 10, 15, 18, 20, 25, 28, 30, 35, 38, 42, 45, 50, 55

Posición del \({P_(90)}\)

\(\frac{(90 * (13+1))}{100}\) = \(\frac{(90* (14))}{100}\) = \(\frac{(1260)}{100}\) = \({12.6}\)

Aplicación en R studio:

# Datos
datos <- c(10, 15, 18, 20, 25, 28, 30, 35, 38, 42, 45, 50, 55)

# Ordena los datos de menor a mayor
datos_ordenados <- sort(datos)

# Calcula la posición del percentil 90
n <- length(datos_ordenados)
posicion_P90 <- (90 / 100) * (n + 1)

# Identifica las posiciones inferior y superior
posicion_inf <- floor(posicion_P90)
posicion_sup <- ceiling(posicion_P90)

# Realiza la interpolación lineal para encontrar el percentil 90
P90 <- datos_ordenados[posicion_inf] + (posicion_P90 - posicion_inf) * (datos_ordenados[posicion_sup] - datos_ordenados[posicion_inf])

P90
[1] 53

Fórmula para percentiles (Datos Agrupados)

\(P_k=L_i+c\left(\frac{\frac{(k \cdot n)}{100}-F_{j-1}}{f_j}\right)\), \(P=\frac{k.n}{100}\)

  • \((k)\) es el percentil buscado
  • \((c)\) es la amplitud del intervalo
  • \((P)\) es la posición del percentil en la frecuencia acumulada
  • \((n)\) es el tamaño de la muestra
  • \(F(j-1)\) es la frecuencia absoluta acumulado anterior a nuestro intervalo
  • \((f_j)\) es la frecuencia absoluta del intervalo del percentil

Usando la siguiente tabla de frecuencia que agrupa la longitud del pétalo de 150 flores iris (iris$Petal.Length)

INTERVALOS FRECUENCIA FRECUENCIA ACUMULADA
0.95 - 2.15 50 50
2.15 - 3.35 3 53
3.35 - 4.55 34 87
4.55 - 5.75 47 134
5.75 - 6.95 16 150

\(\text{p36} = (3.35+ 1.2*(\frac{54-53}{34})\)

\(\text{p36} = (3.35+ 1.2*(0.02941176)\)

\(\text{p36} = (3.35+ 0.03529412)\)

\(\text{p36} = 3.385\)

Usando data set importados desde github

url <- "https://raw.githubusercontent.com/JulioArapa/mypackage/main/ds_salaries.csv"
data1 <- read.csv(url)
dim(data1)
[1] 607  12
names(data1)
 [1] "X"                  "work_year"          "experience_level"  
 [4] "employment_type"    "job_title"          "salary"            
 [7] "salary_currency"    "salary_in_usd"      "employee_residence"
[10] "remote_ratio"       "company_location"   "company_size"      
# Para encontrar los cuartiles de la variable slary_in_usd
quantile(data1$salary_in_usd)
    0%    25%    50%    75%   100% 
  2859  62726 101570 150000 600000 
# Para encontrar un percentil de la variable slary_in_usd
quantile(data1$salary_in_usd, 0.36)
  36% 
80000 
# Podemos obtener múltiples percentiles usando un vector.

quantile(data1$salary_in_usd, probs = c(0.3,0.5,0.7,0.9))
     30%      50%      70%      90% 
 71337.6 101570.0 140000.0 200000.0 
# Para obtener el percentil correspondiente a un valor determinado.

ecdf(data1$salary_in_usd)(160589)
[1] 0.8039539
# Tambien podemos obtener los cuatiles de la columna salary_in_usd basado en los grupos de la columna job_title

# install.packages("dplyr")
library(dplyr)

do.call("rbind",
        tapply(data1$salary_in_usd, 
               data1$job_title, 
               quantile))
                                             0%       25%      50%       75%
3D Computer Vision Researcher              5409   5409.00   5409.0   5409.00
AI Scientist                              12000  15026.50  45896.0  87500.00
Analytics Engineer                       135000 165000.00 179850.0 189850.00
Applied Data Scientist                    54238 110037.00 157000.0 177000.00
Applied Machine Learning Scientist        31875  36768.75  56700.0 162000.00
BI Data Analyst                            9272  40944.25  76500.0  99500.00
Big Data Architect                        99703  99703.00  99703.0  99703.00
Big Data Engineer                          5882  17557.00  41305.5  79756.00
Business Data Analyst                     18442  59102.00  70912.0 100000.00
Cloud Data Engineer                       89294 106970.50 124647.0 142323.50
Computer Vision Engineer                  10000  20180.25  26304.5  52152.25
Computer Vision Software Engineer         70000  82873.00  95746.0 122873.00
Data Analyst                               6072  62000.00  90320.0 116150.00
Data Analytics Engineer                   20000  42500.00  64598.5  86897.75
Data Analytics Lead                      405000 405000.00 405000.0 405000.00
Data Analytics Manager                   105400 114640.00 120000.0 142500.00
Data Architect                            90700 148900.00 180000.0 200669.50
Data Engineer                              4000  70039.50 105500.0 154600.00
Data Engineering Manager                  59303  79833.00 150000.0 153000.00
Data Science Consultant                    5707  66786.00  76833.0  83416.50
Data Science Engineer                     40189  50094.50  60000.0  93610.50
Data Science Manager                      54094 142285.25 155750.0 178050.00
Data Scientist                             2859  54724.00 103691.0 140850.00
Data Specialist                          165000 165000.00 165000.0 165000.00
Director of Data Engineering             113476 135107.00 156738.0 178369.00
Director of Data Science                 130026 147756.50 168000.0 223489.50
ETL Developer                             54957  54957.00  54957.0  54957.00
Finance Data Analyst                      61896  61896.00  61896.0  61896.00
Financial Data Analyst                   100000 187500.00 275000.0 362500.00
Head of Data                              32974 102839.00 200000.0 230000.00
Head of Data Science                      85000 103750.00 138937.5 181906.25
Head of Machine Learning                  79039  79039.00  79039.0  79039.00
Lead Data Analyst                         19609  53304.50  87000.0 128500.00
Lead Data Engineer                        56000 106916.75 121593.5 151250.00
Lead Data Scientist                       40570  77785.00 115000.0 152500.00
Lead Machine Learning Engineer            87932  87932.00  87932.0  87932.00
Machine Learning Developer                78791  78791.00  78791.0  89395.50
Machine Learning Engineer                 20000  51064.00  87932.0 150000.00
Machine Learning Infrastructure Engineer  50180  54217.50  58255.0 126627.50
Machine Learning Manager                 117104 117104.00 117104.0 117104.00
Machine Learning Scientist                12000 118075.00 156500.0 225000.00
Marketing Data Analyst                    88654  88654.00  88654.0  88654.00
ML Engineer                               15966  32415.00  70537.5 211341.00
NLP Engineer                              37236  37236.00  37236.0  37236.00
Principal Data Analyst                    75000  98750.00 122500.0 146250.00
Principal Data Engineer                  185000 192500.00 200000.0 400000.00
Principal Data Scientist                 148261 156837.00 173762.0 227500.00
Product Data Analyst                       6072   9554.00  13036.0  16518.00
Research Scientist                        42000  62176.00  76263.5 105000.00
Staff Data Scientist                     105000 105000.00 105000.0 105000.00
                                           100%
3D Computer Vision Researcher              5409
AI Scientist                             200000
Analytics Engineer                       205300
Applied Data Scientist                   380000
Applied Machine Learning Scientist       423000
BI Data Analyst                          150000
Big Data Architect                        99703
Big Data Engineer                        114047
Business Data Analyst                    135000
Cloud Data Engineer                      160000
Computer Vision Engineer                 125000
Computer Vision Software Engineer        150000
Data Analyst                             200000
Data Analytics Engineer                  110000
Data Analytics Lead                      405000
Data Analytics Manager                   150260
Data Architect                           266400
Data Engineer                            324000
Data Engineering Manager                 174000
Data Science Consultant                  103000
Data Science Engineer                    127221
Data Science Manager                     241000
Data Scientist                           412000
Data Specialist                          165000
Director of Data Engineering             200000
Director of Data Science                 325000
ETL Developer                             54957
Finance Data Analyst                      61896
Financial Data Analyst                   450000
Head of Data                             235000
Head of Data Science                     224000
Head of Machine Learning                  79039
Lead Data Analyst                        170000
Lead Data Engineer                       276000
Lead Data Scientist                      190000
Lead Machine Learning Engineer            87932
Machine Learning Developer               100000
Machine Learning Engineer                250000
Machine Learning Infrastructure Engineer 195000
Machine Learning Manager                 117104
Machine Learning Scientist               260000
Marketing Data Analyst                    88654
ML Engineer                              270000
NLP Engineer                              37236
Principal Data Analyst                   170000
Principal Data Engineer                  600000
Principal Data Scientist                 416000
Product Data Analyst                      20000
Research Scientist                       450000
Staff Data Scientist                     105000

2.2 Medidas de tendencia central y percentiles (Datasets)

Realizando el análisis de las medidas de tendencia central y percentiles usando una base de datos predeterminada de R.

# Cargar el conjunto de datos "iris"
data(iris)

# Calcular la media de la longitud del sépalo
media <- mean(iris$Sepal.Length)

# Calcular la mediana de la longitud del sépalo
mediana <- median(iris$Sepal.Length)

# Calcular la moda de la longitud del sépalo
tab <- table(iris$Sepal.Length)
moda_value <- as.numeric(names(tab[which.max(tab)]))

# Calcular los percentiles 25, 50 y 75 de la longitud del sépalo
percentiles <- quantile(iris$Sepal.Length, c(0.25, 0.50, 0.75))

# Imprimir los resultados
cat("Media:", media, "\n")
Media: 5.843333 
cat("Mediana:", mediana, "\n")
Mediana: 5.8 
cat("Moda:", moda_value, "\n")
Moda: 5 
cat("Percentil 25:", percentiles[1], "\n")
Percentil 25: 5.1 
cat("Percentil 50:", percentiles[2], "\n")
Percentil 50: 5.8 
cat("Percentil 75:", percentiles[3], "\n")
Percentil 75: 6.4 

Realizando el análisis de las medidas de tendencia central y percentiles usando una base de datos externa.

# Instala y carga la librería "readr" para leer datos CSV
#install.packages("readr")
library(readr)

# Descargar y leer los datos desde el enlace
url <- "https://raw.githubusercontent.com/JulioArapa/mypackage/main/ds_salaries.csv"
datos <- read.csv(url)

# Calcular la media aritmética de la columna "salario" en el conjunto de datos
media <- mean(datos$salary)
print(paste("Media aritmética:", media))
[1] "Media aritmética: 324000.062602965"
# Calcular la mediana de la columna "salario" en el conjunto de datos
mediana <- median(datos$salary)
print(paste("Mediana:", mediana))
[1] "Mediana: 115000"
# Calcular la moda de la columna "salario" en el conjunto de datos
tabla_frecuencia <- table(datos$salary)
moda <- as.numeric(names(tabla_frecuencia[which.max(tabla_frecuencia)]))
print(paste("Moda:", moda))
[1] "Moda: 80000"

3 Referencias