从coxme对象(R)中提取AIC

时间:2013-06-24 11:16:31

标签: r mixed-models cox-regression

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

1)我没有找到如何直接执行此操作,我认为如果不更改coxme()代码的功能,这是不可能的,但我会很高兴出错,让我知道如果我是!

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

coxme:::print.coxme

为了向库存AIC添加变量并查看代码,但如果我将其称为“coxme2'例如(我只是在开头添加coxme2< - 并尝试使用它(没有任何其他添加),我收到一个错误:

  

colnames<-中的错误(*tmp*,值= c(&#34; NULL&#34;,&#34;集成&#34;,&#34;适合&#34;:        长度&#39; dimnames&#39; [2]不等于数组范围

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

2 个答案:

答案 0 :(得分:2)

可以通过

提取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

答案 1 :(得分:1)

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

修改

只需写下

copyOfAIC <<- temp

以下

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

您将获得正在寻找的值的副本