Excel中LINEST函数与OLS矩阵公式计算Beta的结果差异及修正
问题:Excel中OLS矩阵公式与LINEST结果不一致的修正方法

我正在Excel中计算金融数据的Beta值,超额股票收益与市场收益分别位于不同列,仅需求解回归线的斜率。采用的两种方法如下:
- 方法1:
=LINEST(I2:I254,K2:K254) - 方法2:
=(MMULT(MINVERSE(MMULT(TRANSPOSE(K2:K254), K2:K254)),MMULT(TRANSPOSE(K2:K254),I2:I254)))
第二种方法为普通最小二乘法(OLS)矩阵形式,但两种方法的结果存在细微差异,请问如何修改矩阵乘法公式以匹配Linest的输出结果?
修正方案
差异的核心原因是:LINEST默认会在回归模型中包含截距项,而你当前的矩阵公式是假设模型无截距(强制过原点),两者的回归设定不一致。要让矩阵公式匹配LINEST的结果,需要构造包含常数项的设计矩阵,具体修改如下:
修改后的矩阵公式
=INDEX(MMULT(MINVERSE(MMULT(TRANSPOSE(CHOOSE({1,2},1,K2:K254)), CHOOSE({1,2},1,K2:K254))), MMULT(TRANSPOSE(CHOOSE({1,2},1,K2:K254)), I2:I254)), 2)
公式说明
- 构造设计矩阵:
CHOOSE({1,2},1,K2:K254)会生成一个n×2的矩阵,第一列全为1(对应回归模型的截距项),第二列是市场收益数据,和LINEST默认使用的回归模型结构一致。 - OLS矩阵运算:
(X'X)^-1 X'y的计算逻辑会输出截距和斜率两个结果,用INDEX(...,2)提取第二个值,也就是我们需要的Beta(回归线斜率)。 - 验证逻辑:如果你不需要截距项,可将LINEST公式改为
=LINEST(I2:I254,K2:K254,FALSE),此时它会和你原来的矩阵公式结果完全一致,这也反向验证了差异的根源是截距项的设置。
内容的提问来源于stack exchange,提问作者Mihir Ravindra Patel
相关产品推荐
相关产品推荐

