多元线性回归-确定3个独立变量的系数

时间:2018-11-30 17:58:02

标签: python-3.x statistics regression linear-regression

我正在努力寻找b1,b2和b3的系数。我的模型有3个自变量x1,x2和x3和一个因变量y。

x1,x2,x3,y
89,4,3.84,7
66,1,3.19,5.4
78,3,3.78,6.6
111,6,3.89,7.4
44,1,3.57,4.8
77,3,3.57,6.4
80,3,3.03,7
66,2,3.51,5.6
109,5,3.54,7.3
76,3,3.25,6.4

我想使用矩阵方法找出b1,b2和b3的系数。在本教程中,我遵循的b1值为0.0141,b2为0.383,b3为-0.607。

当我尝试对包含x1,x2,x3值的矩阵求逆时,我不确定如何实现上述值。

raise LinAlgError('Last 2 dimensions of the array must be square')
numpy.linalg.linalg.LinAlgError: Last 2 dimensions of the array must be square

请有人帮助我求解此矩阵,以便获得所需的值。

1 个答案:

答案 0 :(得分:0)

以矩阵形式,回归系数由

给出

enter image description here

function CalculatePolygonArea($coordinates) { $area = 0; $coordinatesCount = sizeof($coordinates); if ($coordinatesCount > 2) { for ($i = 0; $i < $coordinatesCount - 1; $i++) { $p1 = $coordinates[$i]; $p2 = $coordinates[$i + 1]; $p1Longitude = $p1[0]; $p2Longitude = $p2[0]; $p1Latitude = $p1[1]; $p2Latitude = $p2[1]; $area += ConvertToRadian($p2Longitude - $p1Longitude) * (2 + sin(ConvertToRadian($p1Latitude)) + sin(ConvertToRadian($p2Latitude))); } $area = $area * 6378137 * 6378137 / 2; } return abs(round(($area)); } function ConvertToRadian($input) { $output = $input * pi() / 180; return $output; } 是您的预测变量数据矩阵,而x是结果值的向量

在python(numpy)中,看起来像这样:

y

在数据上使用以下系数:

import numpy as np

b = np.dot(x.T, x)
b = np.linalg.inv(b)
b = np.dot(b, x.T)
b = np.dot(b, y)

这些值与预期的输出不匹配,这是因为所遵循的教程还必须对截距进行建模。为此,我们在数据矩阵中添加一列,如下所示:

0.0589514 , -0.25211869,  0.70097577

现在,我们获得了预期的回归系数(加上截距的附加值):

x.insert(loc=0, column='x0', value=np.ones(10))

    x0   x1  x2    x3
0  1.0   89   4  3.84
1  1.0   66   1  3.19
2  1.0   78   3  3.78
3  1.0  111   6  3.89
4  1.0   44   1  3.57
5  1.0   77   3  3.57
6  1.0   80   3  3.03
7  1.0   66   2  3.51
8  1.0  109   5  3.54
9  1.0   76   3  3.25