sábado, 5 de julio de 2025

Segunda parte. Comprobación con cálculos propios

MicMac Asistido por LLMs. Comprobación de los procedimientos

Introducción

En la entrada anterior comprobamos los resultados de las matrices generadas por Gemini y las visualizamos empleando el plano Motricidad/Dependencia. Esta segunda entrada procederemos a comprobar el resultado con cálculos propios. Para ello tomaremos la matriz inicial general por Gemini y procederemos a hacer las multiplicaicones sucesivas. Enfocaremos el análisis en la última matriz y en su plano correspondiente.

Verificación del procedimiento. Cálculos propios

Pre-procesamientos

Se parte de la matriz original creada por Gemini.

#Paquetes necesarios
library(flextable) # para visualizar las matrices
library(tidyverse) # tiene, entre otros, el paquete ggplot con el que se crea el plano motricidad/dependencia
library(ggttheme) # para usar temas adicionales en ggplot
library(ggrepel) # para evitar la aglomeracion de texto en un mismo punto
# matriz original
flextable(data.frame(M_original) %>% 
            rownames_to_column(" ")) 

V1

V2

V3

V4

V5

V6

V7

V8

V9

V10

V11

V12

V13

V14

V15

V1

0

1

1

1

1

1

1

1

1

1

1

0

1

0

1

V2

0

0

1

1

0

1

0

1

1

1

1

0

1

0

1

V3

0

0

0

1

0

0

0

0

0

1

1

0

1

0

1

V4

0

0

0

0

0

0

0

0

0

1

0

1

1

0

0

V5

1

0

0

0

0

0

0

0

0

1

1

0

0

0

1

V6

0

1

0

1

0

0

0

0

0

1

0

0

1

0

1

V7

0

0

1

1

0

0

0

1

0

1

1

0

1

0

1

V8

1

1

1

0

0

0

1

0

1

1

1

0

1

0

1

V9

0

1

0

0

0

0

0

1

0

1

1

0

0

0

1

V10

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

V11

0

0

0

0

0

0

0

0

0

1

0

0

0

0

0

V12

0

0

0

1

0

0

0

0

0

0

0

0

0

0

0

V13

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

V14

0

1

0

0

0

0

0

0

0

0

0

0

0

0

0

V15

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

Se operan las multiplicaciones sucesivas, empezando con la matriz cuadrada

# Preparacion de la data para obtenerla en formato de matriz

M <- micmac[, 2:16] # elimino la columna 1, tiene texto

M <- data.frame(M) # convierto en dataframe

M1 <- sapply(M1, as.numeric) # me aseguro que los valores sean numericos

M_original <- as.matrix(M) # transoformo en matriz

#Efectuo las operaciones para elevar a potencias sucesivas
M_cuadrada <- M_original%*% M_original
M_cubo <- M_original %*% M_cuadrada
M_cuatro <- M_original %*% M_cubo
M_cinco <- M_original %*%  M_cuatro

Para facilitar la creación de del plano Motricidad/Dependencia, genero el siguiente script:

crea_matriz <- function(datos){
  
  k <- ncol(datos) - 1 # verifica el numero de columnas y resta 1
  M <- datos[, 2:ncol(datos)] # recrea el dataframe sin la primera columna
  M <- data.frame(M) # convierte en dataframe
  colnames(M) <- paste0("V", 1:k) # reduce los nombres de filas y columnas a
  rownames(M) <- paste0("V", 1:k) #V1, V2 ...
  

 # calculos los valores de columnas y filas para obtener los
  # las posiciones de las variables en el plano
 M1 <-  data.frame("Abbr." = paste0("V", 1:15), 
                      variables = nombres,  Motrices = rowSums(M),
                      Dependientes = colSums(M))
 rownames(M1) <- NULL # elimina nombres de las filas
 
  return(list(matriz = M, # obtengo ambos procedimientos en una sola corrida
              plano = M1))
}

El script se aplica a las distintas matrices obtenidas, variando cada vez el nombre

Con este procedimiento obtengo por un lado la matriz correspondiente y, por el otro, el plano de Motricidad/Dependencia para cada matriz:

