1. ホーム
  2. python

[解決済み] Pythonで重回帰分析

2022-05-11 11:21:13

質問

重回帰を行うPythonのライブラリが見つかりません。私が見つけた唯一のものは、単純な回帰を行うだけです。私はいくつかの独立変数(x1、x2、x3など)に対して私の従属変数(y)を回帰する必要があります。

例えば、このデータで。

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)

(上記に対する出力:)

      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

pythonでこれらを回帰して、線形回帰式を得るにはどうしたらよいでしょうか。

Y = a1x1 + a2x2 + a3x3 + a4x4 + a5x5 + a6x6 + + +a7x7 + c

どのように解決するのですか?

sklearn.linear_model.LinearRegression がやってくれるでしょう。

from sklearn import linear_model
clf = linear_model.LinearRegression()
clf.fit([[getattr(t, 'x%d' % i) for i in range(1, 8)] for t in texts],
        [t.y for t in texts])

次に clf.coef_ には回帰係数が入ります。

sklearn.linear_model にも同様のインターフェイスがあり、回帰に対して様々な正則化を行うことができます。