Introducción

El presente documento expone el análisis del conjunto de datos Survey dataset of Dynamic Capabilities for leading and managing Digital Transformation initiatives Oosthuizen & Grobbelaar (2024), diseñado para desarrollar un marco de Capacidades Dinámicas orientado a la gestión de iniciativas de Transformación Digital en las organizaciones, integrando enfoques de Gestión del Cambio.

La recopilación de datos se realizó a través de dos encuestas dirigidas a diferentes públicos con el fin de evaluar distintos aspectos del proceso de transformación digital:

  1. Encuesta a expertos: Diseñada para profesionales con experiencia en transformación digital, incluyó 130 preguntas y fue aplicada a 32 expertos en el área.
  2. Encuesta masiva: Contó con 38 preguntas y recibió 446 respuestas de profesionales de 51 países y diversas industrias. Su propósito fue evaluar la aplicabilidad del marco en contextos organizacionales del mundo real.

Cada una de estas encuestas aborda distintas dimensiones del cambio organizacional basado en datos. Sin embargo, dado que en este documento se implementará un análisis factorial exploratorio, es necesario que el conjunto de datos tenga una estructura rectangular. Por esta razón, el análisis se centrará exclusivamente en la Encuesta masiva, permitiendo una evaluación más adecuada de los factores latentes y su impacto en la transformación digital.

Finalmente, este documento detalla el proceso de manipulación, procesamiento e interpretación de los datos, seguido de un análisis basado en enfoques descriptivos, multivariados e inferenciales, con el objetivo de extraer conclusiones fundamentadas sobre el impacto del marco en distintos sectores económicos.

EDA

Librerías y configurarciones

library(readxl)
library(labelled)
library(dplyr)
library(ggplot2)
library(formattable)
library(DT)
library(dlookr)
library(tidyverse)
library(psych)
library(sna)
library(qgraph)
library(EGAnet)
library(corrplot)
library(plotly)
library(FSA)          # Para la prueba de Dunn
library(rcompanion)   # Para visualización y soporte adicional
library(vegan)
library(pairwiseAdonis)

knitr::opts_chunk$set(warning = FALSE,
                      message = FALSE, 
                      comment = "") 

Importación de conjunto de datos

# library(sjlabelled)

es <- read_excel("Survey data for DT study.xlsx", 
  sheet = "Expert Survey Data")


DT::datatable(
  es,
  options = list(
    pageLength = 35,
    scrollY = "400px",
    scrollX = T,
    scrollCollapse = TRUE,
    autoWidth = FALSE,         # Desactiva el ajuste automático de ancho
    scrollX = FALSE,            # Desactiva el scroll horizontal
    columnDefs = list(
      list(width = '400px', targets = "_all")
    )
  ),
  caption = "Datos de la encuesta de expertos"
) %>% 
  DT::formatStyle(columns = colnames(es), `white-space` = "normal")
md <- read_excel("Survey data for DT study.xlsx", 
    sheet = "Mass Survey Data")

DT::datatable(
  md,
  options = list(
    pageLength = 35,
    scrollY = "400px",
    scrollX = T,
    scrollCollapse = TRUE,
    autoWidth = FALSE,         # Desactiva el ajuste automático de ancho
    scrollX = FALSE,            # Desactiva el scroll horizontal
    columnDefs = list(
      list(width = '400px', targets = "_all")
    )
  ),
  caption = "Datos de la encuesta de masas"
) %>% 
  DT::formatStyle(columns = colnames(md), `white-space` = "normal")

Dado que este conjunto de datos proviene de una tabla de excel con multiples enunciados en las columnas se procede a transformar las columnas de tal manera que facilite el análisis.

Limpieza

Nombres columna ES

Este código analiza los nombres de las columnas de un dataset y cuenta cuántas veces se repite cada etiqueta. Para ello, recorre la lista de nombres y verifica si ciertos nombres se agrupan bajo un mismo encabezado, identificando aquellos que comienzan con “…” como repeticiones del nombre anterior. Si encuentra este patrón, acumula la cantidad de veces que un nombre base se repite y almacena el resultado en una lista. Finalmente, permite conocer cuántos nombres únicos hay y verificar si la suma de repeticiones coincide con el número total de columnas.

nombres <- colnames(es)
nombres_label_rep <- list()
longitud_lista <- 0

for(indice in  1:length(nombres)){
  nombre_label <- nombres[indice]
  # print(nombre_label)
  # print(nombres[indice + 1])
  if(substr(nombre_label, 1, 1) != "."){
      longitud_lista <- longitud_lista + 1
    }
  if(indice == length(nombres)){
    break
  }
  if(substr(nombres[indice + 1], 1, 3) == "..."){
    indice_ <- indice
    contador <- 0
    while(indice < length(nombres) && substr(nombres[indice + 1], 1, 3) == "..."){
      contador <- contador + 1
      indice <- indice + 1
    }
    if(substr(nombre_label, 1, 1) != "."){
      nombres_label_rep[[nombre_label]] <- contador + 1
    }
    indice <- indice_ + contador
  }
  else{
    if(substr(nombre_label, 1, 1) != "."){
      nombres_label_rep[[nombre_label]] <- 1
    }
  }
}

# length(nombres_label_rep)
# 
# sum(as.numeric(unlist(nombres_label_rep)))
# nombres[c(119:121)]

Traducción posibles labels

lista_traducida <- list(
  `ID del encuestado` = 1,
  `¿Cuál de las siguientes industrias representa mejor tu experiencia?` = 1,
  `Califica tu nivel general de experiencia en transformación digital en una escala del 1 al 5.` = 1,
  `En general, ¿qué tan exitosas han sido las iniciativas de transformación digital en las que has participado?` = 1,
  `Las siguientes actividades rutinarias están orientadas a desarrollar capacidades de exploración de oportunidades digitales. Por favor, califica cada actividad en consecuencia.` = 15,
  `Las siguientes actividades rutinarias están orientadas a desarrollar capacidades de planificación de escenarios digitales.` = 9,
  `Las siguientes actividades rutinarias están orientadas a desarrollar capacidades de planificación de madurez digital.` = 3,
  `Las siguientes actividades rutinarias están orientadas a desarrollar capacidades para la búsqueda de alianzas.` = 3,
  `Las siguientes actividades rutinarias están orientadas a desarrollar capacidades para la preparación de la gestión del cambio.` = 12,
  `Las siguientes actividades rutinarias están orientadas a desarrollar capacidades de agilidad estratégica.` = 15,
  `Las siguientes actividades rutinarias están orientadas a desarrollar capacidades para equilibrar portafolios digitales.` = 6,
  `Las siguientes actividades rutinarias están orientadas a desarrollar capacidades de desarrollo de productos digitales.` = 3,
  `Las siguientes actividades rutinarias están orientadas a desarrollar capacidades de colaboración y establecimiento de alianzas.` = 9,
  `Las siguientes actividades rutinarias están orientadas a desarrollar capacidades para la implementación de iniciativas de gestión del cambio.` = 9,
  `Las siguientes actividades rutinarias están orientadas a desarrollar capacidades para la reestructuración organizacional.` = 9,
  `Las siguientes actividades rutinarias están orientadas a desarrollar capacidades para mejorar de manera continua la madurez digital.` = 6,
  `Las siguientes actividades rutinarias están orientadas a desarrollar capacidades para la gestión de la evolución organizacional.` = 9,
  `Las siguientes actividades rutinarias están orientadas a desarrollar capacidades para mejorar de manera continua la colaboración y las alianzas.` = 6,
  `Las siguientes actividades rutinarias están orientadas a desarrollar capacidades para la mejora y el refuerzo continuo de la gestión del cambio.` = 9
)

Crear vector de labels

RepLabels <- rep(names(lista_traducida),
                 times = as.numeric(unlist(lista_traducida)))

length(RepLabels)
[1] 127
first_row <- es[1, ]

first_row[1] <- "ID"

first_row_ <- as.character(first_row)
  
  
first_row_ <- 
  sapply(c(first_row),
         function(x){gsub(" ", "_", x)})

#------

# frase <- "2._Continuously improve organisation’s general managerial skills - Extent performed (1-5)"
# 
# gsub(" ", "_", frase)

# ------

colnames(es) <- first_row_

colnames(es)[1:4] <- c("ID", "Response_1", "Response_2", "Response_3")

# es <- es[-1, ]

# ------

labels <- setNames(as.list(RepLabels), colnames(es))

Insertar labels

# names(RepLabels) <- colnames(es)
# 
# df_es <- set_variable_labels(es, RepLabels)
#   
# dim(es)
# length(labels)
# 
# length(unique(colnames(es)))

# Asignar las etiquetas a las variables del dataframe:
es_ <- es

var_label(es_) <- labels

es_ <- es_[-1,]

View(es_)
View(es)

Traducción nombres variables

nom1 <- colnames(es_)[1:25]

nom2 <- colnames(es_)[26:50]

nom3 <- colnames(es_)[51:75]

nom4 <- colnames(es_)[76:100]

