1. 与简单线性回归区别(simple linear regression)

          多个自变量(x)

2. 多元回归模型

     y=β0+βx12x2+ … +βpxp

    其中:β0,β1,β2… βp是参数

                 ε是误差值

3. 多元回归方程

     E(y)=β0+βx12x2+ … +βpxp

 

4. 估计多元回归方程:

     y_hat=b0+b1x1+b2x2+ … +bpxp

    一个样本被用来计算β0,β1,β2… βp的点估计b0, b1, b2,…, bp

5. 估计流程  (与简单线性回归类似)

Image

6. 估计方法

    使平方和sum of squares最小
Image [1]
运算与简单线性回归类似,涉及到线性代数和矩阵代数的运算

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

Time = b0+ b1*Miles + b2 * Deliveries

 

Time = -0.869 + 0.0611 Miles + 0.923 Deliveries

  1. 描述参数含义

b0: 平均每多运送一英里,运输时间延长0.0611 小时

b1: 平均每多一次运输,运输时间延长 0.923 小时

  1. 预测

如果一个运输任务是跑102英里,运输6次,预计多少小时?

Time = -0.869 +0.0611 *102+ 0.923 * 6

= 10.9 (小时)

  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
  1. 关于误差的分布

误差ε是一个随机变量,均值为0

ε的方差对于所有的自变量来说相等

所有ε的值是独立的

ε满足正态分布,并且通过β0+βx12x2+ … +βpxp反映y的期望值

 

小结:那么 X值 可以是连续数值型数据也可以是分类型数据(分类型数据需要转化多列0 1 格式) 最终y值决定了是分类的问题 还是 回归的问题

例子1利用python 对x值为连续数值实现建模和预测

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如上一样
20170618141730
0170618141954

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 yPredict

MultiLinearRegression python示例代码下载