我正在尝试使用单个因变量 Y
和两个独立变量 x1
, x2
执行多变量线性回归 .
这只是一个带有附加因变量的OLS回归:
Y = b0 + b1 x1 + b2 x2
我还需要计算这种关系的相关系数 R^2
.
我测试的每个NPM包都只支持一个因变量,或者它们支持多变量回归,这与多变量回归不同 .
如果现有的包不存在,我可以尝试计算没有一个的系数 . 例如, slope
, intercept
和 R^2
对于单个 x
和 Y
集可以通过以下方式确定:
function linearRegression(y,x){
var lr = {};
var n = y.length;
var sum_x = 0;
var sum_y = 0;
var sum_xy = 0;
var sum_xx = 0;
var sum_yy = 0;
for (var i = 0; i < y.length; i++) {
sum_x += x[i];
sum_y += y[i];
sum_xy += (x[i]*y[i]);
sum_xx += (x[i]*x[i]);
sum_yy += (y[i]*y[i]);
}
lr['slope'] = (n * sum_xy - sum_x * sum_y) / (n*sum_xx - sum_x * sum_x);
lr['intercept'] = (sum_y - lr.slope * sum_x)/n;
lr['r2'] = Math.pow((n*sum_xy - sum_x*sum_y)/Math.sqrt((n*sum_xx-sum_x*sum_x)*(n*sum_yy-sum_y*sum_y)),2);
return lr;
}
但我不确定如何使其适应多个因变量 .