nom5 <- colnames(es_)[101:127]
nom1_ <- c(
  "ID",
  "Respuesta_1",
  "Respuesta_2",
  "Respuesta_3",
  "1. Establecer un mapa de competencias organizacionales para ayudar a identificar oportunidades potenciales que complementen dichas competencias - Nivel de importancia (1-5)",
  "1. Establecer un mapa de competencias organizacionales para ayudar a identificar oportunidades potenciales que complementen dichas competencias - Nivel de dificultad (1-5)",
  "1. Establecer un mapa de competencias organizacionales para ayudar a identificar oportunidades potenciales que complementen dichas competencias - Grado realizado (1-5)",
  "2. Usar una plantilla estandarizada para evaluar la viabilidad del caso de negocio de oportunidades potenciales - Nivel de importancia (1-5)",
  "2. Usar una plantilla estandarizada para evaluar la viabilidad del caso de negocio de oportunidades potenciales - Nivel de dificultad (1-5)",
  "2. Usar una plantilla estandarizada para evaluar la viabilidad del caso de negocio de oportunidades potenciales - Grado realizado (1-5)",
  "3. Monitorear y aprender de fuerzas internas y externas de cambio para identificar oportunidades potenciales - Nivel de importancia (1-5)",
  "3. Monitorear y aprender de fuerzas internas y externas de cambio para identificar oportunidades potenciales - Nivel de dificultad (1-5)",
  "3. Monitorear y aprender de fuerzas internas y externas de cambio para identificar oportunidades potenciales - Grado realizado (1-5)",
  "4. Establecer una rutina frecuente para detectar tendencias y oportunidades potenciales - Nivel de importancia (1-5)",
  "4. Establecer una rutina frecuente para detectar tendencias y oportunidades potenciales - Nivel de dificultad (1-5)",
  "4. Establecer una rutina frecuente para detectar tendencias y oportunidades potenciales - Grado realizado (1-5)",
  "5. Investigar necesidades y puntos de dolor (o preocupaciones) de los clientes (internos/externos) - Nivel de importancia (1-5)",
  "5. Investigar necesidades y puntos de dolor (o preocupaciones) de los clientes (internos/externos) - Nivel de dificultad (1-5)",
  "5. Investigar necesidades y puntos de dolor (o preocupaciones) de los clientes (internos/externos) - Grado realizado (1-5)",
  "1. Desarrollar e interpretar escenarios futuros considerando las oportunidades potenciales identificadas - Nivel de importancia (1-5)",
  "1. Desarrollar e interpretar escenarios futuros considerando las oportunidades potenciales identificadas - Nivel de dificultad (1-5)",
  "1. Desarrollar e interpretar escenarios futuros considerando las oportunidades potenciales identificadas - Grado realizado (1-5)",
  "2. Reflexionar y reevaluar el modelo de negocio considerando oportunidades potenciales - Nivel de importancia (1-5)",
  "2. Reflexionar y reevaluar el modelo de negocio considerando oportunidades potenciales - Nivel de dificultad (1-5)",
  "2. Reflexionar y reevaluar el modelo de negocio considerando oportunidades potenciales - Grado realizado (1-5)"
)

nom2_ <- c(
  "3. Priorizar las diferentes oportunidades basado en datos y supuestos del planeamiento de escenarios para decisión del comité de inversión - Nivel de importancia (1-5)",
  "3. Priorizar las diferentes oportunidades basado en datos y supuestos del planeamiento de escenarios para decisión del comité de inversiones - Nivel de dificultad (1-5)",
  "3. Priorizar las diferentes oportunidades basado en datos y supuestos del comité de inversiones - Grado realizado (1-5)",
  "1. Evaluar e identificar la madurez digital de la organización y desarrollar una hoja de ruta para mejoras - Nivel de importancia (1-5)",
  "1. Evaluar e identificar la madurez digital de la organización y desarrollar una hoja de ruta para mejoras - Nivel de dificultad (1-5)",
  "1. Evaluar e identificar la madurez digital de la organización y desarrollar una hoja de ruta para mejoras - Grado realizado (1-5)",
  "1. Identificar asociaciones que complementen la visión, valores y capacidades de la organización - Nivel de importancia (1-5)",
  "1. Identificar asociaciones que complementen la visión, valores y capacidades de la organización - Nivel de dificultad (1-5)",
  "1. Identificar asociaciones que complementen la visión, valores y capacidades de la organización - Grado realizado (1-5)",
  "1. Fomentar una mentalidad digital (actitud positiva hacia cambios tecnológicos y alentar la búsqueda de oportunidades) - Nivel de importancia (1-5)",
  "1. Fomentar una mentalidad digital (actitud positiva hacia cambios tecnológicos y búsqueda de oportunidades) - Nivel de dificultad (1-5)",
  "1. Fomentar una mentalidad digital (actitud positiva hacia cambios tecnológicos e identificación de oportunidades) - Grado realizado (1-5)",
  "2. Identificar los valores culturales actuales (tipo/perfil) de la organización y áreas potenciales de mejora cultural - Nivel de importancia (1-5)",
  "2. Identificar los valores culturales actuales (tipo/perfil) de la organización y áreas potenciales de mejora cultural - Nivel de dificultad (1-5)",
  "2. Identificar los valores culturales actuales (tipo/perfil) y áreas potenciales para mejoras culturales - Grado realizado (1-5)",
  "3. Crear y comunicar (generar conciencia) la visión y los cambios esperados - Nivel de importancia (1-5)",
  "3. Crear y comunicar (generar conciencia) la visión y los cambios esperados - Nivel de dificultad (1-5)",
  "3. Crear y comunicar (generar conciencia) la visión y los cambios esperados - Grado realizado (1-5)",
  "4. Comprender las capacidades y la necesidad de cambio sincronizando mentalidad organizacional (creencias, reglas, normas, valores) y capacidades (habilidades, activos, rutinas) - Nivel de importancia (1-5)",
  "4. Comprender capacidades y necesidades de cambio sincronizando mentalidad organizacional (creencias, reglas, normas, valores) con capacidades (habilidades, activos, rutinas) - Nivel de dificultad (1-5)",
  "4. Entender capacidades y necesidades de cambio sincronizando mentalidad organizacional con capacidades internas - Grado realizado (1-5)",
  "1. Asignar responsabilidades de toma de decisiones a líderes/gerentes con conocimiento (en algunos casos Directores Digitales) - Nivel de importancia (1-5)",
  "1. Asignar responsabilidades de toma de decisiones a líderes/gerentes con conocimiento (en algunos casos Directores Digitales) - Nivel de dificultad (1-5)",
  "1. Asignar responsabilidades de toma de decisiones a líderes/gerentes con conocimiento (en algunos casos Directores Digitales) - Grado realizado (1-5)",
  "2. Obtener habilidades requeridas mediante contratación, desarrollo o adquisición de capacidades - Nivel de importancia (1-5)"
)


nom3_ <- c(
  "2. Obtener habilidades necesarias mediante contratación, desarrollo interno o adquisición de capacidades - Nivel de dificultad (1-5)",
  "2. Obtener habilidades requeridas mediante contratación, desarrollo interno o adquisición de capacidades - Grado realizado (1-5)",
  "3. Crear flexibilidad en los presupuestos para la asignación de recursos - Nivel de importancia (1-5)",
  "3. Crear flexibilidad en los presupuestos para la asignación de recursos - Nivel de dificultad (1-5)",
  "3. Crear flexibilidad en los presupuestos para la asignación de recursos - Grado realizado (1-5)",
  "4. Habilitar equipos colaborativos y multifuncionales - Nivel de importancia (1-5)",
  "4. Habilitar equipos colaborativos y multifuncionales - Nivel de dificultad (1-5)",
  "4. Habilitar equipos colaborativos y multifuncionales - Grado realizado (1-5)",
  "5. Evaluar la alineación de las capacidades ágiles con los requisitos para ejecutar oportunidades - Nivel de importancia (1-5)",
  "5. Evaluar la alineación de las capacidades ágiles con los requisitos para ejecutar oportunidades - Nivel de dificultad (1-5)",
  "5. Evaluar la alineación de las capacidades ágiles con los requisitos para ejecutar oportunidades - Grado realizado (1-5)",
  "1. Formular KPIs para evaluar oportunidades y tomar decisiones basadas en datos - Nivel de importancia (1-5)",
  "1. Formular KPIs para evaluar oportunidades y tomar decisiones basadas en datos - Nivel de dificultad (1-5)",
  "1. Formular KPIs para evaluar oportunidades y tomar decisiones basadas en datos - Grado realizado (1-5)",
  "2. Priorizar y seleccionar oportunidades de inversión alineadas con la estrategia de la organización - Nivel de importancia (1-5)",
  "2. Priorizar y seleccionar oportunidades de inversión alineadas con la estrategia organizacional - Nivel de dificultad (1-5)",
  "2. Priorizar y seleccionar oportunidades de inversión alineadas con la estrategia organizacional - Grado realizado (1-5)",
  "1. Antes del lanzamiento/implementación de un producto o proyecto, realizar experimentos rápidos de prototipado o proyectos piloto para identificar riesgos y beneficios potenciales - Nivel de importancia (1-5)",
  "1. Antes del lanzamiento/implementación de un producto o proyecto, realizar experimentos rápidos de prototipado o proyectos piloto para identificar riesgos y beneficios potenciales - Nivel de dificultad (1-5)",
  "1. Antes del lanzamiento/implementación de un producto o proyecto, realizar experimentos rápidos de prototipado o proyectos piloto para identificar riesgos y beneficios potenciales - Grado realizado (1-5)",
  "1. Evaluar las capacidades necesarias para la implementación del proyecto/producto y colaborar con socios para cubrir brechas de capacidades - Nivel de importancia (1-5)",
  "1. Evaluar las capacidades necesarias para la implementación del proyecto/producto y colaborar con socios para cubrir brechas de capacidades - Nivel de dificultad (1-5)",
  "1. Evaluar las capacidades necesarias para la implementación del proyecto/producto y colaborar con socios para cubrir brechas de capacidades - Grado realizado (1-5)",
  "2. Establecer roles y responsabilidades entre la organización y los socios - Nivel de importancia (1-5)",
  "2. Establecer roles y responsabilidades entre la organización y los socios - Nivel de dificultad (1-5)"
)

