Brevemente, por favor responder con tus propias palabras las siguientes palabras:
El analisis exploratorio de los datos o EDA por sus siglas es un metodo que se utiliza para dar un enfoque diferente a un conjunto de datos y resumir las caracteristicas principales de los datos, de esta manera se nos facilita ver patrones o tendencias en los datos de manera mas facil.
El analisis exploratorio de los datos ayuda a mejorar el procesos y los resultados, a traves de la identificacion de patrones, tendencias en los datos, nos ayuda a generar y a comprobar hipotesis o suposiciones, nos ayuda a ver discrepancias en los datos como Nas o valores atipicos, este proceso en general nos ayuda a mejorar la calidad y la interpretacion de los resultados
La visión de la empresa social formadora Form es “En 2033 seremos una de las cinco mejores compañías de México que generan valor dentro de la cadena de suministro de las industrias que más valoran la forma en la que se protegen y trasladan las cosas.”
La misión de la empresa social formadora Form es “Transformar nuestro entorno y resolver retos industriales de nuestros clientes a través de la colaboración, provocando nuevas oportunidades que potencian nuestro modelo de negocio, para alcanzar nuestros ideales.”
Sus objetivos estratégicos se basan en seis pilares fundamentales:
Sustentabilidad colectiva: “Fomentar el uso de materiales de bajo impacto ambiental.”
Efectividad colaborativa: “Nos comprometemos a cumplir en tiempo y forma participando proactivamente.”
Integridad colaborativa: “Nuestro equipo vive una actitud de honestidad y transparencia dentro de todos nuestros procesos.”
Innovación colaborativa: “Constante búsqueda de nuevas y mejores formas de solucionar a través del ingenio y la experimentación.”
Calidad colaborativa: “Sin comprometer nuestros tiempos, cuidamos cada detalle, desde el espacio de trabajo hasta nuestro producto final.”
Flexibilidad colaborativa: “Siempre encontraremos el como sí, anticipándonos a las adversidades apoyados de la multidisciplina.”
library(psych)
library(tseries)
library(tidyverse)
library(car)
library(foreign)
library(timsac)
library(vars)
library(lmtest)
library(mFilter)
library(dynlm)
library(nlme)
library(lmtest)
library(broom)
library(kableExtra)
library(knitr)
library(MASS)
library(parallel)
library(car)
library(mlogit)
library(dplyr)
library(tidyr)
library(forecast)
library(fpp2)
library(stats)
library(readxl)
library(ggplot2)
carton_import<- read.csv("C:\\Users\\Luis Rodriguez\\Downloads\\Importers of Cartons boxes cases of corrugated paper or board 2020-2021.csv")
carton_export<- read.csv("C:\\Users\\Luis Rodriguez\\Downloads\\Exporters of Carton boxes cases of corrugated paper or board 2020-2021.csv")
import_NorthA<- carton_import %>%
filter(Continent %in% c("North America"))
import_mex<- import_NorthA %>%
filter(Country %in% c("Mexico"))
import_usa<- import_NorthA %>%
filter(Country %in% c("United States"))
# Top 3 países de Norte América que más importa Cartón
top3_tradevalue <- import_NorthA %>%
arrange(desc(Trade.Value)) %>%
head(3)
# Top de Trade Vaule de Norte América
ggplot(top3_tradevalue, aes(x = reorder(Country, Trade.Value), y = Trade.Value, fill = Country)) +
geom_bar(stat = "identity") +
geom_text(aes(label = Trade.Value), vjust = -0.5, size = 3) +
labs(title = "Mayor Valor Comercial de importación en América del Norte",
x = "País",
y = "Valor Comercial") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
scale_fill_manual(values = c("orange", "darkorange", "darkorange2")) +
guides(fill = FALSE)
# Top 3 países de Norte América que tiene potencial para crecer su valor comercial.
tradegrowth <- import_NorthA %>%
arrange(desc(Trade.Value.Growth.Value)) %>%
head(3)
# Top 3 Países de Potencial en Crecer su valor comercial en Norte América
ggplot(tradegrowth, aes(x = reorder(Country, Trade.Value.Growth.Value), y = Trade.Value.Growth.Value, fill = Country)) +
geom_bar(stat = "identity") +
geom_text(aes(label = Trade.Value.Growth.Value), vjust = -0.5, size = 3) +
labs(title = "Potencial en incremento de importaciones de Cartón en Norte América",
x = "País",
y = "Valor Comercial") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
scale_fill_manual(values = c( "orange", "darkorange", "darkorange2")) +
guides(fill = FALSE)
export_NorthA<- carton_export %>%
filter(Continent %in% c("North America"))
# 3 países de Norte América que más exportan Cartón
top3_tradevalue <- export_NorthA %>%
arrange(desc(Trade.Value)) %>%
head(3)
# Top de Trade Vaule de Norte América
ggplot(top3_tradevalue, aes(x = reorder(Country, Trade.Value), y = Trade.Value, fill = Country)) +
geom_bar(stat = "identity") +
geom_text(aes(label = Trade.Value), vjust = -0.5, size = 3) +
labs(title = "Valor de Exportaciones de Cartón en Norte América por país",
x = "País",
y = "Valor Comercial") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
scale_fill_manual(values = c("orange", "darkorange", "darkorange2")) +
guides(fill = FALSE)
# Top 3 países de Norte América que tiene potencial para crecer su valor comercial en exportacion.
tradegrowth_export <- export_NorthA %>%
arrange(desc(Trade.Value.Growth.Value)) %>%
head(3)
# Top 3 Países de Potencial en Crecer su valor comercial de exportación en Norte América
ggplot(tradegrowth_export, aes(x = reorder(Country, Trade.Value.Growth.Value), y = Trade.Value.Growth.Value, fill = Country)) +
geom_bar(stat = "identity") +
geom_text(aes(label = Trade.Value.Growth.Value), vjust = -0.5, size = 3) +
labs(title = "Potencial en incremento de exportación de Cartón en Norte América",
x = "País",
y = "Valor Comercial") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
scale_fill_manual(values = c( "orange", "darkorange", "darkorange2")) +
guides(fill = FALSE)
Industria Automotriz – Exportaciones de México a otros países
auto_ind <-read_excel("C:\\Users\\Luis Rodriguez\\Downloads\\mx_exportacion_vehiculos-pais_destino.xlsx")
summary(auto_ind)
## Tema Año Mes Marca
## Length:135967 Min. :2005 Length:135967 Length:135967
## Class :character 1st Qu.:2014 Class :character Class :character
## Mode :character Median :2019 Mode :character Mode :character
## Mean :2017
## 3rd Qu.:2021
## Max. :2023
##
## Modelo Tipo Segmento País destino
## Length:135967 Length:135967 Length:135967 Length:135967
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
##
## Cantidad
## Min. :-2041.0
## 1st Qu.: 0.0
## Median : 1.0
## Mean : 385.3
## 3rd Qu.: 41.0
## Max. :39281.0
## NA's :20840
auto_ind <- auto_ind %>%
rename(País = `País destino`)
2023
auto_2023 <- filter(auto_ind, Año == 2023)
# Filtrar los tres países con las mayores cantidades
top_paises <- auto_2023 %>%
group_by(País) %>%
summarize(total_cantidad = sum(as.numeric(Cantidad))) %>%
arrange(desc(total_cantidad)) %>%
top_n(3, total_cantidad) %>%
pull(País)
df_top_paises <- auto_ind %>%
filter(País %in% top_paises, Año == 2023)
# Crear la gráfica de barras
library(ggplot2)
ggplot(df_top_paises, aes(y = reorder(País, -as.numeric(Cantidad)), x = as.numeric(Cantidad), fill = País)) +
geom_bar(stat = "identity") +
scale_fill_manual(values = c( "orange", "darkorange2", "darkorange3")) +
labs(title = "Top 3 países con más importación desde MEX de autos en 2023",
y = "País Destino",
x = "Cantidad de Exportaciones",
fill = "País Destino") +
theme_minimal() +
theme(axis.text.y = element_text(hjust = 1)) +
guides(fill = FALSE)
# Filtrar los tres Marcas con las mayores cantidades de exportaciones
top_marcas <- auto_2023 %>%
group_by(Marca) %>%
summarize(total_marca = sum(as.numeric(Cantidad))) %>%
arrange(desc(total_marca)) %>%
top_n(3, total_marca) %>%
pull(Marca)
top_marcas
## [1] "General Motors" "Nissan" "Ford Motor"
df_top_marcas <- auto_ind %>%
filter(Marca %in% top_marcas, Año == 2023)
# Crear la gráfica de barras
library(ggplot2)
ggplot(df_top_marcas, aes(y = reorder(Marca, -as.numeric(Cantidad)), x = as.numeric(Cantidad), fill = Marca)) +
geom_bar(stat = "identity") +
labs(title = "Top 3 Marcas más Importadas desde MEX en 2023",
y = "Marca",
x = "Cantidad de Exportaciones",
fill = "Marca") +
scale_fill_brewer(palette = "YlOrBr") +
theme_minimal() +
theme(axis.text.y = element_text(hjust = 1)) +
guides(fill = FALSE)
Industria de Autopartes
automotive_ind <-read_excel("C:\\Users\\Luis Rodriguez\\Downloads\\mx_automotive_industry.xlsx", sheet= "mx_autoparts_market")
automotive_sales <- read_excel("C:\\Users\\Luis Rodriguez\\Downloads\\mx_automotive_industry.xlsx", sheet = "mx_passenger_sales")
ggplot(automotive_ind, aes(x = factor(year), y = total_local_production + total_exports, fill = factor(year))) +
geom_bar(stat = "identity", position = "stack") +
geom_bar(aes(y = total_exports), stat = "identity", position = "stack", fill = "gray") +
labs(title = "Producción Total y Exportaciones por Año",
y = "Producción",
x = "Año",
fill = "Año") +
scale_fill_brewer(palette = "YlOrBr") +
theme_minimal()
ggplot(automotive_ind, aes(x = factor(year), y = total_exports + imports_from_US, fill = factor(year))) +
geom_bar(stat = "identity", position = "stack") +
geom_bar(aes(y = total_exports), stat = "identity", position = "stack", fill = "gray") +
labs(title = "Exportaciones totales | Importaciones desde USA",
y = "Industria Autopartes",
x = "Año",
fill = "Año") +
scale_fill_brewer(palette = "YlOrBr") + # Puedes cambiar la paleta de colores según tus preferencias
theme_minimal()
Exportación de autopartes por estados en México
export_mex_autoparts_0<- read.csv("C:\\Users\\Luis Rodriguez\\Downloads\\mex_exports_autoparts.csv")
export_mex_autoparts <- subset(export_mex_autoparts_0, select = -c(year_quarter, quarter))
unique_states <- unique(export_mex_autoparts$State)
# Filtrar los datos para los años 2019, 2020, 2021 y 2022
auto_2019_2022 <- filter(export_mex_autoparts, year %in% c(2019, 2020, 2021, 2022))
# Obtener el top 3 de estados para los años 2019, 2020, 2021 y 2022
top_states_2019_2022 <- auto_2019_2022 %>%
group_by(year, State) %>%
summarize(total_trade_value = sum(trade_value)) %>%
arrange(year, desc(total_trade_value)) %>%
group_by(year) %>%
slice_head(n = 3)
# Crear la gráfica de barras con leyenda de colores por estado
library(ggplot2)
ggplot(top_states_2019_2022, aes(x = factor(year), y = total_trade_value, fill = State)) +
geom_bar(stat = "identity", position = "dodge") +
geom_text(aes(label = total_trade_value), position = position_dodge(width = 0.9), vjust = -0.5, size = 3) +
labs(title = "Top 3 estados de México con más trade_value (2019-2022)",
x = "Año",
y = "Valor Comercial",
fill = "Estado") +
theme_minimal() +
scale_fill_brewer(palette = "YlOrBr", name = "Estado") +
guides(fill = guide_legend(title = "Estado"))
auto_2022 <- filter(export_mex_autoparts, year == 2022)
top_states_2022 <- auto_2022 %>%
group_by(State) %>%
summarize(total_trade_value = sum(trade_value)) %>%
arrange(desc(total_trade_value)) %>%
head(3)
# Crear la gráfica de barras
ggplot(top_states_2022, aes(x = reorder(State, total_trade_value), y = total_trade_value, fill = State)) +
geom_bar(stat = "identity") +
geom_text(aes(label = total_trade_value), vjust = -0.5, size = 3) +
labs(title = "Top 3 estados de México que más Exportaron en 2022",
x = "Estado",
y = "Valor Comercial",
fill = "Estados") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
scale_fill_brewer(palette = "YlOrBr") +
guides(fill = FALSE)
El país de Estados Unidos es el que más presencia tiene Exportando e importando cartón.
De los 3 país con más importación desde México el que resalta es Arabia Saudita.
La marca que más importa desde México es General Motors.
En el año 2022 fue el año en el que más hubo exportaciones y producciones.
Se puede observar que en Estados Unidos hay más exportaciones que importaciones y hay una clara diferencia que en el año 2022 hubo más a comparación de años pasados.
Se puede observar que el estado de Coahuila a lo largo de los años ha estado más presente en la exportación y con mayor trade value en comparativa de otros estados
Fortalezas
Un portafolio de clientes con una fuerte presencia en el crecimiento y la innovación en las industrias automotriz y tecnológica en los últimos años.
La empresa ha establecido colaboraciones estratégicas con cinco socios de distintos sectores industriales, abarcando cuatro en territorio mexicano y una en Estados Unidos.
La empresa posee una sólida trayectoria en cumplir rápidamente con las necesidades de sus clientes, demostrando habilidad y eficiencia en la entrega de soluciones en tiempos cortos.
Oportunidades
Explorar y fortalecer alianzas con empresas prominentes que tienen una sólida presencia en el mercado estadounidense.
Incorporación de tecnologías sostenibles de vanguardia en su proceso de producción.
Búsqueda de certificaciones que respalden los procesos y las líneas de producción para aumentar el valor de la empresa y sus productos.
Debilidades
Falta de presencia directa y relaciones dentro de Estados Unidos.
Alta rotación en su planilla de producción.
Riesgo de sobre compromiso ante la demanda de garantizar entregas just-in-time y servicios 24/7.
Amenazas
Incremento de la competencia en el mercado mexicano con la presencia tanto de empresas extranjeras consolidadas como de nuevas entrantes.
Desafíos para adaptarse y consolidarse en el mercado ante la rápida evolución de tendencias y tecnologías emergentes.
Estrategias:
1.- Estrategia FO: Aprovechar la experiencia comprobada en entregas eficientes para establecer relaciones más sólidas y duraderas con empresas de renombre en Estados Unidos, centrándose en ofrecer un servicio excepcional y una colaboración mutuamente beneficiosa que impulse el crecimiento de ambas partes en el mercado.
2.- Estrategia DO: Incorporar tecnologías sostenibles en los procesos de producción para mejorar las condiciones laborales y reducir la rotación del personal. Esto incluye la adopción de prácticas y equipos que promuevan la seguridad y el bienestar de los empleados, así como la reducción del impacto ambiental de nuestras operaciones.
3.-Estrategia FA: Diferenciación en el mercado mediante una rápida adaptación a las tendencias y tecnologías emergentes. Basándose en el historial de cumplimiento rápido de las necesidades del cliente.
4.- Estrategia DA Implementar estrategias integrales de retención de talento y mejora laboral para contrarrestar la alta rotación en la planilla de producción. Esto implica desarrollar programas de desarrollo profesional, mejorar las condiciones laborales y fomentar un ambiente de trabajo colaborativo y satisfactorio que motive a los empleados a permanecer en la empresa a largo plazo.
Político:
Ambos paises tanto México como Estados Unidos tienen elecciones este año, lo que significa cambios políticos, lo cual trae consigo nuevas normas y regulaciones
Económico:
La relación económica entre ambos países es notable ya que México es el mayor exportador a EUA y EUA es el principal inversor dentro de México
Social:
En ambos países las preferencias dentro del mercado de embalaje y empaque están relacionada con las tendencias demográficas de los clientes, estilos de vida, preferencias de compras entre otros.
Tecnológico:
La industria del empaque y embajale este sufriendo cambios significativos debido a los avances tecnológicos, esto se puede ver dentro de los procesos de automatización principalmente
Legal:
Ambos países cuentan con regulaciones legales como la gestión de residuos, protección de el medio ambiente y manipulación de productos químicos
Ambiental:
En ambos países las desiciones tanto de diseño como producción dentro del mercado de embalaje y empaques están influenciadas por temas ambientales como la sostenibilidad y la reducción de desechos
Estrategias:
1.- Inversión en capacitación y desarrollo del talento: Ante los avances tecnológicos y los cambios en las regulaciones, es fundamental contar con un equipo capacitado y adaptable. Esto incluiría la formación en tecnologías emergentes, conocimiento de las regulaciones ambientales y habilidades de gestión del cambio. En el corto plazo, la empresa podría implementar programas de capacitación internos o externalizar la formación con consultores especializados.
2.- Inversión en tecnología y automatización: Dado el rápido progreso tecnológico en la industria del empaque y embalaje, una estrategia importante sería invertir en tecnología y automatización para mejorar la eficiencia y la calidad de los productos. En el corto plazo, la empresa podría evaluar sus procesos actuales y determinar áreas donde la tecnología y la automatización podrían mejorar la productividad y reducir los costos.
3.- Capacitación del personal en prácticas sostenibles: Implementar programas de capacitación para el personal sobre prácticas sostenibles en la producción y el embalaje. Esto puede incluir la educación sobre el manejo adecuado de materiales ecológicos, el reciclaje en el lugar de trabajo y la reducción de residuos en general.
Situación Problema 1: Explorar, definir, y describir cuáles son los principales factores del clima organizacional de FORM que propician la satisfacción y/o no satisfacción de trabajar en dicha empresa.
En esta primer situación problemas nos encontramos con un escenario con mucha fuga de talento dentro de la empresa de FORM, para llegar a la comprensión de este escenario habrá la necesidad de investigar y comprender los factores los cuales estan influyen en que la gente tome la decisión de retirarse de la empresa y conocer si es en realidad un factor interno o externo, con el objetivo de identificar los aspectos que afectan directamente a su clima organizacional y como es tu tipo de importancia.
Situación Problema 2: Explorar, desarrollar, y describir la(s) posible(s) estrategia(s) de predicción de la demanada de productos fabricados por la empresa FORM.
A diferencia de la primera situación problema en donde nos centramos en el área de recursos humanos, ahora nos centramos en su producción donde se busca predecir la demanda de sus productos fabricados, con el objetivo de tener una mejor planificación de la producción y gestionar sus inventarios para poder anticipar las necesidades del mercado y llegar una mejor toma de decisiones.
Situación problema 1 - preguntas:
1.- ¿Qué variables de la base de datos podrían estar relacionadas con la satisfacción laboral de los empleados?
2.- ¿Cuáles son los puestos que cuentan con más rotación y en qué estados se ubican estas rotaciones?
3.- ¿Cómo influye el salario diario en la percepción de la satisfacción laboral dentro de la empresa?
4.- ¿Qué temas específicos destacan al describir los aspectos menos gratificantes del trabajo y cómo se relacionan con la satisfacción del empleado?
Situación problema 2 - preguntas:
5.- ¿Cuáles son las tendencias históricas de la demanda de productos fabricados por FORM?
6.- ¿Cómo afecta la estacionalidad y los cambios estacionales en los países de nearshoring la demanda de los productos de Form y cómo se pueden utilizar estos datos para mejorar las estrategias de predicción de la demanda?
Encuesta_datos1 <- read_excel("C:\\Users\\Luis Rodriguez\\Desktop\\evi 1\\Encuesta_datos.xlsx")
Encuesta_datos <- Encuesta_datos1
head(Encuesta_datos, 10)
## # A tibble: 10 × 23
## Encuesta Puesto Puesto_otro Antiguedad Razon Salario Prestaciones Jornada
## <dbl> <chr> <chr> <dbl> <chr> <chr> <chr> <chr>
## 1 1 Administr… NA 9 Por … Totalm… Medianament… Totalm…
## 2 2 Costurera NA 36 Otro Median… Medianament… Totalm…
## 3 3 Ayudante … NA 4 Ubic… Median… Totalmente … Totalm…
## 4 4 Ayudante … NA 2 Ubic… Totalm… Medianament… Totalm…
## 5 5 Ayudante … NA 1 Ubic… Ni de … Totalmente … Totalm…
## 6 6 Ayudante … NA 36 Razo… Median… Totalmente … Totalm…
## 7 7 Ayudante … NA 36 Ubic… Median… Ni de acuer… Median…
## 8 8 Administr… NA 36 Razo… Totalm… Medianament… Totalm…
## 9 9 Costurera NA 36 Por … Median… Totalmente … Median…
## 10 10 Ayudante … NA 1 Por … Totalm… Medianament… Totalm…
## # ℹ 15 more variables: Herramientas <chr>, Clima <chr>, Estres <chr>,
## # Transporte <chr>, Zona <chr>, Continuidad <chr>, Conflictos <chr>,
## # Areas_mejora <chr>, Satisfaccion <chr>, Edad <chr>, Genero <chr>,
## # Estado_civil <chr>, Municipio <chr>, Escolaridad <chr>, Dependientes <dbl>
str(Encuesta_datos)
## tibble [106 × 23] (S3: tbl_df/tbl/data.frame)
## $ Encuesta : num [1:106] 1 2 3 4 5 6 7 8 9 10 ...
## $ Puesto : chr [1:106] "Administrativo" "Costurera" "Ayudante general" "Ayudante general" ...
## $ Puesto_otro : chr [1:106] "NA" "NA" "NA" "NA" ...
## $ Antiguedad : num [1:106] 9 36 4 2 1 36 36 36 36 1 ...
## $ Razon : chr [1:106] "Por el salario" "Otro" "Ubicación de la empresa" "Ubicación de la empresa" ...
## $ Salario : chr [1:106] "Totalmente de acuerdo" "Medianamente de acuerdo" "Medianamente en desacuerdo" "Totalmente de acuerdo" ...
## $ Prestaciones: chr [1:106] "Medianamente de acuerdo" "Medianamente de acuerdo" "Totalmente en desacuerdo" "Medianamente de acuerdo" ...
## $ Jornada : chr [1:106] "Totalmente de acuerdo" "Totalmente de acuerdo" "Totalmente en desacuerdo" "Totalmente de acuerdo" ...
## $ Herramientas: chr [1:106] "Totalmente de acuerdo" "Medianamente de acuerdo" "Totalmente en desacuerdo" "Totalmente de acuerdo" ...
## $ Clima : chr [1:106] "Medianamente en desacuerdo" "Ni de acuerdo ni en desacuerdo" "Ni de acuerdo ni en desacuerdo" "Medianamente de acuerdo" ...
## $ Estres : chr [1:106] "Totalmente de acuerdo" "Medianamente en desacuerdo" "Totalmente en desacuerdo" "Totalmente de acuerdo" ...
## $ Transporte : chr [1:106] "Medianamente de acuerdo" "Medianamente en desacuerdo" "Medianamente de acuerdo" "Totalmente de acuerdo" ...
## $ Zona : chr [1:106] "Totalmente de acuerdo" "Medianamente de acuerdo" "Medianamente de acuerdo" "Totalmente de acuerdo" ...
## $ Continuidad : chr [1:106] "Medianamente de acuerdo" "Totalmente de acuerdo" "Totalmente en desacuerdo" "Medianamente de acuerdo" ...
## $ Conflictos : chr [1:106] "No" "No" "Si" "No" ...
## $ Areas_mejora: chr [1:106] "cotizacion ante imss, fecha de pago, comer a las 3pm" "Ninguno" "mucho trabajo, estres" "Todo bien" ...
## $ Satisfaccion: chr [1:106] "agusto, feliz" "Bien" "comoda, no satisfecha" "Tranquila y contenta" ...
## $ Edad : chr [1:106] "30" "54" "21" "20" ...
## $ Genero : chr [1:106] "Femenino" "Femenino" "Femenino" "Femenino" ...
## $ Estado_civil: chr [1:106] "Unión libre" "Casado" "Soltero" "Casado" ...
## $ Municipio : chr [1:106] "Apodaca" "Apodaca" "Apodaca" "Apodaca" ...
## $ Escolaridad : chr [1:106] "Licenciatura" "Primaria" "Preparatoria" "Preparatoria" ...
## $ Dependientes: num [1:106] 0 0 0 0 0 2 1 0 0 2 ...
Encuesta_datos$Salario <- as.numeric(factor(Encuesta_datos$Salario, levels = c("Medianamente de acuerdo","Medianamente en desacuerdo","Ni de acuerdo ni en desacuerdo","Totalmente de acuerdo","Totalmente en desacuerdo"), labels = c(1,2,3,4,5)))
Encuesta_datos$Prestaciones <- as.numeric(factor(Encuesta_datos$Prestaciones, levels = c("Medianamente de acuerdo","Medianamente en desacuerdo","Ni de acuerdo ni en desacuerdo","Totalmente de acuerdo","Totalmente en desacuerdo"), labels = c(1,2,3,4,5)))
Encuesta_datos$Jornada <- as.numeric(factor(Encuesta_datos$Jornada, levels = c("Medianamente de acuerdo","Medianamente en desacuerdo","Ni de acuerdo ni en desacuerdo","Totalmente de acuerdo","Totalmente en desacuerdo"), labels = c(1,2,3,4,5)))
Encuesta_datos$Herramientas <- as.numeric(factor(Encuesta_datos$Herramientas, levels = c("Medianamente de acuerdo","Medianamente en desacuerdo","Ni de acuerdo ni en desacuerdo","Totalmente de acuerdo","Totalmente en desacuerdo"), labels = c(1,2,3,4,5)))
Encuesta_datos$Clima <- as.numeric(factor(Encuesta_datos$Clima, levels = c("Medianamente de acuerdo","Medianamente en desacuerdo","Ni de acuerdo ni en desacuerdo","Totalmente de acuerdo","Totalmente en desacuerdo"), labels = c(1,2,3,4,5)))
Encuesta_datos$Estres <- as.numeric(factor(Encuesta_datos$Estres, levels = c("Medianamente de acuerdo","Medianamente en desacuerdo","Ni de acuerdo ni en desacuerdo","Totalmente de acuerdo","Totalmente en desacuerdo"), labels = c(1,2,3,4,5)))
Encuesta_datos$Transporte <- as.numeric(factor(Encuesta_datos$Transporte, levels = c("Medianamente de acuerdo","Medianamente en desacuerdo","Ni de acuerdo ni en desacuerdo","Totalmente de acuerdo","Totalmente en desacuerdo"), labels = c(1,2,3,4,5)))
Encuesta_datos$Zona <- as.numeric(factor(Encuesta_datos$Zona, levels = c("Medianamente de acuerdo","Medianamente en desacuerdo","Ni de acuerdo ni en desacuerdo","Totalmente de acuerdo","Totalmente en desacuerdo"), labels = c(1,2,3,4,5)))
Encuesta_datos$Continuidad <- as.numeric(factor(Encuesta_datos$Continuidad, levels = c("Medianamente de acuerdo","Medianamente en desacuerdo","Ni de acuerdo ni en desacuerdo","Totalmente de acuerdo","Totalmente en desacuerdo"), labels = c(1,2,3,4,5)))
Encuesta_datos$Dependientes <- factor(Encuesta_datos$Dependientes)
Medianamente de acuerdo <- 1 Medianamente en desacuerdo <- 2 Ni acuerdo ni desacuerdo <- 3 Totalmente de acuerdo <- 4 Totalmente en desacuerdo <- 5
Na <- colSums(is.na(Encuesta_datos))
Na
## Encuesta Puesto Puesto_otro Antiguedad Razon Salario
## 0 0 0 0 0 0
## Prestaciones Jornada Herramientas Clima Estres Transporte
## 0 0 0 0 0 15
## Zona Continuidad Conflictos Areas_mejora Satisfaccion Edad
## 0 0 0 0 0 0
## Genero Estado_civil Municipio Escolaridad Dependientes
## 0 0 0 0 0
str(Encuesta_datos)
## tibble [106 × 23] (S3: tbl_df/tbl/data.frame)
## $ Encuesta : num [1:106] 1 2 3 4 5 6 7 8 9 10 ...
## $ Puesto : chr [1:106] "Administrativo" "Costurera" "Ayudante general" "Ayudante general" ...
## $ Puesto_otro : chr [1:106] "NA" "NA" "NA" "NA" ...
## $ Antiguedad : num [1:106] 9 36 4 2 1 36 36 36 36 1 ...
## $ Razon : chr [1:106] "Por el salario" "Otro" "Ubicación de la empresa" "Ubicación de la empresa" ...
## $ Salario : num [1:106] 4 1 2 4 3 1 2 4 1 4 ...
## $ Prestaciones: num [1:106] 1 1 5 1 5 4 3 1 5 1 ...
## $ Jornada : num [1:106] 4 4 5 4 4 4 1 4 1 4 ...
## $ Herramientas: num [1:106] 4 1 5 4 4 4 1 4 5 4 ...
## $ Clima : num [1:106] 2 3 3 1 1 2 2 1 4 5 ...
## $ Estres : num [1:106] 4 2 5 4 3 1 4 1 1 4 ...
## $ Transporte : num [1:106] 1 2 1 4 NA 4 NA 4 4 2 ...
## $ Zona : num [1:106] 4 1 1 4 4 1 1 4 4 4 ...
## $ Continuidad : num [1:106] 1 4 5 1 3 4 3 4 4 4 ...
## $ Conflictos : chr [1:106] "No" "No" "Si" "No" ...
## $ Areas_mejora: chr [1:106] "cotizacion ante imss, fecha de pago, comer a las 3pm" "Ninguno" "mucho trabajo, estres" "Todo bien" ...
## $ Satisfaccion: chr [1:106] "agusto, feliz" "Bien" "comoda, no satisfecha" "Tranquila y contenta" ...
## $ Edad : chr [1:106] "30" "54" "21" "20" ...
## $ Genero : chr [1:106] "Femenino" "Femenino" "Femenino" "Femenino" ...
## $ Estado_civil: chr [1:106] "Unión libre" "Casado" "Soltero" "Casado" ...
## $ Municipio : chr [1:106] "Apodaca" "Apodaca" "Apodaca" "Apodaca" ...
## $ Escolaridad : chr [1:106] "Licenciatura" "Primaria" "Preparatoria" "Preparatoria" ...
## $ Dependientes: Factor w/ 4 levels "0","1","2","3": 1 1 1 1 1 3 2 1 1 3 ...
summary(Encuesta_datos)
## Encuesta Puesto Puesto_otro Antiguedad
## Min. : 1.00 Length:106 Length:106 Min. : 1.00
## 1st Qu.: 27.25 Class :character Class :character 1st Qu.: 1.00
## Median : 53.50 Mode :character Mode :character Median : 9.00
## Mean : 53.50 Mean :14.08
## 3rd Qu.: 79.75 3rd Qu.:34.50
## Max. :106.00 Max. :36.00
##
## Razon Salario Prestaciones Jornada
## Length:106 Min. :1.00 Min. :1.000 Min. :1.00
## Class :character 1st Qu.:1.00 1st Qu.:2.000 1st Qu.:3.00
## Mode :character Median :3.00 Median :4.000 Median :4.00
## Mean :2.83 Mean :3.123 Mean :3.33
## 3rd Qu.:4.00 3rd Qu.:4.000 3rd Qu.:4.00
## Max. :5.00 Max. :5.000 Max. :5.00
##
## Herramientas Clima Estres Transporte Zona
## Min. :1.000 Min. :1.000 Min. :1.00 Min. :1.000 Min. :1.000
## 1st Qu.:4.000 1st Qu.:3.000 1st Qu.:2.00 1st Qu.:2.500 1st Qu.:3.250
## Median :4.000 Median :4.000 Median :4.00 Median :4.000 Median :4.000
## Mean :3.642 Mean :3.689 Mean :3.17 Mean :3.319 Mean :3.434
## 3rd Qu.:4.000 3rd Qu.:5.000 3rd Qu.:4.00 3rd Qu.:4.000 3rd Qu.:4.000
## Max. :5.000 Max. :5.000 Max. :5.00 Max. :4.000 Max. :5.000
## NA's :15
## Continuidad Conflictos Areas_mejora Satisfaccion
## Min. :1.000 Length:106 Length:106 Length:106
## 1st Qu.:3.000 Class :character Class :character Class :character
## Median :4.000 Mode :character Mode :character Mode :character
## Mean :3.255
## 3rd Qu.:4.000
## Max. :5.000
##
## Edad Genero Estado_civil Municipio
## Length:106 Length:106 Length:106 Length:106
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
##
## Escolaridad Dependientes
## Length:106 0:44
## Class :character 1:24
## Mode :character 2:23
## 3:15
##
##
##
describe(Encuesta_datos)
## vars n mean sd median trimmed mad min max range skew
## Encuesta 1 106 53.50 30.74 53.5 53.50 39.29 1 106 105 0.00
## Puesto* 2 106 3.35 2.21 2.0 3.15 1.48 1 8 7 0.73
## Puesto_otro* 3 106 17.37 4.23 19.0 18.49 0.00 1 22 21 -2.46
## Antiguedad 4 106 14.08 14.47 9.0 13.05 11.86 1 36 35 0.61
## Razon* 5 106 4.09 2.18 3.5 4.12 2.22 1 7 6 0.10
## Salario 6 106 2.83 1.49 3.0 2.79 1.48 1 5 4 -0.12
## Prestaciones 7 106 3.12 1.46 4.0 3.15 1.48 1 5 4 -0.23
## Jornada 8 106 3.33 1.26 4.0 3.43 0.00 1 5 4 -0.95
## Herramientas 9 106 3.64 1.23 4.0 3.79 0.00 1 5 4 -1.20
## Clima 10 106 3.69 1.35 4.0 3.85 1.48 1 5 4 -0.89
## Estres 11 106 3.17 1.33 4.0 3.21 1.48 1 5 4 -0.50
## Transporte 12 91 3.32 1.16 4.0 3.52 0.00 1 4 3 -1.22
## Zona 13 106 3.43 1.23 4.0 3.56 0.00 1 5 4 -1.16
## Continuidad 14 106 3.25 1.29 4.0 3.33 0.00 1 5 4 -0.79
## Conflictos* 15 106 1.31 0.72 1.0 1.15 0.00 1 3 2 1.87
## Areas_mejora* 16 106 44.51 22.93 45.5 45.30 28.91 1 81 80 -0.21
## Satisfaccion* 17 106 23.27 17.36 14.5 21.85 14.83 1 60 59 0.67
## Edad* 18 106 16.86 11.21 14.5 16.33 12.60 1 39 38 0.36
## Genero* 19 106 1.35 0.48 1.0 1.31 0.00 1 2 1 0.62
## Estado_civil* 20 106 2.46 1.16 3.0 2.45 1.48 1 4 3 -0.23
## Municipio* 21 106 1.76 1.42 1.0 1.43 0.00 1 6 5 1.73
## Escolaridad* 22 106 3.42 1.58 3.0 3.51 2.97 1 5 4 -0.42
## Dependientes* 23 106 2.08 1.10 2.0 1.99 1.48 1 4 3 0.48
## kurtosis se
## Encuesta -1.23 2.99
## Puesto* -1.00 0.21
## Puesto_otro* 5.06 0.41
## Antiguedad -1.36 1.41
## Razon* -1.50 0.21
## Salario -1.62 0.14
## Prestaciones -1.42 0.14
## Jornada -0.52 0.12
## Herramientas 0.38 0.12
## Clima -0.44 0.13
## Estres -1.03 0.13
## Transporte -0.32 0.12
## Zona -0.12 0.12
## Continuidad -0.75 0.13
## Conflictos* 1.56 0.07
## Areas_mejora* -1.10 2.23
## Satisfaccion* -0.96 1.69
## Edad* -1.20 1.09
## Genero* -1.63 0.05
## Estado_civil* -1.51 0.11
## Municipio* 1.75 0.14
## Escolaridad* -1.33 0.15
## Dependientes* -1.18 0.11
num_enc <- subset(Encuesta_datos, select = c("Encuesta", "Antiguedad", "Salario","Prestaciones", "Jornada", "Herramientas", "Clima", "Estres", "Transporte", "Zona", "Continuidad"))
library(corrplot)
## corrplot 0.92 loaded
correlation_matrix <- cor(num_enc)
corrplot(correlation_matrix, method = "circle", type = "upper", tl.cex = 0.7, tl.col = "black", col = topo.colors(10))
Podemos ver que existe una gran correlación entre nuestras variables. La
antigüedad tiene una gran correlación con las preguntas de
Herramienteas, Clima y Estres;
El salario tiene una gran correlación con Jornada, Herramientas, Estres, Zona y Continuidad;
Las Prestaciones con Herramientes, Clima, Estres, Continuidad;
La Jornada con Herramientas, Clima, Estres, Zona.
#Histograma de Antigüedad
ggplot(Encuesta_datos1, aes(x = Antiguedad)) +
geom_histogram(binwidth = 5, fill = "#FF7F24", color = "#CD661D") +
labs(title = "Histograma de Antigüedad", x = "Antigüedad", y = "Frecuencia") +
labs(title = "Histograma de Antigüedad",
x = "Antigüedad",
y = "Frecuencia",
tag = "Fig. 1")
En esta gráfica de histograma podemos observar la antigüedad, gráfica la
cual esta subexpuesta y con sesgo a la derecha.
# Calculo de la antigüedad promedio por puesto
antiguedad_promedio <- aggregate(Antiguedad ~ Puesto, data = Encuesta_datos1, FUN = mean)
# Orden de los puestos por antigüedad promedio
antiguedad_promedio <- antiguedad_promedio[order(antiguedad_promedio$Antiguedad, decreasing = TRUE),]
# Crea el gráfico de barras
ggplot(antiguedad_promedio, aes(x = reorder(Puesto, Antiguedad), y = Antiguedad)) +
geom_bar(stat = "identity", fill = "#FF7F24") +
labs(title = "Antigüedad Promedio por Puesto",
x = "Puesto",
y = "Antigüedad Promedio",
tag = "Fig. 2") +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
De nuestra antigüedad promedio por puesto se observan que las personas que han estado por más años en la empresa con los supervisores, las costureras y los soldadores.
ggplot(Encuesta_datos1, aes(x = Genero, fill = Salario)) +
geom_bar()+
scale_fill_manual(values = c("#FF8C00", "#FF7F00","#EE7621", "#CD6600", "#8B4500"))+
guides(fill = guide_legend(title = "Opinion sobre el Salario")) +
labs(title = "Salario por Genero",
x = "Genero",
y = "Count",
tag = "Fig. 3")
Ahora un análisis comparativo sobre las personas que trabajan en FORM
por genero y por salario, a simple vista se puede notar que hay más
mujeres que hombres en la empresa o la menos en la encuesta, las mujeres
la mayoría estan totalmente de acuerdo con su salario y algunas tmbién
estan en medianamente de acuerdo, por otro lado los hombres estan
totalmente de acuerdo.
Esto indica que los trabajadores tanto hombres como mujeres estan de acuerdo con lo que obtienen de salario independientemente del puesto en el que se encuentran.
ggplot(Encuesta_datos1, aes(x = Puesto, fill = Prestaciones)) +
geom_bar()+
scale_fill_manual(values = c("#FF8C00", "#FF7F00","#EE7621", "#CD6600", "#8B4500"))+
guides(fill = guide_legend(title = "Opinion sobre Prestaciones")) +
labs(title = "Prestaciones según el puesto",
x = "Puesto",
y = "Count",
tag = "Fig. 4") +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
En la gráfica podemos observar la opinion de los trabajadores sobre las prestaciones según su puesto, se puede ver que la distribución de esta encuesta hay más Ayudantes generales que de mantenimiento, al igual que tenemos diferentes opiniones de las áreas.
Los puestos que en su mayoría se encuentran en totalmente de acuerdo con las prestaciones son Ayudante general, Costurera, Otro y Supervisor.
El puesto de Administrativo se ecuentra en su mayoría en medianamente en desacuerdo de las prestaciones.
En el puesto de Limpieza se ve una distribución entre Totalmente de acuerdo y Totalmente en desacuerdo de las prestaciones.
Los de mantenimientos se encuentran en Total desacuerdo.
Los Sodadores se encuentran en desacuerdo.
ggplot(Encuesta_datos1, aes(x = Escolaridad, fill = Continuidad)) +
geom_bar()+
scale_fill_manual(values = c("#FF8C00", "#FF7F00","#EE7621", "#CD6600", "#8B4500"))+
guides(fill = guide_legend(title = "Futuro en la empresa")) +
labs(title = "Continuidad según la escolaridad",
x = "Escolaridad",
y = "Count",
tag = "Fig. 5") +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
Dentro de FORM hay diversas personas con diferentes escolaridades, las que más rigen en FORM son con escolaridad Secundaria, seguido de Preparatorio y Licenciatura.
A simple vista se observa que estas 3 escolaridades se encuentran en totalmente de acuerdo de seguir teniendo una trayectoria dentro de FORM.
ggplot(Encuesta_datos, aes(x = Dependientes, fill = Dependientes)) +
geom_bar()+
scale_fill_manual(values = c("#FCFED4", "#CCEDB1", "#41B7C4","#EE7621")) +
theme(legend.position = "bottom") +
guides(fill = guide_legend(title = "No. de hijos"))+
geom_text(aes(label = ..count..), stat = "count", vjust = 2, colour = "black") +
labs(title = "Distribución de personas con dependientes",
x = "Dependientes",
y = "Count",
tag = "Fig. 6")
En esta gráfica se análiza a las personas que se encuentran dentro de FORM, con el objetivo de tener quienes son los que están más presentes, las personas que se observan más, son aquellas que no tienen hijos o personas que dependen economicamente de ellos.
# Instalar y cargar los paquetes necesarios
library(tm)
library(wordcloud)
# Crear un Corpus de texto
corpus <- Corpus(VectorSource(Encuesta_datos$Areas_mejora))
# Preprocesamiento de texto
corpus <- tm_map(corpus, content_transformer(tolower)) # Convertir a minúsculas
corpus <- tm_map(corpus, removePunctuation) # Eliminar signos de puntuación
corpus <- tm_map(corpus, removeNumbers) # Eliminar números
corpus <- tm_map(corpus, removeWords, stopwords("spanish")) # Eliminar palabras comunes (stopwords)
corpus <- tm_map(corpus, stripWhitespace) # Eliminar espacios en blanco adicionales
# Crear el wordcloud
wordcloud(corpus, min.freq = 5, colors = brewer.pal(8, "Dark2"))
## SATISFACCION
# Crear un Corpus de texto
corpus_s <- Corpus(VectorSource(Encuesta_datos$Satisfaccion))
# Preprocesamiento de texto
corpus_s <- tm_map(corpus_s, content_transformer(tolower)) # Convertir a minúsculas
corpus_s <- tm_map(corpus_s, removePunctuation) # Eliminar signos de puntuación
corpus_s <- tm_map(corpus_s, removeNumbers) # Eliminar números
corpus_s <- tm_map(corpus_s, removeWords, stopwords("spanish")) # Eliminar palabras comunes (stopwords)
# Crear el wordcloud
wordcloud(corpus_s, min.freq = 5, colors = brewer.pal(8, "Dark2"))
Como tenemos una base de datos con pocas palabras nuestro wordcloud se ve con pocas palabras, pero de aquí podemos observar que la palabra que más se repite en las Áreas de mejora es ninguno, dado a entender que hay personas que piensan que no necesita mejores, pero también observamos otras 5 palabras las cuales son, que estan bien, que necesitan mejorar el calor que se siente en la empresa, el salario, las prestaciones y que sienten mucho estrés en el trabajo.
Por otro lado en la Satisfacción encontramos un wordcloud con menos palabras pero las que más se repiten en Bien en primer lugar, dando pie a que las personas se encuentran bien dentro de FORM, que estan a gusto, comodos y felices.
encuesta <- Encuesta_datos1
#Conversiones necesarias de tipos de datos.
encuesta$Estado_civil= as.factor(encuesta$Estado_civil)
encuesta$Escolaridad= as.factor(encuesta$Escolaridad)
encuesta$Genero= as.factor(encuesta$Genero)
encuesta$Municipio= as.factor(encuesta$Municipio)
encuesta$Conflictos= as.factor(encuesta$Conflictos)
# Filtrar la base de datos para obtener solo los registros con Puesto "Administrativo"
encuesta_admin <- filter(encuesta, Puesto == "Administrativo")
encuesta_admin
## # A tibble: 17 × 23
## Encuesta Puesto Puesto_otro Antiguedad Razon Salario Prestaciones Jornada
## <dbl> <chr> <chr> <dbl> <chr> <chr> <chr> <chr>
## 1 1 Administr… NA 9 Por … Totalm… Medianament… Totalm…
## 2 8 Administr… NA 36 Razo… Totalm… Medianament… Totalm…
## 3 16 Administr… NA 25 Razo… Median… Medianament… Totalm…
## 4 17 Administr… NA 9 Razo… Median… Medianament… Totalm…
## 5 22 Administr… NA 1 Ubic… Median… Totalmente … Median…
## 6 24 Administr… NA 14 Otro Median… Totalmente … Ni de …
## 7 28 Administr… NA 1 Ambi… Ni de … Totalmente … Ni de …
## 8 41 Administr… NA 36 Ubic… Totalm… Totalmente … Totalm…
## 9 47 Administr… NA 36 Por … Median… Medianament… Totalm…
## 10 57 Administr… NA 2 Razo… Median… Medianament… Median…
## 11 69 Administr… NA 12 Razo… Median… Medianament… Median…
## 12 81 Administr… NA 36 Por … Median… Medianament… Totalm…
## 13 83 Administr… NA 10 Por … Totalm… Totalmente … Totalm…
## 14 93 Administr… NA 36 Razo… Ni de … Ni de acuer… Median…
## 15 97 Administr… NA 2 Por … Totalm… Ni de acuer… Totalm…
## 16 103 Administr… NA 36 Razo… Median… Medianament… Ni de …
## 17 105 Administr… NA 1 Por … Totalm… Ni de acuer… Totalm…
## # ℹ 15 more variables: Herramientas <chr>, Clima <chr>, Estres <chr>,
## # Transporte <chr>, Zona <chr>, Continuidad <chr>, Conflictos <fct>,
## # Areas_mejora <chr>, Satisfaccion <chr>, Edad <chr>, Genero <fct>,
## # Estado_civil <fct>, Municipio <fct>, Escolaridad <fct>, Dependientes <dbl>
media_antiguedad <- mean(encuesta_admin$Antiguedad)
media_antiguedad # 17.76471, El promedio de antiguedad de las personas en el puesto Administrativo es de 17 meses en FORM, lo que da 1 año y 5 meses.
## [1] 17.76471
rango_antiguedad <- range(encuesta_admin$Antiguedad)
rango_antiguedad # 1-36, El rango y diferentes tipos de antiguedad en FORM por parte de las personas de Administrativo van de 1 mes hasta 36 meses que son 3 años.
## [1] 1 36
encuesta_admin$Edad <- as.numeric(encuesta_admin$Edad)
# Identificar las columnas numéricas en el conjunto de datos
numeric_columns <- sapply(encuesta_admin, is.numeric)
# Crear un conjunto de datos solo con las columnas numéricas y la variable 'Edad'
numeric_data <- encuesta_admin[, numeric_columns]
# Calcular la matriz de correlación
correlation_matrix <- cor(na.omit(numeric_data))
# Imprimir la matriz de correlación
corrplot(correlation_matrix)
#Correlacion con la Antiguedad
numeric_columns <- sapply(encuesta_admin, is.numeric)
numeric_data <- encuesta_admin[, numeric_columns]
correlation_Antigued <- cor(numeric_data, encuesta_admin$Antiguedad)
print(correlation_Antigued)
## [,1]
## Encuesta 0.06915050
## Antiguedad 1.00000000
## Edad -0.26735710
## Dependientes 0.04365537
#Correlacion con la Edad
numeric_columns <- sapply(encuesta_admin, is.numeric)
numeric_data <- encuesta_admin[, numeric_columns]
correlation_Edad <- cor(numeric_data, encuesta_admin$Edad)
print(correlation_Edad)
## [,1]
## Encuesta 0.5597500
## Antiguedad -0.2673571
## Edad 1.0000000
## Dependientes 0.3858919
Operativa <- read_excel("C:\\Users\\Luis Rodriguez\\Downloads\\Datos_FORM_RH_FJ2024 (1).xlsx", sheet = "Operativa")
View(Operativa)
head(Operativa)
## # A tibble: 6 × 12
## No. Fecha_nacimiento Genero Fecha_Alta Fecha_baja Puesto Dpto
## <dbl> <dttm> <chr> <dttm> <chr> <chr> <chr>
## 1 10 1985-08-18 00:00:00 Femenino 2017-02-20 00:00:00 45201 Costu… Cost…
## 2 12 1969-06-27 00:00:00 Masculi… 2017-12-01 00:00:00 44931 Gestor Emba…
## 3 13 1989-06-21 00:00:00 Masculi… 2018-03-23 00:00:00 45230 Chofer Emba…
## 4 14 1997-11-20 00:00:00 Femenino 2018-09-06 00:00:00 <NA> Lider Prod…
## 5 19 1984-08-19 00:00:00 Femenino 2019-05-02 00:00:00 45342 Ayuda… Prod…
## 6 20 1990-06-24 00:00:00 Masculi… 2019-07-30 00:00:00 44944 Resid… Cedis
## # ℹ 5 more variables: Municipio <chr>, Estado <chr>, Estado_Civil <chr>,
## # Causa_baja <chr>, Observaciones_baja <chr>
# Obtén la fecha actual
fecha_actual <- Sys.Date()
# Calcula la edad restando la fecha de nacimiento de la fecha actual
Operativa$Edad <- as.integer(interval(Operativa$`Fecha_nacimiento`, fecha_actual) / dyears(1))
Operativa_sin_na <- na.omit(Operativa)
view(Operativa_sin_na)
ggplot(Operativa_sin_na, aes(x = Genero, fill = Causa_baja)) +
geom_bar(position = "stack") +
labs(title = "Relación entre género y causas de baja", x = "Género", y = "Cantidad de casos", fill = "Causa de baja")
Podemos ver que es dificil estimar una causa de baja, ya que la mayoria decide no dar detalles de sus bajas, pero hay factores a destacar tales como las bajas por motivos personales o aquellos que encuentran un nuevo trabajo
ggplot(Operativa, aes(x = Genero, fill = Municipio)) +
geom_bar(position = "stack") +
labs(title = "Relación entre género y Municipio", x = "Género", y = "Cantidad de casos", fill = "Municipio")
A travez de este grafico podemos ver que existe una correlacion entre el municipio y los trabajadores de ambos generos, ya que la mayor concentracion son personas que viven cerca de la planta
# Crear el histograma
ggplot(Operativa, aes(x = Edad, fill = Genero)) +
geom_histogram(binwidth = 1, position = "identity", alpha = 0.5) +
labs(title = "Distribución de Edades por Género", x = "Edad", y = "Frecuencia", fill = "Género")
Podemos ver la distribucion de edades por genero dentro de FORM en la cual se observa una concentracion notablee de personas en los rangos de edades de 20 a 28 años aproximadante.
ventasxcantidad <- read_excel("C:\\Users\\Luis Rodriguez\\Downloads\\Datos_FORM_Ventas_FJ2024.xlsx", sheet = "Ventas_x_cantidad")
ventasmensuales <- read_excel("C:\\Users\\Luis Rodriguez\\Downloads\\Datos_FORM_Ventas_FJ2024.xlsx", sheet = "Ventas_Mensuales")
# Convertir los formatos de la base de datos
ventasxcantidad$Fecha <- as.Date(ventasxcantidad$Fecha)
ventasmensuales$Fecha <- as.Date(ventasmensuales$Fecha)
ventasxcantidad$Fecha <- format(ventasxcantidad$Fecha, "%d/%m/%Y")
i) Estadísticos Descriptivos.
summary(ventasxcantidad)
## Folio_de_Factura Fecha No_OC_Cliente Ref_cliente
## Length:16706 Length:16706 Length:16706 Length:16706
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
## Cliente Producto Cantidad Categoría_de_producto
## Length:16706 Length:16706 Min. : 1.0 Length:16706
## Class :character Class :character 1st Qu.: 30.0 Class :character
## Mode :character Mode :character Median : 80.0 Mode :character
## Mean : 365.4
## 3rd Qu.: 250.0
## Max. :36220.0
## Estado
## Length:16706
## Class :character
## Mode :character
##
##
##
summary(ventasmensuales)
## Fecha Ventas
## Min. :2020-01-01 Min. : 2235669
## 1st Qu.:2020-09-23 1st Qu.: 6358278
## Median :2021-06-16 Median : 7872345
## Mean :2021-06-16 Mean : 7841740
## 3rd Qu.:2022-03-08 3rd Qu.: 9219847
## Max. :2022-12-01 Max. :12285123
## NA's :3
ii) Medidas de Dispersión.
cantidad_cajas_stats <- summary(ventasxcantidad$Cantidad)
cantidad_cajas_stats
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.0 30.0 80.0 365.4 250.0 36220.0
iii) 4-6 Gráficos (barras, líneas, pastel, dispersión, burbujas, plots de series de tiempo, correlación, mapas).
# 1. Top 5 mejores clientes de FORM en un gráfico de barras
# Calcular la cantidad total de productos vendidos por cada cliente y obtener el top 10
top_clientes <- ventasxcantidad %>%
group_by(Cliente) %>%
summarise(Cantidad_total_vendida = sum(Cantidad)) %>%
arrange(desc(Cantidad_total_vendida)) %>%
head(5)
# Gráfico de barras con etiquetas de monto encima de cada barra
ggplot(data = top_clientes, aes(x = reorder(Cliente, Cantidad_total_vendida), y = Cantidad_total_vendida)) +
geom_bar(stat = "identity", fill = "skyblue") +
geom_text(aes(label = paste("$", Cantidad_total_vendida)), vjust = -0.5, color = "black", size = 3) +
labs(title = "Top 10 clientes por cantidad de cajas vendidas",
x = "Cliente",
y = "Cantidad total vendida") +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
# 2. Gráfico de líneas para las ventas a lo largo del tiempo (No hay datos de las ventas de octubre a diciembre)
ggplot(data = ventasmensuales, aes(x = Fecha, y = Ventas)) +
geom_line(color = "blue") +
labs(title = "Ventas a lo largo del tiempo",
x = "Fecha",
y = "Ventas")
iv) Tablas de frecuencia y/o contingencia que incluyen algunas caractrísticas de las variables categóricas (e.g. número de bajas por género, número de bajas por área de trabajo, salario diario por género, principales motivas de bajas, etc.)
# Tabla de frecuencia para la variable 'Categoría_de_producto'
tabla_frecuencia_categoria <- table(ventasxcantidad$Categoría_de_producto)
print(tabla_frecuencia_categoria)
##
## Cartón / Kit (Cartón)
## 3781
## Cartón / Materia Prima (Cartón)
## 3
## Cartón / Producto Comercialización (Cartón)
## 1112
## Cartón / Producto Terminado (Cartón)
## 10491
## Muestras / Producto Terminado (Muestras)
## 1
## Retornable / Kit (Retornable)
## 2
## Retornable / Producto Comercialización (Retornable)
## 26
## Retornable / Producto en proceso (Retornable)
## 3
## Retornable / Producto Terminado (Retornable)
## 847
## Servicios
## 440
# Tabla de frecuencia para la variable 'Estado'
tabla_frecuencia_estado <- table(ventasxcantidad$Estado)
print(tabla_frecuencia_estado)
##
## cancel posted
## 143 16563
# Tabla de contingencia para las variables 'Categoría_de_producto' y 'Estado'
tabla_contingencia <- table(ventasxcantidad$Categoría_de_producto, ventasxcantidad$Estado)
print(tabla_contingencia)
##
## cancel posted
## Cartón / Kit (Cartón) 29 3752
## Cartón / Materia Prima (Cartón) 0 3
## Cartón / Producto Comercialización (Cartón) 15 1097
## Cartón / Producto Terminado (Cartón) 64 10427
## Muestras / Producto Terminado (Muestras) 0 1
## Retornable / Kit (Retornable) 0 2
## Retornable / Producto Comercialización (Retornable) 0 26
## Retornable / Producto en proceso (Retornable) 0 3
## Retornable / Producto Terminado (Retornable) 6 841
## Servicios 29 411
# Cargar bases
nuevos_ied <- read_excel("C:\\Users\\Luis Rodriguez\\Desktop\\evi 1\\Data_Nearshoring.xlsx")
# Convertir en Serie de Tiempo
new_ts <- ts(nuevos_ied$New_FDI_Real, start = 2006, frequency = 4)
# Gráficar la serie de tiempo
plot(new_ts, main = "Serie de Tiempo de los Flujos de IED")
# Stationary (ADF test)
adf.test(new_ts)
##
## Augmented Dickey-Fuller Test
##
## data: new_ts
## Dickey-Fuller = -5.3895, Lag order = 4, p-value = 0.01
## alternative hypothesis: stationary
#La data tiene estacionariedad.
# Serial Autocorrelation (Box-Liung Test & ACF Plot)
acf(new_ts, main = "Autocorrelation Function (ACF)")
ljung_box_test <- Box.test(new_ts, lag = 5, type = "Ljung-Box")
ljung_box_test
##
## Box-Ljung test
##
## data: new_ts
## X-squared = 6.2517, df = 5, p-value = 0.2825
# No tiene autocorrelació serial.
# Como guía generamos un autoarima para ver los parámetros "óptimos"
new_auto_arima=auto.arima(new_ts,stepwise=FALSE,approximation=FALSE)
summary(new_auto_arima)
## Series: new_ts
## ARIMA(0,0,0)(0,0,1)[4] with non-zero mean
##
## Coefficients:
## sma1 mean
## -0.2762 53325.813
## s.e. 0.1216 3266.354
##
## sigma^2 = 1.383e+09: log likelihood = -823.19
## AIC=1652.38 AICc=1652.74 BIC=1659.08
##
## Training set error measures:
## ME RMSE MAE MPE MAPE MASE
## Training set -271.8292 36644.53 24616.34 -49.53543 85.03172 0.6307267
## ACF1
## Training set -0.1016925
# -- p
pacf(new_ts)
# p = 1
# Estacionariedad -- d
adf.test(new_ts)
##
## Augmented Dickey-Fuller Test
##
## data: new_ts
## Dickey-Fuller = -5.3895, Lag order = 4, p-value = 0.01
## alternative hypothesis: stationary
# Al tener un p-value menor de 0.05 vemos que tenemos estacionariedad y por lo tanto no es necesario diferenciar.
# d = 0
# Autocorrelación -- q
acf(new_ts)
# q = 1
# Modelo de ARMIA
modelo2 <- arima(new_ts, order = c(1, 0, 1))
summary(modelo2)
##
## Call:
## arima(x = new_ts, order = c(1, 0, 1))
##
## Coefficients:
## ar1 ma1 intercept
## 0.7629 -0.9999 52850.2855
## s.e. 0.0827 0.0433 779.3975
##
## sigma^2 estimated as 1.269e+09: log likelihood = -822.24, aic = 1652.47
##
## Training set error measures:
## ME RMSE MAE MPE MAPE MASE
## Training set -763.0151 35621.11 24313.61 -42.33704 82.91944 0.6895612
## ACF1
## Training set 0.05857145
Box.test(residuals(modelo2),type="Ljung-Box")
##
## Box-Ljung test
##
## data: residuals(modelo2)
## X-squared = 0.24716, df = 1, p-value = 0.6191
#No hay evidencia de que exista autocorrelacion en los residuos (ya que el p-value es mayor a 0.05) y por lo tanto el modelo puede entender las tendencias en los datos adecuadamente, y hay un buen fit del modelo.
new_pronostico=forecast::forecast(modelo2,h=11)
new_pronostico
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## 2023 Q2 44573.74 -1371.3089 90518.79 -25693.15 114840.6
## 2023 Q3 46535.80 -545.5650 93617.17 -25468.94 118540.5
## 2023 Q4 48032.74 302.3997 95763.07 -24964.51 121030.0
## 2024 Q1 49174.80 1070.7491 97278.85 -24394.00 122743.6
## 2024 Q2 50046.12 1725.8735 98366.37 -23853.32 123945.6
## 2024 Q3 50710.89 2265.2388 99156.53 -23380.34 124802.1
## 2024 Q4 51218.06 2699.5697 99736.55 -22984.57 125420.7
## 2025 Q1 51605.00 3044.1616 100165.84 -22662.39 125872.4
## 2025 Q2 51900.21 3314.7398 100485.68 -22404.86 126205.3
## 2025 Q3 52125.44 3525.6349 100725.24 -22201.55 126452.4
## 2025 Q4 52297.27 3689.1286 100905.42 -22042.47 126637.0
plot(new_pronostico)
De acuerdo a los resultados del pronóstico podemos decir que si ocurrirá el Nearshoring en México, pero su efecto no parece ser extremo. Existe una tendencia a la alta en cuanto a los nuevos flujos de inversión extranjera desde 2024 y continuando para todo el 2025, ocilando con 95% de confianza entre -23640.89 y 123565.1 para ambos años.
# CARGAR BASES
ied_carton <- read_excel("C:\\Users\\Luis Rodriguez\\Desktop\\evi 1\\ied_carton_papel_2023.xlsx")
# Convertir en Serie de Tiempo
ts <- ts(ied_carton$IED_REAL, start = 1999, frequency = 4)
# Gráficar la serie de tiempo
plot(ts, main = "Serie de Tiempo de los Flujos de IED")
# Gráficar la decomposición de la serie de tiempo
ts_deco <- decompose(ts)
trend <- ts_deco$trend
estac <- ts_deco$seasonal
error <- ts_deco$random
plot(ts_deco)
# Stationary (ADF test)
adf.test(ts)
##
## Augmented Dickey-Fuller Test
##
## data: ts
## Dickey-Fuller = -4.3846, Lag order = 4, p-value = 0.01
## alternative hypothesis: stationary
acf(ts, main = "Autocorrelation Function (ACF)")
ljung_box_test <- Box.test(ts, lag = 5, type = "Ljung-Box")
ljung_box_test
##
## Box-Ljung test
##
## data: ts
## X-squared = 9.5458, df = 5, p-value = 0.08918
# Como guía generamos un autoarima para ver los parámetros "óptimos"
auto_arima=auto.arima(ts,stepwise=FALSE,approximation=FALSE)
summary(auto_arima)
## Series: ts
## ARIMA(0,0,0)(2,0,0)[4] with non-zero mean
##
## Coefficients:
## sar1 sar2 mean
## 0.1779 0.2418 231.3268
## s.e. 0.0977 0.0975 117.4995
##
## sigma^2 = 517049: log likelihood = -790.52
## AIC=1589.05 AICc=1589.47 BIC=1599.43
##
## Training set error measures:
## ME RMSE MAE MPE MAPE MASE ACF1
## Training set 6.741349 708.0824 372.0382 -20.35814 346.8633 0.758928 -0.02059296
# -- p
pacf(ts)
# p = 2
# Estacionariedad -- d
adf.test(ts)
##
## Augmented Dickey-Fuller Test
##
## data: ts
## Dickey-Fuller = -4.3846, Lag order = 4, p-value = 0.01
## alternative hypothesis: stationary
# Al tener un p-value menor de 0.05 vemos que tenemos estacionariedad y por lo tanto no es necesario diferenciar.
# d = 0
# Autocorrelación -- q
acf(ts)
# q = 3
# Modelo de ARMIA
modelo1 <- arima(ts, order = c(2, 0, 3))
print(modelo1)
##
## Call:
## arima(x = ts, order = c(2, 0, 3))
##
## Coefficients:
## ar1 ar2 ma1 ma2 ma3 intercept
## -1.2397 -0.4573 1.2301 0.3637 -0.1992 247.3718
## s.e. 0.6479 0.6199 0.6330 0.6535 0.1386 64.8405
##
## sigma^2 estimated as 524785: log likelihood = -792.64, aic = 1599.27
Box.test(residuals(auto_arima),type="Ljung-Box")
##
## Box-Ljung test
##
## data: residuals(auto_arima)
## X-squared = 0.043268, df = 1, p-value = 0.8352
pronostico=forecast::forecast(auto_arima,h=9)
pronostico
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## 2023 Q4 118.269863 -803.2440 1039.7837 -1291.064 1527.604
## 2024 Q1 63.172628 -858.3413 984.6865 -1346.161 1472.506
## 2024 Q2 428.660867 -492.8530 1350.1748 -980.673 1837.995
## 2024 Q3 257.421674 -664.0922 1178.9356 -1151.912 1666.756
## 2024 Q4 7.801889 -928.1785 943.7823 -1423.657 1439.260
## 2025 Q1 197.496916 -738.4835 1133.4773 -1233.962 1628.955
## 2025 Q2 312.301129 -623.6793 1248.2815 -1119.157 1743.760
## 2025 Q3 218.930695 -717.0497 1154.9111 -1212.528 1650.389
## 2025 Q4 164.229400 -805.0727 1133.5315 -1318.190 1646.649
plot(pronostico)
# Convertir la columna 'fecha' a clase Date si no está en ese formato
ventasmensuales$Fecha <- as.Date(ventasmensuales$Fecha)
# Ajustar un modelo ARIMA a los datos históricos
modelo_arima <- auto.arima(ventasmensuales$Ventas)
# Hacer el pronóstico para el año 2023 (12 meses)
pronostico_2023 <- forecast(modelo_arima, h = 12)
# Crear un data frame para el pronóstico con fechas correspondientes al año 2023
pronostico_df <- data.frame(Fecha = seq(as.Date("2023-01-01"), by = "month", length.out = 12),
Pronostico = pronostico_2023$mean)
# Visualizar el pronóstico junto con los datos históricos
ggplot() +
geom_line(data = ventasmensuales, aes(x = Fecha, y = Ventas), color = "blue") +
geom_line(data = pronostico_df, aes(x = Fecha, y = Pronostico), color = "red") +
labs(title = "Ventas a lo largo del tiempo y pronóstico para 2023",
x = "Fecha",y = "Ventas")
México es el segundo país con mayor valor comercial de importación en América del Norte, después de Estados Unidos, lo que sugiere un buen potencial en el incremento de importaciones de cartón en la región.
México muestra un potencial en el crecimiento de exportación de cartón en América del Norte.
Coahuila es el estado de México con la mayor exportación de autopartes.
La mayor concentración de trabajadores en el sector operativo se encuentra en Apodaca, especialmente debido a su cercanía con la planta.
Las causas de bajas en empleados son variadas, pero destacan aquellos que encuentran nuevo empleo y las bajas por motivo personal.
La antigüedad dentro de la empresa está correlacionada con factores como la jornada laboral, herramientas disponibles, estrés, ubicación geográfica y continuidad laboral.
Los empleados con mayor antigüedad suelen ocupar roles como supervisores, costureras y soldadores, indicando una posible relación entre la naturaleza del trabajo y la retención de empleados.
La categoría de empleados sin hijos o personas a su cargo tiende a tener una mayor presencia dentro de FORM.
La distribución de edades por género muestra una concentración significativa de personas de 20 a 28 años.
Las ventas han experimentado variaciones a lo largo del tiempo, con un crecimiento notable desde mediados del 2021 hasta la actualidad, con una ligera disminución a principios del año 2022.
Describir como es la relacion entre los resultados estimados del pronostico del Nearshoring y las situaciones problemas descritas por el socio formador FORM durante la sesion de inicio del reto
Según los resultados del pronóstico realizado, es probable que ocurra el Nearshoring en México, pero su efecto no parece ser de gran magnitud. Existe una tendencia al alza en cuanto a los nuevos flujos de inversión extranjera desde el año 2024, y se espera que continúe durante todo el año 2025. lo que es bueno ya que ayuda a estimular el crecimiento económico, crear empleo,, mejorar la infraestructura y promover la diversificacion económica.
Liga de Acceso a Datos: https://drive.google.com/drive/folders/1GGJhywdq43u5QWvP4tXiK8vjg975_M4z?usp=sharing
Lectura Recomendada: What is Exploratory Data Analysis? https://www.ibm.com/topics/exploratory-data-analysis
Nearshoring: 10 preguntas y respuestas sobre el tema del que todos
hablan. (s. f.). EGADE. https://egade.tec.mx/es/egade-ideas/investigacion/nearshoring-10-preguntas-y-respuestas-sobre-el-tema-del-que-todos-hablan
Gómez, D. (2023, 11 octubre). Clima laboral: definición, importancia,
factores y tipos. HubSpot. https://blog.hubspot.es/service/que-es-clima-laboral