Saya tidak bisa menemukan pustaka python yang melakukan regresi berganda. Satu-satunya hal yang saya temukan hanya melakukan regresi sederhana. Saya perlu melakukan regresi terhadap variabel dependen saya (y) terhadap beberapa variabel independen (x1, x2, x3, dll.).
Misalnya, dengan data ini:
print 'y x1 x2 x3 x4 x5 x6 x7'
for t in texts:
print "{:>7.1f}{:>10.2f}{:>9.2f}{:>9.2f}{:>10.2f}{:>7.2f}{:>7.2f}{:>9.2f}" /
.format(t.y,t.x1,t.x2,t.x3,t.x4,t.x5,t.x6,t.x7)
(output untuk di atas :)
y x1 x2 x3 x4 x5 x6 x7
-6.0 -4.95 -5.87 -0.76 14.73 4.02 0.20 0.45
-5.0 -4.55 -4.52 -0.71 13.74 4.47 0.16 0.50
-10.0 -10.96 -11.64 -0.98 15.49 4.18 0.19 0.53
-5.0 -1.08 -3.36 0.75 24.72 4.96 0.16 0.60
-8.0 -6.52 -7.45 -0.86 16.59 4.29 0.10 0.48
-3.0 -0.81 -2.36 -0.50 22.44 4.81 0.15 0.53
-6.0 -7.01 -7.33 -0.33 13.93 4.32 0.21 0.50
-8.0 -4.46 -7.65 -0.94 11.40 4.43 0.16 0.49
-8.0 -11.54 -10.03 -1.03 18.18 4.28 0.21 0.55
Bagaimana saya mundur dalam python, untuk mendapatkan rumus regresi linier:
Y = a1x1 + a2x2 + a3x3 + a4x4 + a5x5 + a6x6 + + a7x7 + c
Y
mungkin berkorelasi satu sama lain, tetapi dengan asumsi independensi tidak secara akurat memodelkan dataset.Jawaban:
sklearn.linear_model.LinearRegression
akan melakukannya:Kemudian
clf.coef_
akan memiliki koefisien regresi.sklearn.linear_model
juga memiliki antarmuka yang sama untuk melakukan berbagai macam regularisasi pada regresi.sumber
score
metode akan melakukannya;sklearn.metrics
memiliki beberapa kriteria evaluasi model lainnya. Jika Anda menginginkan hal-hal seperti dalam jawaban Akavall, statsmodels memiliki beberapa diagnostik mirip-R.Ini adalah sedikit pekerjaan yang saya buat. Saya memeriksanya dengan R dan berfungsi dengan benar.
Hasil:
Keluaran:
pandas
menyediakan cara mudah untuk menjalankan OLS seperti yang diberikan dalam jawaban ini:Jalankan regresi OLS dengan Bingkai Data Pandas
sumber
reg_m
fungsi tidak perlu rumit.x = np.array(x).T
,x = sm.add_constant(x)
danresults = sm.OLS(endog=y, exog=x).fit()
sudah cukup.x = x[::-1]
dalam definisi fungsi untuk mendapatkan dalam urutan yang benarcoef +- 2 * std err
(sebenarnya distribusi Student-t yang diparameterisasi oleh derajat kebebasan dalam residu). yaitu nilai t absolut yang lebih besar menyiratkan CI lebih jauh dari nol, tetapi tidak boleh dibandingkan secara langsung. klarifikasi agak terlambat, tetapi harap ini berguna bagi seseorangHanya untuk memperjelas, contoh yang Anda berikan adalah beberapa regresi linier, tidak multivariat regresi linear merujuk. Perbedaan :
Pendeknya:
( Sumber lain .)
sumber
Anda dapat menggunakan numpy.linalg.lstsq :
Hasil:
Anda dapat melihat estimasi hasil dengan:
Hasil:
sumber
Gunakan
scipy.optimize.curve_fit
. Dan tidak hanya untuk fit linear.sumber
Setelah Anda mengonversi data Anda menjadi bingkai data panda (
df
),Istilah intersepsi disertakan secara default.
Lihat buku catatan ini untuk lebih banyak contoh.
sumber
Saya pikir ini mungkin cara paling mudah untuk menyelesaikan pekerjaan ini:
sumber
Regresi Linier Berganda dapat ditangani menggunakan pustaka sklearn seperti yang dirujuk di atas. Saya menggunakan instal Anaconda dari Python 3.6.
Buat model Anda sebagai berikut:
sumber
Anda dapat menggunakan numpy.linalg.lstsq
sumber
Anda dapat menggunakan fungsi di bawah ini dan memberikannya DataFrame:
sumber
Scikit-learn adalah perpustakaan pembelajaran mesin untuk Python yang dapat melakukan pekerjaan ini untuk Anda. Cukup impor modul sklearn.linear_model ke skrip Anda.
Temukan templat kode untuk Regresi Linier Berganda menggunakan sklearn dengan Python:
Itu dia. Anda dapat menggunakan kode ini sebagai templat untuk menerapkan Regresi Linier Berganda dalam dataset apa pun. Untuk pemahaman yang lebih baik dengan contoh, Kunjungi: Regresi Linier dengan contoh
sumber
Berikut ini adalah metode alternatif dan dasar:
Alih-alih
sm.OLS
Anda juga dapat menggunakansm.Logit
atausm.Probit
dan sebagainya.sumber