ESSAY / NOTE
多元线性回归分析(multiple regression)原理及举例
1. 与简单线性回归区别(simple linear regression)
多个自变量(x)
2. 多元回归模型
y=β0+β1x1+β2x2+ ... +βpxp+ε
其中:β0,β1,β2... βp是参数
ε是误差值
3. 多元回归方程
E(y)=β0+β1x1+β2x2+ ... +βpxp
4. 估计多元回归方程:
y_hat=b0+b1x1+b2x2+ ... +bpxp
一个样本被用来计算β0,β1,β2... βp的点估计b0, b1, b2,..., bp
5. 估计流程 (与简单线性回归类似)
6. 估计方法
使平方和sum of squares最小
7. 例子
一家快递公司送货:X1: 运输里程 X2: 运输次数 Y:总运输时间
| Driving Assignment | X1=Miles Traveled | X2=Number of Deliveries | Y= Travel Time (Hours) |
| 1 | 100 | 4 | 9.3 |
| 2 | 50 | 3 | 4.8 |
| 3 | 100 | 4 | 8.9 |
| 4 | 100 | 2 | 6.5 |
| 5 | 50 | 2 | 4.2 |
| 6 | 80 | 2 | 6.2 |
| 7 | 75 | 3 | 7.4 |
| 8 | 65 | 4 | 6.0 |
| 9 | 90 | 3 | 7.6 |
| 10 | 90 | 2 | 6.1 |
- 描述参数含义
- 预测
- 如果自变量中有分类型变量(categorical data) , 如何处理?
| 英里数 | 次数 | 车型 | 时间 |
| 100 | 4 | 1 | 9.3 |
| 50 | 3 | 0 | 4.8 |
| 100 | 4 | 1 | 8.9 |
| 100 | 2 | 2 | 6.5 |
| 50 | 2 | 2 | 4.2 |
| 80 | 2 | 1 | 6.2 |
| 75 | 3 | 1 | 7.4 |
| 65 | 4 | 0 | 6 |
| 90 | 3 | 0 | 7.6 |
- 关于误差的分布
from numpy import genfromtxt
from sklearn import linear_model #使用sklearnlinear model模型
dataPath = r"Delivery.csv" #导入数据
deliveryData = genfromtxt(dataPath,delimiter=',') #csv文件分隔符是逗号 转化为numpy array矩阵格式
print "data"
print deliveryData
x= deliveryData[:,:-1] # 第一个:取所有行 第二个取倒数第一列 :是不包括 0-1列 提取前两列
y = deliveryData[:,-1] #取所有行和最后一列
print x
print y
lr = linear_model.LinearRegression()
lr.fit(x, y)
print lr
print("coefficients 系数:") #打印b0 b1
print lr.coef_
print("intercept 截面:") #截面
print lr.intercept_
xPredict = [102,6]
yPredict = lr.predict(xPredict)
print("predict:")
print yPredict
例子2利用python 对x值为连续数值和分类型数值(也就是车型这列数据)混合时实现建模和预测
其原理很简单 比如 三类车型 123 为1时候 是011 为2时候是010 为3时候是001 并且是三列数值 也就是 三个x
代码就是例子1如上一样
from numpy import genfromtxt from sklearn import linear_model datapath=r"Delivery_Dummy.csv" data = genfromtxt(datapath,delimiter=",") x = data[1:,:-1] y = data[1:,-1] print x print y mlr = linear_model.LinearRegression() mlr.fit(x, y) print mlr print "coef:" print mlr.coef_ #打印b0 b1 b2 ... b5 print "intercept" print mlr.intercept_ xPredict = [90,2,0,0,1] yPredict = mlr.predict(xPredict) print "predict:" print yPredictMultiLinearRegression python示例代码下载