我似乎找不到任何进行多重回归的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
10 回答
sklearn.linear_model.LinearRegression会这样做:
然后
clf.coef_
将具有回归系数 .sklearn.linear_model也有类似的接口,可以对回归进行各种规范化 .
这是我创建的一个小工作 . 我用R检查了它,它的工作正确 .
结果:
输出:
pandas
提供了一种方便的方式来运行OLS,如下面的答案所示:Run an OLS regression with Pandas Data Frame
只是为了澄清,你给出的例子是多元线性回归,而不是多元线性回归参考 . Difference:
简而言之:
多元线性回归:响应y是标量 .
多元线性回归:响应y是向量 .
(另一个source . )
我认为这可能是完成这项工作最简单的方法:
你可以使用numpy.linalg.lstsq:
结果:
您可以通过以下方式查看估算输出:
结果:
您可以使用下面的函数并将其传递给DataFrame:
使用
scipy.optimize.curve_fit
. 而且不仅仅是线性适合 .将数据转换为pandas数据帧(
df
)后,截距项默认包含在内 .
有关更多示例,请参阅this notebook .
可以使用上面引用的sklearn库来处理多元线性回归 . 我正在使用Anaconda安装的Python 3.6 .
按如下方式创建模型:
你可以用numpy.linalg.lstsq