预测拟合的残差是什么?

4
我了解当您生成线性模型时,可以像这样从拟合中提取残差:
# Model
model <- lm(y ~ x, data = coolstuff)

# Residuals
myresids <- model$residuals

我进一步了解到,您可以使用此模型根据第二个数据集(例如验证数据集)来预测值,方法如下:

mypreds <- predict(model, newdata = coolvalid)

我不太清楚如何找到预测的残差。 predict 函数并不能生成数据框或者表格,只能生成一组以名称为标识的数字列表。

请问在哪里可以找到预测的残差呢?


2
残差就是拟合值和实际值之间的差异。您可以使用减法来计算:coolvalid$y-mypreds - DanY
查看函数lm()的手册页面。有一个名为residuals()的函数直接返回残差。 - dcarlson
1
@DanY - 谢谢。我现在感觉很蠢。 :) - Karl Wolfschtagg
1
@dcarlson - residuals() 可以用于 lm() 的结果(我明白这一点),但不能用于 predict() 的输出(这是我想要的)。 - Karl Wolfschtagg
1个回答

4

正如DanY在评论中所指出的那样,残差就是观测值-预测值。下面是一个具有内置数据的简单示例。

# sample data
set.seed(1)
split_indicies <- sample(nrow(mtcars), nrow(mtcars)/2)
train <- mtcars[split_indicies,]
test <- mtcars[-split_indicies,]

# model
model <- lm(mpg ~ disp, data = train)

# residuals of prediction are actual - predicted
test$mpg - predict(model, data = test)
#> Pontiac Firebird   Hornet 4 Drive       Duster 360        Mazda RX4 
#>        9.8318659       -0.1503095        3.4749151        1.4901610 
#>    Mazda RX4 Wag      AMC Javelin        Merc 280C      Merc 450SLC 
#>       -0.1098390       -0.5448161       -5.2950183       -7.7129664 
#>         Fiat 128      Honda Civic   Ford Pantera L    Toyota Corona 
#>      -15.8775915      -11.7018628        0.5021011      -11.2626474 
#>         Merc 280       Volvo 142E   Toyota Corolla     Ferrari Dino 
#>        4.7049817        1.4746340        3.8075878       -8.5311955

此代码由 reprex包 (v2.0.1) 于2022-02-07创建


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