我在R中寻找一个函数来计算OLS回归残差的协方差矩阵。我无法发现cov()
函数在计算协方差矩阵时是否考虑了模型的自由度和模型中的数据点数量。
更新:我正在尝试做一个优化过程,最大限度地减少OLS回归的残差。通常,无偏OLS残差方差由以下公式给出:E(RSS/N−p-1(=σ²。其中RSS是残差平方和,N是观测值的数量,p是系数的数量。我想看看计算协方差矩阵是否需要这样的校正,如果需要,R中是否有函数可以这样做?
使用lm
函数运行回归后,可以将vcov()
函数与summary对象一起使用。
以下是使用mtcars
数据集的示例:
vcov(summary(lm(mpg ~ disp + wt + cyl + carb, data = mtcars)))
(Intercept) disp wt cyl carb
(Intercept) 8.55669203 0.0293259201 -2.08615285 -1.491482503 0.29243798
disp 0.02932592 0.0001528819 -0.00919016 -0.006308583 0.00142303
wt -2.08615285 -0.0091901600 1.12326190 0.137990642 -0.09283828
cyl -1.49148250 -0.0063085825 0.13799064 0.454163264 -0.10918226
carb 0.29243798 0.0014230298 -0.09283828 -0.109182256 0.12568429
这是另一种编写语法的方法:
model <- lm(mpg ~ disp + wt + cyl + carb, data = mtcars)
modelsum <- summary(model)
vcov(modelsum)