Come condurre un modello / regressione multilivello per i dati del pannello in Python?
Ho dati annuali nel tempo (dati longitudinali) con misure ripetute per molti dei soggetti. Penso di aver bisogno di modelli / regressioni multilivello per gestire cluster di misurazioni sicuramente correlate per gli stessi individui nel tempo. I dati sono attualmente in tabelle separate per ogni anno.
Mi chiedevo se ci fosse un modo che è stato integrato in scikit-learn, come LinearRegression (), che sarebbe in grado di condurre una regressione multilivello in cui il livello 1 è tutti i dati nel corso degli anni e il livello 2 è per il cluster sul soggetti (gruppi per le misurazioni di ciascun soggetto nel tempo). E se è così, se è meglio avere i dati longitudinali disposti longitudinalmente (dove le misure di ogni soggetto nel tempo sono tutte in una riga) o impilate (dove ogni misura per ogni anno è la propria riga).
C'è un modo per fare questo?
Risposte
La regressione lineare non sarà adatta per un modello multilivello.
Un modello a effetti misti è un buon modo per adattarsi alla maggior parte dei modelli multilivello.
In Python puoi usare mixedlmin statsmodels. Per esempio:
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
========================================================