我对下面的代码有疑问,我试图理解:
x = rnorm(50)
y = 3 * x +rnorm(50)
df_eq <- data.frame(x, y)
model1 <- lm(y ~ x - 1)
model2 <- lm(df_eq[,2] ~ df_eq[,1] - 1)
xpred <- data.frame(x = seq(from = -2, to = 2, length = 5))
ypred <- predict(object = model1, newdata = xpred)
ypred2 <- predict(object = model2, newdata = xpred)
在上面的代码中,我期望 ypred 和 ypred2 产生相同的结果。我在 ypred(5 个预测的“yhat”值)中得到了我期望的答案,但是 ypred2 有一个错误,并且没有产生预期的结果。
谁能解释一下为什么在下面的代码中 ypred2 会产生错误(至少在 R 2.15.2 中)?
我认为,代码中唯一的关键区别在于“model1”和“model2”的生成方式。
我的理解是,在 predict 函数中,newdata 根据存储在 model1 和 model2 对象中的模型生成我们想要预测“yhat”值的新观察集。
有什么根本不同
模型1 <- lm(y ~ x - 1)
和
模型2 <- lm(df_eq[,2] ~ df_eq[,1] - 1) ?
更重要的是,如果答案是直截了当的,有人可以解释他们是如何找出与 R 的“幕后”不同的吗?很高兴知道我将来如何理解这种问题。我试过查看上面代码中对象的结构,但离答案还很近。
先感谢您。