r - 计算预测值时发出警告

标签 r lm predict

使用数据框

x
    Date      Val
    1/1/2012   7
    2/1/2012   9
    3/1/2012   20
    4/1/2012   24
    5/1/2012   50
a <- seq(as.Date(tail(x, 1)$Date), by="month", length=5)
a <- data.frame(a)
x.lm <- lm(x$Val ~ x$Date)

x.pre<-predict(x.lm, newdata=a)
我收到此错误:
Warning message:
'newdata' had 5 rows but variable(s) found have 29 rows 
我究竟做错了什么?
这是 dput 输出:
dput(x)
structure(list(Date = structure(c(14610, 14641, 14669, 14700, 
14730, 14761, 14791, 14822, 14853, 14883, 14914, 14944, 14975, 
15006, 15034, 15065, 15095, 15126, 15156, 15187, 15218, 15248, 
15279, 15309, 15340, 15371, 15400, 15431, 15461), class = "Date"), 
    Val = c(45, 51, 56, 56, 59, 60, 60, 60, 64, 65, 75, 73, 74, 
    80, 87, 91, 92, 96, 109, 108, 123, 129, 133, 143, 127, 127, 
    123, 121, 130)), .Names = c("Date", "Val"), row.names = c(NA, 
29L), class = "data.frame")

最佳答案

您的变量名称,存储在 x.lm 中型号,引用x数据框。 a 中没有同名变量,所以它将使用来自 x 的那 29 个再次,这可能不是您想要的,因此是警告。您可以执行以下操作以始终使用名为 Date 的非限定变量。在模型中:

a <- seq(as.Date(tail(x, 1)$Date), by="month", length=5)
a <- data.frame(Date = a)
x.lm <- lm(Val ~ Date, data=x)
x.pre<-predict(x.lm, newdata=a)

关于r - 计算预测值时发出警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11802943/

相关文章:

r - 如何创建 namespace 并将函数导出到其中?

r - 使用插入符列车() : Why is the direct prediction result worse than 10-fold cross validation?

r - glmer-使用二项式数据预测(结合计数数据)

r - 在 R 中使用 flexsurvreg 预测样本外

regex - 在R中的其他两个字符串之间提取一个字符串

java - R: JDBC() 在连接到 Teradata 时找不到 Java 驱动程序路径

objective-c - Xcode - OpenEars 语言模型文件错误

r - 如何使用 purrr 迭代 lm reg 中协变量和结果的每个组合

python pandas OLS.predict,正确的签名是什么?

r - 如何在函数内将 R data.table 列名与 cube(..., j = ,...) 一起使用?