指定数据框时未找到数据框外部的 GLM 预测器

GLM predictor external to data frame is not found when data frame is specified

我在使用 MASS 包构建 glm.nb 对象时遇到了问题(尽管我在使用常规 GLM 时也遇到了同样的问题)。公式中的响应和大部分预测变量是 data.daily 中的列,但 cb 是使用 dlnm 包计算的交叉基础对象。

我对glm()的理解是,首先在data指定的对象的上下文中搜索公式组件,然后在公式所在的环境中搜索公式(glm.formula) 和 cb 在同一个环境中,但是 glm() 报告找不到 cb。这是怎么回事?

Browse[1]> glm.obj = glm.nb(glm.formula, data = data.daily)
Error during wrapup: object 'cb' not found

Browse[1]> environment(glm.formula)
NULL

Browse[1]> environment(cb)
NULL

Browse[1]> glm.formula
[1] "count_admitted ~ offset(log(pop)) + nowork + cb"

Browse[1]> ls()
[1] "cb"          "data.daily"  "glm.formula" "glm.list"    "pred.list"

我唯一能想到的是我在循环中调用 glm.nb(),而 cb 是在循环开始之前计算的,但我对 R 中范围的理解是大括号不会创建新的作用域——只有函数。

我认为您不能将外部向量与指定为同一模型中的数据的 data.frames 结合起来。尝试:

 glm.nb(glm.formula, data = cbind(cb = cb, data.daily))

这会将列附加到 data.frame。