【问题标题】:R: GLM function error with simulated dataR:模拟数据的 GLM 函数错误
【发布时间】:2023-03-27 07:29:02
【问题描述】:

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

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) 进行了检查,并确认不存在空值。谁能为此提出解决方案或指出我做错了什么?

提前致谢。

【问题讨论】:

    标签: r linear-regression cross-validation polynomial-math leave-one-out


    【解决方案1】:

    对于glm(),您可以从环境中获取xy,但对于cv.glm,它无法访问这些对象,因为它在另一个环境下运行。也许检查这个postthis 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
    

    【讨论】:

      猜你喜欢
      • 2020-05-23
      • 1970-01-01
      • 1970-01-01
      • 2020-09-03
      • 2021-07-12
      • 1970-01-01
      • 2015-09-20
      • 2012-06-07
      相关资源
      最近更新 更多