使用 A2:C7 中的数据,基于标准加权最小二乘公式,您可以尝试:
=LINEST(B2:B7*C2:C7^0.5,IF({1,0},1,A2:A7)*C2:C7^0.5,0)
在 E2:F2 或任何 2x1 范围内使用 CTRL+SHIFT+ENTER 输入。这也返回 {1.1353,1.4412}。
对于 Rsquared,您可以输入:
=INDEX(LINEST((B2:B7-SUM(B2:B7*C2:C7)/SUM(C2:C7))*C2:C7^0.5,IF({1,0},1,A2:A7)*C2:C7^0.5,0,1),3,1)
公式说明
首先考虑使用 LINEST 在 X 上对 y 进行正态回归。如果 const = TRUE,则回归矩阵是由一列 1 和后面的回归列组成的增广矩阵,即 X'=(1,X)。如果 const = FALSE,则回归矩阵只是 X,因此在包含一列的情况下运行回归与在不包含一列并设置 const=TRUE 的情况下运行相同的估计值。
现在考虑加权最小二乘回归。回归现在是 WX'=(W1,WX) 上的 Wy,其中 W 是由权重的平方根组成的对角矩阵。由于没有一列存在,我们必须设置 const = FALSE 并在回归矩阵中使用两列。
R平方计算
在第三行和第五行得到的第一个公式的 LINEST 输出中将 stats 设置为 TRUE:
SSres = 59.76
SSreg(u) = 1461.24
SSTot(u) = 1521
Rsq(u) = 1 - 59.76/1521 = 0.9607
请注意,这些值是非居中版本 (u),因为 const=FALSE(有关详细信息,请参阅 LINEST 上的 MS 帮助。)对于居中版本 (c),我们需要减去加权平均值,如下所示:
SSTot(c) =SUMPRODUCT(C2:C7*(B2:B7-SUM(B2:B7*C2:C7)/SUM(C2:C7))^2) = 244.93
Rsq(c) = 1 - 59.76/244.93 = 0.756