我正在使用包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复制并粘贴其代码,它就不会。我该如何解决这个问题?
答案 0 :(得分:2)
可以通过
提取AICextractAIC.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"))
您将获得正在寻找的值的副本