Análisis exploratorio multivariado

Author

Sebastian Varela

Published

June 20, 2024

Intro

Se continua el trabajo bibliométrico realizado en 2023, enviado a publicación, con el siguiente abstract:

This article offers a comprehensive examination of perspectives on university-industry interactions in Latin America. Distinguishing itself from international reviews, the study employs a systematic review of 274 articles across Scopus, Scielo, and Dialnet databases. The research addresses the temporal evolution, disciplinary fields, conceptual approaches, methods, and prevailing topics in the region. Findings reveal a focus on management, economics, business, social sciences, and engineering disciplines. Qualitative methods dominate, while theoretical-conceptual approaches encompass meso-institutional and micro-interactional levels. Key research themes include collaboration results, knowledge transfer, innovation, technological transfer, and collaboration barriers.

En la presente notebook se avanza en el análisis exploratorio de relaciones bivariadas.

EDA inicial con Data Explorer

library(tidyverse)
library(DataExplorer)
library(lares)
library(DT)
# Configurar scipen para evitar notación científica
options(scipen = 999)

Importación de archivo:

Sebastián

datos <- readr::read_rds("dataset_versino_2024.rds")

Selección de las variables de interés:

  • Campo disciplinar
  • Método usado
  • Estudio de caso (sí-no)
  • Conceptual Approaches
  • Specific Theoretical Perspective (esta es múltiple)
  • Main Research Topics (multiple)
  • Año de publicación: esta es una variable temporal, y hay que ver luego como relacionarla con las demás
  • Source
datos1 <- datos %>% 
  select(Campo, Metodo, Estudio_caso, Perspectiva_gral, triple_hélice: ed_superior_final, motivacion: Otros., `Publication Year`, Source) %>% 
  mutate(antiguedad =  2023 - `Publication Year`) %>% 
  select(- `Publication Year`) 

datos1 <- datos1 %>% 
  rename(Base = Source)

datos1 <- datos1 %>%
mutate(Base = fct_recode(Base,
"Latina" = "latino"
)) 

Analisis bivariado

Se usa DataExplorer:

Estas distribuciones univariadas ya las conocemos:

datos1 %>% 
  select(Campo, Metodo, Estudio_caso, Perspectiva_gral, Base ) %>% 
  plot_bar(title = "Gráficos de barras de variables categóricas", ggtheme = theme_light(), nrow = 4L,ncol = 2L)

Variable numérica:

plot_histogram(datos1)

Supongamos que una variable dependiente de interés es Conceptual Approaches:

plot_boxplot(datos1, by = "Perspectiva_gral")

Vemos por ejemplo que la perspectica interaccional tiene artículos en promedio más antiguos.

plot_bar(datos1, by = "Perspectiva_gral", ggtheme = theme_light(), nrow = 4L,ncol = 2L)

Mucho se puede decir respecto de lo de arriba. Quizás tengamos que hacer un brainstorming the preguntas. Por ejemplo, qué características tienen los artículos hechos desde una perspectiva micro interaccional? son predominantemente de bases latinas, de ciencias sociales, de método cualitativo o mixto, tienden a ser estudios de casos o investigación acción, con las siguientes perspectivas teóricas dominantes: tería de redes y Otras teorías. Sus tópico dominante es Extensión. Así, ya vemos que un artículo puede consistir en una comparación entre los artículos según su perspectiva teórica general. Y si a eso le agregamos un poco de text mining sobre los abstracts. Ya con una feta de estos datos hay un artículo.

Análisis de correlaciones:

datos1 <- datos1 %>%
  mutate_if(is.character, ~ as.factor(.))

Funciona para variables categóricas

datos1 %>% 
select(Campo, Metodo, Estudio_caso, Perspectiva_gral, Base) %>% 
plot_correlation(title = "Matriz de correlaciones", ggtheme = theme_light())

hay que dumificar las múltiples.

#Dumificar las variables categóricas.
 dumificada <- dummify(datos1)
plot_correlation(na.omit(dumificada, title = "Matriz de correlaciones", ggtheme = theme_light()))

Explotó en el gráfico de arriba por la dimensionalidad… el problema aquí como observar las relaciones entre un número grande de variables (26 variables)

Probemos ranking de correlaciones. Cuáles son las correlaciones más fuertes?, en este caso las correlaciones azules son positivas (R de Pearson). ¿Cómo se interpreta el NA (dato no disponible)? por ejemplo “canales_NA” se interpreta como “cuando el main research topic no es canales”.

Antes hay que crear variables numéricas ficticias a partir de variables categóricas, lo cual lleva el número de variables a 56!

Ahora sin las vriables NA:

dumificada_filtro <- dumificada %>% 
  select(-ends_with("_NA"))

Análisis de componentes principales

Renombrar las variables

