Protocolo csQCA

Programa de Estudios Avanzados en Métodos

Diego Solís Delgadillo

diego.solis@colsan.edu.mx

Ruta de hoy: protocolo csQCA

Objetivos

  • Entender el protocolo csQCA.
  • Practicar necesidad y suficiencia.
  • Aplicar minimización lógica.
  • Reportar consistencia y cobertura.

Agenda

  1. Tabla comparativa.
  2. Necesidad.
  3. Tabla de verdad.
  4. Suficiencia y minimización.
  5. Evaluación del modelo.

Protocolo para csQCA

Tabla comparativa

Condiciones necesarias

Tabla de verdad

Minimización lógica

Consistencia y cobertura

La clave no es correr el algoritmo: es construir la comparación.

Tabla comparativa

Caso Dictamen Caso Dictamen
A L
B M No
C N
D No O No
E No P
F Q No
G No R No
H S No
I T No
J U
K

Factores explicativos en la literatura

Tres condiciones para comenzar

Condición Pregunta empírica
Experiencia legislativa ¿El legislador ya conoce el proceso?
Educación superior ¿Cuenta con credenciales educativas altas?
Hombre ¿El género se asocia con trayectorias políticas distintas?

Por ahora no estamos estimando efectos: estamos construyendo conjuntos.

Condiciones necesarias

Idea central

Una condición es necesaria cuando el resultado no puede producirse sin ella.

\[X \Leftarrow Y\]

  • El resultado \(Y\) está contenido en la condición \(X\).
  • El factor explicativo es un superconjunto del resultado.

Hipótesis de Skocpol (1979)

La revolución social (\(Y\)) se produce solamente en situaciones de quiebre de estatalidad (\(X\)).

Condiciones necesarias: casos A-K

Caso Dictamen Experiencia Educación Hombre
A 1 0 1 0
B 1 0 1 0
C 1 1 1 0
D 0 1 1 1
E 0 0 0 0
F 1 1 1 1
G 0 1 1 1
H 1 0 1 1
I 1 1 1 1
J 1 1 1 1
K 1 0 1 0

Condiciones necesarias: casos L-U

Caso Dictamen Experiencia Educación Hombre
L 1 0 1 1
M 0 0 0 0
N 1 1 1 1
O 1 0 1 1
P 0 0 0 0
Q 0 1 1 0
R 0 1 1 0
S 0 1 1 0
T 0 0 0 1
U 1 1 1 1

¿Cómo identificar una condición necesaria?

Primer criterio visual

Buscamos una condición que esté presente siempre que el resultado es 1.

En el ejemplo:

  • Todos los casos con dictamen positivo tienen educación superior.
  • Por tanto, educación es una condición potencialmente necesaria.

Tip

En la práctica casi nunca encontramos condiciones perfectas. Por eso usamos medidas de consistencia y relevancia.

inclN: consistencia de necesidad

Pregunta

¿Qué proporción de los casos positivos presentan la condición \(X\)?

\[ \text{inclN}_{X \Leftarrow Y}=\frac{|X\cap Y|}{|Y|} \]

Para educación:

\[ \text{inclN}=\frac{12}{12}=1.00 \]

covN: cobertura de necesidad

Pregunta

De todos los casos que presentan \(X\), ¿cuántos también tienen \(Y\)?

\[ \text{covN}_{X \Leftarrow Y}=\frac{|X\cap Y|}{|X|}=\frac{12}{16}=0.75 \]

Una condición puede ser necesaria, pero demasiado amplia o trivial.

Necesidad en R

pof("EDU", "DIC", data = DICTAMEN_CT)
pof("EDU", "DIC", data = DICTAMEN_CT)

        inclN   RoN   covN  
--------------------------- 
1  EDU  1.000  0.556  0.750 
--------------------------- 

RoN: relevancia de necesidad

Problema

Una condición puede parecer necesaria solo porque aparece en casi todos los casos.

RoN distingue

Valor Interpretación
Alto Necesidad informativa
Bajo Necesidad potencialmente trivial

\[ RoN= \frac{\sum(1-X)}{\sum(1-\min(X,Y))} \]

Ejemplo RoN