## $matriz
##     V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 V15
## V1   1  1  1  1  1  1  1  1  1   1   1   1   1   0   1
## V2   1  1  1  1  0  1  1  1  1   1   1   1   1   0   1
## V3   0  0  0  1  0  0  0  0  0   1   1   1   1   0   1
## V4   0  0  0  1  0  0  0  0  0   1   0   1   1   0   0
## V5   0  1  1  1  0  1  1  1  1   1   1   1   1   0   1
## V6   0  1  0  1  0  0  0  0  0   1   0   1   1   0   1
## V7   1  1  1  1  0  0  1  1  1   1   1   1   1   0   1
## V8   1  1  1  1  1  1  1  1  1   1   1   1   1   0   1
## V9   1  1  1  1  0  1  1  1  1   1   1   1   1   0   1
## V10  0  0  0  0  0  0  0  0  0   0   0   0   0   0   0
## V11  0  0  0  0  0  0  0  0  0   1   0   0   0   0   0
## V12  0  0  0  1  0  0  0  0  0   1   0   1   1   0   0
## V13  0  0  0  0  0  0  0  0  0   0   0   0   0   0   0
## V14  0  0  1  1  0  1  0  1  1   1   1   0   1   0   1
## V15  0  0  0  0  0  0  0  0  0   0   0   0   0   0   0
## 
## $plano
##    Abbr.                                                       variables
## 1     V1                        Ideología de la Supremacía Racial/Blanca
## 2     V2        Narrativas de "Sobrepoblación" y "Degradación Ambiental"
## 3     V3                                        Xenofobia/Antinmigración
## 4     V4        Militarización/Violencia como Solución (Aceleracionismo)
## 5     V5           Nostalgia por una "Edad de Oro"/Mito de Origen Étnico
## 6     V6                                       Antihumanismo/Misantropía
## 7     V7                  Autoritarismo/Rechazo de la Democracia Liberal
## 8     V8                       Eugenismo/Control Reproductivo Coercitivo
## 9     V9 Apropiación/Distorsión de Conceptos Científicos (Pseudociencia)
## 10   V10                    Propaganda/Difusión en Plataformas Digitales
## 11   V11                Infiltración/Cooptación de Movimientos Legítimos
## 12   V12                      Descentralización/Clandestinidad Operativa
## 13   V13                    Vulnerabilidad de Minorías/Grupos Marginados
## 14   V14        Desconexión con las Causas Reales de la Crisis Ambiental
## 15   V15                 Aceptación/Normalización de Tropos Ecofascistas
##    Motrices Dependientes
## 1        14            5
## 2        13            7
## 3         6            7
## 4         4           11
## 5        12            2
## 6         6            6
## 7        12            6
## 8        14            7
## 9        13            7
## 10        0           12
## 11        1            8
## 12        4           10
## 13        0           11
## 14        9            0
## 15        0            9

Los distintos planos de Motricidad/Dependencia se obtendrá con un gráfico como el siguiente, variando los nombres del dataset de entrada

mcuadrada %>% 
    #select(1,3,4) %>% 
    ggplot(aes(x= Dependientes, y = Motrices, label = Variables )) +
    geom_point() +
    expand_limits(x = c(0, 15)) +
    expand_limits(y = c(0,15)) +
    
    geom_text_repel(hjust = 0, nudge_x = 0.05,
                    fontface = "bold") +
    geom_vline(xintercept = c(25), 
               linetype= 2, color = "#aca6a9", alpha =0.5) +
    geom_hline(yintercept = c(18), 
               linetype= 2, color = "#aca6a9", alpha =0.5) +
    theme_tufte() +
    theme(strip.background = element_rect(fill="white",
                                          color = "white"),
          strip.text =element_text(size  = 22,  hjust = 0))+
    annotate(
        "text", label = "Motoras",
        x = 10, y = 30, size = 8, 
        colour = "red"
    ) +
    annotate(
        "text", label = "Clave",
        x = 32, y = 30, size = 8, 
        colour = "red"
    ) +
    annotate(
        "text", label = "Autonomas",
        x = 10, y = 10, size = 8, 
        colour = "red"
    ) +
    annotate(
        "text", label = "Resultado",
        x = 32, y = 10, size = 8,
        colour = "red"
    )

Matriz cuadrada

# matriz cuadrada
flextable(data.frame(M_cuadrada) %>% 
            rownames_to_column(" ")) 

V1

V2

V3

V4

V5

V6

V7

V8

V9

V10

V11

V12

V13

V14

V15

V1

2

3

3

4

0

1

1

3

2

9

6

1

6

0

7

V2

1

3

1

2

0

0

1

1

1

6

3

1

4

0

4

V3

0

0

0

0

0

0

0

0

0

2

0

1

1

0

0

V4

0

0

0

1

0

0

0

0

0

0

0

0

0

0

0

V5

0

1

1

1

1

1

1

1

1

2

1

0

1

0

1

V6

0

0

1

1

0

1

0

1

1

2

1

1

2

0

1

V7

1

1

1

1

0

0

1

0

1

4

2

1

3

0

2

V8

0

2

3

4

1

2

1

4

2

6

5

0

4

0

5

V9

