これはかなり単純な手順です。データのサブセット (トレーニング セット) を使用して GLM モデルを再適合し、残りのデータで予測の精度を計算します。cv.glm
packageの関数を使用して、データ セット (つまり、トレーニング サブセットは長さ = n-1) に対して "leave-one-out" 戦略を実行しようとしていますboot
。
私は何か間違ったことをしていますか、それとも関数がNAを処理していないように見えるのは本当にそうですか? これは自分でプログラムするのはかなり簡単だと思いますが、他に間違いがある場合はアドバイスをいただければ幸いです。乾杯。
例:
require(boot)
#create data
n <- 100
x <- runif(n)
e <- rnorm(n, sd=100)
a <- 5
b <- 3
y <- exp(a + b*x) + e
plot(y ~ x)
plot(y ~ x, log="y")
#make some y's NaN
set.seed(1)
y[sample(n, 0.1*n)] <- NaN
#fit glm model
df <- data.frame(y=y, x=x)
glm.fit <- glm(y ~ x, data=df, family=gaussian(link="log"))
summary(glm.fit)
#calculate mean error of prediction (leave-one-out cross-validation)
cv.res <- cv.glm(df, glm.fit)
cv.res$delta
[1] NA NA