Caso Dictamen Educación min X,Y 1 - X 1 - min X,Y
A 1 1 1 0 0
B 1 1 1 0 0
C 1 1 1 0 0
D 0 1 0 0 1
E 0 0 0 1 1
F 1 1 1 0 0
G 0 1 0 0 1
H 1 1 1 0 0
I 1 1 1 0 0
J 1 1 1 0 0
K 1 1 1 0 0
L 1 1 1 0 0
M 0 1 0 0 1
N 1 1 1 0 0
O 1 1 1 0 0
P 0 1 0 0 1
Q 0 0 0 1 1
R 0 0 0 1 1
S 0 0 0 1 1
T 0 0 0 1 1
U 1 1 1 0 0
Σ 5 9

Ejemplo RoN: interpretación

\[ RoN=\frac{\sum(1-X)}{\sum[1-\min(X,Y)]}=\frac{5}{9}=0.55 \]

La condición es consistente como necesaria, pero su relevancia no es muy alta porque educación cubre muchos casos negativos.

Necesidad compleja

Caso Dictamen Experiencia Educación Hombre Exp ∨ Hom
A 1 0 1 0 0
B 1 0 1 0 0
C 1 1 1 0 1
D 0 1 1 1 1
E 0 0 0 0 0
F 1 1 1 1 1
G 0 1 1 1 1
H 1 0 1 1 1
I 1 1 1 1 1
J 1 1 1 1 1

Si no encontramos condiciones individuales, podemos explorar disyunciones.

  • Experiencia + Educación
  • Experiencia + Hombre
  • Educación + Hombre

Análisis de necesidad en R

Una condición

data(LC)
pof("DEV", "SURV", data = LC)
data(LC)
pof("DEV", "SURV", data = LC)

        inclN   RoN   covN  
--------------------------- 
1  DEV  1.000  0.800  0.800 
--------------------------- 

Todas las condiciones a la vez

superSubset(
  LC,
  outcome = "SURV",
  incl.cut = 0.9
)
superSubset(LC, outcome = "SURV", incl.cut = 0.9)

                inclN   RoN   covN  
----------------------------------- 
1  DEV          1.000  0.800  0.800 
2  LIT          1.000  0.500  0.615 
3  STB          1.000  0.700  0.727 
4  DEV*LIT      1.000  0.800  0.800 
5  DEV*STB      1.000  1.000  1.000 
6  LIT*STB      1.000  0.900  0.889 
7  DEV*LIT*STB  1.000  1.000  1.000 
8  ~URB + IND   1.000  0.000  0.444 
----------------------------------- 

Necesidad con RoN

superSubset(
  LC,
  outcome = "SURV",
  incl.cut = 1,
  ron.cut = 0.8
)
superSubset(LC, outcome = "SURV", incl.cut = 1, ron.cut = 0.8)

                inclN   RoN   covN  
----------------------------------- 
1  DEV          1.000  0.800  0.800 
2  DEV*LIT      1.000  0.800  0.800 
3  DEV*STB      1.000  1.000  1.000 
4  LIT*STB      1.000  0.900  0.889 
5  DEV*LIT*STB  1.000  1.000  1.000 
----------------------------------- 

Ahora pasamos a…

Análisis de suficiencia

Condición suficiente

Idea central

Una condición es suficiente cuando cada vez que aparece \(X\), observamos \(Y\).

\[X \Rightarrow Y\]

  • \(X\) es un subconjunto de \(Y\).
  • El ejemplo será el dictamen de iniciativas de la Comisión de Ciencia y Tecnología.

Primer paso: todas las configuraciones posibles

Con tres condiciones binarias hay \(2^3=8\) configuraciones posibles.

Configuración EXP EDU HOMBRE
1 1 1 1
2 1 1 0
3 1 0 1
4 1 0 0
5 0 1 1
6 0 1 0
7 0 0 1
8 0 0 0

Antes de clasificar: revisamos los casos

Caso Dictamen Experiencia Educación Hombre
A 1 1 0 1
B 1 1 0 1
C 1 0 0 1
D 0 0 0 0
E 0 1 1 1
F 1 0 0 0
G 0 0 0 0
H 1 1 0 0
I 1 0 0 0
J 1 0 0 0
K 1 1 0 1

