¿Cómo realizar un modelo / regresión multinivel para datos de panel en Python?

Oct 16 2020

Tengo datos anuales a lo largo del tiempo (datos longitudinales) con medidas repetidas para muchos de los sujetos. Creo que necesito modelos / regresiones multinivel para lidiar con grupos de mediciones correlacionados para los mismos individuos a lo largo del tiempo. Actualmente, los datos se encuentran en tablas separadas para cada año.

Me preguntaba si había una forma incorporada en scikit-learn, como LinearRegression (), que podría realizar una regresión multinivel donde el Nivel 1 son todos los datos a lo largo de los años, y el Nivel 2 es para los agrupados en el sujetos (grupos de medidas de cada sujeto a lo largo del tiempo). Y si es así, si es mejor tener los datos longitudinales dispuestos a lo largo (donde las medidas de cada sujeto a lo largo del tiempo están todas en una fila) o apiladas (donde cada medida para cada año es su propia fila).

¿Hay alguna forma de hacer esto?

Respuestas

4 RobertLong Oct 21 2020 at 16:59

La regresión lineal no será adecuada para un modelo multinivel.

Un modelo de efectos mixtos es una buena forma de adaptarse a la mayoría de los modelos multinivel.

En Python puedes usar mixedlmen statsmodels. Por ejemplo:

In [1]: import statsmodels.api as sm

In [2]: import statsmodels.formula.api as smf

In [3]: data = sm.datasets.get_rdataset("dietox", "geepack").data

In [4]: md = smf.mixedlm("Weight ~ Time", data, groups=data["Pig"])

In [5]: mdf = md.fit()

In [6]: print(mdf.summary())
         Mixed Linear Model Regression Results
========================================================
Model:            MixedLM Dependent Variable: Weight    
No. Observations: 861     Method:             REML      
No. Groups:       72      Scale:              11.3669   
Min. group size:  11      Log-Likelihood:     -2404.7753
Max. group size:  12      Converged:          Yes       
Mean group size:  12.0                                  
--------------------------------------------------------
             Coef.  Std.Err.    z    P>|z| [0.025 0.975]
--------------------------------------------------------
Intercept    15.724    0.788  19.952 0.000 14.179 17.268
Time          6.943    0.033 207.939 0.000  6.877  7.008
Group Var    40.394    2.149                            
========================================================