Análisis Exploratorio de Datos sobre el Uso y Satisfacción de Chatbots en el Entorno Empresarial
1.1 ¿Cuál es la población objetivo?
La población objetivo son los profesionales que trabajan en empresas (de sectores como tecnología, salud, finanzas, retail y educación) y que usan o han interactuado con chatbots en su trabajo. Es decir, el interés está en empleados con experiencia con estas herramientas en un entorno laboral.
1.2 ¿Existe una muestra? ¿Cuál es?
Sí. La muestra está formada por 300 empleados, seleccionados mediante muestreo aleatorio estratificado (por nivel educativo y sector empresarial).
1.3 Menciones un parámetro y un estadístico en este estudio.
-Parámetro : la proporción real de todos los profesionales que se sienten satisfechos con los chatbots.
-Estadístico : la proporción de satisfacción calculada usando solo los 300 empleados de la muestra.
1.4 Clasifique cada una de las variables de la base de datos acuerdo con su naturaleza y nivel de medición genero: Cualitativa nominal
nivel_educativo: Cualitativa ordinal
sector_empresa: Cualitativa nominal
uso_chatbots: Cualitativa ordinal
satisfaccion_chatbots: Cualitativa ordinal
edad: Cuantitativa
horas_pantalla: Cuantitativa
uso_chatbots_seg: Cuantitativa
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.2 ✔ readr 2.1.4
## ✔ forcats 1.0.0 ✔ stringr 1.5.0
## ✔ ggplot2 3.4.2 ✔ tibble 3.2.1
## ✔ lubridate 1.9.2 ✔ tidyr 1.3.0
## ✔ purrr 1.0.2
## ── 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(dplyr)
library(ggplot2)
library(readxl)
library(tibble)
library(readr)
Cargar base de datos:
datos <- read_csv("/cloud/project/dataset_chatbots(in).csv")
## Rows: 300 Columns: 8
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (5): genero, nivel_educativo, sector_empresa, uso_chatbots, satisfaccion...
## dbl (3): edad, horas_pantalla, uso_chatbots_seg
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
Nombres de variables
names(datos)
## [1] "genero" "nivel_educativo" "sector_empresa"
## [4] "uso_chatbots" "satisfaccion_chatbots" "edad"
## [7] "horas_pantalla" "uso_chatbots_seg"
Dimesiones de la base de datos
dim(datos)
## [1] 300 8
Mostrar las primeras filas de la base de datos
head(datos)
## # A tibble: 6 × 8
## genero nivel_educativo sector_empresa uso_chatbots satisfaccion_chatbots edad
## <chr> <chr> <chr> <chr> <chr> <dbl>
## 1 mascu… pregrado tecnologia raro alta 15
## 2 otro posgrado tecnologia raro baja 53
## 3 femen… posgrado tecnologia raro baja 23
## 4 femen… posgrado tecnologia moderado media 21
## 5 mascu… posgrado tecnologia moderado media 43
## 6 mascu… doctorado salud frecuente alta 54
## # ℹ 2 more variables: horas_pantalla <dbl>, uso_chatbots_seg <dbl>
Tipos de datos
str(datos)
## spc_tbl_ [300 × 8] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
## $ genero : chr [1:300] "masculino" "otro" "femenino" "femenino" ...
## $ nivel_educativo : chr [1:300] "pregrado" "posgrado" "posgrado" "posgrado" ...
## $ sector_empresa : chr [1:300] "tecnologia" "tecnologia" "tecnologia" "tecnologia" ...
## $ uso_chatbots : chr [1:300] "raro" "raro" "raro" "moderado" ...
## $ satisfaccion_chatbots: chr [1:300] "alta" "baja" "baja" "media" ...
## $ edad : num [1:300] 15 53 23 21 43 54 46 39 39 41 ...
## $ horas_pantalla : num [1:300] 6.43 7.94 6.89 8.08 6.34 ...
## $ uso_chatbots_seg : num [1:300] 2507 16690 6910 6684 NA ...
## - attr(*, "spec")=
## .. cols(
## .. genero = col_character(),
## .. nivel_educativo = col_character(),
## .. sector_empresa = col_character(),
## .. uso_chatbots = col_character(),
## .. satisfaccion_chatbots = col_character(),
## .. edad = col_double(),
## .. horas_pantalla = col_double(),
## .. uso_chatbots_seg = col_double()
## .. )
## - attr(*, "problems")=<externalptr>
colSums(is.na(datos))
## genero nivel_educativo sector_empresa
## 0 0 0
## uso_chatbots satisfaccion_chatbots edad
## 0 0 0
## horas_pantalla uso_chatbots_seg
## 20 15
¿qué encontró?
En la variable edad no se observan valores atípicos extremos evidentes. La distribución parece relativamente simétrica y sin valores excesivamente alejados del resto.
En la variable uso_chatbots_seg sí se observan varios valores atípicos, especialmente valores muy altos en comparación con la mayoría de los datos. Esto indica que algunos empleados utilizan los chatbots durante tiempos considerablemente mayores que el resto de la muestra.
# Boxplot para edad
boxplot(datos$edad,
main = "Diagrama de cajas - Edad",
ylab = "Edad")
# Boxplot para uso en segundos
boxplot(datos$uso_chatbots_seg,
main = "Diagrama de cajas - Uso de chatbots (segundos)",
ylab = "Segundos")
¿qué encontró?
En el diagrama de cajas de la variable uso_chatbots_seg se pueden observar varios puntos que están muy alejados del resto de los datos. Estos puntos representan valores atípicos.
La mayoría de las personas usa los chatbots durante un tiempo similar, pero hay algunos empleados que los utilizan por mucho más tiempo que los demás. Por eso aparecen esos puntos por encima de la caja.
También se ven algunos valores bajos aislados, pero los más notorios son los valores altos.
En general, se puede decir que sí existen valores atípicos en esta variable y que hay algunos usuarios que usan los chatbots de manera mucho más intensiva que el resto, por lo que a la hora de realizar inferencias posteriores hay que tener en cuenta esto.
Tabla para la variable: genero
#tabla 1
tabla_genero <- table(datos$genero)
tabla_genero
##
## femenino masculino otro
## 135 136 29
prop_genero <- prop.table(tabla_genero)
prop_genero
##
## femenino masculino otro
## 0.45000000 0.45333333 0.09666667
Se observa que la distribución por género está bastante equilibrada entre femenino (45%) y masculino (45.33%). La categoría “otro” representa aproximadamente el 9.67% de la muestra.
Esto indica que la muestra es relativamente balanceada en términos de género.
Tabla para la variable: sector_empresa
#tabla 2
tabla_sector <- table(datos$sector_empresa)
tabla_sector
##
## educacion finanzas retail salud tecnologia
## 24 59 38 45 134
prop_sector <- prop.table(tabla_sector)
prop_sector
##
## educacion finanzas retail salud tecnologia
## 0.0800000 0.1966667 0.1266667 0.1500000 0.4466667
El sector con mayor representación es tecnología (44.67%), seguido por finanzas (19.67%) y salud (15%).
El sector con menor participación es educación (8%).
Esto indica que la muestra tiene una mayor concentración de profesionales del sector tecnológico.
Tabla para la variale: Edad
#tabla agrupada
tabla_edad_agrupada <- table(cut(datos$edad, breaks = 5))
tabla_edad_agrupada
##
## (14,22.2] (22.2,30.4] (30.4,38.6] (38.6,46.8] (46.8,55]
## 16 75 109 75 25
prop.table(tabla_edad_agrupada)
##
## (14,22.2] (22.2,30.4] (30.4,38.6] (38.6,46.8] (46.8,55]
## 0.05333333 0.25000000 0.36333333 0.25000000 0.08333333
La tabla agrupada muestra que la mayor concentración de empleados se encuentra en los rangos intermedios de edad.Esto sugiere que la muestra está compuesta principalmente por adultos jóvenes y de mediana edad.
#tabla de contingencia
tabla_cont <- table(datos$genero, datos$satisfaccion_chatbots)
tabla_cont
##
## alta baja media nan
## femenino 30 35 63 7
## masculino 32 34 65 5
## otro 8 8 10 3
prop.table(tabla_cont)
##
## alta baja media nan
## femenino 0.10000000 0.11666667 0.21000000 0.02333333
## masculino 0.10666667 0.11333333 0.21666667 0.01666667
## otro 0.02666667 0.02666667 0.03333333 0.01000000
La tabla de contingencia permite observar cómo se distribuye el nivel de satisfacción según el género.
Se observa que tanto hombres como mujeres presentan proporciones similares en las categorías de satisfacción (alta, media y baja), lo que sugiere que no hay diferencias muy marcadas a simple vista entre géneros.
Gráfico circular para la variable: genero
# Gráfico 1
pie(tabla_genero,
main = "Distribución de género",
col = c("lightblue","pink","lightgray"))
¿Qué ve?
El gráfico circular muestra que la distribución por género está bastante equilibrada entre femenino y masculino. Ambas categorías representan aproximadamente el 45% de la muestra. La categoría “otro” tiene una proporción menor, cercana al 10%.
Esto indica que la muestra no está sesgada hacia un solo género y permite realizar comparaciones sin una gran desproporción.
Histograma para la variable: Edad
# Gráfico 2
hist(datos$edad,
main = "Histograma de edad",
xlab = "Edad",
ylab = "Frecuencia",
col = "lightgreen")
¿Qué ve?
El histograma muestra que la mayoría de las edades se concentran entre aproximadamente 25 y 40 años.
La distribución no presenta una asimetría extrema y parece relativamente uniforme dentro de ese rango.
Gráfico de cajas y bigotes para la variable: uso_chatbots_seg
# Gráfico 3
boxplot(datos$uso_chatbots_seg,
main = "Caja y bigotes: uso de chatbots (segundos)",
ylab = "Segundos",
col = "plum")
¿Qué ve?
El diagrama de cajas muestra varios valores atípicos superiores, lo que indica que algunos empleados utilizan los chatbots durante periodos de tiempo considerablemente mayores que el resto.
La mayoría de los datos se concentra en valores más bajos, pero existe una dispersión importante hacia valores altos.
-Hallazgo 1: La muestra está equilibrada en términos de género, con proporciones similares entre masculino y femenino.
-Hallazgo 2: El sector tecnológico es el que tiene mayor representación dentro del estudio.
-Hallazgo 3: Existen valores faltantes en las variables horas_pantalla y uso_chatbots_seg.
-Hallazgo 4: La variable uso_chatbots_seg presenta valores atípicos altos, lo que indica la presencia de usuarios intensivos de chatbots.
-Hallazgo 5: La mayor parte de la muestra se concentra en edades entre 25 y 40 años.
Teniendo en cuenta los hallazgos encontrados se puede concluir que el análisis exploratorio permitió identificar la estructura general de los datos, detectar valores faltantes y reconocer la existencia de valores atípicos en el uso de chatbots. Esto deja la base preparada para análisis inferenciales posteriores.