二元线性拟合函数
Excel 内用的 LINEST 函数就是线性拟合函数
举例:  解释:
LINEST(K22:K26,J22:J26^{1,2},TRUE,TRUE)
Office官方:本文介绍 Microsoft Excel 中 LINEST 函数的公式语法和用法
这是一个线性拟合函数,此函数有四个参数:
首参数K22:K26是因变量(也就是函数值),必须有,其它三个都可以省略
第二参数是自变量,根据自变量组数的多少,确定是几元回归,
这里J22:J26^{1,2},就是J22:J26^1及J22:J26^2,也就是J22:J26的一次方和二次方,组成了两组自变量,这样得到的就是二元回归,
第三参数和第四参数分别有TRUE、FALSE和省略,不同选择有不同的结果
用途:
LINEST 函数可通过使用最小二乘法计算与现有数据最佳拟合的直线,
来计算某直线的统计值,然后返回描述此直线的数组。
也可以将 LINEST 与其他函数结合使用来计算未知参数中其他类型的线性模型的统计值,
包括多项式、对数、指数和幂级数。 因为此函数返回数值数组,所以它必须以数组公式的形式输入。
PHP解决方案: CSDN我的资源
实践:
$x = [
[$temp['pjhsl'][0],pow($temp['pjhsl'][0],2)],
[$temp['pjhsl'][1],pow($temp['pjhsl'][1],2)],
[$temp['pjhsl'][2],pow($temp['pjhsl'][2],2)],
[$temp['pjhsl'][3],pow($temp['pjhsl'][3],2)],
[$temp['pjhsl'][4],pow($temp['pjhsl'][4],2)]
];
$y = [
[$temp['gmd'][0]],
[$temp['gmd'][1]],
[$temp['gmd'][2]],
[$temp['gmd'][3]],
[$temp['gmd'][4]]
];
$reg = new Regression();
$reg->setX(new Matrix($x));
$reg->setY(new Matrix($y));
$reg->exec();
$reg_ressult=$reg->getCoefficients();
$values=$reg_ressult->getData();
$c = $values[0][0];
$b = $values[1][0];
$a = $values[2][0];
|