线性方程( y = mx + b)有两个参数必须根据所提供的 X和
Y数据估算出来,它们是斜率( m)和 y 轴截距(
b)。一旦估算出这两个参数,就可以将观测值输入线性方程,并观察方程所生成的 Y预测值。
要使用最小方差法估算出
m和 b参数,就要找到 m 和 b 的估计值,使它们对于所有的 X值得到的
Y值的观测值和预测值最小。观测值和预测值之差称为误差( y i- (mx i+ b)
),并且,如果对每个误差值都求平方,然后求这些残差的和,其结果是一个被称为
预测平方差的数。使用最小方差法来确定最吻合的直线涉及寻找使预测方差最小的 m和 b的估计值。
可以用两种基本方法来找到满足最小方差法的估计值 m和 b。第一种方法,可以使用数值搜索过程设定不同的
m和 b值并对它们求值,最终决定产生最小方差的估计值。第二种方法是使用微积分找到用于估算 m和 b
的方程。我不打算深入讨论推导出这些方程所涉及的微积分,但我确实在 SimpleLinearRegression 类中使用了这些分析方程,以找到
m和 b 的最小平方估计值(请参阅 SimpleLinearRegression 类中的 getSlope() 和
getYIntercept 方法)。
可以使用统计决策过程来否决“直线与数据吻合”这个备择假设。这个过程基于对 T 统计值的计算,使用概率函数求得随机大的观测值的概率。正如第 1
部分所提到的, SimpleLinearRegression 类生成了为数众多的汇总值,其中一个重要的汇总值是 T
统计值,它可以用来衡量线性方程与数据的吻合程度。如果吻合良好,则 T 统计值往往是一个较大的值;如果 T
值很小,就应该用一个缺省模型代替您的线性方程,该模型假定 Y值的平均值是最佳预测值(因为一组值的平均值通常可以是下一个观测值的有用的预测值)。
要测试 T 统计值是否大到可以不用 Y值的平均值作为最佳预测值,需要计算随机获得 T
统计值的概率。如果概率很低,那就可以不采用平均值是最佳预测值这一无效假设,并且相应地可以确信简单线性模型是与数据良好吻合的。(有关计算 T
统计值概率的更多信息,请参阅第 1 部分。)
我将 Student T 和 Fisher
F 函数移植到了 PHP。我对 API 作了一点改动,以便符合 Java 命名风格,并将所有函数嵌入到名为 Distribution
的类中。该实现的一个很棒的功能是 doCommonMath 方法,这个库中的所有函数都重用了它。我没有花费力气去实现的其它测试(正态测试和卡方测试)也都使用
doCommonMath 方法。