La trampa oculta de los efectos fijos y aleatorios

¿Qué son los efectos aleatorios y los efectos fijos?

Al diseñar un estudio, a menudo apuntamos a aislar variables independientes de las que no tienen interés en observar sus verdaderos efectos en las variables dependientes. Por ejemplo, supongamos que nos gustaría estudiar los efectos del uso de Github Copilot (variable independiente) sobre la productividad del desarrollador (variable dependiente). Un enfoque es medir cuánto tiempo pasan los desarrolladores usando Copilot y qué tan rápido completan las tareas de codificación. A primera vista, podemos observar una fuerte correlación positiva: más uso de copilotes, finalización de tareas más rápida.

Sin embargo, otros factores también pueden influir en la rapidez con que los desarrolladores terminan su trabajo. Por ejemplo, la Compañía A podría tener tuberías de CI/CD más rápidas o tratar con tareas más pequeñas y simples, mientras que la Compañía B puede requerir revisiones de código largas o manejar tareas más complejas y que requieren mucho tiempo. Si no contabilizamos estas diferencias organizacionales, podríamos concluir erróneamente que el copiloto es menos efectivo para los desarrolladores de la Compañía B, aunque es el entorno, no el copiloto, lo que realmente los ralentiza.

Este tipo de variaciones a nivel grupal, diferencias entre equipos, empresas o proyectos, generalmente se conocen como efectos aleatorios o efectos fijos.

Los efectos fijos son variables de interés, donde cada grupo se trata por separado utilizando una codificación única. De esta manera, dado que la variabilidad dentro del grupo se captura perfectamente dentro de cada variable ficticia, asumimos que la varianza de cada grupo es similar o homoscedástica.

\[y_i = \beta_0 + \beta_1 x_i + \gamma_1 D_{1i} + \gamma_2 D_{2i} + \cdots + \varepsilon_i\]

donde d1iD2i… respectivamente hay variables ficticias que representan el Grupo D1iD2i… y γ₁, γ₂, … respectivamente son coeficientes de efecto fijo para cada grupo correspondiente.

Los efectos aleatorios, por otro lado, típicamente no son variables de interés. Suponemos que cada grupo es parte de una población más amplia y cada efecto de grupo se encuentra en algún lugar dentro de una distribución de probabilidad más amplia de esa población. Como tal, la varianza de cada grupo es heterogénea.

\[ y_{ij} = \beta_0 + \beta_1 x_{ij} + u_j + \varepsilon_{ij} \]

donde tuj es un efecto aleatorio del grupo J de la muestra I, extraído de una distribución, típicamente una distribución normal 𝒩 (0, σ²ᵤ).

Repensar efectos cuidadosamente fijos y aleatorios

Sin embargo, puede engañar su análisis si solo inserta al azar estos efectos en su modelo sin pensar cuidadosamente sobre qué tipo de variaciones están capturando realmente.

Recientemente trabajé en un proyecto de análisis Impactos ambientales de los modelos de IAque estudié cómo ciertas características arquitectónicas (número de parámetros, número de cómputo, tamaño del conjunto de datos y tiempo de entrenamiento) y opciones de hardware (tipo de hardware, número de hardware) de modelos de IA afectan el uso de energía durante el entrenamiento. Encontré que Training_time, Hardware_quantityy Hardware_type afectó significativamente el uso de energía. La relación se puede modelar aproximadamente como:

\[ \text{energy} = \text{Training_time} + \text{Hardware_quantity} + \text{Hardware}\]

Dado que pensé que podría haber diferencias entre las organizaciones, por ejemplo, en estilo de codificación, estructura de código o preferencias de algoritmo, creía que incluir Organization Como los efectos aleatorios ayudarían a explicar todas estas diferencias potenciales no observadas. Para probar mi suposición, comparé los resultados de dos modelos: con y sin Organizationpara ver cuál es un mejor ajuste. En los dos modelos, la variable dependiente Energy Era extremadamente sesgo derecho, por lo que apliqué una transformación de registro para estabilizar su varianza. Aquí utilicé modelos lineales generalizados (GLM) ya que la distribución de mis datos no era normal.