nom4_ <- c(
  "2. Obtener habilidades necesarias mediante contratación, desarrollo interno o adquisición de capacidades - Nivel de dificultad (1-5)",
  "2. Obtener habilidades necesarias mediante contratación, desarrollo interno o adquisición de capacidades - Grado realizado (1-5)",
  "3. Establecer flexibilidad en los presupuestos para la asignación de recursos - Nivel de importancia (1-5)",
  "3. Establecer flexibilidad en los presupuestos para la asignación de recursos - Nivel de dificultad (1-5)",
  "3. Establecer flexibilidad en los presupuestos para la asignación de recursos - Grado realizado (1-5)",
  "4. Habilitar equipos colaborativos y multifuncionales - Nivel de importancia (1-5)",
  "4. Habilitar equipos colaborativos y multifuncionales - Nivel de dificultad (1-5)",
  "4. Habilitar equipos colaborativos y multifuncionales - Grado realizado (1-5)",
  "5. Evaluar alineación entre capacidades ágiles y requisitos para ejecutar oportunidades - Nivel de importancia (1-5)",
  "5. Evaluar alineación entre capacidades ágiles y requisitos para ejecutar oportunidades - Nivel de dificultad (1-5)",
  "5. Evaluar alineación entre capacidades ágiles y requisitos para ejecutar oportunidades - Grado realizado (1-5)",
  "1. Formular KPIs para evaluar oportunidades y tomar decisiones basadas en datos - Nivel de importancia (1-5)",
  "1. Formular KPIs para evaluar oportunidades y tomar decisiones basadas en datos - Nivel de dificultad (1-5)",
  "1. Formular KPIs para evaluar oportunidades y tomar decisiones basadas en datos - Grado realizado (1-5)",
  "2. Actualizar procedimientos operativos estándar (SOPs) y rutinas para complementar cambios realizados en la organización - Nivel de importancia (1-5)",
  "2. Actualizar procedimientos operativos estándar (SOPs) y rutinas para complementar cambios realizados en la organización - Nivel de dificultad (1-5)",
  "2. Actualizar procedimientos operativos estándar (SOPs) y rutinas para complementar cambios realizados en la organización - Grado realizado (1-5)",
  "3. Gestionar el impacto del cambio y reevaluar cambios operativos e inversiones implementadas para mejoras - Nivel de importancia (1-5)",
  "3. Gestionar el impacto del cambio y reevaluar cambios operativos e inversiones implementadas para mejoras - Nivel de dificultad (1-5)",
  "3. Gestionar el impacto del cambio y reevaluar cambios operativos e inversiones implementadas para mejoras - Grado realizado (1-5)",
  "1. Comparar regularmente capacidades existentes con capacidades requeridas y obtener capacidades adicionales cuando sea necesario - Nivel de importancia (1-5)",
  "1. Comparar regularmente capacidades existentes con capacidades requeridas y obtener capacidades adicionales cuando sea necesario - Nivel de dificultad (1-5)",
  "1. Comparar regularmente capacidades existentes con capacidades requeridas y obtener capacidades adicionales cuando sea necesario - Grado realizado (1-5)",
  "2. Establecer roles y responsabilidades entre la organización y sus socios - Nivel de importancia (1-5)",
  "2. Establecer roles y responsabilidades entre la organización y sus socios - Nivel de dificultad (1-5)"
)

nom5_ <- c(
  "2. Fomentar el aprendizaje continuo y el desarrollo de habilidades y capacidades digitales - Nivel de importancia (1-5)",
  "2. Fomentar el aprendizaje continuo y el desarrollo de habilidades y capacidades digitales - Nivel de dificultad (1-5)",
  "2. Fomentar el aprendizaje continuo y el desarrollo de habilidades y capacidades digitales - Grado realizado (1-5)",
  "1. Evaluar y mejorar continuamente la relación con clientes (internos/externos) - Nivel de importancia (1-5)",
  "1. Evaluar y mejorar continuamente la relación con clientes (internos/externos) - Nivel de dificultad (1-5)",
  "1. Evaluar y mejorar continuamente la relación con clientes (internos/externos) - Grado realizado (1-5)",
  "2. Evaluar continuamente la preparación de proveedores y socios - Nivel de importancia (1-5)",
  "2. Evaluar continuamente la preparación de proveedores y socios - Nivel de dificultad (1-5)",
  "2. Evaluar continuamente la preparación de proveedores y socios - Grado realizado (1-5)",
  "3. Buscar continuamente nuevas oportunidades - Nivel de importancia (1-5)",
  "3. Buscar continuamente nuevas oportunidades - Nivel de dificultad (1-5)",
  "3. Buscar continuamente nuevas oportunidades - Grado realizado (1-5)",
  "1. Reevaluar activamente los ecosistemas digitales para identificar socios complementarios cuando sea necesario - Nivel de importancia (1-5)",
  "1. Reevaluar activamente los ecosistemas digitales para identificar socios complementarios cuando sea necesario - Nivel de dificultad (1-5)",
  "1. Reevaluar activamente los ecosistemas digitales para identificar socios complementarios cuando sea necesario - Grado realizado (1-5)",
  "2. Construir continuamente relaciones establecidas con socios y finalizar asociaciones innecesarias - Nivel de importancia (1-5)",
  "2. Construir continuamente relaciones establecidas con socios y finalizar asociaciones innecesarias - Nivel de dificultad (1-5)",
  "2. Construir continuamente relaciones establecidas con socios y finalizar asociaciones innecesarias - Grado realizado (1-5)",
  "1. Mantener una red efectiva de comunicación y colaboración para asegurar transparencia - Nivel de importancia (1-5)",
  "1. Mantener una red efectiva de comunicación y colaboración para la transparencia - Nivel de dificultad (1-5)",
  "1. Mantener una red efectiva de comunicación y colaboración para la transparencia - Grado realizado (1-5)",
  "2. Mejorar continuamente las habilidades generales de gestión de la organización - Nivel de importancia (1-5)",
  "2. Mejorar continuamente las habilidades generales de gestión de la organización - Nivel de dificultad (1-5)",
  "2. Mejorar continuamente las habilidades generales de gestión de la organización - Grado realizado (1-5)",
  "3. Promover y mantener una cultura proactiva, adaptable y de alta tolerancia al riesgo - Nivel de importancia (1-5)",
  "3. Promover y mantener una cultura proactiva, adaptable y con alta tolerancia al riesgo - Nivel de dificultad (1-5)",
  "3. Promover y mantener una cultura proactiva, adaptable y con alta tolerancia al riesgo - Grado realizado (1-5)"
)

lista_nombres_espanol <- 
  c(
    nom1_, 
    nom2_,
    nom3_,
    nom4_,
    nom5_
  )

length(lista_nombres_espanol)
[1] 127
lista_nombres_español <- 
  sapply(c(lista_nombres_espanol),
         function(x){gsub(" ", "_", x)})

colnames(es_) <- lista_nombres_espanol

Corrección nombres

es_2 <- es_

nombres_ES_ <- colnames(es_2)

nombres_ES_Corregido <-
  sapply(nombres_ES_,
         function(x){
           ifelse(is.na(as.numeric(substr(x, 1, 1))), x, substr(x, 4, nchar(x) - 5))
         })

nombres_ES_Corregido <- as.character(nombres_ES_Corregido)

colnames(es_2) <- nombres_ES_Corregido

es_ <- es_2

Comparación Nombres ES

La siguente tabla muestra el nombre de la columna original vs la trasnformada

# Crear dataframe
df_nombresColES_ <- data.frame(
  Original = colnames(es),    # aquí va tu vector original en inglés
  Traduccion =  lista_nombres_español # aquí va tu vector traducido en español
)

DT::datatable(
  df_nombresColES_,
  options = list(
    pageLength = 127,
    scrollY = "400px",
    scrollX = T,
    scrollCollapse = TRUE,
    autoWidth = FALSE,         # Desactiva el ajuste automático de ancho
    scrollX = FALSE,            # Desactiva el scroll horizontal
    columnDefs = list(
      list(width = '400px', targets = "_all")
    )
  ),
  caption = "Comparación de términos originales y traducidos"
) %>% 
  DT::formatStyle(columns = colnames(df_nombresColES_), `white-space` = "normal")

