天天看点

多元回归分析(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. 估计流程 (与简单线性回归类似)

多元回归分析(multiple regression)及其应用

6. 估计方法

使sum of squares最小

多元回归分析(multiple regression)及其应用

运算与简单线性回归类似,涉及到线性代数和矩阵代数的运算

7. 例子

一家快递公司送货:X1: 运输里程 X2: 运输次数 Y:总运输时间
多元回归分析(multiple regression)及其应用

目的,求出b0, b1,…. bp:

y_hat=b0+b1x1+b2x2+ … +bpxp

Time = b0+ b1*Miles + b2 * Deliveries

Time = -0.869 + 0.0611 Miles + 0.923 Deliveries

8. 描述参数含义

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

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

9. 预测

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

Time = -0.869 +0.0611 102+ 0.923 6= 10.9 (小时)

10. 如果自变量中有分类型变量(categorical data) , 如何处理?

多元回归分析(multiple regression)及其应用

11. 关于误差的分布

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

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

所有ε的值是独立的

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

# -*- coding:utf-8 -*-
from numpy import genfromtxt
from sklearn import linear_model
# genfromtxt函数
#  genfromtxt函数创建数组表格数据
#  genfromtxt主要执行两个循环运算。第一个循环将文件的每一行转换成字符串序列。第二个循环将每个字符串序列转换为相应的数据类型。
#  genfromtxt能够考虑缺失的数据,但其他更快和更简单的函数像loadtxt不能考虑缺失值。
#  详细用法参考:https://docs.scipy.org/doc/numpy/reference/generated/numpy.genfromtxt.html
#  附加numpy.savetxt该函数能够将数据存储为 CSV 格式:https://docs.scipy.org/doc/numpy/reference/generated/numpy.savetxt.html

datapath=r"Delivery_Dummy.csv"
data = genfromtxt(datapath,delimiter=",")
#delimiter: the str used to separate data. 横纵坐标以 ',' 分割,因此给 delimiter 传入 ','。delimiter是区分横纵坐标的
# skip_header: the number of lines to skip at the beginning of the file. 这个参数是跳过表头信息的

x = data[:,:-]
y = data[:,-]
print x
print y

mlr = linear_model.LinearRegression()

mlr.fit(x, y)

print mlr
print "coef:"
print mlr.coef_
print "intercept"
print mlr.intercept_

xPredict =  [,,,,]
yPredict = mlr.predict(xPredict)

print "predict:"
print yPredict