【发布时间】:2017-11-24 15:15:13
【问题描述】:
我正在做一个smooth.spline() 拟合,然后进行拟合预测。我的问题是我的 newdata 有一些 NA。现在我也在尝试为预测获取 NA。但我没有让它工作。
我编写了一些可重现的代码来说明我的问题。
我希望我的 newdata 和我的预测长度相同。例如,当使用 predict 和 loess 模型时,我没有遇到这个问题。如果x 是NA,它会自动将NA 放到y。我看到这个问题是为了预测其他模型(lm,glm,..),但是通过设置na.action=na.exclude 得到的答案对我不起作用。
x <- c(1:5, NA, 7:12, NA, 15:19, 22:23)
y <- rnorm(length(x))
y[which(is.na(x))] <-NA
length(y) #20
x.new <- c(x[1:18],20,21,x[19:20])
length(x.new) #22
spl <- smooth.spline(x=x[!is.na(y)], y=y[!is.na(y)], spar=0.001)
spl.pr <- predict(spl, x=x.new[!is.na(x.new)], na.action=na.exclude)
length(spl.pr$y) #20
如果我不在 predict 中排除 NA,我的预测命令也将不起作用。 :
> spl.pr <- predict(spl, x=x.new, na.action=na.exclude)
Error in double(n) : vector size cannot be NA
我希望我的问题可以理解。帮助将不胜感激。谢谢
【问题讨论】:
标签: r regression predict spline smoothing