r预测函数返回太多的值

时间:2015-10-23 19:12:02

标签: r lm predict

我已经阅读了有关命名变量的其他帖子,并尝试实现答案,但仍然为我的新数据获取了太多的值,我希望运行现有模型。这是工作示例代码:

set.seed(123)
mydata <- data.frame("y"=rnorm(100,mean=0, sd = 1),"x"=c(1:100))

mylm <- lm(y ~ x, data=mydata)

# ok so mylm is a model on 100 points - lets look at it and the data
par(mfrow=c(2,2))
plot(mylm)
par(mfrow=c(1,1))
predvals <- predict(mylm, data=mydata)
plot(mydata$x,mydata$y)
lines(predvals)

这里没有惊喜 - 生成点的直线 - 长度为100个观测值。现在我生成20个具有完全相同名称的新数据,当我通过predict()运行新数据时,我希望得到20分,而我得到100.我错过了什么!让我疯狂......

newdata <- data.frame("y"=rnorm(20,mean=0, sd = 1), "x"=c(1:20))
predvals <- predict(mylm, data=newdata)
length(newdata$y)
length(predvals)    

# quick -not elegant - way to look at it:
plot(predvals)
lines(newdata$x,newdata$y)

我是否需要告诉predict()只使用20分或类似的东西?

1 个答案:

答案 0 :(得分:4)

您的问题出在predvals <- predict(mylm, data=newdata)

正确的电话是predict(mylm, newdata=newdata)。 R中的predict()函数采用命名参数newdata,而非data