A fin de que puedan ser un poco más inteligibles en el plano factorial:

  • a = antigüedad
  • b = Campo_Administración..Economía..Negocios
  • c = Campo_Ciencias.Sociales
  • d = Campo_Ingeniería
  • e = Metodo_Cualitativo
  • f = Metodo_Cuantitativo
  • g = Metodo_Mixta
  • h = Estudio_caso_No
  • i = Estudio_caso_Sí
  • j = Perspectiva_gral_meso.institucional
  • k = Perspectiva_gral_micro.interaccional
  • l = triple_hélice_Triple.Hélice
  • m = triáng_Sábato_Triáng.Sábato
  • n = SNI_SRI_SSI_SNI.SRI.SSI
  • o = teoría_redes_Teoría.de.Redes
  • p = otras_Otras.teorías
  • q = modo2_Modo.2
  • r = no_tiene_No.tiene
  • s = cs_políticas_Política.y.gestión
  • t = ed_superior_final_Ed..superior
  • u = motivacion_Motivación
  • v = canales_Canales
  • w = barreras_Barreras
  • x = actividades_Actividades
  • y = resultados_Resultados
  • z = transferencia_Transferencia
  • aa = absorcion_Capac..absorción
  • ab = universidad_e_Univ..emprendedora
  • ac = innovacion_Innovación
  • ad = extension_Extensión
  • ae = politicas_Política.y.gestión
  • af = Otros._Otros.temas
  • ag = Base_Latina
  • ah = Base_Scopus
dumificada_filtro_1 <- dumificada_filtro %>%
  rename(
    a = antiguedad,
    b = Campo_Administración..Economía..Negocios,
    c = Campo_Ciencias.Sociales,
    d = Campo_Ingeniería,
    e = Metodo_Cualitativo,
    f = Metodo_Cuantitativo,
    g = Metodo_Mixta,
    h = Estudio_caso_No,
    i = Estudio_caso_Sí,
    j = Perspectiva_gral_meso.institucional,
    k = Perspectiva_gral_micro.interaccional,
    l = triple_hélice_Triple.Hélice,
    m = triáng_Sábato_Triáng.Sábato,
    n = SNI_SRI_SSI_SNI.SRI.SSI,
    o = teoría_redes_Teoría.de.Redes,
    p = otras_Otras.teorías,
    q = modo2_Modo.2,
    r = no_tiene_No.tiene,
    s = cs_políticas_Política.y.gestión,
    t = ed_superior_final_Ed..superior,
    u = motivacion_Motivación,
    v = canales_Canales,
    w = barreras_Barreras,
    x = actividades_Actividades,
    y = resultados_Resultados,
    z = transferencia_Transferencia,
    aa = absorcion_Capac..absorción,
    ab = universidad_e_Univ..emprendedora,
    ac = innovacion_Innovación,
    ad = extension_Extensión,
    ae = politicas_Política.y.gestión,
    af = Otros._Otros.temas,
    ag = Base_Latina,
    ah = Base_Scopus
  )
names(dumificada_filtro_1)
library("factoextra")
res.pca <- prcomp(dumificada_filtro_1, scale = TRUE)

Visualizar eigenvalues (scree plot):

fviz_eig(res.pca)

fviz_pca_var(res.pca,
             repel = TRUE     
             )

Idem anterior pero el color indica cuales son las variables más relevantes para la solución hallada (aparecen en color rojo). El algortimo no encuentra patrones fuertes.

fviz_pca_var(res.pca,
             col.var = "contrib", # Color by contributions to the PC
             gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"),
             repel = TRUE     # Avoid text overlapping
             )

Podemos interpretar esto viendo qué variables forman clusters, porque están asociadas fuertemente.

  • En el cuadrante superior derecho: v (canales), w (barreras), x (actividades), u (motivación), ab (universidad emprendedora), i (case study)
  • En el cuadrante superior izquierdo: ah (base Scopus), j (perspectiva meso-institucional), b (campo administración/economía, negocios), ac (innovación), (ae) Política y gestión, i (triple hélice)
  • En el cuadrante inferior izquierdo: h (no es estudio de caso), f (el método es cuantitativo), aa (capacidad de absorción)
  • En el cuadrante inferior derecho: k (perspectiva micro interaccional), ag (bases regionales o latinas), c (Ciencias Sociales), ad (extensión), af (Otros temas), (a) trabajos más antiguos.

¿Podemos ponerles nombres a estos cuatro cuadrantes?

Estos resultados han de ser compatibles con lo hallado en el gráfico de barras con todas las Ranked-Cross-Correlations de más arriba. La diferencia es qua acá las relaciones son multivariadas en vez de bivariadas.

Una reducción mayor es pasar de esos cuatro cuadrantes a dos dimensiones, la dimensión 1 horizontal, y la dimensión 2 vertical. Esta es la máxima compresión posible de la información.

#Contribución de las variables a los factores
# Results for Variables
res.var <- get_pca_var(res.pca)
  • Cargas (Loadings): Las cargas son los coeficientes de las variables originales en la combinación lineal que forma los componentes principales. Indican la dirección y la fuerza de la relación entre las variables originales y los componentes principales. Los valores de las cargas pueden ser positivos o negativos, lo que refleja la dirección de la relación.
