`rsq`包中的二项式glm:错误:找不到对象

3
每当我在使用任何rsq包函数(例如:用于计算部分相关系数的pcor;用于计算R平方的rsqrsq.partial)时,对于使用双列符号的二项式glm模型,都会出现错误。虽然该模型实际上是正确的,拟合也非常完美,没有数据缺失。
有什么办法可以解决吗?
可重现的示例:
require(rsq)
data(esoph)
model1 <- glm(cbind(ncases, ncontrols) ~ agegp + tobgp * alcgp,
              data = esoph, family = binomial)

pcor(model1)

cbind(ncases, ncontrols) 中出现错误:未找到“ncases”对象

rsq(model1)

在cbind(ncases, ncontrols)中出现错误:未找到'ncases'对象

rsq.partial(model1)

cbind(ncases, ncontrols) 中出现错误: 找不到对象'ncases'

2个回答

3

在应用模型之前,您必须使用attach(esoph)。例如:

data(esoph)


model1 <- glm(cbind(ncases, ncontrols) ~ agegp + tobgp * alcgp,
              data = esoph, family = binomial)

attach(esoph)
pcor(model1)
# $adjustment
#[1] FALSE
#$variable
#[1] "agegp"       "tobgp"       "alcgp"       "tobgp:alcgp"
#$partial.cor
#[1] 0.8092124 0.0000000 0.0000000 0.3815876

#Warning message:
#In (nLevels > 1) & (varcls == "factor") :
#longer object length is not a multiple of shorter object length

rsq(model1)
# [1] 0.826124

rsq.partial(model1)
#$adjustment
#[1] FALSE
#$variable
#[1] "agegp"       "tobgp"       "alcgp"       "tobgp:alcgp"
#$partial.rsq
#[1]  6.548247e-01 -6.661338e-16  0.000000e+00  1.456091e-01

detach(esoph)

是的,我刚刚自己找到了!虽然不是最干净的解决方案(attach 是不好的做法),但是能用。我稍微改进了你的答案,以减少不规范之处 :-) - undefined

1
提前进行 cbind 操作是有效的。
esoph$ncases.ncontrols <- with(esoph, cbind(ncases, ncontrols))
glm(ncases.ncontrols ~ agegp + tobgp * alcgp, data=esoph, family=binomial)

虽然在pcor()中有一个警告。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接