1

1

2

1

0

1

1

1

2

3

2

0

2

0

2

V10

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

V11

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

V12

0

0

0

0

0

0

0

0

0

1

0

1

1

0

0

V13

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

V14

0

0

1

1

0

1

0

1

1

1

1

0

1

0

1

V15

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

Lo que da lugar al siguiente plano de Motricidad/Dependencia:


Matriz elevada al cubo

V1

V2

V3

V4

V5

V6

V7

V8

V9

V10

V11

V12

V13

V14

V15

V1

3

8

9

11

2

5

5

8

8

25

14

4

17

0

15

V2

1

3

6

7

1

4

2

6

5

13

8

2

9

0

8

V3

0

0

0

1

0

0

0

0

0

0

0

0

0

0

0

V4

0

0

0

0

0

0

0

0

0

1

0

1

1

0

0

V5

2

3

3

4

0

1

1

3

2

9

6

1

6

0

7

V6

1

3

1

3

0

0

1

1

1

6

3

1

4

0

4

V7

0

2

3

5

1

2

1

4

2

8

5

1

5

0

5

V8

5

8

7

8

0

2

4

5

6

24

13

4

16

0

15

V9

1

5

4

6

1

2

2

5

3

12

8

1

8

0

9

V10

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

V11

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

V12

0

0

0

1

0

0

0

0

0

0

0

0

0

0

0

V13

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

V14

1

3

1

2

0

0

1

1

1

6

3

1

4

0

4

V15

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

flextable::flextable(data.frame(M_cubo) %>% 
                       rownames_to_column(" "))

Plano de motricidad y dependencia


Matriz elevada a la cuarta potencia

V1

V2

V3

V4

V5

V6

V7

V8

V9

V10

V11

V12

V13

V14

V15

V1

10

24

24

34

3

11

11

24

19

73

43

11

49

0

48

V2

7

16

12

18

1

4

7

11

10

43

24

7

29

0

28

V3

0

0

0

0

0

0

0

0

0

1

0

1

1

0

0

V4

0

0

0

1

0

0

0

0

0

0

0

0

0

0

0

V5

3

8

9

11

2

5

5

8

8

25

14

4

17

0

15

V6

1

3

6

7

1

4

2

6

5

14

8

3

10

0

8

V7

5

8

7

9

0

2

4

5

6

25

13

5

17

0

15

V8

5

18

22

30

5

13

10

23

18

58

35

8

39

0

37

V9

6

11

13

15

1

6

6

11

11

37

21

6

25

0

23

V10

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

V11

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

V12

0

0

0

0

0

0

0

0

0

1

0

1

1

0

0

V13

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

V14

1

3

6

7

1

4

2

6

5

13

8

2

9

0

8

V15

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

flextable::flextable(data.frame(M_cuatro) %>% 
                       rownames_to_column(" "))

Plano de motricidad


Matriz elevada a la quinta potencia

V1

V2

V3

V4

V5

V6

V7

V8

V9

V10

V11

V12

V13

V14

V15

V1

27

64

69

91

10

34

34

64

58

203

115

34

138

0

126

V2

12

32

41

53

7

23

18

40

34

110

64

18

75

0

68

V3

0

0

0

1

0

0

0

0

0

0

0

0

0

0

0

V4

0

0

0

0

0

0

0

0

0

1

0

1

1

0

0

V5

10

24

24

34

3

11

11

24

19

73

43

11

49

0

48

V6

7

16

12

19

1

4

7

11

10

43

24

7

29

0

28

V7

5

18

22

31

5

13

10

23

18

59

35

9

40

0

37

V8

28

59

56

76

5

23

28

51

46

179

101

30

121

0

114

V9

12

34

34

48

6

17

17

34

28

101

59

15

68

0

65

V10

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

V11

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

V12

0

0

0

1

0

0

0

0

0

0

0

0

0

0

0

V13

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

V14

7

16

12

18

1

4

7

11

10

43

24

7

29

0

28

V15

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

flextable::flextable(data.frame(M_cinco) %>% 
                       rownames_to_column(" "))

Plano de Motricidad/Dependencia


Valoración de los resultados

