【问题标题】:extract AIC from coxme object (R)从 coxme 对象中提取 AIC (R)
【发布时间】:2013-06-24 11:16:30
【问题描述】:

我正在使用包 coxme,我想从模型中提取 AIC,以便选择最好的。

1) 我没有找到如何直接执行此操作,我认为如果不更改函数 coxme() 的代码,这是不可能的,但我很高兴错了,如果我错了,请告诉我!

2) 我用命令查看了函数的代码:

coxme:::print.coxme

为了向股票 AIC 添加一个变量并查看代码,但如果我将其称为“coxme2”(我只是在开头添加 coxme2

colnames<-(*tmp*, value = c("NULL", "Integrated", "Fitted" 中的错误: 'dimnames' [2] 的长度不等于数组范围

总而言之,coxme 函数运行良好,但如果我只是复制并粘贴它的代码,它就不行。我该如何解决这个问题?

【问题讨论】:

    标签: r mixed-models cox-regression


    【解决方案1】:

    AIC可以通过

    extractAIC.coxme <- function(x){
      loglik <- x$loglik + c(0, 0, x$penalty)
      chi1 <- 2*diff(loglik[1:2]) 
      chi2 <- 2*diff(loglik[c(1,3)])
      c(chi1 - 2*x$df[1], chi2 - 2*x$df[2])
    }
    
    fit <- coxme(Surv(time, status) ~ age + sex + (1|ph.ecog), lung)
    extractAIC(fit)
    

    见 print.coxme 函数https://github.com/cran/coxme/blob/master/R/print.coxme.R

    【讨论】:

      【解决方案2】:

      你试过getAnywhere(print.coxme)吗?它为您提供了在 R 中复制和修改函数所需的所有代码。

      编辑

      随便写

      copyOfAIC <<- temp
      

      低于

      dimnames(temp) <- list(c("Integrated loglik", " Penalized loglik"), 
                                 c("Chisq", "df", "p", "AIC", "BIC"))
      

      你会得到一份你正在寻找的值的副本

      【讨论】:

      • 感谢您的回答,但我认为此代码与我使用 print.coxme 的代码不太相关。或者也许我不太了解它,但我不知道如何解决我的问题......
      • 事实上,这是允许您修改功能的完整代码。有了它你可以创建一个新函数coxme2,但是有了这个你不会有任何错误,因为它不使用来自 coxme 包的隐藏函数和对象
      • 抱歉,我编辑了我的答案,以便指出您要查找的功能。但其实原理是一样的
      • 再次感谢,但仍然存在问题。 ^^' 其实和 print.coxme 是一样的: 使用函数报同样的错误...
      • 我已经运行了这个例子,我已经应用了新功能,它对我有用。试试this
      猜你喜欢
      • 1970-01-01
      • 2020-01-01
      • 1970-01-01
      • 2017-04-16
      • 1970-01-01
      • 2019-05-29
      • 2021-01-19
      • 1970-01-01
      • 2020-09-06
      相关资源
      最近更新 更多