Revisamos los casos restantes

Caso Dictamen Experiencia Educación Hombre
L 1 1 0 1
M 1 1 0 1
N 1 0 0 1
O 0 0 0 0
P 0 1 1 1
Q 1 0 0 0
R 0 0 0 0
S 1 1 0 0
T 1 0 0 0
U 1 0 0 0

Segundo paso: ubicar casos positivos y negativos

¿Qué casos caen en cada configuración?

Conf EXP EDU HOMBRE Dic (0) Dic(1)
1 1 1 1 E
2 1 1 0 Q,R,S,T
3 1 0 1 A,B,K,N
4 1 0 0 H
5 0 1 1
6 0 1 0
7 0 0 1 C,L,O
8 0 0 0 D,G,M,P F,I,J,U

Tercer paso: clasificar configuraciones

Antes de hablar de consistencia

Tipo Criterio Interpretación
Verdadera Solo casos positivos Suficiente para el resultado
Falsa Solo casos negativos No produce el resultado
Contradictoria Casos positivos y negativos Evidencia mixta
Residual Sin casos Sin referente empírico

Esta clasificación se hace primero con la lógica de la tabla; después la formalizamos con consistencia.

Clasificación de la tabla de verdad

Conf EXP EDU HOM Dic (0) Dic(1) Tipo
1 1 1 1 E Falsa
2 1 1 0 Q,R,S,T Falsa
3 1 0 1 A,B,K,N Verdadera
4 1 0 0 H Verdadera
5 0 1 1 Residual
6 0 1 0 Residual
7 0 0 1 C,L,O Verdadera
8 0 0 0 D,G,M,P F,I,J,U Contradictoria

Ahora sí: consistencia

La consistencia resume la clasificación

¿Qué proporción de los casos de una configuración son positivos?

\[ \text{Consistencia}=\frac{\text{casos positivos}}{\text{casos positivos + casos negativos}} \]

  • Verdadera perfecta: consistencia = 1.
  • Contradictoria: consistencia entre 0 y 1.
  • Falsa: consistencia = 0.

Índice de consistencia

Conf EXP EDU HOM Dic (0) Dic(1) Cons
1 1 1 1 E 0.00
2 1 1 0 Q,R,S,T 0.00
3 1 0 1 A,B,K,N 1.00
4 1 0 0 H 1.00
5 0 1 1
6 0 1 0
7 0 0 1 C,L,O 1.00
8 0 0 0 D,G,M,P F,I,J,U 0.50

Important

La consistencia indica qué proporción de los casos de esa configuración causal son positivos.

Parámetros de la tabla de verdad

Dos decisiones importantes

Parámetro Pregunta
n.cut ¿Cuántos casos debe tener una configuración para ser considerada?
incl.cut ¿Qué nivel de consistencia exige la investigación?

En csQCA con N pequeña suele ser común n.cut = 1, pero la decisión debe justificarse.

Minimización lógica

Configuraciones verdaderas

Conf EXP EDU HOM Dic(1) Tipo
3 1 0 1 A,B,K,N V
4 1 0 0 H V
7 0 0 1 C,L,O V

Las configuraciones 3 y 4 solo difieren en Hombre.

Experiencia * ~Educación superior ⇒ Dictamen

Otra minimización posible

Conf EXP EDU HOM Dic(1) Tipo
3 1 0 1 A,B,K,N V
4 1 0 0 H V
7 0 0 1 C,L,O V

Las configuraciones 3 y 7 solo difieren en Experiencia.

~Educación superior * Hombre ⇒ Dictamen

Regla de minimización

Regla básica

Si dos configuraciones son iguales en todas las condiciones excepto una, podemos eliminar la condición que varía.

Important

Comparamos cada configuración suficiente con las demás. Si solo cambia una condición, esa condición no es necesaria para ese camino causal.

Consistencia del modelo

Solución minimizada

~Educación * (Experiencia + Hombre) ⇒ Dictamen

Conf EXP EDU HOM Dic (0) Dic(1) Cons
3 1 0 1 A,B,K,N 1.00
4 1 0 0 H 1.00
7 0 0 1 C,L,O 1.00

