R-对残留术语感到困惑


34
  • 根均方误差
  • 残差平方和
  • 残留标准误差
  • 均方误差
  • 测试错误

我以为我曾经理解这些术语,但是我做统计问题的次数越多,我就越会感到困惑。我想要一些保证和具体的例子

我可以很容易地在网上找到这些方程式,但是我很难得到这些术语的“像我5岁时那样的解释”,因此我可以在脑海中清楚地看到它们之间的差异以及如何导致另一差异。

如果有人可以在下面使用此代码并指出如何计算这些术语中的每一个,我将不胜感激。R代码会很棒。

使用下面的示例:

summary(lm(mpg~hp, data=mtcars))

在R代码中向我展示如何查找:

rmse = ____
rss = ____
residual_standard_error = ______  # i know its there but need understanding
mean_squared_error = _______
test_error = ________

像我5岁时解释这些区别/相似之处的加分点。例:

rmse = squareroot(mss)

2
您能否给出听到“ 测试错误 ” 一词的上下文?因为一些所谓的“测试错误”,但我不是很确定这是你在找什么......(它出现在具有的情况下测试集训练集 --does任何声音很熟悉? )
史蒂夫·S

是的,我的理解是,这是在应用于测试集的训练集上生成的模型。测试误差建模为y-测试y或(建模y-测试y)^ 2或(建模y-测试y)^ 2 /// DF(或N?)或((建模y-测试y)^ 2 / N)^。5?
user3788557 2014年

Answers:


60

根据要求,我说明了使用mtcars数据的简单回归:

fit <- lm(mpg~hp, data=mtcars)
summary(fit)

Call:
lm(formula = mpg ~ hp, data = mtcars)

Residuals:
    Min      1Q  Median      3Q     Max 
-5.7121 -2.1122 -0.8854  1.5819  8.2360 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 30.09886    1.63392  18.421  < 2e-16 ***
hp          -0.06823    0.01012  -6.742 1.79e-07 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

Residual standard error: 3.863 on 30 degrees of freedom
Multiple R-squared:  0.6024,    Adjusted R-squared:  0.5892 
F-statistic: 45.46 on 1 and 30 DF,  p-value: 1.788e-07

均方误差(MSE)是残差的平方的平均值:

# Mean squared error
mse <- mean(residuals(fit)^2)
mse
[1] 13.98982

均方根误差(RMSE)就是MSE的平方根:

# Root mean squared error
rmse <- sqrt(mse)
rmse
[1] 3.740297

残差平方和(RSS)是残差平方的总和:

# Residual sum of squares
rss <- sum(residuals(fit)^2)
rss
[1] 447.6743

残留标准误差(RSE)是(RSS /自由度)的平方根:

# Residual standard error
rse <- sqrt( sum(residuals(fit)^2) / fit$df.residual ) 
rse
[1] 3.862962

相同的计算,因为我们之前已经计算过,所以简化了rss

sqrt(rss / fit$df.residual)
[1] 3.862962

回归(和其他预测分析技术)上下文中的术语“ 测试错误”通常是指根据与训练数据不同的测试数据计算测试统计量。

换句话说,您可以使用一部分数据(通常为80%的样本)来估计模型,然后使用保留样本来计算误差。再次说明一下,mtcars这次我使用了80%的示例

set.seed(42)
train <- sample.int(nrow(mtcars), 26)
train
 [1] 30 32  9 25 18 15 20  4 16 17 11 24 19  5 31 21 23  2  7  8 22 27 10 28  1 29

估计模型,然后使用保留数据进行预测:

fit <- lm(mpg~hp, data=mtcars[train, ])
pred <- predict(fit, newdata=mtcars[-train, ])
pred
 Datsun 710     Valiant  Merc 450SE  Merc 450SL Merc 450SLC   Fiat X1-9 
   24.08103    23.26331    18.15257    18.15257    18.15257    25.92090 

将原始数据和预测合并到一个数据帧中

test <- data.frame(actual=mtcars$mpg[-train], pred)
    test$error <- with(test, pred-actual)
test
            actual     pred      error
Datsun 710    22.8 24.08103  1.2810309
Valiant       18.1 23.26331  5.1633124
Merc 450SE    16.4 18.15257  1.7525717
Merc 450SL    17.3 18.15257  0.8525717
Merc 450SLC   15.2 18.15257  2.9525717
Fiat X1-9     27.3 25.92090 -1.3791024

现在以常规方式计算您的测试统计信息。我说明了MSE和RMSE:

test.mse <- with(test, mean(error^2))
test.mse
[1] 7.119804

test.rmse <- sqrt(test.mse)
test.rmse
[1] 2.668296

注意,该答案忽略了观测值的加权。


谢谢您的回答,它确实帮助了我。在进行研究时,Datacamp的模型拟合课程描述了与您的RMSE不同的公式。我在Google搜索后找到了页面。您为RMSE给出的公式具有直觉意义,并且易于理解。他们对RMSE的计算涉及分母的自由度。另外,如果我正确阅读了他们的文章,他们会说R称RMSE为残留标准误差,但从您的回答来看,它们是不同的评估指标。有什么想法吗?
道格·菲尔

22