glm <- glm(
  log_Energy ~ Training_time_hour + 
               Hardware_quantity + 
               Training_hardware,
               data = df)
summary(glm)

glm_random_effects <- glmer(
  log_Energy ~ Training_time_hour + 
               Hardware_quantity + 
               Training_hardware + 
               (1 | Organization), // Random effects
               data = df)
summary(glm_random_effects)
AIC(glm_random_effects)

El modelo GLM sin Organization produjo un AIC de 312.55, con Training_time, Hardware_quantityy ciertos tipos de Hardware fueron estadísticamente significativos.

> summary(glm)

Call:
glm(formula = log_Energy ~ Training_time_hour + Hardware_quantity + 
    Training_hardware, data = df)

Coefficients:
                                                 Estimate Std. Error t value Pr(>|t|)    
(Intercept)                                     7.134e+00  1.393e+00   5.123 5.07e-06 ***
Training_time_hour                              1.509e-03  2.548e-04   5.922 3.08e-07 ***
Hardware_quantity                               3.674e-04  9.957e-05   3.690 0.000563 ***
Training_hardwareGoogle TPU v3                  1.887e+00  1.508e+00   1.251 0.216956    
Training_hardwareGoogle TPU v4                  3.270e+00  1.591e+00   2.055 0.045247 *  
Training_hardwareHuawei Ascend 910              2.702e+00  2.485e+00   1.087 0.282287    
Training_hardwareNVIDIA A100                    2.528e+00  1.511e+00   1.674 0.100562    
Training_hardwareNVIDIA A100 SXM4 40 GB         3.103e+00  1.750e+00   1.773 0.082409 .  
Training_hardwareNVIDIA A100 SXM4 80 GB         3.866e+00  1.745e+00   2.216 0.031366 *  
Training_hardwareNVIDIA GeForce GTX 285        -4.077e+00  2.412e+00  -1.690 0.097336 .  
Training_hardwareNVIDIA GeForce GTX TITAN X    -9.706e-01  1.969e+00  -0.493 0.624318    
Training_hardwareNVIDIA GTX Titan Black        -8.423e-01  2.415e+00  -0.349 0.728781    
Training_hardwareNVIDIA H100 SXM5 80GB          3.600e+00  1.864e+00   1.931 0.059248 .  
Training_hardwareNVIDIA P100                   -1.663e+00  1.899e+00  -0.876 0.385436    
Training_hardwareNVIDIA Quadro P600            -1.970e+00  2.419e+00  -0.814 0.419398    
Training_hardwareNVIDIA Quadro RTX 4000        -1.367e+00  2.424e+00  -0.564 0.575293    
Training_hardwareNVIDIA Quadro RTX 5000        -2.309e+00  2.418e+00  -0.955 0.344354    
Training_hardwareNVIDIA Tesla K80               1.761e+00  1.988e+00   0.886 0.380116    
Training_hardwareNVIDIA Tesla V100 DGXS 32 GB   3.415e+00  1.833e+00   1.863 0.068501 .  
Training_hardwareNVIDIA Tesla V100S PCIe 32 GB  3.698e+00  2.413e+00   1.532 0.131852    
Training_hardwareNVIDIA V100                   -3.638e-01  1.582e+00  -0.230 0.819087    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for gaussian family taken to be 3.877685)

    Null deviance: 901.45  on 69  degrees of freedom
Residual deviance: 190.01  on 49  degrees of freedom
AIC: 312.55

Number of Fisher Scoring iterations: 2

Por otro lado, el modelo GLM con Organization produjo una AIC de 300.38, mucho más baja que el modelo anterior, lo que indica un mejor ajuste del modelo. Sin embargo, al mirar más de cerca, noté un problema importante: la importancia estadística de otras variables ha desaparecido, como si Organization ¡Les quitó el significado!