# Extraer las contribuciones y las cargas
contribuciones <- as.data.frame(res.var$contrib)
cargas <- as.data.frame(res.var$coord)

# Añadir nombres de las variables
contribuciones$Variable <- rownames(contribuciones)
cargas$Variable <- rownames(cargas)

# Multiplicar las contribuciones por los signos de las cargas para preservar el signo
contribuciones_signed <- contribuciones %>%
  mutate(Dim.1 = Dim.1 * sign(cargas$Dim.1),
         Dim.2 = Dim.2 * sign(cargas$Dim.2))

# Seleccionar y ordenar por la contribución en Dim.1
contribuciones_signed <- contribuciones_signed %>% 
  select(Variable, Dim.1, Dim.2) %>% 
  arrange(-abs(Dim.1))

Creamos otra variable con los nombres, para facilitar su interpretación:

contribuciones_signed <- contribuciones_signed %>%
  mutate(Original = case_when(
    Variable == "a" ~ "antiguedad",
    Variable == "b" ~ "Campo_Administración..Economía..Negocios",
    Variable == "c" ~ "Campo_Ciencias.Sociales",
    Variable == "d" ~ "Campo_Ingeniería",
    Variable == "e" ~ "Metodo_Cualitativo",
    Variable == "f" ~ "Metodo_Cuantitativo",
    Variable == "g" ~ "Metodo_Mixta",
    Variable == "h" ~ "Estudio_caso_No",
    Variable == "i" ~ "Estudio_caso_Sí",
    Variable == "j" ~ "Perspectiva_gral_meso.institucional",
    Variable == "k" ~ "Perspectiva_gral_micro.interaccional",
    Variable == "l" ~ "triple_hélice_Triple.Hélice",
    Variable == "m" ~ "triáng_Sábato_Triáng.Sábato",
    Variable == "n" ~ "SNI_SRI_SSI_SNI.SRI.SSI",
    Variable == "o" ~ "teoría_redes_Teoría.de.Redes",
    Variable == "p" ~ "otras_Otras.teorías",
    Variable == "q" ~ "modo2_Modo.2",
    Variable == "r" ~ "no_tiene_No.tiene",
    Variable == "s" ~ "cs_políticas_Política.y.gestión",
    Variable == "t" ~ "ed_superior_final_Ed..superior",
    Variable == "u" ~ "motivacion_Motivación",
    Variable == "v" ~ "canales_Canales",
    Variable == "w" ~ "barreras_Barreras",
    Variable == "x" ~ "actividades_Actividades",
    Variable == "y" ~ "resultados_Resultados",
    Variable == "z" ~ "transferencia_Transferencia",
    Variable == "aa" ~ "absorcion_Capac..absorción",
    Variable == "ab" ~ "universidad_e_Univ..emprendedora",
    Variable == "ac" ~ "innovacion_Innovación",
    Variable == "ad" ~ "extension_Extensión",
    Variable == "ae" ~ "politicas_Política.y.gestión",
    Variable == "af" ~ "Otros._Otros.temas",
    Variable == "ag" ~ "Base_Latina",
    Variable == "ah" ~ "Base_Scopus",
    TRUE ~ NA_character_ # Manejo de valores no coincidentes
  ))

contribuciones_signed <- contribuciones_signed %>%
  select(Variable, Original, Dim.1, Dim.2)
# Mostrar el resultado
datatable(contribuciones_signed)

La dimensión o componente 1 es la dimensión horizontal del gráfico de arriba, la dimensión o componente 2 es la vertical. Esta tabla interactiva ayuda mucho a la interpretación del gráfico de componentes principales.

Entonces, al eje (o dimensión o componente) 1 hay que ponerle un nombre. Este eje opone a las siguientes categorías:

En un rincón En el otro rincón
Método cuantitativo Perspectiva micro-interaccional
Perspectiva meso-institucional Campo: Ciencias Sociales
Campo: Administración/Economía/Negocios Método cualitativo
Trabajos publicados en Scopus Trabajos publicados en bases regionales
Trabajos que NO son Case Studies Trabajos que SI son Case Studies

Nótese que el cuadro de arriba indica una dimensión disciplinar/metodológica, ya que método, perspectiva y campo son las variables más relevantes. Perspectivo y estudio de caso (sí no) parecen apuntar a lo mismo: la perspectiva micro-interaccional casi que implica el estudio de casos.

También, al eje (o dimensión o componente) 2 hay que ponerle un nombre. Este eje opone a las siguientes categorías.

En un rincón En el otro rincón
Trabajos que NO son Case Studies Trabajos que SI son Case Studies
Trabajos publicados bases regionales Aparecen tópicos claros*

*Los tópicos que aparecen son: canales, barreras, actividades y motivación.

En síntesis, de acá salen tres artículos

  • Caracterización de los trabajos desde las perspectivas teóricas micro interaccional vs meso institucional.

  • Caracterización de los trabajos en bases latinas vs en Scopus.

  • Artículo integrador con este análisis multivariado de arriba.