我已经阅读了有关命名变量的其他帖子,并尝试实现答案,但仍然为我想要运行现有模型的新数据获得太多值。这是工作示例代码:
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个点或类似的东西吗?
最佳答案
您的问题位于 predvals <- predict(mylm, data=newdata)
.
正确的电话是 predict(mylm, newdata=newdata)
。 predict()
R 中的函数采用命名参数 newdata
,不是data
.
关于r 预测函数返回太多值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33309792/