使用原始数据作为输入时,R中的predict()函数返回的预测值是什么?


11

reg <- lm(y ~ x1 + x2, data=example)数据集上对表单进行回归后,我可以使用

predict(reg, example, interval="prediction", level=0.95)

我想知道在使用回归预测实际数据集时预测值实际上指的是什么。我不应该获得原始值吗?

Answers:


18

您正在使用的模型采用以下形式

ÿ一世=μ+β1个X1个一世+β2X2一世+ϵ一世 (1)

其中是一个误差项,假设其来自零均值正态分布。ϵ一世

您已拟合模型并获得了估计值:,和。 β 1 β 2μ^β^1个β^2

现在,如果将协变量值固定在和,则可以通过计算获得的预测值 X 2 ÿ X1个一世X2一世ÿ一世

ÿ一世=μ^+β^1个X1个一世+β^2X2一世 (2)

如果您的模型完全适合您的数据,那么预测值就是实际值。但是,通常,不能将值作为值的简单线性组合来精确获得(“ 所有模型都是错误的,但有些模型是有用的 ”)。换句话说,(1)中误差项的方差通常不为零。但是,基本上,如果残差(或其中的缩放比例)为“小” ,则模型(1)是一个很好的近似值。X ÿ - ÿ ÿXÿ一世-ÿ一世

编辑

在您的评论中,您询问了predict()实际执行的操作。这是一个简单的说明性示例。

    #generate a simple illustrative data set
> x <- runif(10)
> y <- 5 + 2.7 * x + rnorm(10, mean=0, sd=sqrt(0.15))
> 
>   #fit the model and store the coefficients
> regLin <- lm(y~x)
> coef <- coef(regLin)
> 
>   #use the predict() function
> y_star2 <- predict(regLin)
>   #use equation (2)
> y_star1 <- coef[1] + coef[2] * x
>   #compare
> cbind(y, y_star1, y_star2) 
          y  y_star1  y_star2
1  7.100217 6.813616 6.813616
2  6.186333 5.785473 5.785473
3  7.141016 7.492979 7.492979
4  5.121265 5.282990 5.282990
5  4.681924 4.849776 4.849776
6  6.102339 6.106751 6.106751
7  7.223215 7.156512 7.156512
8  5.158546 5.253380 5.253380
9  7.160201 7.198074 7.198074
10 5.555289 5.490793 5.490793

1
(+1)请注意,编写的模型(1)假定x1x2为连续预测变量,而不是绝对预测变量。(为什么不用表示拦截?)β0
chl

@ocram那么,当我使用相同的数据集和相应的回归方程时,预测函数到底在做什么?
2011年

@chl,这是否意味着预测不应该使用带有分类预测变量的glm(或glm.nb)模型?例如:dat <-data.frame(y = as.numeric(c(10,15,12,1,0,2,180,200,188,181,300,288)),p = as.factor(c(rep(“ yes”,6),rep (“ no”,6))),t = as.factor(c(rep(“ tp1”,3),rep(“ tp2”,3),rep(“ tp1”,3),rep(“ tp2” ,3))))需要(MASS)nb_fit < - glm.nb(Y〜p * T,数据= DAT)pre_fit < -预测(nb_fit,类型= “响应”)
阿伦

@chl:您是对的:我的不应与正态分布的均值混淆。绝对是一个更好的表示法。μβ0
ocram 2011年

1
@Arun不,这是指导变量选择的响应变量的类型,而不是(不一定)预测变量的度量范围。对于二进制结果,无论预测变量是什么,都可以使用逻辑回归(其中包括一个GLM)。我只是想强调一个事实,对于具有水平的分类预测变量,我们将具有回归系数。ķķ-1个
chl
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.