我似乎找不到任何可以进行多重回归的python库。我发现的唯一的东西只做简单的回归。我需要将因变量(y)与几个自变量(x1、x2、x3等)进行回归。
例如,使用以下数据:
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
发布于 2012-07-14 06:41:50
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
也有类似的接口来对回归进行各种正则化。
发布于 2013-02-20 10:53:40
这是我创建的一个小工作。我用R检查过了,它工作正常。
import numpy as np
import statsmodels.api as sm
y = [1,2,3,4,3,4,5,4,5,5,4,5,4,5,4,5,6,5,4,5,4,3,4]
x = [
[4,2,3,4,5,4,5,6,7,4,8,9,8,8,6,6,5,5,5,5,5,5,5],
[4,1,2,3,4,5,6,7,5,8,7,8,7,8,7,8,7,7,7,7,7,6,5],
[4,1,2,5,6,7,8,9,7,8,7,8,7,7,7,7,7,7,6,6,4,4,4]
]
def reg_m(y, x):
ones = np.ones(len(x[0]))
X = sm.add_constant(np.column_stack((x[0], ones)))
for ele in x[1:]:
X = sm.add_constant(np.column_stack((ele, X)))
results = sm.OLS(y, X).fit()
return results
结果:
print reg_m(y, x).summary()
输出:
OLS Regression Results
==============================================================================
Dep. Variable: y R-squared: 0.535
Model: OLS Adj. R-squared: 0.461
Method: Least Squares F-statistic: 7.281
Date: Tue, 19 Feb 2013 Prob (F-statistic): 0.00191
Time: 21:51:28 Log-Likelihood: -26.025
No. Observations: 23 AIC: 60.05
Df Residuals: 19 BIC: 64.59
Df Model: 3
==============================================================================
coef std err t P>|t| [95.0% Conf. Int.]
------------------------------------------------------------------------------
x1 0.2424 0.139 1.739 0.098 -0.049 0.534
x2 0.2360 0.149 1.587 0.129 -0.075 0.547
x3 -0.0618 0.145 -0.427 0.674 -0.365 0.241
const 1.5704 0.633 2.481 0.023 0.245 2.895
==============================================================================
Omnibus: 6.904 Durbin-Watson: 1.905
Prob(Omnibus): 0.032 Jarque-Bera (JB): 4.708
Skew: -0.849 Prob(JB): 0.0950
Kurtosis: 4.426 Cond. No. 38.6
pandas
提供了一种运行OLS的便捷方法,如以下答案所示:
发布于 2015-10-28 10:02:22
只是为了澄清,你给出的例子是多元线性回归,而不是多元线性回归引用。Difference
简单线性回归(
)是指单个标量预测变量x和单个标量响应变量y的最简单情况。扩展到多个和/或向量值预测变量(用大写X表示)称为多元线性回归,也称为多变量线性回归。几乎所有现实世界的回归模型都涉及多个预测器,线性回归的基本描述通常是用多元回归模型来表述的。但是,请注意,在这些情况下,响应变量y仍然是标量。另一个术语多元线性回归指的是y是向量的情况,即与一般线性回归相同。多元线性回归和多元线性回归之间的区别应该得到重视,因为它在文献中造成了许多混淆和误解。
简而言之:
(另一个source。)
https://stackoverflow.com/questions/11479064
复制相似问题