Nombres columna MD

Este código hace lo mismo que el primero de ES, solo que ahora lo implementaremos para MD

nombres <- colnames(md)
nombres_label_rep_MD <- list()
longitud_lista_MD <- 0

for(indice in  1:length(nombres)){
  nombre_label <- nombres[indice]
  # print(nombre_label)
  # print(nombres[indice + 1])
  if(substr(nombre_label, 1, 1) != "."){
      longitud_lista_MD <- longitud_lista_MD + 1
    }
  if(indice == length(nombres)){
    break
  }
  if(substr(nombres[indice + 1], 1, 3) == "..."){
    indice_ <- indice
    contador <- 0
    while(indice < length(nombres) && substr(nombres[indice + 1], 1, 3) == "..."){
      contador <- contador + 1
      indice <- indice + 1
    }
    if(substr(nombre_label, 1, 1) != "."){
      nombres_label_rep_MD[[nombre_label]] <- contador + 1
    }
    indice <- indice_ + contador
  }
  else{
    if(substr(nombre_label, 1, 1) != "."){
      nombres_label_rep_MD[[nombre_label]] <- 1
    }
  }
}

# length(nombres_label_rep)
# 
# sum(as.numeric(unlist(nombres_label_rep)))
# nombres[c(119:121)]

Traducción labels

lista_traducida_M <- list(
  "ID del encuestado" = 1,
  "Industria de la Organización X" = 1,
  "Número de empleados en la Organización X" = 1,
  "Nivel de enfoque" = 1,
  "Éxito de las iniciativas de Transformación Digital en la Organización X" = 1,
  "Resistencia de la Organización X al cambio tecnológico" = 1,
  "País donde se encuentra la Organización X" = 1,
  "Desafíos en la implementación de la Transformación Digital (Calificación 1-5)" = 13,
  "Descripción de la cultura organizacional de la Organización X" = 4,
  "Fase 1 (Detección): Nivel de implementación de capacidades (1-5)" = 5,
  "Fase 2 (Aprovechamiento): Nivel de implementación de capacidades (1-5)" = 6,
  "Fase 3 (Transformación): Nivel de implementación de capacidades (1-5)" = 5
)

length(lista_traducida_M)
[1] 12

Generar lista de labels

RepLabels_M <- rep(names(lista_traducida_M),
                 times = as.numeric(unlist(lista_traducida_M)))

length(RepLabels_M)
[1] 40

Algunas correcciones

first_row_m <- md[1, ]

# first_row_m[1:4] <- "ID"

first_row_M <- as.character(first_row_m)
  
  
first_row_M <- 
  sapply(c(first_row_M),
         function(x){gsub(" ", "_", x)})

frase <- "2._Continuously improve organisation’s general managerial skills - Extent performed (1-5)"

gsub(" ", "_", frase)
[1] "2._Continuously_improve_organisation’s_general_managerial_skills_-_Extent_performed_(1-5)"
# ------

md_ <- md

colnames(md_) <- first_row_M

colnames(md_)[1:7] <- c("ID", "Response_1", "Response_2", "Response_3", "Response_4", "Response_5", "Response_6")

# es <- es[-1, ]

# ------

labels_m <- setNames(as.list(RepLabels_M), colnames(md_))

# as.character(colnames(md_))
# as.character(md[1,])

Insertar labels

# names(RepLabels) <- colnames(es)
# 
# df_es <- set_variable_labels(es, RepLabels)
#   
# dim(es)
# length(labels)
# 
# length(unique(colnames(es)))

# Asignar las etiquetas a las variables del dataframe:
var_label(md_) <- labels_m

md_ <- md_[-1, ]

Prefijos variables

El conjunto de datos se divide en fases (1 - 3) y de igual manera en sub grupos de variables, los cuales se pueden identificar con prefijos.

# Crear dataframe con prefijos y significados
df_prefijos <- data.frame(
  Prefijo = c(
    "C:_",
    "Cul:",
    "Digital_",
    "Seeking_",
    "CM_",
    "Cont._"
  ),
  Significado = c(
    "Desafíos o condiciones organizacionales (e.g., liderazgo, cultura, habilidades)",
    "Cultura organizacional (tipología de cultura)",
    "Evaluación o implementación relacionada con capacidades digitales",
    "Búsqueda o establecimiento de asociaciones estratégicas",
    "Gestión del cambio (Change Management)",
    "Actividades realizadas de forma continua o periódica"
  ))
  
# Visualizar como tabla interactiva con DT
datatable(
  df_prefijos,
  options = list(pageLength = 10, autoWidth = TRUE),
  caption = "Explicación de Prefijos usados en la Encuesta"
)

Nombres de variables traducidos

nombres_variables_traducidos_MD <- c(
  "ID",
  "Industria_Organizacion",
  "Numero_Empleados",
  "Nivel_Enfoque",
  "Exito_Transformacion_Digital",
  "Resistencia_Cambio_Tecnologico",
  "Pais_Organizacion",
  "Apoyo_Gestion_Cambio",
  "Liderazgo",
  "Cultura_Organizacional",
  "Habilidades_Conocimiento",
  "Motivacion",
  "Vision",
  "HojaRuta_Estrategia",
  "Silos_Politica_Colaboracion",
  "Comunicacion_Conciencia",
  "Agilidad",
  "Apoyo_Financiero",
  "Gestion_Datos_Seguridad",
  "Integracion_Tecnologica",
  "Cultura_Clan",
  "Cultura_Adhocracia",
  "Cultura_Mercado",
  "Cultura_Jerarquica",
  "Exploracion_Digital",
  "Escenarios_Digitales",
  "Madurez_Digital",
  "Busqueda_Asociaciones",
  "Preparacion_Gestion_Cambio",
  "Agilidad_Estrategica",
  "Balance_Portafolios",
  "Desarrollo_Producto",
  "Colaboracion_Asociaciones",
  "Implementacion_Iniciativas_Cambio",
  "NA",
  "Reestructuracion_Organizacional",
  "Mejora_Madurez_Digital",
  "Gestion_Evolucion_Organizacional",
  "Colaboracion_Asociaciones_Continua",
  "Mejora_Continua_Gestion_Cambio"
)

length(nombres_variables_traducidos_MD)
[1] 40
length(colnames(md_))
[1] 40

Comparación Nombres MD

# Crear dataframe
df_nombresColMD_ <- data.frame(
  Original = colnames(md_),    # aquí va tu vector original en inglés
  Traduccion =  nombres_variables_traducidos_MD # aquí va tu vector traducido en español
)

DT::datatable(
  df_nombresColMD_,
  options = list(
    pageLength = 127,        # Elementos por página
    scrollY = "400px",      # Altura del scroll vertical
    scrollCollapse = TRUE,  # Permite colapsar el scroll
    paging = TRUE           # Mantiene la paginación activada
  ),
  caption = "Comparación de términos originales y traducidos"
)
md_c <- md_

colnames(md_) <- nombres_variables_traducidos_MD
# 
# View(md_c)

Valores faltantes

datatable(diagnose(es_))
datatable(diagnose(md_))

Se logra identificar que hay algunos valores faltantes en los dos conjuntos de datos y un caso particular de una variable la cual tiene el \(100\%\) de NA, se procede hacer una imputación sencilla por la moda y la eliminación de la columna NA

moda <- function(x) {
  ux <- unique(na.omit(x))  # Valores únicos sin NA
  ux[which.max(tabulate(match(x, ux)))]  # Retorna el valor más frecuente
}

# Aplicar la imputación usando lapply()
md_ <- as.data.frame(lapply(md_, function(col) {
  if (any(is.na(col))) {  # Si hay NA en la columna
    col[is.na(col)] <- moda(col)  # Reemplazar NA con la moda
  }
  return(col)
}))

Ingeniería de Variables

En esta parte transformamos las entradas de las variables a numérico, para entonces hacer lo respectivos análisis.

es_t <- es_[ ,c(3:dim(es_)[2])]


df_es <- 
  data.frame(
    lapply(es_t, function(col){
      sapply(col, function(x){
        as.numeric(substr(x, 1, 1))
      })
    }),
    stringsAsFactors = F
  )
sector_es <- sapply(es_[[2]], 
                    function(x){
                      unlist(strsplit(as.character(x), " "))[1]
                    })
df_es <- 
  cbind(sector = as.character(sector_es),
        df_es)
md_t <- md_[ ,c(5, 6, 8:dim(md_)[2])]


df_md <- 
  data.frame(
    lapply(md_t, function(col){
      sapply(col, function(x){
        as.numeric(substr(x, 1, 1))
      })
    }),
    stringsAsFactors = F
  )
sector_md <- sapply(md_[[2]], 
                    function(x){
                      unlist(strsplit(as.character(x), " "))[1]
                    })
df_md <- 
  cbind(sector = as.character(sector_md),
        Numero_Empleados = md_[ , 3],
        Nivel_Enfoque = md_[ , 4],
        Pais_organizacion = md_[ , 7],
        df_md)

