指定数据框时未找到数据框外部的 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。
我在使用 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。