原始海报要求回答“就像我5岁时一样”。假设您的学校老师邀请您和您的同学帮助猜测老师的桌子宽度。班上20名学生中的每一个都可以选择一种设备(标尺,刻度尺,卷尺或尺子),并且可以测量桌子10次。要求大家在设备上使用不同的起始位置,以避免一遍又一遍地读取相同的数字。然后必须从结束读数中减去起始读数,以最终进行一次宽度测量(您最近学习了如何进行这种类型的数学运算)。

全班总共进行了200次宽度测量(20名学生,每人10次测量)。观察结果移交给老师,后者将计算数字。从参考值中减去每个学生的观察值,将得到另外200个数字,称为偏差。老师分别平均每个学生的样本,得到20个平均值。从每个学生的平均值中减去每个学生的观察值,将导致与平均值相差200次,称为残差。如果为每个样本计算平均残差,您会发现它始终为零。相反,如果我们对每个残差求平方,对它们求平均值,最后撤消平方,我们将获得标准差。(顺便说一句,我们称最后一个计算位为平方根(想找到给定正方形的底边或边),因此整个操作通常简称为“均方根”;观测值的标准偏差等于残差的均方根。)

但是老师已经知道它的真实宽度,这是根据工厂设计,建造和检查的方式得出的。因此,可以将另外200个数字(称为错误)计算为观察值相对于真实宽度的偏差。一个平均误差,可以计算出每个学生的样本。同样,可以为观察结果计算出20个标准差的误差标准误差。更多20 个均方根误差值也可以计算。按出现顺序,三组20个值的关系为sqrt(me ^ 2 + se ^ 2)= rmse。基于rmse,教师可以判断哪个学生为表格宽度提供了最佳估计。此外,通过分别查看20个平均误差和20个标准误差值,教师可以指导每位学生如何提高自己的读数。

作为检查,老师从各自的平均误差中减去了每个误差,得出了另外200个数字,我们将其称为残差(这是不常做的)。如上所述,平均残留误差为零,因此残留误差标准偏差标准残留误差标准误差相同,实际上,均方根残留误差也是如此。(有关详情,请参见下文。)

现在,这是老师感兴趣的东西。我们可以将每个学生的平均水平与班级其余部分(总共20个平均水平)进行比较。就像我们在这些点值之前定义的一样:

  • m:(观测值的)平均值,
  • s:(观察值的)标准偏差
  • 我:(观察结果的)平均误差
  • se :(观察值的)标准误差
  • rmse:均方根误差(观察值)

我们现在也可以定义:

  • mm:均值
  • sm:平均值的标准偏差
  • mem:均值的均值误差
  • sem:平均值的标准误
  • rmsem:均方根误差

仅当说学生的班级是公正的,即,如果mem = 0,则sem = sm = rmsem;即,均值的标准误差,均值的标准偏差和均方根误差,只要均值的平均误差为零,则均值可以相同。

如果我们只采样了一个样本,即如果班上只有一个学生,则观测值的标准偏差可以用来估计均值的标准偏差,即sm ^ 2〜s ^ 2 / n,其中n = 10是样本大小(每位学生的阅读次数)。随着样本量的增加(n = 10,11,...;每位学生更多的阅读)和样本数量的增加(n'= 20,21,...;班上更多的学生),两者将更好地达成共识。(警告:无条件的“标准误差”通常是指均值的标准误差,而不是观测值的标准误差。)

以下是有关计算的一些详细信息。真实值表示为t。

定点操作:

  • 均值:MEAN(X)
  • 均方根:RMS(X)
  • 标准偏差:SD(X)= RMS(X-MEAN(X))

样品内设置:

  • 观测值(给定),X = {x_i},i = 1,2,...,n = 10。
  • 偏差:集合相对于固定点的差异。
  • 残差:观测值与平均值的偏差,R = Xm。
  • 错误:观测值与真实值的偏差,E = Xt。
  • 残留误差:误差与平均值的偏差,RE = E-MEAN(E)

样品内要点(请参见表1):

  • m:(观测值的)平均值,
  • s:(观察值的)标准偏差
  • 我:(观察结果的)平均误差
  • se:观测值的标准误差
  • rmse:均方根误差(观察值)

表格1

样本间(ENSEMBLE)设置:

  • 意思是M = {m_j},j = 1,2,...,n'= 20。
  • 均值的残差:均值与其均值的偏差,RM = M-mm。
  • 均值误差:均值与“真值”的偏差,EM = Mt。
  • 均值的残留误差:均值误差与其均值的偏差,REM = EM-MEAN(EM)

样本间(包含)点(请参见表2):

  • mm:均值
  • sm:平均值的标准偏差
  • mem:均值的均值误差
  • sem:标准误差(平均值)
  • rmsem:均方根误差

表2


0

我也觉得所有的条款都很混乱。我强烈认为有必要解释为什么我们有这么多指标。

这是我关于SSE和RMSE的注释:

第一个指标:平方误差总和(SSE)。其他名称,残差平方和(RSS),残差平方和(SSR)。

如果我们在优化社区中,那么SSE被广泛使用。这是因为它是优化的目标,而优化是

最小化β Xβ-ÿ2

Ë=Xβ-ÿË2=ËŤË

第二度量:均方根误差(RMSE)。其他名称,均方根偏差。

RMSE是

1个ñXβ-ÿ=1个ñËŤË

哪里 ñ

ÿ

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.