【发布时间】:2019-08-08 06:29:06
【问题描述】:
我将我的数据集分成 2 个数据框:训练(有 830 行)和测试(200 行)。列名相同且顺序相同。
我建立了一个自然样条模型来预测单个变量水泥的强度。
当我尝试使用该模型对我的测试集进行预测时,我得到的不是预期的 200 个预测,而是 830 个预测。我不知道为什么会这样。我浏览了帮助页面和网络,但没有找到任何解决此问题的方法。
我检查了 test$cement 的尺寸,它确实只有 200 个条目。
这是我现在的代码:
library(tidyverse)
library(caret)
library(splines)
attach(train)
fit1 <- lm(strength~ns(cement, 4), data = train)
summary(fit1)
pred1 <- predict(fit1, newdata = data.frame(test$cement), se=T)
pred1
detach(train)
我也尝试过这些预测版本:
pred2 % predict(test$cement)
--> 这给了我错误,说它不理解 %>%
pred = predict.bSpline(fit1, newdata = test$cement, se=T)
和
pred = predict.bSpline2(fit1, newdata = test$cement, se=T)
--> 虽然我打开了 splines 和 splines2 库,但它们都告诉我他们找不到函数 predict.bSpline 或 predict.bSpline2。
predict.ns 似乎也不存在。
任何帮助将不胜感激。
【问题讨论】:
-
newdata应该与模型中的预测变量同名,因此请尝试newdata = data.frame(cement=test$cement)。请不要使用attach,因为这会导致很多问题。
标签: r