0

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

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

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

coxme:::print.coxme

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

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

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

4

2 回答 2

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

于 2016-01-04T13:04:14.457 回答
1

have you tried getAnywhere(print.coxme)? It gives you all the code necessary to copy and modify the function in R.

Edit

Just write

copyOfAIC <<- temp

below of

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

And you will get a copy of the values that you are looking for

于 2013-06-24T11:56:01.093 回答