df_Md <- df_md[, c(1:33, 35:dim(df_md)[2])]

Conjunto de datos final ES

DT::datatable(
  df_es,
  options = list(
    pageLength = 35,
    scrollY = "400px",
    scrollX = T,
    scrollCollapse = TRUE,
    autoWidth = FALSE,         # Desactiva el ajuste automático de ancho
    scrollX = FALSE,            # Desactiva el scroll horizontal
    columnDefs = list(
      list(width = '400px', targets = "_all")
    )
  ),
  caption = "Datos de la encuesta de expertos"
) %>% 
  DT::formatStyle(columns = colnames(df_es), `white-space` = "normal")

Conjunto de datos Final MD

DT::datatable(
  df_Md,
  options = list(
    pageLength = 100,
    scrollY = "400px",
    scrollX = T,
    scrollCollapse = TRUE,
    autoWidth = FALSE,         # Desactiva el ajuste automático de ancho
    scrollX = FALSE,            # Desactiva el scroll horizontal
    columnDefs = list(
      list(width = '400px', targets = "_all")
    )
  ),
  caption = "Datos de la encuesta de masas"
) %>% 
  DT::formatStyle(columns = colnames(df_Md), `white-space` = "normal")
colnames(df_Md)[4] <- "Pais_organizacion"

Análisis descriptivo

Sector

Cantidad por sector

tapply(df_Md$Resistencia_Cambio_Tecnologico, 
       df_Md$sector, 
       length)
  Primary Secondary  Tertiary 
       22        50       374 

Resistencia_Cambio_Tecnologico

tapply(df_Md$Resistencia_Cambio_Tecnologico, 
       df_Md$sector, 
       median,
       na.rm = T)
  Primary Secondary  Tertiary 
        3         3         2 

Análsis multivariado

EFA

EFA con todas las variables

Correlación policorica

df_efa <- df_Md[, c(5:dim(df_Md)[2])]

out <- psych::polychoric(df_efa)

matriz_correlacion_polychoric <- out$rho
# View(matriz_correlacion_polychoric)
View(sna::upper.tri.remove(round(matriz_correlacion_polychoric, 3)))

matriz_correlacion_polychoric_DownT <- 
  sna::upper.tri.remove(round(matriz_correlacion_polychoric, 3))

Visualización de la correlación mediante redes

qgraph::qgraph(matriz_correlacion_polychoric, cut = .30, details = TRUE,
       posCol = "darkgreen", negCol = "red", 
       labels = names(df_efa))

Este gráfico nos permite entender que existen correlaciones fuertes entres las variables, lo que nos permite continuar el proceso de implementación del EFA

Visualizacion mediante matriz de calor

# Crear el mapa de calor
corrplot(matriz_correlacion_polychoric, 
         method = "ellipse", 
         col = colorRampPalette(c("blue", "white", "red"))(200),
         tl.cex = 0.8,       # Tamaño de los nombres
         tl.col = "black",   # Color de los nombres
         tl.srt = 45,        # Rotar los nombres 45 grados
         number.cex = 0.7,   # Tamaño de los números dentro de la matriz
         type = "lower")     # Mostrar solo la parte inferior de la matriz

psych::KMO(matriz_correlacion_polychoric)
Kaiser-Meyer-Olkin factor adequacy
Call: psych::KMO(r = matriz_correlacion_polychoric)
Overall MSA =  0.93
MSA for each item = 
      Exito_Transformacion_Digital     Resistencia_Cambio_Tecnologico 
                              0.96                               0.91 
              Apoyo_Gestion_Cambio                          Liderazgo 
                              0.92                               0.92 
            Cultura_Organizacional           Habilidades_Conocimiento 
                              0.95                               0.94 
                        Motivacion                             Vision 
                              0.94                               0.91 
               HojaRuta_Estrategia        Silos_Politica_Colaboracion 
                              0.93                               0.95 
           Comunicacion_Conciencia                           Agilidad 
                              0.95                               0.95 
                  Apoyo_Financiero            Gestion_Datos_Seguridad 
                              0.91                               0.89 
           Integracion_Tecnologica                       Cultura_Clan 
                              0.90                               0.84 
                Cultura_Adhocracia                    Cultura_Mercado 
                              0.87                               0.89 
                Cultura_Jerarquica                Exploracion_Digital 
                              0.67                               0.93 
              Escenarios_Digitales                    Madurez_Digital 
                              0.92                               0.96 
             Busqueda_Asociaciones         Preparacion_Gestion_Cambio 
                              0.91                               0.94 
              Agilidad_Estrategica                Balance_Portafolios 
                              0.94                               0.93 
               Desarrollo_Producto          Colaboracion_Asociaciones 
                              0.95                               0.90 
 Implementacion_Iniciativas_Cambio    Reestructuracion_Organizacional 
                              0.90                               0.95 
            Mejora_Madurez_Digital   Gestion_Evolucion_Organizacional 
                              0.96                               0.93 
Colaboracion_Asociaciones_Continua     Mejora_Continua_Gestion_Cambio 
                              0.91                               0.94 

El análisis de adecuación muestral de Kaiser-Meyer-Olkin (KMO) muestra un valor general de 0.93, lo que indica una buena adecuación para el análisis factorial, ya que valores superiores a 0.90 sugieren que los datos son altamente apropiados para este tipo de análisis.

A nivel de cada variable, la mayoría presenta valores superiores a 0.90, lo que refuerza la idoneidad de las correlaciones para un análisis factorial. Sin embargo, la variable Cultura_Jerarquica presenta el valor más bajo (0.67), lo que indica que su relación con las demás variables es relativamente débil y podría afectar la estructura factorial.

Elección de número de factores

####### Scree plot
print(psych::scree(df_efa, pc = TRUE, fa = FALSE, hline = -1, 
             main = "Scree Plot"))

Scree of eigen values 
Call: NULL
Eigen values of Principal Components [1] 12.39  2.89  1.58  1.45  1.23  1.08  0.99  0.87  0.82  0.77  0.72  0.67
[13]  0.64  0.63  0.59  0.57  0.51  0.48  0.46  0.45  0.42  0.40  0.39  0.37
[25]  0.35  0.32  0.30  0.29  0.27  0.25  0.25  0.21  0.21  0.17
####### Parallel analysis
psych::fa.parallel(df_efa, fa = "pc", n.iter = 500, ylabel = "Eigenvalues")

Parallel analysis suggests that the number of factors =  NA  and the number of components =  4 
####### Network graph
EGAnet::EGA(matriz_correlacion_polychoric, n = 446 , plot.EGA = TRUE, 
            algorithm.args = list(steps = 10))

Model: GLASSO (EBIC with gamma = 0.5)
Correlations: auto
Lambda: 0.0769742787022737 (n = 100, ratio = 0.1)

Number of nodes: 34
Number of edges: 206
Edge density: 0.367

Non-zero edge weights: 
     M    SD    Min   Max
 0.061 0.097 -0.128 0.520

----

Algorithm:  Walktrap

Number of communities:  3

      Exito_Transformacion_Digital     Resistencia_Cambio_Tecnologico 
                                 1                                  2 
              Apoyo_Gestion_Cambio                          Liderazgo 
                                 2                                  2 
            Cultura_Organizacional           Habilidades_Conocimiento 
                                 2                                  2 
                        Motivacion                             Vision 
                                 2                                  2 
               HojaRuta_Estrategia        Silos_Politica_Colaboracion 
                                 2                                  2 
           Comunicacion_Conciencia                           Agilidad 
                                 2                                  2 
                  Apoyo_Financiero            Gestion_Datos_Seguridad 
                                 2                                  2 
           Integracion_Tecnologica                       Cultura_Clan 
                                 2                                  1 
                Cultura_Adhocracia                    Cultura_Mercado 
                                 1                                  1 
                Cultura_Jerarquica                Exploracion_Digital 
                                 1                                  3 
              Escenarios_Digitales                    Madurez_Digital 
                                 3                                  3 
             Busqueda_Asociaciones         Preparacion_Gestion_Cambio 
                                 3                                  1 
              Agilidad_Estrategica                Balance_Portafolios 
                                 3                                  3 
               Desarrollo_Producto          Colaboracion_Asociaciones 
                                 3                                  3 
 Implementacion_Iniciativas_Cambio    Reestructuracion_Organizacional 
                                 3                                  3 
            Mejora_Madurez_Digital   Gestion_Evolucion_Organizacional 
                                 3                                  3 
Colaboracion_Asociaciones_Continua     Mejora_Continua_Gestion_Cambio 
                                 3                                  3 

----

Unidimensional Method: Louvain
Unidimensional: No

----

TEFI: -32.975

Las anteriores gráficas sugieren que el número de factores está entre 2 y 4.

AL momento de implementar el EFA, se pudo notar que 2 factores no eran suficientes para recoger una buena cantidad de varianza acumulada y de igual manera se notó que no hubo mucha variación entre la var. acumulada entre 3 y 4 factores, entonces por el principio de la parcimonia se decidió tomar tres factores recogiendo un \(50\%\) aproximadamente de la varianza acumulada.

Rotación

Promax

