ESSAY / NOTE

多元线性回归分析(multiple regression)原理及举例

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示例代码下载