我正在做一个smooth.spline()
拟合,然后进行适合的预测。我有问题,我的新数据有一些NAs。现在我正在尝试为预测也获得新手。但我没有得到它的工作。预测用于光滑的NA的新数据。样本
我已经编写了一些可重现的代码来说明我的问题。 我想要我的新数据和我的预测长度相同。例如,当使用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
例如NAS会无法正常工作:
> spl.pr <- predict(spl, x=x.new, na.action=na.exclude)
Error in double(n) : vector size cannot be NA
我希望我让我的问题可以理解。帮助将非常感激。谢谢
好的,我怀疑这一点。我不确定,因为在命令中使用'na.action = na.exclude'时没有收到错误信息。你的推荐方式很好,谢谢! (我提高了你的答案,不幸的是它没有公开展示,直到我获得了一定数量的徽章 - 我认为;编辑:它现在似乎工作了) – Katharina