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

How to deal with non invertible matrix in survival analysis

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

经历这个错误后,我才知道我的一个专栏有一个不可逆矩阵。

那我现在该怎么办?我不能使用该列吗?如果是,我可以从该专栏得出什么结论?

完整堆栈跟踪:

Traceback (most recent call last): File "surv_model.py", line 79, in cph.fit(X, 'T', event_col='label') File "/usr/local/lib/python2.7/dist-packages/lifelines/fitters/coxph_fitter.py", line 165, in fit step_size=step_size) File "/usr/local/lib/python2.7/dist-packages/lifelines/fitters/coxph_fitter.py", line 253, in _newton_rhaphson inv_h_dot_g_T = spsolve(-h, g.T, sym_pos=True) File "/usr/local/lib/python2.7/dist-packages/scipy/linalg/basic.py", line 251, in solve _solve_check(n, info) File "/usr/local/lib/python2.7/dist-packages/scipy/linalg/basic.py", line 31, in _solve_check raise LinAlgError('Matrix is singular.') numpy.linalg.linalg.LinAlgError: Matrix is singular.

我正在使用 python lifelines

您可以尝试使用矩阵的 Moore-Penrose inverse,它始终存在。但请注意,在不可逆矩阵的情况下,这只是对最优解的最小二乘拟合。

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