# one_factor <- psych::fa(matriz_correlacion_polychoric, nfactors = 1,
#                   rotate = "promax", residuals = TRUE, SMC = TRUE,
#                   fm = "pa", n.obs = 446 )
# 
# print(one_factor, sort = TRUE, cut = 0, digits = 3)
# 
# ####### Modelo de 2 factores
# two_factors <- psych::fa(matriz_correlacion_polychoric, nfactors = 2,
#                  rotate = "promax", residuals = TRUE, SMC = TRUE,
#                  fm = "pa", n.obs = 446 )
# 
# print(two_factors, sort = TRUE, cut = 0, digits = 3)

####### Modelo de 3 factores
three_factors <- psych::fa(matriz_correlacion_polychoric, nfactors = 3,
                  rotate = "promax", residuals = TRUE, SMC = TRUE,
                  fm = "pa", n.obs = 446 )

print(three_factors, sort = TRUE, cut = 0, digits = 3)
Factor Analysis using method =  pa
Call: psych::fa(r = matriz_correlacion_polychoric, nfactors = 3, n.obs = 446, 
    rotate = "promax", residuals = TRUE, SMC = TRUE, fm = "pa")
Standardized loadings (pattern matrix) based upon correlation matrix
                                   item    PA1    PA2    PA3     h2    u2  com
Mejora_Madurez_Digital               31  0.809 -0.108  0.070 0.7119 0.288 1.05
Colaboracion_Asociaciones_Continua   33  0.771 -0.102  0.040 0.6634 0.337 1.04
Madurez_Digital                      22  0.760  0.103 -0.129 0.5950 0.405 1.10
Exploracion_Digital                  20  0.753  0.146 -0.154 0.5745 0.426 1.16
Colaboracion_Asociaciones            28  0.746 -0.081  0.078 0.5795 0.421 1.05
Mejora_Continua_Gestion_Cambio       34  0.736 -0.263  0.186 0.7006 0.299 1.39
Gestion_Evolucion_Organizacional     32  0.733 -0.122  0.059 0.6113 0.389 1.07
Balance_Portafolios                  26  0.716  0.005 -0.091 0.5745 0.425 1.03
Escenarios_Digitales                 21  0.715  0.034 -0.095 0.5527 0.447 1.04
Desarrollo_Producto                  27  0.683  0.089 -0.159 0.5182 0.482 1.14
Reestructuracion_Organizacional      30  0.676 -0.040  0.134 0.4212 0.579 1.09
Preparacion_Gestion_Cambio           24  0.671 -0.160  0.068 0.5508 0.449 1.13
Busqueda_Asociaciones                23  0.659  0.166 -0.232 0.4990 0.501 1.38
Agilidad_Estrategica                 25  0.642 -0.116 -0.056 0.5487 0.451 1.08
Implementacion_Iniciativas_Cambio    29  0.635 -0.195  0.190 0.4790 0.521 1.38
Exito_Transformacion_Digital          1  0.456 -0.176 -0.063 0.3663 0.634 1.34
Cultura_Mercado                      18  0.427  0.010 -0.066 0.2072 0.793 1.05
Cultura_Adhocracia                   17  0.387 -0.222  0.057 0.2683 0.732 1.65
Cultura_Clan                         16  0.326 -0.274  0.166 0.2239 0.776 2.47
Cultura_Jerarquica                   19  0.268  0.190 -0.070 0.0625 0.938 1.96
Silos_Politica_Colaboracion          10  0.006  0.760 -0.042 0.5495 0.450 1.01
Liderazgo                             4  0.029  0.759  0.085 0.6085 0.391 1.03
Vision                                8 -0.008  0.745  0.100 0.6310 0.369 1.04
Comunicacion_Conciencia              11  0.000  0.704  0.031 0.5140 0.486 1.00
Apoyo_Gestion_Cambio                  3 -0.088  0.635  0.059 0.5108 0.489 1.06
Motivacion                            7 -0.016  0.624  0.148 0.4981 0.502 1.11
Cultura_Organizacional                5 -0.031  0.597  0.175 0.4966 0.503 1.18
Agilidad                             12  0.017  0.534  0.316 0.5043 0.496 1.63
HojaRuta_Estrategia                   9 -0.137  0.512  0.241 0.5455 0.454 1.59
Resistencia_Cambio_Tecnologico        2  0.037  0.370  0.031 0.1322 0.868 1.03
Gestion_Datos_Seguridad              14  0.014  0.208  0.718 0.6664 0.334 1.17
Integracion_Tecnologica              15 -0.004  0.260  0.672 0.6606 0.339 1.29
Apoyo_Financiero                     13 -0.105  0.120  0.492 0.3736 0.626 1.21
Habilidades_Conocimiento              6  0.083  0.413  0.485 0.4979 0.502 2.02

                        PA1   PA2   PA3
SS loadings           8.903 5.588 2.406
Proportion Var        0.262 0.164 0.071
Cumulative Var        0.262 0.426 0.497
Proportion Explained  0.527 0.331 0.142
Cumulative Proportion 0.527 0.858 1.000

 With factor correlations of 
       PA1    PA2    PA3
PA1  1.000 -0.556 -0.445
PA2 -0.556  1.000  0.398
PA3 -0.445  0.398  1.000

Mean item complexity =  1.3
Test of the hypothesis that 3 factors are sufficient.

df null model =  561  with the objective function =  23.493 with Chi Square =  10168.4
df of  the model are 462  and the objective function was  5.316 

The root mean square of the residuals (RMSR) is  0.05 
The df corrected root mean square of the residuals is  0.055 

The harmonic n.obs is  446 with the empirical chi square  1235.891  with prob <  7.24e-72 
The total n.obs was  446  with Likelihood Chi Square =  2290.475  with prob <  2.42e-239 

Tucker Lewis Index of factoring reliability =  0.7678
RMSEA index =  0.0942  and the 90 % confidence intervals are  0.0905 0.0982
BIC =  -527.873
Fit based upon off diagonal values = 0.984
Measures of factor score adequacy             
                                                    PA1   PA2   PA3
Correlation of (regression) scores with factors   0.976 0.955 0.910
Multiple R square of scores with factors          0.954 0.912 0.828
Minimum correlation of possible factor scores     0.907 0.824 0.657

Diagrama de factores

library(pheatmap)

# Extraer la matriz de cargas factoriales
factor_loadings <- three_factors$loadings

# Convertir a matriz numérica
factor_matrix <- as.matrix(factor_loadings)

# View(data.frame(factor_loadings))

# Crear el heatmap
pheatmap(factor_matrix, 
         color = colorRampPalette(c("blue", "white", "red"))(100),
         display_numbers = TRUE, 
         number_format = "%.2f", 
         number_color = "white")

del anterior gráfico se pudo identificar las correlaciones entre variablesy factores por lo que se agregaron nombres representativos según el conjunto de variables las cuales estan correlacionadas a este, en la siguente tabla se muestran los tres nombres de los facotores con sus variables correspondientes:

# Extraer las puntuaciones factoriales
factor_scores <- factor.scores(df_efa, three_factors)$scores

colnames(factor_scores) <- c("Estrategia_Gestion_Innovacion", 
                             "Cultura_Organizacional_Liderazgo", 
                             "Infraestructura_Capacidades_Tecnologicas")

df_Md_efa <- cbind(df_Md, factor_scores)

# View(df_Md_efa)
library(knitr)
library(kableExtra)

# Crear una tabla con los factores y sus variables
factores <- data.frame(
  Factor = c(
    "Estrategia y Gestión de la Innovación",
    "Estrategia y Gestión de la Innovación",
    "Estrategia y Gestión de la Innovación",
    "Estrategia y Gestión de la Innovación",
    "Estrategia y Gestión de la Innovación",
    "Estrategia y Gestión de la Innovación",
    "Estrategia y Gestión de la Innovación",
    "Estrategia y Gestión de la Innovación",
    "Cultura Organizacional y Liderazgo",
    "Cultura Organizacional y Liderazgo",
    "Cultura Organizacional y Liderazgo",
    "Cultura Organizacional y Liderazgo",
    "Cultura Organizacional y Liderazgo",
    "Cultura Organizacional y Liderazgo",
    "Cultura Organizacional y Liderazgo",
    "Infraestructura y Capacidades Tecnológicas",
    "Infraestructura y Capacidades Tecnológicas",
    "Infraestructura y Capacidades Tecnológicas",
    "Infraestructura y Capacidades Tecnológicas"
  ),
  Variable = c(
    "Madurez Digital", "Exploración Digital", "Escenarios Digitales",
    "Búsqueda de Asociaciones", "Preparación para la Gestión del Cambio",
    "Colaboración en Asociaciones", "Implementación de Iniciativas de Cambio",
    "Mejora y Evolución Organizacional", "Liderazgo",
    "Silos, Política y Colaboración", "Comunicación y Conciencia",
    "Cultura Organizacional", "Apoyo a la Gestión del Cambio",
    "Motivación", "Agilidad", "Gestión de Datos y Seguridad",
    "Integración Tecnológica", "Habilidades y Conocimiento", "Apoyo Financiero"
  ),
  Carga_Factorial = c(
    0.788, 0.758, 0.738, 0.673, 0.661, 0.738, 0.686, 0.719,
    0.762, 0.785, 0.743, 0.572, 0.635, 0.639, 0.502,
    0.729, 0.662, 0.513, 0.484
  )
)

