Bagaimana cara melakukan model / regresi multilevel untuk data panel dengan Python?

Oct 16 2020

Saya memiliki data tahunan dari waktu ke waktu (data longitudinal) dengan pengukuran berulang untuk banyak subjek. Saya rasa saya perlu pemodelan / regresi bertingkat untuk menangani kelompok pengukuran yang pasti berkorelasi untuk individu yang sama dari waktu ke waktu. Data saat ini berada dalam tabel terpisah untuk setiap tahun.

Saya bertanya-tanya apakah ada cara yang dibangun ke dalam scikit-learn, seperti LinearRegression (), yang akan dapat melakukan regresi bertingkat di mana Level 1 adalah semua data selama bertahun-tahun, dan Level 2 untuk cluster di subjek (kelompok untuk pengukuran setiap subjek dari waktu ke waktu). Dan jika demikian, lebih baik jika data longitudinal disusun berdasarkan panjangnya (di mana setiap ukuran subjek dari waktu ke waktu semuanya dalam satu baris) atau ditumpuk (di mana setiap pengukuran untuk setiap tahun adalah barisnya sendiri).

Apakah ada cara untuk melakukan ini?

Jawaban

4 RobertLong Oct 21 2020 at 16:59

Regresi linier tidak akan cocok untuk model bertingkat.

Model efek campuran adalah cara yang baik untuk menyesuaikan sebagian besar model bertingkat.

Di python Anda bisa menggunakan mixedlmdi statsmodels. Sebagai contoh:

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                            
========================================================