El sistema converge claramente a partir de la cuarta potencia. Sin embargo, la visión del sistema que emerge es muy distinto al que propone Gemini tanto en la interpretación de las matrices tal como emerge de los cálculos propuestos por el Modelo, como del plano Motricidad/Dependencia final que Gemini aparentemente interpreta. Con los cálculos propios en el procedimiento se obtiene:

  • Variables Clave / de Enlace (Alta Motricidad, Alta Dependencia): En este análisis ninguna de las variables presenta estas características.

  • Variables Motoras / de Entrada (Alta Motricidad, Baja Dependencia): Son las más influyentes, con gran poder para impulsar cambios en el sistema y poca influencia recibida. Actuar sobre ellas es clave para transformar el sistema. En el análisis, estas son:

  • V10, Propaganda/Difusión en Plataformas Digitales

  • V13, Vulnerabilidad de Minorías/Grupos Marginados

  • V15, Aceptación/Normalización de Tropos Ecofascistas

  • V11, Infiltración/Cooptación de Movimientos Legítimos

  • Variables de Resultado / de Salida (Baja Motricidad, Alta Dependencia): Estas variables sufren el impacto de los cambios en otras, siendo “efectos” o “síntomas” del sistema; actuar directamente sobre ellas sin modificar los motores subyacentes es poco efectivo. Se identificaron:

  • V8, Eugenismo/Control Reproductivo Coercitivo

  • V1, Ideología de la Supremacía Racial/Blanca

  • Variables Autónomas / de Contexto (Baja Motricidad, Baja Dependencia): Poseen poca influencia y son poco influenciadas por el sistema, a menudo son factores externos o periféricos. Estas son:

    • V4, Militarización/Violencia como Solución (Aceleracionismo)
    • V3, Xenofobia/Antinmigración
    • V2, Narrativas de “Sobrepoblación” y “Degradación Ambiental”
    • V9, Apropiación/Distorsión de Conceptos Científicos (Pseudociencia)
    • V7, Autoritarismo/Rechazo de la Democracia Liberal
    • V12, Descentralización/Clandestinidad Operativa
    • V6, Antihumanismo/Misantropía
    • V14, Desconexión con las Causas Reales de la Crisis Ambiental
    • V5, Nostalgia por una “Edad de Oro”/Mito de Origen Étnico

La imagen que emerge es totalmente distintas a la que elabora Gemini. Es un sistema relativamente estable que, curiosamente, también se corresponde con uno de los debates académicos sobre el ecofascismo. El “Eugenismo/Control Reproductivo Coercitivo” y la “Ideología de la Supremacía Racial/Blanca” son variables cuya aceptación, promoción y sostenimiento en el tiempo depende de la “Propaganda/Difusión en Plataformas Digitales”, “Vulnerabilidad de Minorías/Grupos Marginados”, “Aceptación/Normalización de Tropos Ecofascistas”, y la “Infiltración/Cooptación de Movimientos Legítimos”. Y en ese orden de ideas, las variables que emergen como Autónomas, suelen ser argumentos que surgen en determinados momentos y caracterizan el fenómeno del ecofascismo, particularmente en los medios.

En la literatura puede ubicarse una visión que señala al ecofascismo no como un fenómeno de moda que surge y resurge en momentos de crisis, sino como un proyecto político/ideológico en cuyo núcleo existe el contenido del tropos ecofascista y a partir de esta convicción genera narrativas que difunde por diversos medios, en particular las redes sociales, para señalar y atacar grupos vulnerables. Los objetivos de este proyecto son claros y se vinculan con la conformación de un Lebensraum para un grupo étnico específico. En función de ese objetivo, tomará diversas acciones e instrumentalizará diversas agendas.

El resultado del MicMac utilizando un LLM es fructífero. La aparente alucinación ha generado dos posibles sistemas que pueden dar pie a reflexiones y consideraciones adicionales en los equipos de planificación, particularmente al contrastarlo con el sistema emergente a partir de los cálculos propios. Esta forma de abordar el MicMac es un modo de experimentación que puede ayudar a fortalecer el pensamiento estratégico. El ecofascismo es un fenómeno complejo y por tanto “endomoniado” (wicked problema). No es factible pensar que una sola línea de acción es suficiente para generar respuestas contundentes a las amenazas que el fenómeno supone. Nuestra formación académica enfatiza la exactitud y la precisión, ignorando, en muchas ocasiones que los sistemas complejos no por sus propias características no pueden ser ni aprehendidos ni manejados según esos lineamientos. Se requiere reflexión, diálogo, aproximaciones parciales, aceptar las equivocaciones e incorporarlas a la reflexión, se requiere experimentación más que precisión. Estos aspectos están presentes en este ejercicio.

Por otro lado, y tal como indica la literatura, al tomar los LLMs como medios para realizar con mayor rapidez análisis de la magnitud que implica el MicMac, se debe tener presente que existen altas probabilidades de alucinaciones. Por consiguiente es necesaria la inspección humana. Finalmente, es importante continuar desarrollando ejercicios y experimentos adicionales, desde distintas perspectivas, que permitan la incorporación de los LLMs en esta y otras áreas de la planificación.