首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何修复coxph函数中的“迭代次数耗尽,没有收敛或更多的系数可能是无穷的”?

如何修复coxph函数中的“迭代次数耗尽,没有收敛或更多的系数可能是无穷的”?
EN

Stack Overflow用户
提问于 2019-06-18 10:11:18
回答 1查看 820关注 0票数 1

我想写代码来计算一个数据集使用coxph的危险率。该数据有5个变量,其中2个用于Surv(),2个用作协变量。现在我可以编写函数,它可以在输入dataname之后简单地计算两个协变量的危险率。然而,当我想对3个协变量使用相同的函数来计算风险比时,程序会说“迭代次数用完了,没有收敛,或者更多的系数可能是无限的”,结果包含了所有5个变量作为协变量(应该是3个)。这是我的代码,有人能改正吗?谢谢!

代码语言:javascript
复制
library(KMsurv)
library(survival)
data(larynx)
larynx2 = larynx[,c(2,5,1,3,4)]
larynx2$stage = as.factor(larynx2$stage)
mod = function(dataname){
    fit = coxph(Surv(dataname[,1],dataname[,2]) ~ ., data = dataname, ties = "breslow")
    return(list(result = summary(fit)))
}
mod(larynx2)
EN

回答 1

Stack Overflow用户

发布于 2019-06-18 10:54:45

这个怎么样?由于公式中的列名有效,因此我们使用列名动态构建公式:

代码语言:javascript
复制
mod = function(dataname) {
    form = as.formula(sprintf("Surv(%s, %s) ~ .", names(dataname)[1], names(dataname)[2]))
    fit = coxph(form, data = dataname, ties = "breslow")
    return(list(result = summary(fit)))
}

mod(larynx2)
# $result
# Call:
# coxph(formula = form, data = dataname, ties = "breslow")
# 
#   n= 90, number of events= 50 
# 
#            coef exp(coef) se(coef)      z Pr(>|z|)    
# stage2  0.15078   1.16275  0.46459  0.325   0.7455    
# stage3  0.64090   1.89820  0.35616  1.799   0.0719 .  
# stage4  1.72100   5.59012  0.43660  3.942 8.09e-05 ***
# age     0.01855   1.01872  0.01432  1.295   0.1954    
# diagyr -0.01923   0.98096  0.07655 -0.251   0.8017    
# ---
# Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# 
#        exp(coef) exp(-coef) lower .95 upper .95
# stage2     1.163     0.8600    0.4678     2.890
# stage3     1.898     0.5268    0.9444     3.815
# stage4     5.590     0.1789    2.3757    13.154
# age        1.019     0.9816    0.9905     1.048
# diagyr     0.981     1.0194    0.8443     1.140
# 
# Concordance= 0.676  (se = 0.039 )
# Rsquare= 0.182   (max possible= 0.988 )
# Likelihood ratio test= 18.13  on 5 df,   p=0.003
# Wald test            = 20.87  on 5 df,   p=9e-04
# Score (logrank) test = 24.4  on 5 df,   p=2e-04
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56640913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档