Título principal del trabajo

Análisis Exploratorio de Datos sobre el Uso y Satisfacción de Chatbots en el Entorno Empresarial

1. Revisión de datos:

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


Instalar y cargar paquetes necesarios

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)

2. Preparación de la base de datos:

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>

Revisión de valores faltantes

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.

Revisión de datos atípicos

# 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.


3. Organización de datos en tablas de frecuencias:

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.


4. Organización de datos en gráficos

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.


5. Hallazgos y conclusiones

-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.