从 cox.print_summary() 中提取数据摘要

Extract the data summary from cox.print_summary()

我想要 print_summary 输出的前 6 行。我该怎么做?

我有 cox.print_summary() 的完整摘要。 cox.summary() 给出了数据框格式的列详细信息,但是索引摘要并没有给出数据集审查摘要

cph = CoxPHFitter()
cph.fit(self.data_train, duration_col='time', event_col='dead')
cph.print_summary()
'''<lifelines.CoxPHFitter: fitted with 6373 observations, 1974 censored>
      duration col = 'time'
         event col = 'dead'
number of subjects = 6373
  number of events = 4399
    log-likelihood = -34779.52
  time fit was run = 2019-05-09 06:28:06 UTC

---
                    coef  exp(coef)  se(coef)     z      p  -log2(p)  lower 0.95  upper 0.95
dzgroupCHF          0.49       1.64      0.06  8.19 <0.005     51.79        0.37        0.61
dzgroupCirrhosis    0.55       1.73      0.08  6.71 <0.005     35.63        0.39        0.71

等等

results = self.cph.summary
print(results.head())

这给出了 df 格式的变量详细信息。但我想要:

'''<lifelines.CoxPHFitter: fitted with 6373 observations, 1974 censored>
      duration col = 'time'
         event col = 'dead'
number of subjects = 6373
  number of events = 4399
    log-likelihood = -34779.52
  time fit was run = 2019-05-09 06:28:06 UTC

索引给出错误:

cph.print_summary()[0:9]

TypeError: 'NoneType' object is not subscriptable

其中大部分是可以直接访问的模型属性。查看代码,print_summary 看起来像:

        print(self)
        print("{} = '{}'".format(justify("duration col"), self.duration_col))

        if self.event_col:
            print("{} = '{}'".format(justify("event col"), self.event_col))
        if self.weights_col:
            print("{} = '{}'".format(justify("weights col"), self.weights_col))

        if self.cluster_col:
            print("{} = '{}'".format(justify("cluster col"), self.cluster_col))

        if self.robust or self.cluster_col:
            print("{} = {}".format(justify("robust variance"), True))

        if self.strata:
            print("{} = {}".format(justify("strata"), self.strata))

        if self.penalizer > 0:
            print("{} = {}".format(justify("penalizer"), self.penalizer))

        print("{} = {}".format(justify("number of subjects"), self._n_examples))
        print("{} = {}".format(justify("number of events"), self.event_observed.sum()))
        print("{} = {:.{prec}f}".format(justify("partial log-likelihood"), self._log_likelihood, prec=decimals))
        print("{} = {}".format(justify("time fit was run"), self._time_fit_was_called))

因此可以使用 self._log_likelihoodself._n_examples 等访问所需的值。

有一些未来的工作可能会使提取此数据更容易:https://github.com/CamDavidsonPilon/lifelines/issues/721#issuecomment-497180538