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:
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.
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.
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))
# 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)
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
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")
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)"
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
[1] 40
# 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"
)
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)
}))
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])]
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")
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")
Cantidad por sector
Primary Secondary Tertiary
22 50 374
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
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.
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
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"))
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.
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))
Dado que las variables no siguen un distribución normal procedemos a usar pruebas no paramétricas.
\[ \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-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.
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í.
\[ \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-Wallis rank sum test
data: sector by Resistencia_Cambio_Tecnologico
Kruskal-Wallis chi-squared = 15.788, df = 4, p-value = 0.003317
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.
Prueba de homogeneidad
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
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
Permanova
resultado_perm_C <- adonis2(distancias_C ~ sector, data = df_Md[,c(1, 20:23)], permutations = 999)
resultado_perm_C
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
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 | . |
\[ \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-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
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.