我正在做一個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