多元线性回归的基本原理和基本计算过程与一元线性回归相同,但由于自变量个数多,计算相当麻烦,一般在实际中应用时都要借助统计软件。介绍多元线性回归的一些基本问题。但由于各个自变量的单位可能不一样,比如说一个消费水平的关系式中,工资水平、受教育程度、职业、地区、家庭负担等等因素都会影响到消费水平,而这些影响因素(自变量)的单位显然是不同的,因此自变量前系数的大小并不能说明该因素的重要程度,更简单地来说,同样工资收入,如果用元为单位就比用百元为单位所得的回归系数要小,但是工资水平对消费的影响程度并没有变,所以得想办法将各个自变量化到统一的单位上来。前面学到的标准分就有这个功能,具体到这里来说,就是将所有变量包括因变量都先转化为标准分,再进行线性回归,此时得到的回归系数就能反映对应自变量的重要程度。这时的回归方程称为标准回归方程,回归系数称为标准回归系数,表示如下:
输出结果:1. C++标准模板库从入门到精通
2.跟老菜鸟学C++
Zy= β1Z*1 + β2Z*2 + … + βkZ*k
多元线性方程,一般采用矩阵来表示,因此在求多元线性方程的最小化函数时,就需要对矩阵进行求导,这个求导过程,NG已经给出了,如下:
最终求出来的公式如下:
这个公式也叫正规方程,它需要求解矩阵,所以数据比较多时,就比较慢。下面来给出一个计算简单线性回归的矩阵求法,假如数据:
(1,6), (2,5),(3,7)和(4, 10)
计算代码如下:
import numpy as np
import matplotlib.pyplot as plt
input = np.array([
[1, 6],
[2, 5],
[3, 7],
[4, 10]
])
m = len(input)
X = np.array([np.ones(m), input[:, 0]]).T
y = np.array(input[:, 1]).reshape(-1, 1)
betaHat = np.linalg.inv(X.T.dot(X)).dot(X.T).dot(y)
print(betaHat)
plt.figure(1)
xx = np.linspace(0, 5, 2)
yy = np.array(betaHat[0] + betaHat[1] * xx)
plt.plot(xx, yy.T, color='b')
plt.scatter(input[:, 0], input[:, 1], color='r')
plt.show()
输出结果:
可见矩阵计算方法比较快,不需要迭代,一步就可以计算出来。