生存分析中如何处理不可逆矩阵

时间:2018-12-04 05:46:35

标签: python survival-analysis cox-regression lifelines

我是生存分析的新手。我尝试使用CoxPHFitter,但遇到此错误。 numpy.linalg.linalg.LinAlgError: Matrix is singular.

遇到此错误后,我知道我的一列中有不可逆矩阵。

那我现在该怎么办?我不能使用该列吗?如果是的话,那篇专栏文章我能得出什么结论?

完整堆栈跟踪:

  

回溯(最近通话最近):     在第79行的文件“ surv_model.py”中       cph.fit(X,'T',event_col ='label')     适合的文件“ /usr/local/lib/python2.7/dist-packages/lifelines/fitters/coxph_fitter.py”,第165行       step_size = step_size)     _newton_rhaphson中的第253行的“ /usr/local/lib/python2.7/dist-packages/lifelines/fitters/coxph_fitter.py”文件       inv_h_dot_g_T = spsolve(-h,g.T,sym_pos = True)     解决文件“ /usr/local/lib/python2.7/dist-packages/scipy/linalg/basic.py”,第251行       _solve_check(n,信息)     _solve_check中的文件“ /usr/local/lib/python2.7/dist-packages/scipy/linalg/basic.py”,第31行       引发LinAlgError('Matrix is singular。')   numpy.linalg.linalg.LinAlgError:矩阵是奇数。

我正在使用python lifelines

1 个答案:

答案 0 :(得分:0)

您可以尝试使用矩阵的Moore-Penrose inverse,该矩阵一直存在。但是请注意,在不可逆矩阵的情况下,这仅是最优解的最小二乘方。

重新考虑您的问题,注释是正确的:添加一个正则化参数。这实际上似乎是一个已知问题:https://github.com/sebp/scikit-survival/issues/28#issuecomment-370918386