R:模拟数据的 GLM 函数错误

R: GLM function error with simulated data

我有两个模拟数据向量如下:

x = rnorm(1000, mean  = 0, sd = 1)

eps = rnorm(1000, mean = 0, sd = sqrt(0.25))

我正在尝试使用启动库的 glmcv.glm 函数来拟合线性回归模型和多元线性回归模型,并使用留一法交叉验证或 k 折交叉验证.我使用的错误代码如下:

> glm.fit=glm(y~x)
> cv.err=cv.glm(x, glm.fit)
Error in if ((K > n) || (K <= 1)) stop("'K' outside allowable range") : 
  missing value where TRUE/FALSE needed

我确实使用 is.na(x) 检查并确认不存在空值。谁能为此提出解决方案或指出我做错了什么?

提前致谢。

对于glm(),您可以从环境中获取xy,但是对于cv.glm,它无法访问这些对象,因为它是运行 在另一个环境下。也许检查这个 or this book chapter

如果我运行你的代码我得到同样的错误:

library(boot)
set.seed(111)
x = rnorm(1000, mean  = 0, sd = 1)
y = rnorm(1000, mean = 0, sd = sqrt(0.25))
glm.fit=glm(y~x)
cv.err=cv.glm(x, glm.fit)
Error in if ((K > n) || (K <= 1)) stop("'K' outside allowable range") : 
  missing value where TRUE/FALSE needed

如果我将它们放入 data.frame 中,它将起作用:

da = data.frame(x=x,y=y)
glm.fit=glm(y~x)
cv.err=cv.glm(da, glm.fit,K=5)
cv.err$delta
[1] 0.2428287 0.2426424