从线性回归函数lm中获取误差值

3

我有一个线性回归问题,解决方法如下:

m=lm(value ~ mean, data=d)

通过这个值,我可以得到R2和回归方程。

但是我想要得到标准误差(拟合误差)。我能看到这个值,但不知道如何获取并将其存储在数据框中。

我使用 summary(m) 来获取该值,结果如下:

Call:
lm(formula = value ~ mean, data = d)

Residuals:
    Min      1Q  Median      3Q     Max 
-25.000 -15.909  -2.124  14.596  44.697 

Coefficients:
              Estimate Std. Error t value Pr(>|t|)    
(Intercept)  2.500e+01  1.064e+00   23.49   <2e-16 ***
mean        -1.759e-06  1.536e+00    0.00        1    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1 

Residual standard error: 16.85 on 1298 degrees of freedom
Multiple R-squared: 1.01e-15,   Adjusted R-squared: -0.0007704 
F-statistic: 1.311e-12 on 1 and 1298 DF,  p-value: 1 

所以问题是:我怎样才能获取这些值?谢谢。
3个回答

9
函数 summary 只是返回一个 R 列表。
##Generate some dummy data
x = runif(10);y = runif(10)
m = summary(lm(y ~ x))

我们可以使用通常的列表语法来提取我们想要的内容。例如,
m[[4]]

返回一个模型适合的数据框。
R> m[[4]]
            Estimate Std. Error t value Pr(>|t|)
(Intercept)  0.44265     0.2443  1.8123   0.1075
x            0.07066     0.4460  0.1584   0.8781

m[[6]] 返回 残差标准误差

R> m[[6]]
[1] 0.2928

有一些方便的函数可用,例如coefficients(m)


我认为是这样,但你可能更适合评估。 - csgillespie
所以,假设我已经创建了误差函数,它是第一部分从0到a的总和加上第二部分从a到长度的总和。在总和中,我们有一些截距和斜率的函数。这个值应该是这个函数的结果吗?对吧? - ifreak
所以基本上我想要的是模型残差平方和。这是你给我的值吗?还是另一个值? - ifreak
1
您可以通过以下方式获取RSS:sum((fitted(lm(y~x)) - y)^2)或者m[[6]]^2*(n-1-p),其中n是样本大小,p是预测变量的数量。 - csgillespie
非常感谢,我认为通过求平方残差的和可以得到相同的结果。 - ifreak

3

使用resid(m)访问残差。

编辑:从评论中看来,您需要sum(resid(m) ^ 2)


我尝试了reside(m),结果得到了很多行,这是什么意思?我想要拟合误差。 - ifreak
我想要拟合误差。 基本上我想要的是误差值。例如线性回归通过最小化误差函数来工作。因此我需要这个误差函数的值。 - ifreak

0

提取残差标准差 'Sigma'

sigma(m)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接