En los ocho casos cubiertos se presentan tanto las configuraciones causales como el resultado.

Consistencia del modelo = 8/8 = 1.00

Cobertura de suficiencia

Pregunta

¿Qué proporción del resultado queda explicada por la solución?

  • Complementa a la consistencia.
  • La consistencia pregunta si \(X \subseteq Y\).
  • La cobertura pregunta cuánto de \(Y\) es cubierto por \(X\).

Tip

Una solución puede ser perfectamente consistente, pero cubrir pocos casos positivos.

Tipos de cobertura

Tipo Qué mide
Cobertura bruta Todos los casos del resultado cubiertos por un término
Cobertura única Casos cubiertos exclusivamente por ese término
Cobertura del modelo Proporción total del resultado cubierta por toda la solución

Configuraciones residuales

¿Qué son?

Configuraciones que no tienen referente empírico.

En nuestro ejemplo:

Configuraciones 5 y 6

La solución cambia según cómo tratemos esas configuraciones.

Residuales en la tabla

Conf EXP EDU HOM Dic (0) Dic(1) Cons
1 1 1 1 E 0.00
2 1 1 0 Q,R,S,T 0.00
3 1 0 1 A,B,K,N 1.00
4 1 0 0 H 1.00
5 0 1 1
6 0 1 0
7 0 0 1 C,L,O 1.00
8 0 0 0 D,G,M,P F,I,J,U 0.50

Solución compleja

Tratamiento de residuales

Cuando las configuraciones residuales se tratan como falsas, obtenemos la solución compleja.

No se usan contrafactuales

La solución suele ser más larga, pero depende menos de supuestos.

Solución parsimoniosa

Tratamiento de residuales

La solución parsimoniosa permite usar configuraciones residuales como si fueran verdaderas.

Conf EXP EDU HOM Dic(1) Tipo
3 1 0 1 A,B,K,N V
4 1 0 0 H V
7 0 0 1 C,L,O V
5 0 1 1 R
6 0 1 0 R

~Experiencia * Hombre ⇒ Dictamen

Solución intermedia

Tratamiento de residuales

Solo algunas configuraciones residuales se consideran verdaderas.

La decisión es teórica

  • ¿Qué contrafactuales son plausibles?
  • ¿Cuáles contradicen el argumento?
  • ¿Qué expectativas direccionales se justifican?

Contrafactuales sencillos y difíciles

Contrafactuales sencillos

  • Alineados con la teoría.
  • Compatibles con el mecanismo esperado.

Contrafactuales difíciles

  • Contradicen la teoría.
  • Niegan el mecanismo esperado.

Tip

Regla práctica: sencillo = consistente con el mecanismo esperado; difícil = lo negaría.

Análisis de redundancia

Problema

Algunos implicantes primarios pueden ser redundantes.

Procedimiento

  • Construimos una tabla con expresiones primitivas.
  • Observamos qué implicantes cubren qué expresiones.
  • Eliminamos implicantes que no agregan cobertura única.

Análisis de redundancia: tabla

Implicante primario ELESH ~ELESH ELES~H EL~ES~H EL~ESH
EL*~ES x x
EL*~H x x
ES*~EL x x
ES*~H x x

csQCA con R

library(QCA)

BAC <- c(0,1,1,0,1,0)
MAJ <- c(1,1,1,1,1,0)
JUD <- c(1,0,0,1,0,1)
DIR_DEM <- c(0,0,1,1,1,0)
INS <- c(1,1,0,1,0,0)

df <- data.frame(BAC, MAJ, JUD, DIR_DEM, INS)
rownames(df) <- c("AMLO", "Bukele", "Correa", "Morales", "Chávez", "Humala")
BAC <- c(0,1,1,0,1,0)
MAJ <- c(1,1,1,1,1,0)
JUD <- c(1,0,0,1,0,1)
DIR_DEM <- c(0,0,1,1,1,0)
INS <- c(1,1,0,1,0,0)

df <- data.frame(BAC, MAJ, JUD, DIR_DEM, INS)
rownames(df) <- c("AMLO", "Bukele", "Correa", "Morales", "Chávez", "Humala")
df
        BAC MAJ JUD DIR_DEM INS
