R语言lm()函数回归系数计算逻辑及手动计算结果差异原因咨询
差异原因说明
- 核心原因:手动计算公式参数对应错误
一元线性回归Y ~ X的斜率估计值计算公式为:
β̂₁ = [nΣ(XᵢYᵢ) - ΣXᵢΣYᵢ] / [nΣ(Xᵢ²) - (ΣXᵢ)²]
其中Y为因变量,X为自变量。你运行的回归是lm(X1~X2, DF),对应因变量Y=X1,自变量X=X2,因此公式分母需要使用自变量X2的平方和相关项,你误将分母写为了因变量X1的对应项,直接导致计算结果和lm()输出不一致。
你可以运行修正后的手动计算代码验证,结果和lm()输出的斜率完全匹配:
# 修正后手动计算斜率:分母替换为X2的对应统计量 (sum(DF[,1]*DF[,2])*nrow(DF) - sum(DF[,1])*sum(DF[,2])) / (nrow(DF) * sum(DF[,2]^2) - (sum(DF[,2])^2))
- 次要潜在原因:浮点运算精度误差
如果排除公式书写错误的场景,极小的数值差异通常来自计算机浮点运算的精度限制,属于正常现象,一般不会影响统计推断结论。
内容的提问来源于stack exchange,提问作者Brian Smith
相关产品推荐
相关产品推荐

