comparison lifelines_tool/run_log.txt @ 2:dd5e65893cb8 draft default tip

add survival and collapsed life table outputs suggested by Wolfgang
author fubar
date Thu, 10 Aug 2023 22:52:45 +0000
parents
children
comparison
equal deleted inserted replaced
1:232b874046a7 2:dd5e65893cb8
1 ## Lifelines tool
2 Input data header = Index(['Unnamed: 0', 'week', 'arrest', 'fin', 'age', 'race', 'wexp', 'mar',
3 'paro', 'prio'],
4 dtype='object') time column = week status column = arrest
5 #### No grouping variable, so no log rank or other Kaplan-Meier statistical output is available
6 Survival table using time week and event arrest
7 removed observed censored entrance at_risk
8 event_at
9 0.0 0 0 0 432 432
10 1.0 1 1 0 0 432
11 2.0 1 1 0 0 431
12 3.0 1 1 0 0 430
13 4.0 1 1 0 0 429
14 5.0 1 1 0 0 428
15 6.0 1 1 0 0 427
16 7.0 1 1 0 0 426
17 8.0 5 5 0 0 425
18 9.0 2 2 0 0 420
19 10.0 1 1 0 0 418
20 11.0 2 2 0 0 417
21 12.0 2 2 0 0 415
22 13.0 1 1 0 0 413
23 14.0 3 3 0 0 412
24 15.0 2 2 0 0 409
25 16.0 2 2 0 0 407
26 17.0 3 3 0 0 405
27 18.0 3 3 0 0 402
28 19.0 2 2 0 0 399
29 20.0 5 5 0 0 397
30 21.0 2 2 0 0 392
31 22.0 1 1 0 0 390
32 23.0 1 1 0 0 389
33 24.0 4 4 0 0 388
34 25.0 3 3 0 0 384
35 26.0 3 3 0 0 381
36 27.0 2 2 0 0 378
37 28.0 2 2 0 0 376
38 30.0 2 2 0 0 374
39 31.0 1 1 0 0 372
40 32.0 2 2 0 0 371
41 33.0 2 2 0 0 369
42 34.0 2 2 0 0 367
43 35.0 4 4 0 0 365
44 36.0 3 3 0 0 361
45 37.0 4 4 0 0 358
46 38.0 1 1 0 0 354
47 39.0 2 2 0 0 353
48 40.0 4 4 0 0 351
49 42.0 2 2 0 0 347
50 43.0 4 4 0 0 345
51 44.0 2 2 0 0 341
52 45.0 2 2 0 0 339
53 46.0 4 4 0 0 337
54 47.0 1 1 0 0 333
55 48.0 2 2 0 0 332
56 49.0 5 5 0 0 330
57 50.0 3 3 0 0 325
58 52.0 322 4 318 0 322
59 Life table using time week and event arrest
60 removed observed censored at_risk
61 event_at
62 (-0.001, 13.844] 20 20 0 432
63 (13.844, 27.687] 36 36 0 412
64 (27.687, 41.531] 29 29 0 376
65 (41.531, 55.374] 347 29 318 347
66 ### Lifelines test of Proportional Hazards results with prio, age, race, paro, mar, fin as covariates on test
67 <lifelines.CoxPHFitter: fitted with 432 total observations, 318 right-censored observations>
68 duration col = 'week'
69 event col = 'arrest'
70 baseline estimation = breslow
71 number of observations = 432
72 number of events observed = 114
73 partial log-likelihood = -659.00
74 time fit was run = 2023-08-10 11:57:10 UTC
75
76 ---
77 coef exp(coef) se(coef) coef lower 95% coef upper 95% exp(coef) lower 95% exp(coef) upper 95%
78 covariate
79 prio 0.10 1.10 0.03 0.04 0.15 1.04 1.16
80 age -0.06 0.94 0.02 -0.10 -0.02 0.90 0.98
81 race 0.32 1.38 0.31 -0.28 0.92 0.75 2.52
82 paro -0.09 0.91 0.20 -0.47 0.29 0.62 1.34
83 mar -0.48 0.62 0.38 -1.22 0.25 0.30 1.29
84 fin -0.38 0.68 0.19 -0.75 -0.00 0.47 1.00
85
86 cmp to z p -log2(p)
87 covariate
88 prio 0.00 3.53 <0.005 11.26
89 age 0.00 -2.95 <0.005 8.28
90 race 0.00 1.04 0.30 1.75
91 paro 0.00 -0.46 0.65 0.63
92 mar 0.00 -1.28 0.20 2.32
93 fin 0.00 -1.98 0.05 4.40
94 ---
95 Concordance = 0.63
96 Partial AIC = 1330.00
97 log-likelihood ratio test = 32.77 on 6 df
98 -log2(p) of ll-ratio test = 16.39
99
100
101 Bootstrapping lowess lines. May take a moment...
102
103
104 Bootstrapping lowess lines. May take a moment...
105
106 The ``p_value_threshold`` is set at 0.01. Even under the null hypothesis of no violations, some
107 covariates will be below the threshold by chance. This is compounded when there are many covariates.
108 Similarly, when there are lots of observations, even minor deviances from the proportional hazard
109 assumption will be flagged.
110
111 With that in mind, it's best to use a combination of statistical tests and visual tests to determine
112 the most serious violations. Produce visual plots using ``check_assumptions(..., show_plots=True)``
113 and looking for non-constant lines. See link [A] below for a full example.
114
115 <lifelines.StatisticalResult: proportional_hazard_test>
116 null_distribution = chi squared
117 degrees_of_freedom = 1
118 model = <lifelines.CoxPHFitter: fitted with 432 total observations, 318 right-censored observations>
119 test_name = proportional_hazard_test
120
121 ---
122 test_statistic p -log2(p)
123 age km 6.99 0.01 6.93
124 rank 7.40 0.01 7.26
125 fin km 0.02 0.90 0.15
126 rank 0.01 0.91 0.13
127 mar km 1.64 0.20 2.32
128 rank 1.80 0.18 2.48
129 paro km 0.06 0.81 0.31
130 rank 0.07 0.79 0.34
131 prio km 0.92 0.34 1.57
132 rank 0.88 0.35 1.52
133 race km 1.70 0.19 2.38
134 rank 1.68 0.19 2.36
135
136
137 1. Variable 'age' failed the non-proportional test: p-value is 0.0065.
138
139 Advice 1: the functional form of the variable 'age' might be incorrect. That is, there may be
140 non-linear terms missing. The proportional hazard test used is very sensitive to incorrect
141 functional forms. See documentation in link [D] below on how to specify a functional form.
142
143 Advice 2: try binning the variable 'age' using pd.cut, and then specify it in `strata=['age',
144 ...]` in the call in `.fit`. See documentation in link [B] below.
145
146 Advice 3: try adding an interaction term with your time variable. See documentation in link [C]
147 below.
148
149
150 Bootstrapping lowess lines. May take a moment...
151
152
153 Bootstrapping lowess lines. May take a moment...
154
155
156 Bootstrapping lowess lines. May take a moment...
157
158
159 Bootstrapping lowess lines. May take a moment...
160
161
162 ---
163 [A] https://lifelines.readthedocs.io/en/latest/jupyter_notebooks/Proportional%20hazard%20assumption.html
164 [B] https://lifelines.readthedocs.io/en/latest/jupyter_notebooks/Proportional%20hazard%20assumption.html#Bin-variable-and-stratify-on-it
165 [C] https://lifelines.readthedocs.io/en/latest/jupyter_notebooks/Proportional%20hazard%20assumption.html#Introduce-time-varying-covariates
166 [D] https://lifelines.readthedocs.io/en/latest/jupyter_notebooks/Proportional%20hazard%20assumption.html#Modify-the-functional-form
167 [E] https://lifelines.readthedocs.io/en/latest/jupyter_notebooks/Proportional%20hazard%20assumption.html#Stratification
168