AMLO      0   1   1       0   1
Bukele    1   1   0       0   1
Correa    1   1   0       1   0
Morales   0   1   1       1   1
Chávez    1   1   0       1   0
Humala    0   0   1       0   0

Tabla de verdad en R

ttbk <- truthTable(
  df,
  outcome = "BAC",
  complete = TRUE,
  show.cases = TRUE
)

ttbk
ttbk <- truthTable(df, outcome = "BAC", complete = TRUE, show.cases = TRUE)
ttbk

  OUT: output value
    n: number of cases in configuration
 incl: sufficiency inclusion score
  PRI: proportional reduction in inconsistency

     MAJ JUD DIR_DEM INS   OUT    n  incl  PRI   cases        
 1    0   0     0     0     ?     0    -     -                
 2    0   0     0     1     ?     0    -     -                
 3    0   0     1     0     ?     0    -     -                
 4    0   0     1     1     ?     0    -     -                
 5    0   1     0     0     0     1  0.000 0.000 Humala       
 6    0   1     0     1     ?     0    -     -                
 7    0   1     1     0     ?     0    -     -                
 8    0   1     1     1     ?     0    -     -                
 9    1   0     0     0     ?     0    -     -                
10    1   0     0     1     1     1  1.000 1.000 Bukele       
11    1   0     1     0     1     2  1.000 1.000 Correa,Chávez
12    1   0     1     1     ?     0    -     -                
13    1   1     0     0     ?     0    -     -                
14    1   1     0     1     0     1  0.000 0.000 AMLO         
15    1   1     1     0     ?     0    -     -                
16    1   1     1     1     0     1  0.000 0.000 Morales      

Minimización lógica en R

Solución compleja

minimize(ttbk, details = TRUE)
minimize(ttbk, details = TRUE)

M1: MAJ*~JUD*DIR_DEM*~INS + MAJ*~JUD*~DIR_DEM*INS <-> BAC

                          inclS   PRI   covS   covU   cases 
------------------------------------------------------------------- 
1  MAJ*~JUD*DIR_DEM*~INS  1.000  1.000  0.667  0.667  Correa,Chávez 
2  MAJ*~JUD*~DIR_DEM*INS  1.000  1.000  0.333  0.333  Bukele 
------------------------------------------------------------------- 
                      M1  1.000  1.000  1.000 

Minimización lógica en R

Solución parsimoniosa

minimize(ttbk, include = "?", details = TRUE)

M1: ~JUD <-> BAC

         inclS   PRI   covS   covU   cases 
---------------------------------------------------------- 
1  ~JUD  1.000  1.000  1.000    -    Bukele; Correa,Chávez 
---------------------------------------------------------- 
     M1  1.000  1.000  1.000 

Minimización lógica en R

Solución intermedia

library(SetMethods)

sol_i <- minimize(
  df,
  outcome = "BAC",
  conditions = c("MAJ", "JUD", "DIR_DEM", "INS"),
  incl.cut = 1,
  include = "?",
  details = TRUE,
  show.cases = TRUE,
  dir.exp = c(1,0,1,0)
)
if (requireNamespace("SetMethods", quietly = TRUE)) {
  library(SetMethods)
  sol_i <- minimize(
    df,
    outcome = "BAC",
    conditions = c("MAJ", "JUD", "DIR_DEM", "INS"),
    incl.cut = 1,
    include = "?",
    details = TRUE,
    show.cases = TRUE,
    dir.exp = c(1,0,1,0)
  )
  sol_i
}

From C1P1: 

M1:    MAJ*~JUD <-> BAC 

             inclS   PRI   covS   covU   cases 
-------------------------------------------------------------- 
1  MAJ*~JUD  1.000  1.000  1.000    -    Bukele; Correa,Chávez 
-------------------------------------------------------------- 
         M1  1.000  1.000  1.000 

Cierre

Tres ideas para llevarse

  1. La tabla de verdad se construye antes de interpretarla.
  2. Las configuraciones pueden ser verdaderas, falsas, contradictorias o residuales.
  3. La consistencia formaliza una clasificación que primero entendemos cualitativamente.

El algoritmo ayuda, pero la explicación sigue dependiendo de teoría, casos y decisiones de calibración.