# Generar la tabla en RMarkdown
kable(factores, format = "html", caption = "Cargas factoriales por factor") %>%
  kable_styling(full_width = FALSE, bootstrap_options = c("striped", "hover"))
Cargas factoriales por factor
Factor Variable Carga_Factorial
Estrategia y Gestión de la Innovación Madurez Digital 0.788
Estrategia y Gestión de la Innovación Exploración Digital 0.758
Estrategia y Gestión de la Innovación Escenarios Digitales 0.738
Estrategia y Gestión de la Innovación Búsqueda de Asociaciones 0.673
Estrategia y Gestión de la Innovación Preparación para la Gestión del Cambio 0.661
Estrategia y Gestión de la Innovación Colaboración en Asociaciones 0.738
Estrategia y Gestión de la Innovación Implementación de Iniciativas de Cambio 0.686
Estrategia y Gestión de la Innovación Mejora y Evolución Organizacional 0.719
Cultura Organizacional y Liderazgo Liderazgo 0.762
Cultura Organizacional y Liderazgo Silos, Política y Colaboración 0.785
Cultura Organizacional y Liderazgo Comunicación y Conciencia 0.743
Cultura Organizacional y Liderazgo Cultura Organizacional 0.572
Cultura Organizacional y Liderazgo Apoyo a la Gestión del Cambio 0.635
Cultura Organizacional y Liderazgo Motivación 0.639
Cultura Organizacional y Liderazgo Agilidad 0.502
Infraestructura y Capacidades Tecnológicas Gestión de Datos y Seguridad 0.729
Infraestructura y Capacidades Tecnológicas Integración Tecnológica 0.662
Infraestructura y Capacidades Tecnológicas Habilidades y Conocimiento 0.513
Infraestructura y Capacidades Tecnológicas Apoyo Financiero 0.484

En las siguientes gráficas se podrá apreciar a los individuos en función de los factores subyasentes encontrados.

Nota: Estos graficos son interacitivos, es decir, mediante el cursor y el scroll del mouse es posible navegar mediante la nube de puntos, y por medio de la leyenda uno puede desactivar los individuos relacionados a esas cotegorías.

Gráfico por sector

# Definir los rangos de los ejes
x_range <- c(sort(df_Md_efa$Estrategia_Gestion_Innovacion)[1], sort(df_Md_efa$Estrategia_Gestion_Innovacion)[length(sort(df_Md_efa$Estrategia_Gestion_Innovacion))])  # Ajusta según el rango de tus datos
y_range <- c(sort(df_Md_efa$Cultura_Organizacional_Liderazgo)[1], sort(df_Md_efa$Cultura_Organizacional_Liderazgo)[length(sort(df_Md_efa$Cultura_Organizacional_Liderazgo))])


z_range <- c(sort(df_Md_efa$Infraestructura_Capacidades_Tecnologicas)[1], sort(df_Md_efa$Infraestructura_Capacidades_Tecnologicas)[length(sort(df_Md_efa$Infraestructura_Capacidades_Tecnologicas))])

# Crear un gráfico vacío y agregar los ejes
fig <- plot_ly() %>%
  
  # Eje X (horizontal en Y=0, Z=0)
  add_trace(x = x_range, 
            y = c(0, 0), 
            z = c(0, 0), 
            type = "scatter3d", mode = "lines",
            line = list(color = "black", width = 4), 
            name = "Estrategia_Gestion_Innovacion") %>%

  # Eje Y (horizontal en X=0, Z=0)
  add_trace(x = c(0, 0), 
            y = y_range, 
            z = c(0, 0), 
            type = "scatter3d", mode = "lines",
            line = list(color = "darkblue", width = 4), 
            name = "Cultura_Organizacional_Liderazgo") %>%

  # Eje Z (vertical en X=0, Y=0)
  add_trace(x = c(0, 0), 
            y = c(0, 0), 
            z = z_range, 
            type = "scatter3d", mode = "lines",
            line = list(color = "darkred", width = 4), 
            name = "Infraestructura_Capacidades_Tecnologicas") %>%

  # Configurar diseño para ocultar cuadrícula y ejes adicionales
  layout(scene = list(
    xaxis = list(title = "Estrategia_Gestion_Innovacion", showgrid = T, zeroline = FALSE),
    yaxis = list(title = "Cultura_Organizacional_Liderazgo", showgrid = T, zeroline = FALSE),
    zaxis = list(title = "Infraestructura_Capacidades_Tecnologicas", showgrid = T, zeroline = FALSE),
    showlegend = FALSE  # Ocultar leyenda si no se desea
  ))
# Crear el gráfico con los datos
fig_datos <- plot_ly(df_Md_efa, 
               x = ~Estrategia_Gestion_Innovacion, 
               y = ~Cultura_Organizacional_Liderazgo, 
               z = ~Infraestructura_Capacidades_Tecnologicas, 
               type = "scatter3d", 
               mode = "markers",
               color = ~sector,  # Variable categórica para el color
               colors = c("red", "blue", "green"), # Especificar colores
               marker = list(size = 5))

# Superponer los datos sobre los ejes
fig_final <- subplot(fig, fig_datos) 

# Mostrar el gráfico combinado
fig_final

Gráfico número de empleados

colnames(df_Md_efa)[4] <- "Pais_organizacion"
# Crear el gráfico con los datos
fig_datos <- plot_ly(df_Md_efa,
               x = ~Estrategia_Gestion_Innovacion,
               y = ~Cultura_Organizacional_Liderazgo,
               z = ~Infraestructura_Capacidades_Tecnologicas,
               type = "scatter3d",
               mode = "markers",
               color = ~Numero_Empleados,  # Variable categórica para el color
               colors = c("red", "blue", "green"), # Especificar colores
               marker = list(size = 5),

               # Agregar información adicional en el tooltip
               text = ~paste("Sector: ", sector))  # Solo mostrar la información del `text`

# Superponer los datos sobre los ejes
fig_final <- subplot(fig, fig_datos)

# Mostrar el gráfico combinado
fig_final

Gráfico por Paises

colnames(df_Md_efa)[4] <- "Pais_organizacion"
# Crear el gráfico con los datos
fig_datos <- plot_ly(df_Md_efa, 
               x = ~Estrategia_Gestion_Innovacion, 
               y = ~Cultura_Organizacional_Liderazgo, 
               z = ~Infraestructura_Capacidades_Tecnologicas, 
               type = "scatter3d", 
               mode = "markers",
               color = ~Pais_organizacion,  # Variable categórica para el color
               colors = c("red", "blue", "green"), # Especificar colores
               marker = list(size = 5),
               
               # Agregar información adicional en el tooltip
               text = ~paste("Sector: ", sector))  # Solo mostrar la información del `text`

# Superponer los datos sobre los ejes
fig_final <- subplot(fig, fig_datos) 

# Mostrar el gráfico combinado
fig_final

En los gráficos anteriores se observa una tendencia lineal en relación con el marco de Transformación Digital (TD) aplicado. Al analizar los datos por país, se evidencia que, a medida que las organizaciones avanzan en estrategias de gestión e innovación, se produce una disminución en la evolución de la cultura organizacional y en la infraestructura y capacidades tecnológicas de las empresas.

Esta situación puede deberse a que, durante la planificación de estrategias de innovación y cambio, no se consideran adecuadamente la cultura organizacional ni las infraestructuras y tecnologías existentes en la empresa. Al ignorar estos factores, se pueden generar resistencias al cambio, ya que las estrategias propuestas por los líderes transformacionales no se alinean con la realidad cultural y tecnológica de la organización.

La importancia de la cultura organizacional en la implementación efectiva de estrategias de innovación ha sido ampliamente documentada. Por ejemplo, Cameron y Quinn (1999) desarrollaron el Competing Values Framework Cameron & Quinn (1999), que identifica cuatro tipos de culturas organizacionales: de clan, adhocracia, de mercado y jerárquica. Cada una de estas culturas influye de manera diferente en la capacidad de una organización para innovar y adaptarse al cambio. En particular, las culturas de adhocracia, que se centran en la flexibilidad y la discreción con un enfoque externo, están más asociadas con la innovación y la creatividad, mientras que las culturas jerárquicas, que enfatizan la estabilidad y el control con un enfoque interno, pueden resistirse más al cambio y, por lo tanto, inhibir la innovación.

Análisis inferencial

Normalidad

test_normalidad_variables_numericas <- function(datos) {
  # Obtén las columnas numéricas del conjunto de datos
  columnas_numericas <- datos[sapply(datos, is.numeric)]

  # Función para realizar el test de Shapiro-Wilk
  aplicar_test_shapiro <- function(columna) {
    resultado_test <- shapiro.test(columna)
    return(resultado_test$p.value)
  }

  # Aplica la función a cada columna numérica utilizando sapply
  p_values <- sapply(columnas_numericas, aplicar_test_shapiro)

  # Combina los resultados en un data frame
  resultados <- data.frame(
    Variable = names(p_values),
    P_Value = p_values,
    Normalidad = ifelse(p_values > 0.05, "Normal", "No normal")
  )

  return(resultados)
}