> summary(glm_random_effects)
Linear mixed model fit by REML ['lmerMod']
Formula: log_Energy ~ Training_time_hour + Hardware_quantity + Training_hardware +  
    (1 | Organization)
   Data: df

REML criterion at convergence: 254.4

Scaled residuals: 
     Min       1Q   Median       3Q      Max 
-1.65549 -0.24100  0.01125  0.26555  1.51828 

Random effects:
 Groups       Name        Variance Std.Dev.
 Organization (Intercept) 3.775    1.943   
 Residual                 1.118    1.057   
Number of obs: 70, groups:  Organization, 44

Fixed effects:
                                                 Estimate Std. Error t value
(Intercept)                                     6.132e+00  1.170e+00   5.243
Training_time_hour                              1.354e-03  2.111e-04   6.411
Hardware_quantity                               3.477e-04  7.035e-05   4.942
Training_hardwareGoogle TPU v3                  2.949e+00  1.069e+00   2.758
Training_hardwareGoogle TPU v4                  2.863e+00  1.081e+00   2.648
Training_hardwareHuawei Ascend 910              4.086e+00  2.534e+00   1.613
Training_hardwareNVIDIA A100                    3.959e+00  1.299e+00   3.047
Training_hardwareNVIDIA A100 SXM4 40 GB         3.728e+00  1.551e+00   2.404
Training_hardwareNVIDIA A100 SXM4 80 GB         4.950e+00  1.478e+00   3.349
Training_hardwareNVIDIA GeForce GTX 285        -3.068e+00  2.502e+00  -1.226
Training_hardwareNVIDIA GeForce GTX TITAN X     4.503e-02  1.952e+00   0.023
Training_hardwareNVIDIA GTX Titan Black         2.375e-01  2.500e+00   0.095
Training_hardwareNVIDIA H100 SXM5 80GB          4.197e+00  1.552e+00   2.704
Training_hardwareNVIDIA P100                   -1.132e+00  1.512e+00  -0.749
Training_hardwareNVIDIA Quadro P600            -1.351e+00  1.904e+00  -0.710
Training_hardwareNVIDIA Quadro RTX 4000        -2.167e-01  2.503e+00  -0.087
Training_hardwareNVIDIA Quadro RTX 5000        -1.203e+00  2.501e+00  -0.481
Training_hardwareNVIDIA Tesla K80               1.559e+00  1.445e+00   1.079
Training_hardwareNVIDIA Tesla V100 DGXS 32 GB   3.751e+00  1.536e+00   2.443
Training_hardwareNVIDIA Tesla V100S PCIe 32 GB  3.487e+00  1.761e+00   1.980
Training_hardwareNVIDIA V100                    7.019e-01  1.434e+00   0.489

Correlation matrix not shown by default, as p = 21 > 12.
Use print(x, correlation=TRUE)  or
    vcov(x)        if you need it

fit warnings:
Some predictor variables are on very different scales: consider rescaling
> AIC(glm_random_effects)
[1] 300.3767

Pensando con cuidado, tenía mucho sentido. Ciertas organizaciones pueden preferir constantemente tipos específicos de hardware, o las organizaciones más grandes pueden pagar hardware y recursos más caros para capacitar modelos de IA más grandes. En otras palabras, los efectos aleatorios aquí probablemente se superpusieron y explicaron demasiado las variaciones de nuestras variables independientes disponibles, por lo tanto, absorbieron una gran parte de lo que estábamos tratando de estudiar.

Esto resalta un punto importante: si bien los efectos aleatorios o fijos son herramientas útiles para controlar las diferencias no deseadas a nivel de grupo, también pueden capturar involuntariamente las variaciones subyacentes de nuestras variables independientes. Debemos considerar cuidadosamente lo que realmente representan estos efectos, antes de presentarlos ciegamente a nuestros modelos con la esperanza de que absorban felizmente todo el ruido.


Referencias: Steve Midway, Análisis de datos en R, https://bookdown.org/steve_midway/dar/random-effects.html