【问题标题】:Binomial glm in `rsq` package: error: object not found`rsq` 包中的二项式 glm:错误:找不到对象
【发布时间】:2020-02-28 09:12:53
【问题描述】:

似乎每当我在使用两列符号的二项式 glm 上使用任何 rsq 包函数(pcor 用于偏相关;rsqrsq.partial 用于 R 平方)时,我得到一个错误 - 见下文。该模型实际上是正确的,拟合完美,没有数据丢失。

有什么我可以做的吗?

可重现的例子:

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”

【问题讨论】:

    标签: r


    【解决方案1】:

    您必须在应用模型之前使用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 是不好的做法),但可以。我稍微改进了你的答案,以便减少脏度:-)
    【解决方案2】:

    cbinding 预先工作。

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

    pcor() 中出现警告。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-07
      • 2015-07-19
      • 2012-11-02
      • 1970-01-01
      • 1970-01-01
      • 2013-05-21
      相关资源
      最近更新 更多