# Utiliza la función con el conjunto de datos iris
resultados_normalidad_ES <- test_normalidad_variables_numericas(df_es[, c(2:dim(df_es)[2])])

resultados_normalidad_MD <- test_normalidad_variables_numericas(df_md[, c(5:33, 35:dim(df_md)[2])])

# diagnose(df_md[, c(5:33, 35:dim(df_md)[2])])
#print(resultados_normalidad)
datatable(resultados_normalidad_ES, 
          options = list(pageLength = 127,
                         scrollY = '300px', 
                         scrollCollapse = TRUE))
datatable(resultados_normalidad_MD, options = list(scrollY = '300px', scrollCollapse = TRUE))

Dado que las variables no siguen un distribución normal procedemos a usar pruebas no paramétricas.

Sector

Exito transformación Digital

\[ \begin{cases} H_0:\text{El exito TD es el mismo en los tres sectores} \\ H_a:\text{El extito TD es diferente en al menos un sector} \end{cases} \]

kruskal.test(sector~Exito_Transformacion_Digital, data = df_Md)

    Kruskal-Wallis rank sum test

data:  sector by Exito_Transformacion_Digital
Kruskal-Wallis chi-squared = 12.288, df = 4, p-value = 0.01533

Dado que el \(p-value = 0.01753\) el cual es menor al umbral típico del \(5\%\), hay suficiente evidencia estadística para rechazar la hipotesis nula i.e. hay una diferencia significativa en el exito de transformación digital entre sectores financieros entre los 51 países presentes.

dunnTest(Exito_Transformacion_Digital ~ sector, data = df_Md, method = "holm")
            Comparison          Z    P.unadj      P.adj
1  Primary - Secondary -0.4205131 0.67411065 0.67411065
2   Primary - Tertiary -2.0022755 0.04525511 0.09051023
3 Secondary - Tertiary -2.2026973 0.02761609 0.08284827

A pesar de identificar diferencias globales significativas por medio de \(\text{Kruskal-Wallis}\), por medio de la prueba post-hoc con ajuste múltiple no pudo señalar específicamente qué grupos difieren entre sí.

Resistencia al cambio

\[ \begin{cases} H_0:\text{La resistencia al cambio es la misma en los tres sectores} \\ H_a:\text{La resistencia al cambio es diferente en al meno un sector} \end{cases} \]

kruskal.test(sector~Resistencia_Cambio_Tecnologico, data = df_Md)

    Kruskal-Wallis rank sum test

data:  sector by Resistencia_Cambio_Tecnologico
Kruskal-Wallis chi-squared = 15.788, df = 4, p-value = 0.003317
dunnTest(Resistencia_Cambio_Tecnologico ~ sector, data = df_Md, method = "holm")
            Comparison          Z     P.unadj       P.adj
1  Primary - Secondary -0.3801719 0.703817783 0.703817783
2   Primary - Tertiary  1.6277836 0.103570786 0.207141572
3 Secondary - Tertiary  3.0174983 0.002548705 0.007646114

El análisis mediante Kruskal-Wallis ha identificado que existen diferencias significativas en la resistencia al cambio tecnológico entre los sectores (p = 0.0027). Sin embargo, solo la comparación entre los sectores “Secondary” y “Tertiary” muestra una diferencia estadísticamente significativa.

Esto sugiere que el sector terciario difiere significativamente del sector secundario en términos de resistencia al cambio tecnológico, mientras que el sector primario no muestra diferencias claras con los demás. Estos hallazgos pueden ser relevantes para diseñar estrategias de cambio organizacional enfocadas en los sectores con mayor resistencia identificada.

Análisis en conjunto

Desafíos

distancias <- vegdist(df_Md[,7:19], method = "bray")

Prueba de homogeneidad

dispersiones <- betadisper(distancias, df_Md$sector)
anova(dispersiones)
Analysis of Variance Table
  Df Sum Sq Mean Sq F value Pr(>F)
Groups 2 0.02703 0.01352 2.332 0.09833
Residuals 443 2.568 0.005796 NA NA

Un valor Pr(>F) mayor a 0.05 indica homogeneidad de dispersiones cumplida, permitiendo una interpretación más confiable del PERMANOVA

Permanova

resultado_perm <- adonis2(distancias ~ sector, data = df_Md[,c(1,7:19)], permutations = 999)
resultado_perm
Permutation test for adonis under reduced model
  Df SumOfSqs R2 F Pr(>F)
Model 2 0.1537 0.01323 2.97 0.017
Residual 443 11.47 0.9868 NA NA
Total 445 11.62 1 NA NA

post hoc permanova

# install.packages("devtools")
devtools::install_github("pmartinezarbizu/pairwiseAdonis/pairwiseAdonis")
# Post hoc con pairwiseAdonis
resultado_posthoc <- pairwise.adonis(df_Md[,7:19], df_Md$sector, p.adjust.m = "holm")
resultado_posthoc$p.adjusted
[1] 0.015 0.290 0.290

Cultura

distancias_C <- vegdist(df_Md[,20:23], method = "bray")

Permanova

resultado_perm_C <- adonis2(distancias_C ~ sector, data = df_Md[,c(1, 20:23)], permutations = 999)
resultado_perm_C
Permutation test for adonis under reduced model
  Df SumOfSqs R2 F Pr(>F)
Model 2 0.1901 0.01389 3.121 0.007
Residual 443 13.49 0.9861 NA NA
Total 445 13.68 1 NA NA
resultado_posthoc_C <- pairwise.adonis(df_Md[,20:23], df_Md$sector, p.adjust.m = "holm")
resultado_posthoc_C$p.adjusted
[1] 0.064 0.069 0.033
resultado_posthoc_C
Table continues below
pairs Df SumsOfSqs F.Model R2 p.value
Tertiary vs Secondary 1 0.09919 3.309 0.007781 0.032
Tertiary vs Primary 1 0.08212 2.636 0.006647 0.069
Secondary vs Primary 1 0.1415 4.818 0.06439 0.011
p.adjusted sig
0.064
0.069
0.033 .

País

Transformación digital

\[ \begin{cases} H_0:\text{El exito TD es el mismo en los países presentes} \\ H_a:\text{El extito TD es diferente en al menos en un país} \end{cases} \]

kruskal.test(as.factor(Pais_organizacion)~Exito_Transformacion_Digital, data = df_Md)

    Kruskal-Wallis rank sum test

data:  as.factor(Pais_organizacion) by Exito_Transformacion_Digital
Kruskal-Wallis chi-squared = 8.5793, df = 4, p-value = 0.07252

Resistencia al cambio

kruskal.test(Pais_organizacion~Resistencia_Cambio_Tecnologico, data = df_Md)

    Kruskal-Wallis rank sum test

data:  Pais_organizacion by Resistencia_Cambio_Tecnologico
Kruskal-Wallis chi-squared = 4.1916, df = 4, p-value = 0.3807

Conclusión

El análisis del conjunto de datos de encuestas sobre capacidades dinámicas para la transformación digital ha revelado que el éxito de este proceso en las organizaciones depende de tres factores fundamentales: la estrategia y gestión de la innovación, la cultura organizacional y el liderazgo, y la infraestructura y capacidades tecnológicas. Se observó que muchas empresas que avanzan en la planificación estratégica y la gestión de la innovación tienden a descuidar la evolución de su cultura organizacional y el desarrollo de su infraestructura tecnológica, lo que puede generar resistencia al cambio y afectar la implementación efectiva de nuevas iniciativas digitales.

Además, el estudio mostró que existen diferencias significativas en la adopción de la transformación digital entre sectores económicos y países. En particular, el sector terciario presentó una resistencia al cambio mayor en comparación con el sector secundario, lo que sugiere que distintos sectores enfrentan desafíos específicos en su proceso de adaptación a nuevas tecnologías y modelos de negocio digitales. Estos hallazgos resaltan la importancia de considerar el contexto organizacional y cultural al momento de diseñar estrategias de transformación digital, ya que la falta de alineación entre estos factores puede dificultar el éxito de las iniciativas de cambio.

En conclusión, la transformación digital no debe abordarse únicamente desde una perspectiva tecnológica, sino como un proceso integral que requiere la adaptación de la cultura organizacional, el liderazgo y la infraestructura tecnológica. La clave para una transición exitosa radica en lograr un equilibrio entre la exploración de oportunidades digitales, la toma de decisiones estratégicas y la capacidad de adaptación organizacional. Solo así las empresas podrán desarrollar capacidades dinámicas que les permitan innovar de manera sostenible y mantener su competitividad en un entorno digital en constante evolución.

Referencias

Cameron, K. S., & Quinn, R. E. (1999). Diagnosing and changing organizational culture: Based on the competing values framework. Addison-Wesley.
Oosthuizen, C., & Grobbelaar, S. (2024). Survey dataset of Dynamic Capabilities for leading and managing Digital Transformation initiatives. Mendeley Data. https://doi.org/10.17632/76Z794CXDG.1