# Instalar y cargar librerías necesarias
if(!require(tidyverse)) install.packages("tidyverse")
## Loading required package: tidyverse
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ readr 2.1.5
## ✔ forcats 1.0.0 ✔ stringr 1.5.1
## ✔ ggplot2 3.5.1 ✔ tibble 3.2.1
## ✔ lubridate 1.9.4 ✔ tidyr 1.3.1
## ✔ purrr 1.0.4
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(tidyverse)
# Cargar datos desde archivo CSV
datos <- read.csv("datos_negocios_var_1_empleados.csv", sep=",", header=TRUE)
# Ver estructura de los datos
str(datos)
## 'data.frame': 100 obs. of 4 variables:
## $ Departamento : chr "Finanzas" "Operaciones" "Finanzas" "Operaciones" ...
## $ Salario : num 5705 2614 2514 5799 5424 ...
## $ Años_Experiencia : int 21 30 4 30 20 13 15 2 1 30 ...
## $ Evaluacion_Desempeno: num 4.3 5 4.2 4.6 3.4 3.7 3.5 4.2 4.2 3.2 ...
# Resumen estadístico de variables numéricas
resumen_numerico <- summary(select_if(datos, is.numeric))
print(resumen_numerico)
## Salario Años_Experiencia Evaluacion_Desempeno
## Min. :2171 Min. : 1.00 Min. :3.000
## 1st Qu.:3344 1st Qu.: 8.00 1st Qu.:3.500
## Median :4840 Median :15.00 Median :3.900
## Mean :4835 Mean :14.64 Mean :3.951
## 3rd Qu.:6085 3rd Qu.:21.00 3rd Qu.:4.525
## Max. :7904 Max. :30.00 Max. :5.000
# Frecuencia de la variable categórica
tabla_departamento <- table(datos$Departamento)
print(tabla_departamento)
##
## Finanzas Operaciones RRHH Ventas
## 24 23 30 23
El resumen estadístico muestra medidas clave como la media, mediana, desviación estándar, valores mínimos y máximos de las variables numéricas. La tabla de frecuencia nos indica la cantidad de empleados en cada departamento.
# Histograma de Salario
hist(datos$Salario, main="Distribución de Salario", xlab="Salario ($)", col="lightblue", border="black")
# Gráfico de Barras para Departamento
barplot(tabla_departamento, col=rainbow(5), main="Frecuencia por Departamento")
# Boxplot de Evaluación de Desempeño
boxplot(datos$Evaluacion_Desempeno, main="Boxplot de Evaluación de Desempeño", col="pink", horizontal=TRUE)
n <- nrow(datos)
media_muestral <- mean(datos$Salario)
error_estandar <- sd(datos$Salario) / sqrt(n)
z <- qnorm(0.975) # Valor crítico para 95%
IC_media <- c(media_muestral - z * error_estandar, media_muestral + z * error_estandar)
print(paste("El intervalo de confianza para la media del salario es:", round(IC_media[1], 2), "a", round(IC_media[2], 2)))
## [1] "El intervalo de confianza para la media del salario es: 4509.37 a 5160.11"
Este intervalo nos indica el rango dentro del cual esperamos que esté la verdadera media poblacional del salario con un 95% de confianza.
x <- sum(datos$Departamento == "Finanzas")
p_muestral <- x / n
error_prop <- sqrt((p_muestral * (1 - p_muestral)) / n)
IC_prop <- c(p_muestral - z * error_prop, p_muestral + z * error_prop)
print(paste("El intervalo de confianza para la proporción de empleados en Finanzas es:", round(IC_prop[1], 4), "a", round(IC_prop[2], 4)))
## [1] "El intervalo de confianza para la proporción de empleados en Finanzas es: 0.1563 a 0.3237"
El intervalo muestra el rango en el cual se encuentra la proporción real de empleados que trabajan en el departamento de Finanzas con 95% de confianza.
var_muestral <- var(datos$Salario)
IC_varianza <- c((n-1) * var_muestral / qchisq(0.975, df=n-1), (n-1) * var_muestral / qchisq(0.025, df=n-1))
print(paste("El intervalo de confianza para la varianza del salario es:", round(IC_varianza[1], 2), "a", round(IC_varianza[2], 2)))
## [1] "El intervalo de confianza para la varianza del salario es: 2124522.27 a 3719075.21"
Este intervalo nos permite estimar con un 95% de confianza el rango en el que se encuentra la varianza real de los salarios.
grupo1 <- filter(datos, Departamento == "Finanzas")$Salario
grupo2 <- filter(datos, Departamento == "Operaciones")$Salario
prueba_medias <- t.test(grupo1, grupo2, var.equal=TRUE)
print(prueba_medias)
##
## Two Sample t-test
##
## data: grupo1 and grupo2
## t = -0.16007, df = 45, p-value = 0.8735
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## -1018.2328 868.3007
## sample estimates:
## mean of x mean of y
## 4681.108 4756.074
Este test evalúa si hay una diferencia significativa entre los salarios medios de los empleados de Finanzas y Operaciones.
grupo1_p <- sum(datos$Departamento == "Finanzas") / n
grupo2_p <- sum(datos$Departamento == "Operaciones") / n
prueba_prop <- prop.test(c(sum(datos$Departamento == "Finanzas"), sum(datos$Departamento == "Operaciones")),
c(n, n))
print(prueba_prop)
##
## 2-sample test for equality of proportions with continuity correction
##
## data: c(sum(datos$Departamento == "Finanzas"), sum(datos$Departamento == "Operaciones")) out of c(n, n)
## X-squared = 9.9074e-32, df = 1, p-value = 1
## alternative hypothesis: two.sided
## 95 percent confidence interval:
## -0.1175161 0.1375161
## sample estimates:
## prop 1 prop 2
## 0.24 0.23
Se compara la proporción de empleados en Finanzas vs Operaciones para determinar si la diferencia es estadísticamente significativa.
prueba_varianzas <- var.test(grupo1, grupo2)
print(prueba_varianzas)
##
## F test to compare two variances
##
## data: grupo1 and grupo2
## F = 0.90626, num df = 23, denom df = 22, p-value = 0.815
## alternative hypothesis: true ratio of variances is not equal to 1
## 95 percent confidence interval:
## 0.3866022 2.1074345
## sample estimates:
## ratio of variances
## 0.9062618