forked from wangzhen89/survival
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcox-回归模型.html
1330 lines (1188 loc) · 150 KB
/
cox-回归模型.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>►Cox 回归模型 | 医学研究中的生存数据建模</title>
<meta name="author" content="Wang Zhen">
<meta name="description" content="3.9 参数估计的解释 当 Cox 回归模型用于生存数据分析时,模型中解释变量的系数可以解释为死亡风险与基线风险之比的对数。这意味着,可以很容易地从拟合模型中找到该风险比的估计值和相应的置信区间。以下各节描述了 Cox 回归模型中不同类型的项对应的参数解释。 3.9.1 具有一个变量的模型 假设 Cox 回归模型包含单个连续变量 \(X\),则第 \(i\) 个个体(\(X\) 的值为...">
<meta name="generator" content="bookdown 0.38 with bs4_book()">
<meta property="og:title" content="►Cox 回归模型 | 医学研究中的生存数据建模">
<meta property="og:type" content="book">
<meta property="og:description" content="3.9 参数估计的解释 当 Cox 回归模型用于生存数据分析时,模型中解释变量的系数可以解释为死亡风险与基线风险之比的对数。这意味着,可以很容易地从拟合模型中找到该风险比的估计值和相应的置信区间。以下各节描述了 Cox 回归模型中不同类型的项对应的参数解释。 3.9.1 具有一个变量的模型 假设 Cox 回归模型包含单个连续变量 \(X\),则第 \(i\) 个个体(\(X\) 的值为...">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="►Cox 回归模型 | 医学研究中的生存数据建模">
<meta name="twitter:description" content="3.9 参数估计的解释 当 Cox 回归模型用于生存数据分析时,模型中解释变量的系数可以解释为死亡风险与基线风险之比的对数。这意味着,可以很容易地从拟合模型中找到该风险比的估计值和相应的置信区间。以下各节描述了 Cox 回归模型中不同类型的项对应的参数解释。 3.9.1 具有一个变量的模型 假设 Cox 回归模型包含单个连续变量 \(X\),则第 \(i\) 个个体(\(X\) 的值为...">
<!-- JS --><script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js" integrity="sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=" crossorigin="anonymous"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/fuse.js/6.4.6/fuse.js" integrity="sha512-zv6Ywkjyktsohkbp9bb45V6tEMoWhzFzXis+LrMehmJZZSys19Yxf1dopHx7WzIKxr5tK2dVcYmaCk2uqdjF4A==" crossorigin="anonymous"></script><script src="https://kit.fontawesome.com/6ecbd6c532.js" crossorigin="anonymous"></script><script src="libs/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<link href="libs/bootstrap-4.6.0/bootstrap.min.css" rel="stylesheet">
<script src="libs/bootstrap-4.6.0/bootstrap.bundle.min.js"></script><script src="libs/bs3compat-0.7.0/transition.js"></script><script src="libs/bs3compat-0.7.0/tabs.js"></script><script src="libs/bs3compat-0.7.0/bs3compat.js"></script><link href="libs/bs4_book-1.0.0/bs4_book.css" rel="stylesheet">
<script src="libs/bs4_book-1.0.0/bs4_book.js"></script><script>
/* ========================================================================
* Bootstrap: transition.js v3.3.7
* http://getbootstrap.com/javascript/#transitions
* ========================================================================
* Copyright 2011-2016 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */
+function ($) {
'use strict';
// CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)
// ============================================================
function transitionEnd() {
var el = document.createElement('bootstrap')
var transEndEventNames = {
WebkitTransition : 'webkitTransitionEnd',
MozTransition : 'transitionend',
OTransition : 'oTransitionEnd otransitionend',
transition : 'transitionend'
}
for (var name in transEndEventNames) {
if (el.style[name] !== undefined) {
return { end: transEndEventNames[name] }
}
}
return false // explicit for ie8 ( ._.)
}
// http://blog.alexmaccaw.com/css-transitions
$.fn.emulateTransitionEnd = function (duration) {
var called = false
var $el = this
$(this).one('bsTransitionEnd', function () { called = true })
var callback = function () { if (!called) $($el).trigger($.support.transition.end) }
setTimeout(callback, duration)
return this
}
$(function () {
$.support.transition = transitionEnd()
if (!$.support.transition) return
$.event.special.bsTransitionEnd = {
bindType: $.support.transition.end,
delegateType: $.support.transition.end,
handle: function (e) {
if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)
}
}
})
}(jQuery);
</script><script>
/* ========================================================================
* Bootstrap: collapse.js v3.3.7
* http://getbootstrap.com/javascript/#collapse
* ========================================================================
* Copyright 2011-2016 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */
/* jshint latedef: false */
+function ($) {
'use strict';
// COLLAPSE PUBLIC CLASS DEFINITION
// ================================
var Collapse = function (element, options) {
this.$element = $(element)
this.options = $.extend({}, Collapse.DEFAULTS, options)
this.$trigger = $('[data-toggle="collapse"][href="#' + element.id + '"],' +
'[data-toggle="collapse"][data-target="#' + element.id + '"]')
this.transitioning = null
if (this.options.parent) {
this.$parent = this.getParent()
} else {
this.addAriaAndCollapsedClass(this.$element, this.$trigger)
}
if (this.options.toggle) this.toggle()
}
Collapse.VERSION = '3.3.7'
Collapse.TRANSITION_DURATION = 350
Collapse.DEFAULTS = {
toggle: true
}
Collapse.prototype.dimension = function () {
var hasWidth = this.$element.hasClass('width')
return hasWidth ? 'width' : 'height'
}
Collapse.prototype.show = function () {
if (this.transitioning || this.$element.hasClass('in')) return
var activesData
var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing')
if (actives && actives.length) {
activesData = actives.data('bs.collapse')
if (activesData && activesData.transitioning) return
}
var startEvent = $.Event('show.bs.collapse')
this.$element.trigger(startEvent)
if (startEvent.isDefaultPrevented()) return
if (actives && actives.length) {
Plugin.call(actives, 'hide')
activesData || actives.data('bs.collapse', null)
}
var dimension = this.dimension()
this.$element
.removeClass('collapse')
.addClass('collapsing')[dimension](0)
.attr('aria-expanded', true)
this.$trigger
.removeClass('collapsed')
.attr('aria-expanded', true)
this.transitioning = 1
var complete = function () {
this.$element
.removeClass('collapsing')
.addClass('collapse in')[dimension]('')
this.transitioning = 0
this.$element
.trigger('shown.bs.collapse')
}
if (!$.support.transition) return complete.call(this)
var scrollSize = $.camelCase(['scroll', dimension].join('-'))
this.$element
.one('bsTransitionEnd', $.proxy(complete, this))
.emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize])
}
Collapse.prototype.hide = function () {
if (this.transitioning || !this.$element.hasClass('in')) return
var startEvent = $.Event('hide.bs.collapse')
this.$element.trigger(startEvent)
if (startEvent.isDefaultPrevented()) return
var dimension = this.dimension()
this.$element[dimension](this.$element[dimension]())[0].offsetHeight
this.$element
.addClass('collapsing')
.removeClass('collapse in')
.attr('aria-expanded', false)
this.$trigger
.addClass('collapsed')
.attr('aria-expanded', false)
this.transitioning = 1
var complete = function () {
this.transitioning = 0
this.$element
.removeClass('collapsing')
.addClass('collapse')
.trigger('hidden.bs.collapse')
}
if (!$.support.transition) return complete.call(this)
this.$element
[dimension](0)
.one('bsTransitionEnd', $.proxy(complete, this))
.emulateTransitionEnd(Collapse.TRANSITION_DURATION)
}
Collapse.prototype.toggle = function () {
this[this.$element.hasClass('in') ? 'hide' : 'show']()
}
Collapse.prototype.getParent = function () {
return $(this.options.parent)
.find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]')
.each($.proxy(function (i, element) {
var $element = $(element)
this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)
}, this))
.end()
}
Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {
var isOpen = $element.hasClass('in')
$element.attr('aria-expanded', isOpen)
$trigger
.toggleClass('collapsed', !isOpen)
.attr('aria-expanded', isOpen)
}
function getTargetFromTrigger($trigger) {
var href
var target = $trigger.attr('data-target')
|| (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7
return $(target)
}
// COLLAPSE PLUGIN DEFINITION
// ==========================
function Plugin(option) {
return this.each(function () {
var $this = $(this)
var data = $this.data('bs.collapse')
var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)
if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false
if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))
if (typeof option == 'string') data[option]()
})
}
var old = $.fn.collapse
$.fn.collapse = Plugin
$.fn.collapse.Constructor = Collapse
// COLLAPSE NO CONFLICT
// ====================
$.fn.collapse.noConflict = function () {
$.fn.collapse = old
return this
}
// COLLAPSE DATA-API
// =================
$(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) {
var $this = $(this)
if (!$this.attr('data-target')) e.preventDefault()
var $target = getTargetFromTrigger($this)
var data = $target.data('bs.collapse')
var option = data ? 'toggle' : $this.data()
Plugin.call($target, option)
})
}(jQuery);
</script><script>
window.initializeCodeFolding = function(show) {
// handlers for show-all and hide all
$("#rmd-show-all-code").click(function() {
$('div.r-code-collapse').each(function() {
$(this).collapse('show');
});
});
$("#rmd-hide-all-code").click(function() {
$('div.r-code-collapse').each(function() {
$(this).collapse('hide');
});
});
// index for unique code element ids
var currentIndex = 1;
// select all R code blocks
var rCodeBlocks = $('pre.sourceCode, pre.r, pre.python, pre.bash, pre.sql, pre.cpp, pre.stan, pre.js');
rCodeBlocks.each(function() {
// create a collapsable div to wrap the code in
var div = $('<div class="collapse r-code-collapse"></div>');
if (show)
div.addClass('in');
var id = 'rcode-643E0F36' + currentIndex++;
div.attr('id', id);
$(this).before(div);
$(this).detach().appendTo(div);
// add a show code button right above
var showCodeText = $('<span>' + (show ? 'Hide' : 'Code') + '</span>');
var showCodeButton = $('<button type="button" class="btn btn-default btn-xs code-folding-btn pull-right"></button>');
showCodeButton.append(showCodeText);
showCodeButton
.attr('data-toggle', 'collapse')
.attr('data-target', '#' + id)
.attr('aria-expanded', show)
.attr('aria-controls', id);
var buttonRow = $('<div class="row"></div>');
var buttonCol = $('<div class="col-md-12"></div>');
buttonCol.append(showCodeButton);
buttonRow.append(buttonCol);
div.before(buttonRow);
// update state of button on show/hide
div.on('hidden.bs.collapse', function () {
showCodeText.text('Code');
});
div.on('show.bs.collapse', function () {
showCodeText.text('Hide');
});
});
}
</script><script>
/* ========================================================================
* Bootstrap: dropdown.js v3.3.7
* http://getbootstrap.com/javascript/#dropdowns
* ========================================================================
* Copyright 2011-2016 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */
+function ($) {
'use strict';
// DROPDOWN CLASS DEFINITION
// =========================
var backdrop = '.dropdown-backdrop'
var toggle = '[data-toggle="dropdown"]'
var Dropdown = function (element) {
$(element).on('click.bs.dropdown', this.toggle)
}
Dropdown.VERSION = '3.3.7'
function getParent($this) {
var selector = $this.attr('data-target')
if (!selector) {
selector = $this.attr('href')
selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
}
var $parent = selector && $(selector)
return $parent && $parent.length ? $parent : $this.parent()
}
function clearMenus(e) {
if (e && e.which === 3) return
$(backdrop).remove()
$(toggle).each(function () {
var $this = $(this)
var $parent = getParent($this)
var relatedTarget = { relatedTarget: this }
if (!$parent.hasClass('open')) return
if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return
$parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))
if (e.isDefaultPrevented()) return
$this.attr('aria-expanded', 'false')
$parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget))
})
}
Dropdown.prototype.toggle = function (e) {
var $this = $(this)
if ($this.is('.disabled, :disabled')) return
var $parent = getParent($this)
var isActive = $parent.hasClass('open')
clearMenus()
if (!isActive) {
if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {
// if mobile we use a backdrop because click events don't delegate
$(document.createElement('div'))
.addClass('dropdown-backdrop')
.insertAfter($(this))
.on('click', clearMenus)
}
var relatedTarget = { relatedTarget: this }
$parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))
if (e.isDefaultPrevented()) return
$this
.trigger('focus')
.attr('aria-expanded', 'true')
$parent
.toggleClass('open')
.trigger($.Event('shown.bs.dropdown', relatedTarget))
}
return false
}
Dropdown.prototype.keydown = function (e) {
if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return
var $this = $(this)
e.preventDefault()
e.stopPropagation()
if ($this.is('.disabled, :disabled')) return
var $parent = getParent($this)
var isActive = $parent.hasClass('open')
if (!isActive && e.which != 27 || isActive && e.which == 27) {
if (e.which == 27) $parent.find(toggle).trigger('focus')
return $this.trigger('click')
}
var desc = ' li:not(.disabled):visible a'
var $items = $parent.find('.dropdown-menu' + desc)
if (!$items.length) return
var index = $items.index(e.target)
if (e.which == 38 && index > 0) index-- // up
if (e.which == 40 && index < $items.length - 1) index++ // down
if (!~index) index = 0
$items.eq(index).trigger('focus')
}
// DROPDOWN PLUGIN DEFINITION
// ==========================
function Plugin(option) {
return this.each(function () {
var $this = $(this)
var data = $this.data('bs.dropdown')
if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))
if (typeof option == 'string') data[option].call($this)
})
}
var old = $.fn.dropdown
$.fn.dropdown = Plugin
$.fn.dropdown.Constructor = Dropdown
// DROPDOWN NO CONFLICT
// ====================
$.fn.dropdown.noConflict = function () {
$.fn.dropdown = old
return this
}
// APPLY TO STANDARD DROPDOWN ELEMENTS
// ===================================
$(document)
.on('click.bs.dropdown.data-api', clearMenus)
.on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
.on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)
.on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)
.on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown)
}(jQuery);
</script><style type="text/css">
.code-folding-btn { margin-bottom: 4px; }
.row { display: flex; }
.collapse { display: none; }
.in { display:block }
.pull-right > .dropdown-menu {
right: 0;
left: auto;
}
.open > .dropdown-menu {
display: block;
}
.dropdown-menu {
position: absolute;
top: 100%;
left: 0;
z-index: 1000;
display: none;
float: left;
min-width: 160px;
padding: 5px 0;
margin: 2px 0 0;
font-size: 14px;
text-align: left;
list-style: none;
background-color: #fff;
-webkit-background-clip: padding-box;
background-clip: padding-box;
border: 1px solid #ccc;
border: 1px solid rgba(0,0,0,.15);
border-radius: 4px;
-webkit-box-shadow: 0 6px 12px rgba(0,0,0,.175);
box-shadow: 0 6px 12px rgba(0,0,0,.175);
}
</style>
<script>
$(document).ready(function () {
window.initializeCodeFolding("show" === "show");
});
</script><script>
document.write('<div class="btn-group pull-right" style="position: absolute; top: 20%; right: 2%; z-index: 200"><button type="button" class="btn btn-default btn-xs dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true" data-_extension-text-contrast=""><span>Code</span> <span class="caret"></span></button><ul class="dropdown-menu" style="min-width: 50px;"><li><a id="rmd-show-all-code" href="#">Show All Code</a></li><li><a id="rmd-hide-all-code" href="#">Hide All Code</a></li></ul></div>')
</script><script src="https://cdnjs.cloudflare.com/ajax/libs/autocomplete.js/0.38.0/autocomplete.jquery.min.js" integrity="sha512-GU9ayf+66Xx2TmpxqJpliWbT5PiGYxpaG8rfnBEk1LL8l1KGkRShhngwdXK1UgqhAzWpZHSiYPc09/NwDQIGyg==" crossorigin="anonymous"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/mark.js/8.11.1/mark.min.js" integrity="sha512-5CYOlHXGh6QpOFA/TeTylKLWfB3ftPsde7AnmhuitiTX4K5SqCLBeKro6sPS8ilsz1Q4NRx3v8Ko2IBiszzdww==" crossorigin="anonymous"></script><!-- CSS --><style type="text/css">
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
</style>
<link rel="stylesheet" href="style.css">
</head>
<body data-spy="scroll" data-target="#toc">
<div class="container-fluid">
<div class="row">
<header class="col-sm-12 col-lg-3 sidebar sidebar-book"><a class="sr-only sr-only-focusable" href="#content">Skip to main content</a>
<div class="d-flex align-items-start justify-content-between">
<h1>
<a href="index.html" title="">医学研究中的生存数据建模</a>
</h1>
<button class="btn btn-outline-primary d-lg-none ml-2 mt-1" type="button" data-toggle="collapse" data-target="#main-nav" aria-expanded="true" aria-controls="main-nav"><i class="fas fa-bars"></i><span class="sr-only">Show table of contents</span></button>
</div>
<div id="main-nav" class="collapse-lg">
<form role="search">
<input id="search" class="form-control" type="search" placeholder="Search" aria-label="Search">
</form>
<nav aria-label="Table of contents"><h2>Table of contents</h2>
<ul class="book-toc list-unstyled">
<li><a class="" href="index.html">前言</a></li>
<li><a class="" href="%E4%BD%9C%E8%80%85%E4%BB%8B%E7%BB%8D.html">作者介绍</a></li>
<li><a class="" href="%E7%9B%AE%E5%BD%95.html">目录</a></li>
<li class="book-part">正文</li>
<li><a class="" href="chap1.html"><span class="header-section-number">1</span> 生存分析</a></li>
<li><a class="" href="chap2.html"><span class="header-section-number">2</span> 一些非参数程序</a></li>
<li><a class="" href="chap3.html"><span class="header-section-number">3</span> Cox 回归模型</a></li>
<li><a class="active" href="cox-%E5%9B%9E%E5%BD%92%E6%A8%A1%E5%9E%8B.html">►Cox 回归模型</a></li>
<li><a class="" href="chap4.html"><span class="header-section-number">4</span> Cox 回归模型的模型检查</a></li>
<li><a class="" href="chap5.html"><span class="header-section-number">5</span> 参数回归模型</a></li>
<li><a class="" href="%E5%8F%82%E6%95%B0%E5%9B%9E%E5%BD%92%E6%A8%A1%E5%9E%8B.html">►参数回归模型</a></li>
<li><a class="" href="chap6.html"><span class="header-section-number">6</span> 灵活的参数模型</a></li>
<li><a class="" href="chap7.html"><span class="header-section-number">7</span> 参数模型的模型检查</a></li>
<li><a class="" href="chap8.html"><span class="header-section-number">8</span> 时依变量</a></li>
<li><a class="" href="chap9.html"><span class="header-section-number">9</span> 区间删失生存数据</a></li>
<li><a class="" href="chap10.html"><span class="header-section-number">10</span> 脆弱模型</a></li>
<li><a class="" href="chap11.html"><span class="header-section-number">11</span> 非比例风险和机构的比较</a></li>
<li><a class="" href="chap12.html"><span class="header-section-number">12</span> 竞争风险</a></li>
<li><a class="" href="chap13.html"><span class="header-section-number">13</span> 多次事件和事件史分析</a></li>
<li><a class="" href="chap14.html"><span class="header-section-number">14</span> 相依删失</a></li>
<li><a class="" href="chap15.html"><span class="header-section-number">15</span> 生存研究的样本量要求</a></li>
<li><a class="" href="chap16.html"><span class="header-section-number">16</span> 贝叶斯生存分析</a></li>
<li><a class="" href="chap17.html"><span class="header-section-number">17</span> 使用 R 进行生存分析</a></li>
<li class="book-part">附录</li>
<li><a class="" href="A.html"><span class="header-section-number">A</span> 最大似然估计</a></li>
<li><a class="" href="B.html"><span class="header-section-number">B</span> 额外数据集</a></li>
<li class="book-part">—</li>
<li><a class="" href="bib.html">参考书目</a></li>
<li><a class="" href="exm.html">示例索引</a></li>
</ul>
<div class="book-extra">
</div>
</nav>
</div>
</header><main class="col-sm-12 col-md-9 col-lg-7" id="content"><div id="cox-回归模型" class="section level1 unnumbered">
<h1>►Cox 回归模型<a class="anchor" aria-label="anchor" href="#cox-%E5%9B%9E%E5%BD%92%E6%A8%A1%E5%9E%8B"><i class="fas fa-link"></i></a>
</h1>
<div id="sec3-9" class="section level2" number="3.9">
<h2>
<span class="header-section-number">3.9</span> 参数估计的解释<a class="anchor" aria-label="anchor" href="#sec3-9"><i class="fas fa-link"></i></a>
</h2>
<p>当 Cox 回归模型用于生存数据分析时,模型中解释变量的系数可以解释为死亡风险与基线风险之比的对数。这意味着,可以很容易地从拟合模型中找到该风险比的估计值和相应的置信区间。以下各节描述了 Cox 回归模型中不同类型的项对应的参数解释。</p>
<div id="sec3-9-1" class="section level3" number="3.9.1">
<h3>
<span class="header-section-number">3.9.1</span> 具有一个变量的模型<a class="anchor" aria-label="anchor" href="#sec3-9-1"><i class="fas fa-link"></i></a>
</h3>
<p>假设 Cox 回归模型包含单个连续变量 <span class="math inline">\(X\)</span>,则第 <span class="math inline">\(i\)</span> 个个体(<span class="math inline">\(X\)</span> 的值为 <span class="math inline">\(x_i\)</span>)的风险函数为</p>
<p><span class="math display">\[h_{\boldsymbol{i}}(t)=e^{\boldsymbol{\beta}x_{\boldsymbol{i}}}h_{\boldsymbol{0}}(t)\]</span></p>
<p>该模型中 <span class="math inline">\(x_i\)</span> 的系数可以解释为风险比的对数。具体来说,考虑在 <span class="math inline">\(X\)</span> 上的记录值为 <span class="math inline">\(x + 1\)</span> 的个体的死亡风险,与记录值为 <span class="math inline">\(x\)</span> 的个体的死亡风险的之比。即</p>
<p><span class="math display">\[\begin{aligned}\frac{\exp\{\beta(x+1)\}}{\exp(\beta x)}=e^{\beta}\end{aligned}\]</span></p>
<p>因此拟合的 Cox 回归模型中的 <span class="math inline">\(\hat \beta\)</span> 是当 <span class="math inline">\(X\)</span> 的值增加 1 个单位时对数风险比估计的变化。</p>
<p>使用类似的论点,当变量 <span class="math inline">\(X\)</span> 的值增加 <span class="math inline">\(r\)</span> 个单位时,对数风险比估计的变化为 <span class="math inline">\(r \hat \beta\)</span>,相应的风险比估计为 <span class="math inline">\(\exp(r \hat \beta)\)</span>。对数风险比估计的标准误将为 <span class="math inline">\(r\, \text{se}\,(\hat \beta)\)</span>,从中可以得出真实风险比的置信区间。</p>
<p>上述论证表明,当连续变量 <span class="math inline">\(X\)</span> 包含在 Cox 回归模型中时,<span class="math inline">\(X\)</span> 的值改变 <span class="math inline">\(r\)</span> 个单位前后的风险比并不依赖于 <span class="math inline">\(X\)</span> 的实际值。例如,如果 <span class="math inline">\(X\)</span> 指的是个体的年龄,那么 70 岁的个体相对于 65 岁的个体的风险比与 20 岁的个体相对于 15 岁的个体的风险比是相同的。这一特征是直接将 <span class="math inline">\(X\)</span> 作为 Cox 回归模型中的线性项进行拟合的直接结果。如果对线性假设存疑,可以使用 <a href="chap3.html#sec3-8-1">3.8.1</a> 节中描述的程序进行检查。然后可以在建模过程中使用 <span class="math inline">\(X\)</span> 的分数多项式或 <span class="math inline">\(X\)</span> 的非线性变换。</p>
</div>
<div id="sec3-9-2" class="section level3" number="3.9.2">
<h3>
<span class="header-section-number">3.9.2</span> 具有一个因素的模型<a class="anchor" aria-label="anchor" href="#sec3-9-2"><i class="fas fa-link"></i></a>
</h3>
<p>当个体属于 <span class="math inline">\(m(m\ge 2)\)</span> 组中的一组,这对应于解释变量的类别时,这些组可以通过因素的水平进行索引。在 Cox 回归模型下,第 <span class="math inline">\(j(j=1,2,\ldots,m)\)</span> 组中个体的风险函数为</p>
<p><span class="math display">\[\begin{aligned}h_j(t)=\exp(\gamma_j)h_0(t)\end{aligned}\]</span></p>
<p>其中 <span class="math inline">\(\gamma_j\)</span> 是因素的第 <span class="math inline">\(j\)</span> 个水平的效应,<span class="math inline">\(h_0(t)\)</span> 是基线风险函数。该模型过度参数化了,因此,如 <a href="chap3.html#sec3-2-2">3.2.2</a> 节所示,我们取 <span class="math inline">\(\gamma_1=0\)</span>。基线风险函数对应于第一组中的个体在时间 <span class="math inline">\(t\)</span> 的死亡风险。第 <span class="math inline">\(j(j\ge 2)\)</span> 组中的个体在时间 <span class="math inline">\(t\)</span> 的风险比相对于第一组中的个体的风险比为 <span class="math inline">\(\exp(\gamma_j)\)</span>。因此,参数 <span class="math inline">\(\gamma_j\)</span> 是该相对风险的对数,即</p>
<p><span class="math display">\[\begin{aligned}\gamma_j=\log\{h_j(t)/h_0(t)\}\end{aligned}\]</span></p>
<p>可以通过定义 <span class="math inline">\(m-1\)</span> 个指示变量 <span class="math inline">\(X_2,X_3,...,X_m\)</span>(如 <a href="chap3.html#sec3-2-2">3.2.2</a> 节所示)来拟合包含 <span class="math inline">\(\gamma_j(j = 1,2,...,m)\)</span> 且 <span class="math inline">\(\gamma_1 = 0\)</span> 的模型。拟合该模型会得出估计值 <span class="math inline">\(\hat\gamma_2,\hat\gamma_3,\ldots,\hat\gamma_m\)</span> 及其标准误。那么,,第 j 组的个体相对于第 1 组的个体的相对风险比的对数估计值为 <span class="math inline">\(\hat\gamma_j\)</span>。真实对数风险比的 <span class="math inline">\(100(1 − \alpha)\%\)</span> 置信区间是从 <span class="math inline">\(\hat{\gamma}_j-z_{{\alpha}/2}\text{se}\left(\hat{\gamma}_j\right)\)</span> 到 <span class="math inline">\(\hat{\gamma}_j+z_{{\alpha}/2}\text{se}\left(\hat{\gamma}_j\right)\)</span> 的区间,其中 <span class="math inline">\(z_{{\alpha}/2}\)</span> 是标准正态分布的上 <span class="math inline">\(\alpha/2\)</span> 分位数。通过对这些置信限进行指数运算,可以得到风险比本身的相应置信区间。</p>
<div class="rmdnote">
<div class="example">
<p><span id="exm:ex3-10" class="example"><strong>示例 3.10 (肾癌的治疗) </strong></span><br></p>
<p>表 3.6 给出了肾癌患者的生存时间数据。在本例中,我们将只考虑表 3.6 第 4 - 6 列中所示的那些接受过肾切除术的患者的数据。这组患者的生存时间是根据他们的年龄组进行分类的。如果第 <span class="math inline">\(j\)</span> 个年龄组的效应用 <span class="math inline">\(\alpha_j\)</span> 表示,<span class="math inline">\(j=1,2,3\)</span>,则第 <span class="math inline">\(j\)</span> 个年龄段患者在时间 <span class="math inline">\(t\)</span> 的风险的 Cox 回归模型如下</p>
<p><span class="math display">\[\begin{aligned}h_j(t)=\exp(\alpha_j)h_0(t)\end{aligned}\]</span></p>
<p>该模型可以通过定义两个指示变量 <span class="math inline">\(A_2\)</span> 和 <span class="math inline">\(A_3\)</span> 来拟合,其中,如果患者年龄在 60 岁到 70 岁之间,<span class="math inline">\(A_2\)</span> 为 1,如果患者超过 70 岁,<span class="math inline">\(A_3\)</span> 为 1,如<a href="chap3.html#exm:ex3-4">示例 3.4</a> 所示。这对应于 <span class="math inline">\(\alpha_1=0\)</span>。</p>
<p>零模型的 <span class="math inline">\(-2\operatorname{log}\hat{L}\)</span> 值为 128.901,当添加项 <span class="math inline">\(\alpha_j\)</span> 时,该统计量的值减小为 122.501。在 2 个自由度上减小了 6.400. 在 5% 水平上显著 (<span class="math inline">\(P = 0.041\)</span>),因此我们得出结论,风险函数确实取决于患者所处的年龄组。</p>
<p>指示变量 <span class="math inline">\(A_2\)</span> 和 <span class="math inline">\(A_3\)</span> 的系数分别是 <span class="math inline">\(\alpha_2\)</span> 和 <span class="math inline">\(\alpha_3\)</span> 的估计,见表 3.14. 由于使用了约束 <span class="math inline">\(\alpha_1 = 0\)</span>,因此 <span class="math inline">\(\hat\alpha_1 = 0\)</span>。</p>
<details><summary><font color="#8B2232">表 3.14</font>
</summary><img src="figure/table%203.14.png#center" style="width:80.0%"></details><p><br>
60 - 70 岁患者相对于 60 岁以下患者的风险比为 <span class="math inline">\(e^{-0.065}=0.94\)</span>,而 70 岁以上患者相对于 60 岁以下患者的风险比为 <span class="math inline">\(e^{1.824}=6.20\)</span>。这些结果表明,在任何给定时间,70 岁以上患者的死亡风险最大,但其他两个年龄组患者的风险函数几乎没有差异。</p>
<p>表 3.14 中参数估计的标准误可用于获得真实风险比的置信区间。对于年龄在 60 - 70 岁之间的患者,相对于年龄在 60 岁以下的患者,其对数风险比的 95% 置信区间是 <span class="math inline">\(−0.065 ± (1.96 × 0.498)\)</span>,即区间 <span class="math inline">\((−1.041, 0.912)\)</span>。对于风险比本身,相应的 95% 置信区间是 <span class="math inline">\((0.35, 2.49)\)</span>。该置信区间包含 1,这表明年龄在 60 - 70 岁之间的个体的风险函数与年龄小于 60 岁的患者相似。同样地,年龄在 70 岁以上的患者相对于年龄在 60 岁以下的患者,其风险比的 95% 置信区间为 <span class="math inline">\((1.63, 23.59)\)</span>。该区间不包含 1,因此,在任何给定时间,年龄超过 70 岁的个体的死亡风险显著高于年龄在 60 岁以下的患者。</p>
</div>
</div>
<p>在某些应用中,可能需要计算除第一个水平以外的其他因素水平的风险比。在这种情况下,可以重新定义该因素的水平以及相关的指示变量,使该因素的某个其他水平对应于所需的基线水平,然后重新拟合模型。虽然这比较困难,但也可以直接从以原始因素的第一个水平为基线时获得的估计值中直接找到所需的估计值。</p>
<p>因素水平 <span class="math inline">\(j\)</span> 和 <span class="math inline">\(j^\prime\)</span> 的个体的风险函数分别为 <span class="math inline">\(\exp(\alpha_j)h_0(t)\)</span> 和 <span class="math inline">\(\exp(\alpha_{j^\prime})h_0(t)\)</span>,因此水平 <span class="math inline">\(j\)</span> 的个体相对于水平 <span class="math inline">\(j^\prime\)</span> 的个体的风险比为 <span class="math inline">\(\exp(\alpha_j-\alpha_{j'})\)</span>。对数风险比为 <span class="math inline">\(\alpha_j-\alpha_{j'}\)</span>,其估计为 <span class="math inline">\(\hat\alpha_j-\hat\alpha_{j'}\)</span>。为了获得该估计的标准误,我们使用差值 <span class="math inline">\(\hat\alpha_j-\hat\alpha_{j'}\)</span> 方差的如下结果</p>
<p><span class="math display">\[\begin{aligned}\text{var}\left(\hat{\alpha}_j-\hat{\alpha}_{j'}\right)&=\text{ var}\left(\hat{\alpha}_j\right)+\text{ var}\left(\hat{\alpha}_{j'}\right)-2\text{ cov}\left(\hat{\alpha}_j,\hat{\alpha}_{j'}\right)\end{aligned}\]</span></p>
<p>鉴于此,需要估计 <span class="math inline">\(\hat\alpha_j\)</span> 和 <span class="math inline">\(\hat\alpha_{j'}\)</span> 之间的协方差以及它们的方差估计来计算 <span class="math inline">\(\hat\alpha_j-\hat\alpha_{j'}\)</span> 的标准误。计算如<a href="cox-%E5%9B%9E%E5%BD%92%E6%A8%A1%E5%9E%8B.html#exm:ex3-11">示例 3.11</a> 所示。</p>
<div class="rmdnote">
<div class="example">
<p><span id="exm:ex3-11" class="example"><strong>示例 3.11 (肾癌的治疗) </strong></span><br></p>
<p>再次考虑<a href="chap3.html#exm:ex3-4">示例 3.4</a> 中的数据子集,这对应于那些接受过肾切除术的患者。假设需要估计 70 岁以上个体相对于 60 - 70 岁个体的风险比。使用表 3.14 中的估计,对数风险比估计为 <span class="math inline">\(\hat{\alpha}_3-\hat{\alpha}_2=1.824+0.065=1.889\)</span>,因此风险比估计为 <span class="math inline">\(e^{1.889}=6.61\)</span>。这表明,70 岁以上的人在任何时间的死亡风险是 60 - 70 岁的人的 6.5 倍以上。</p>
<p><span class="math inline">\(\hat{\alpha}_3-\hat{\alpha}_2\)</span> 的方差为</p>
<p><span class="math display">\[\begin{aligned}\operatorname{var}\left(\hat{\alpha}_3\right)+\operatorname{var}\left(\hat{\alpha}_2\right)-2\operatorname{cov}\left(\hat{\alpha}_3,\hat{\alpha}_2\right)\end{aligned}\]</span></p>
<p>参数估计的方差-协方差阵给出了所需的方差和协方差。该矩阵可以从用于拟合 Cox 回归模型的统计软件中获得,为</p>
<p><span class="math display">\[\begin{array}{cc}A_2\\A_3\\\,\end{array}\begin{array}{cc}0.2484&0.0832\\0.0832&0.4649\\A_2&A_3\end{array}\]</span></p>
<p>其中 <span class="math inline">\(\text{var}\left(\hat{\alpha}_2\right)=0.2484,\text{var}\left(\hat{\alpha}_3\right)=0.4649\)</span> 以及 <span class="math inline">\(\mathrm{cov}\left(\hat{\alpha}_2,\hat{\alpha}_3\right)=0.0832\)</span>。当然,方差只是表 3.14 中标准误的平方。那么</p>
<p><span class="math display">\[\begin{aligned}\text{var}\left(\hat{\alpha}_3-\hat{\alpha}_2\right)=0.4649+0.2484-(2\times0.0832)=0.5469\end{aligned}\]</span></p>
<p>因此 <span class="math inline">\(\hat{\alpha}_3-\hat{\alpha}_2\)</span> 的标准误为 0.740。因此,对数风险比的 95% 置信区间为 <span class="math inline">\((0.440, 3.338)\)</span>,风险比本身的 95% 置信区间为 <span class="math inline">\((1.55, 28.18)\)</span>。</p>
<p>获取年龄大于 70 岁的个体相对于年龄在 60 - 70 岁之间的个体的风险比估计及其估计的标准误的一种更简单的方法,是重新定义与年龄组相关的因素的水平。假设数据现在是这样安排的:因素的第一水平对应于 60 - 70 岁的患者,第二水平对应于年龄大于 70 岁的患者,第三水平对应于年龄小于 60 岁的患者。选择指示变量使得重新定义的因素的第一水平的效应等于零,从而得到表 3.15 中定义的变量 <span class="math inline">\(B_2\)</span> 和 <span class="math inline">\(B_3\)</span>。现在,所需对数风险比估计就是 <span class="math inline">\(B_2\)</span> 的系数估计,而其标准误可以直接从标准计算机输出中读取。</p>
<details><summary><font color="#8B2232">表 3.15</font>
</summary><img src="figure/table%203.15.png#center" style="width:80.0%"></details>
</div>
</div>
<p>指示变量系数的解释方式在很大程度上取决于它们所使用的编码。这意味着,当使用能够直接拟合因素的统计软件包来拟合 Cox 回归模型时,<strong>必须了解软件包中使用的指示变量是如何定义的</strong>。</p>
<p>为进一步说明,假设个体属于 <span class="math inline">\(m\)</span> 个组中的一个,并且用于 <span class="math inline">\(m − 1\)</span> 个指示变量 <span class="math inline">\(X_2, X_3,...,X_m\)</span> 的编码使得 <span class="math inline">\(A\)</span> 的主效应之和 <span class="math inline">\(\sum_{j=1}^m\alpha_j\)</span> 等于 0。具有 <span class="math inline">\(m\)</span> 个水平的因素 <span class="math inline">\(A\)</span> 对应的指示变量值如表 3.16 所示。</p>
<details><summary><font color="#8B2232">表 3.16</font>
</summary><img src="figure/table%203.16.png#center" style="width:80.0%"></details><p><br>
通过选择指示变量,包含该因素的 Cox 回归模型可以表示为以下形式</p>
<p><span class="math display">\[\begin{aligned}h_j(t)=\exp(\alpha_2x_2+\alpha_3x_3+\cdots+\alpha_mx_m)h_0(t)\end{aligned}\]</span></p>
<p>其中 <span class="math inline">\(x_j\)</span> 是因素 <span class="math inline">\(A\)</span> 处于第 <span class="math inline">\(j\)</span> 水平的个体的 <span class="math inline">\(X_j\)</span> 值,<span class="math inline">\(j = 2, 3,...,m\)</span>。处于因素第一水平的个体在给定时间的死亡风险为</p>
<p><span class="math display">\[\begin{aligned}\exp\{-(\alpha_2+\alpha_3+\cdots+\alpha_m)\}h_0(t)\end{aligned}\]</span></p>
<p>而对于第 <span class="math inline">\(j\)</span> 水平因素的个体,其风险比为 <span class="math inline">\(\exp(\alpha_j)h_0(t)\)</span>,其中 <span class="math inline">\(j \ge 2\)</span>。组 <span class="math inline">\(j\)</span> 中的个体的风险比相对于第一组中的个体的风险比为</p>
<p><span class="math display">\[\begin{aligned}\exp(\alpha_j+\alpha_2+\alpha_3+\cdots+\alpha_m)\end{aligned}\]</span></p>
<p>例如,如果 <span class="math inline">\(m = 4\)</span> 且 <span class="math inline">\(j = 3\)</span>,则风险比为 <span class="math inline">\(\exp(\alpha_2+2\alpha_3+\alpha_4)\)</span>,相应对数风险比估计的方差为</p>
<p><span class="math display">\[\begin{aligned}\operatorname{var}\left(\hat{\alpha}_2\right)+4\operatorname{var}\left(\hat{\alpha}_3\right)+\operatorname{var}\left(\hat{\alpha}_4\right)+4\operatorname{cov}\left(\hat{\alpha}_2,\hat{\alpha}_3\right)\\+4\operatorname{cov}\left(\hat{\alpha}_3,\hat{\alpha}_4\right)+2\operatorname{cov}\left(\hat{\alpha}_2,\hat{\alpha}_4\right)\end{aligned}\]</span></p>
<p>该表达式中的每一项都可以在拟合 Cox 回归模型后从参数估计的方差-协方差阵中找到,并获得风险比的置信区间。然而,指示变量的这种特殊编码使拟合模型各个参数估计的解释变得更加复杂。</p>
<p>在前面的部分中,我们仅考虑了包含单个项的 Cox 回归模型参数估计的解释。更一般地,拟合模型将包含与多个变量、因素或两者的组合相对应的项。通过对与模型中的因素相对应的指示变量进行适当的编码,参数估计可以再次解释为风险比的对数。</p>
<p>当一个模型包含一个以上的变量时,与特定效应相关的参数估计被认为是经模型中其他变量调整的 (adjusted),因此这些估计是经模型其他项调整的对数风险比。因此,考虑模型中包含的其他变量,Cox 回归模型可用于估计风险比。</p>
<p>当拟合因素之间的交互作用,或涉及因素和变量的混合项时,特定因素的对数风险比估计将因任何因素的水平或与之交互的任何变量的值而异。在这种情况下研究感兴趣因素的风险比估计时,需要明确任何此类因素水平或变量的值。</p>
<p>我们不会详细介绍在拟合具有不同项的组合的模型后如何估计风险比的代数细节,而是将通过两个例子来说明一般方法。第一个例子涉及因素和变量,而第二个例子包括两个因素之间的交互作用。</p>
<div class="rmdnote">
<div class="example">
<p><span id="exm:ex3-13" class="example"><strong>示例 3.12 (前列腺癌两种疗法的比较) </strong></span><br></p>
<p>在<a href="chap3.html#exm:ex3-6">示例 3.6</a> 中,发现在前列腺癌患者的生存研究中最重要的预后变量是肿瘤大小 (Size) 和肿瘤分期的 Greason index (Index). 代表治疗效应的指示变量 Treat 也包含在 Cox 回归模型中,因为研究的目的是量化治疗效应。第 <span class="math inline">\(i\)</span> 个个体的模型可以表示为以下形式</p>
<p><span class="math display">\[\begin{aligned}h_i(t)=\exp\{\beta_1Size_i+\beta_2Index_i+\beta_3Treat_i\}h_0(t)\end{aligned}\]</span></p>
<p>其中 <span class="math inline">\(i=1,2,\ldots,38\)</span>。该模型的 <span class="math inline">\(\beta\)</span> 系数估计及其标准误如表 3.17 所示。</p>
<details><summary><font color="#8B2232">表 3.17</font>
</summary><img src="figure/table%203.17.png#center" style="width:80.0%"></details><p><br>
对于接受 DES 治疗 (Treat = 1) 的个体,与接受安慰剂 (Treat = 0) 的个体相比,在 Size 和 Index 值相同的情况下,其对数风险比估计为 <span class="math inline">\(\hat{\beta}_3=-1.113\)</span>。因此,风险比估计为 <span class="math inline">\(e^{-1.113}=0.329\)</span>。这个风险比的值不受 Size 和 Index 实际值的影响。然而,由于这两个解释变量被纳入了模型,因此估计的风险比已经针对这些变量进行了调整。</p>
<p>作为比较,如果拟合仅包含 Treat 的模型,则 Treat 的系数估计为 -1.978. 相对于使用安慰剂的个体,使用 DES 的个体的风险比估计(未经 Size 和 Index 调整)现在为 <span class="math inline">\(e^{-1.978}=0.14\)</span>。这表明,除非适当考虑肿瘤大小和肿瘤分级指数的影响,否则会高估治疗效应。</p>
<p>现在考虑某接受特定治疗的个体,在变量 Index 值一定且肿瘤大小一定的情况下,与接受相同治疗、Index 值相同但肿瘤大小小一个单位的个体相比的风险比。该风险比为 <span class="math inline">\(e^{0.083}=1.09\)</span>。因为这个值大于 1,我们可以得出结论,在其他条件相同的情况下,肿瘤越大,在任何给定时间的死亡风险就越大。类似地,某接受特定治疗且 Size 值一定的个体,与接受相同治疗、Size 值相同但 Index 值小一个单位的个体相比的风险比为 <span class="math inline">\(e^{0.710}=2.03\)</span>。这也意味着,Gleason 指数的值越大,在任何给定时间的死亡风险就越大。具体来说,Index 值增加一个单位会使死亡风险加倍。</p>
</div>
</div>
<div class="rmdnote">
<div class="example">
<p><span id="exm:ex3-13" class="example"><strong>示例 3.12 (肾癌的治疗) </strong></span><br></p>
<p>再次考虑表 3.6 中给出的肾癌治疗后生存时间的完整数据集。在<a href="chap3.html#exm:ex3-4">示例 3.4</a> 中,发现最合适的 Cox 回归模型包含对应于年龄组的项 <span class="math inline">\(\alpha_j, j = 1, 2, 3\)</span>,以及对应于是否进行肾切除术的项 <span class="math inline">\(\nu_k, k = 1, 2\)</span>。出于说明目的,在本示例中,我们将考虑还包含这两个因素之间交互作用的模型,尽管该模型并不显著。在此模型下,第 <span class="math inline">\(j\)</span> 个年龄组和第 <span class="math inline">\(k\)</span> 个肾切除状态水平的个体的风险函数为</p>
<p><span class="math display" id="eq:3-17">\[\begin{equation}
h(t)=\exp\{\alpha_j+\nu_k+(\alpha\nu)_{jk}\}h_0(t)
\tag{3.17}
\end{equation}\]</span></p>
<p>其中 <span class="math inline">\((\alpha\nu)_{jk}\)</span> 为交互作用项。</p>
<p>考虑第 <span class="math inline">\(j(j = 1, 2, 3)\)</span> 个年龄组、第 <span class="math inline">\(k(k = 1, 2)\)</span> 个肾切除状态水平的患者相对于第一个年龄组、接受肾切除术的患者在时间 <span class="math inline">\(t\)</span> 的死亡风险比</p>
<p><span class="math display">\[\begin{aligned}\exp\{\alpha_j+\nu_k+(\alpha\nu)_{jk}\}\\\exp\{\alpha_1+\nu_1+(\alpha\nu)_{11}\}\end{aligned}\]</span></p>
<p>如<a href="chap3.html#exm:ex3-4">示例 3.4</a> 所示,式 <a href="cox-%E5%9B%9E%E5%BD%92%E6%A8%A1%E5%9E%8B.html#eq:3-17">(3.17)</a> 中的模型是通过在模型中包含指示变量 <span class="math inline">\(A_2,A_3\)</span> 和 <span class="math inline">\(N\)</span> 以及乘积 <span class="math inline">\(A_2N\)</span> 和 <span class="math inline">\(A_3N\)</span> 来拟合的。这些变量的系数估计分别为 <span class="math inline">\(\alpha_2,\alpha_3,\nu_2,(\alpha\nu)_{22}\)</span> 和 <span class="math inline">\((\alpha\nu)_{32}\)</span>。根据所使用的指示变量的编码,估计值 <span class="math inline">\(\hat{\alpha}_{2},\hat{\alpha}_{3},\hat{\nu}_{2},\widehat{\left(\alpha\nu\right)}_{22}\)</span> 和 <span class="math inline">\(\widehat{\left(\alpha\nu\right)}_{32}\)</span> 均为零。第 <span class="math inline">\(j(j = 1, 2, 3)\)</span> 个年龄组、第 <span class="math inline">\(k(k = 1, 2)\)</span> 个肾切除状态水平的患者相对于第一个年龄组、接受肾切除术的患者的死亡风险比估计,为</p>
<p><span class="math display">\[\exp\{\hat{\alpha}_j+\hat{\nu}_k+\widehat{(\alpha\nu)}_{jk}\}\]</span></p>
<p>非零参数估计值为 <span class="math inline">\(\hat{\alpha}_2=0.005,\hat{\alpha}_3=0.065,\hat{\nu}_2=-1.943,\widehat{(\alpha\nu)}_{22}=-0.051\)</span> 和 <span class="math inline">\(\widehat{\left(\alpha\nu\right)_{32}}=2.003\)</span>,风险比估计总结于表 3.18 中。</p>
<details><summary><font color="#8B2232">表 3.18</font>
</summary><img src="figure/table%203.18.png#center" style="width:80.0%"></details><p><br>
在表 3.18 中,包含了风险比估计为 1.000 的因素水平组合,这强调了风险是相对于第一年龄组中没有接受过肾切除手术的个体而言的。该表显示,与其他年龄组的个体以及未接受肾切除手术的个体相比,年龄小于等于 70 岁且接受过肾切除手术的个体死亡风险要小得多。</p>
<p>可以使用 <a href="cox-%E5%9B%9E%E5%BD%92%E6%A8%A1%E5%9E%8B.html#sec3-9-2">3.9.2</a> 节中描述的方法找到相应真实风险比的置信区间。作为进一步说明,将获得接受过肾切除术的第二年龄组中的个体相对于第一年龄组中的个体的风险比的置信区间。对数风险比估计现在为 <span class="math inline">\(\hat{\alpha}_2+\widehat{(\alpha\nu)}_{22}\)</span>,因此风险比估计为 0.955。该估计的方差由下式给出</p>
<p><span class="math display">\[\begin{aligned}\operatorname{var}\left(\hat{\alpha}_2\right)+\operatorname{var}\left\{\widehat{\left(\alpha\nu\right)}_{22}\right\}+2\operatorname{cov}\left\{\hat{\alpha}_2,\widehat{\left(\alpha\nu\right)}_{22}\right\}\end{aligned}\]</span></p>
<p>根据式 <a href="cox-%E5%9B%9E%E5%BD%92%E6%A8%A1%E5%9E%8B.html#eq:3-17">(3.17)</a> 拟合模型,从其参数估计的方差-协方差阵可得,<span class="math inline">\(\operatorname{var}\left(\hat{\alpha}_2\right)=0.697,\operatorname{var}\left\{\widehat{\left(\alpha\nu\right)}_{22}\right\}=0.942\)</span>,协方差项为 <span class="math inline">\(\mathrm{cov}\left\{\hat{\alpha}_2,\widehat{(\alpha\nu)}_{22}\right\}=-0.695\)</span>。因此,对数风险比估计的方差为 0.248,因此真实对数风险比的 95% 置信区间范围为 -0.532 到 0.441. 真实风险比的相应置信区间为 <span class="math inline">\((0.59, 1.55)\)</span>。该区间包含 1,因此风险比 0.955 在 5% 水平下与 1 没有显著差异。表 3.18 中风险比的置信区间可以用类似的方式得出。</p>
</div>
</div>
</div>
</div>
<div id="sec3-10" class="section level2" number="3.10">
<h2>
<span class="header-section-number">3.10</span> 估计风险函数和生存函数<a class="anchor" aria-label="anchor" href="#sec3-10"><i class="fas fa-link"></i></a>
</h2>
<p>到目前为止,在本章中,我们只考虑了 Cox 回归模型中线性部分的 <span class="math inline">\(\beta\)</span> 参数的估计。正如我们所见,为了推断模型中解释变量对风险函数的影响,我们只需要进行这些步骤。一旦确定了适用于一组生存数据的合适模型,就可以估计风险函数和相应的生存函数。然后,这些估计值可用于总结研究中个体的生存经历。</p>
<p>假设 Cox 回归模型的线性部分包含 <span class="math inline">\(p\)</span> 个解释变量 <span class="math inline">\(X_1,X_2,\ldots,X_p\)</span>,并且这些变量的估计系数为 <span class="math inline">\(\hat{\beta}_1,\hat{\beta}_2,\ldots,\hat{\beta}_p\)</span>。研究中 <span class="math inline">\(n\)</span> 个个体的第 <span class="math inline">\(i\)</span> 个风险函数估计由下式给出</p>
<p><span class="math display" id="eq:3-18">\[\begin{equation}
\hat{h}_i(t)=\exp(\hat{\boldsymbol{\beta}}'\boldsymbol x_i)\hat{h}_0(t)
\tag{3.18}
\end{equation}\]</span></p>
<p>其中 <span class="math inline">\(\boldsymbol x_i\)</span> 是第 <span class="math inline">\(i\)</span> 个个体的解释变量的值向量,<span class="math inline">\(i = 1, 2,...,n\)</span>,<span class="math inline">\(\hat {\boldsymbol \beta}\)</span> 是系数向量的估计,<span class="math inline">\(\hat h_0(t)\)</span> 是基线风险函数估计。使用该方程,一旦得到 <span class="math inline">\(h_0(t)\)</span> 的估计,就可以得到个体风险函数估计。然后可以使用风险、累积风险和生存函数之间的关系来给出累积风险函数和生存函数的估计。</p>
<p>Kalbfleisch and Prentice (1973) 使用基于最大似然法的方法得出了基线风险函数的估计。假设有 <span class="math inline">\(r\)</span> 个不同的死亡时间,按升序排列时,为 <span class="math inline">\(t_{(1)}<t_{(2)}<\cdots<t_{(j)}\)</span>,并且在时间 <span class="math inline">\(t\)</span> 有 <span class="math inline">\(d_j\)</span> 个人死亡,<span class="math inline">\(n_j\)</span> 个人处于风险之中。时间 <span class="math inline">\(t_{(j)}\)</span> 处的基线风险函数估计由下式给出</p>
<p><span class="math display" id="eq:3-19">\[\begin{equation}
\hat{h}_0(t_{(j)})=1-\hat{\xi_j}
\tag{3.19}
\end{equation}\]</span></p>
<p>其中 <span class="math inline">\(j=1,2,\ldots,r\)</span>。<span class="math inline">\(\widehat{\xi}_j\)</span> 为下式的解</p>
<p><span class="math display" id="eq:3-20">\[\begin{equation}
\sum_{l\in D(t_{(j)})}\frac{\exp(\hat{\boldsymbol{\beta}}^{\prime}\boldsymbol{x}_l)}{1-\hat{\xi}_j^{\exp(\hat{\boldsymbol{\beta}}'\boldsymbol x_l)}}=\sum_{l\in R(t_{(j)})}\exp(\hat{\boldsymbol{\beta}}^{\prime}\boldsymbol{x}_l)
\tag{3.20}
\end{equation}\]</span></p>
<p>在式 <a href="cox-%E5%9B%9E%E5%BD%92%E6%A8%A1%E5%9E%8B.html#eq:3-20">(3.20)</a> 中,<span class="math inline">\(D(t_{(j)})\)</span> 是在第 <span class="math inline">\(j\)</span> 个有序死亡时间 <span class="math inline">\(t_{(j)}\)</span> 处死亡的所有 <span class="math inline">\(d_j\)</span> 个个体的集合,以及如 <a href="chap3.html#sec3-3">3.3</a> 节所示,<span class="math inline">\(R(t_{(j)})\)</span> 是在时间 <span class="math inline">\(t_{(j)}\)</span> 处于风险中的所有 <span class="math inline">\(n_j\)</span> 个个体的集合。那些 <span class="math inline">\(\beta\)</span> 的估计构成了向量 <span class="math inline">\(\hat{\boldsymbol \beta}\)</span>,就是那些使式 <a href="chap3.html#eq:3-4">(3.4)</a> 中的似然函数达到最大化的值。<span class="math inline">\(h_0(t)\)</span> 的估计的推导相当复杂,此处不再赘述。</p>
<p>在没有死亡时间结的情况下,即对于 <span class="math inline">\(j=1,2,\ldots,r\)</span> 有 <span class="math inline">\(d_j=1\)</span>,式 <a href="cox-%E5%9B%9E%E5%BD%92%E6%A8%A1%E5%9E%8B.html#eq:3-20">(3.20)</a> 的左侧将成为单个项(直接省去求和号)。那么可以求解该方程,得到</p>
<p><span class="math display">\[\begin{equation}
\hat{\xi_j}=\left(1-\frac{\exp(\hat{\boldsymbol{\beta}}^{\prime}\boldsymbol{x}_{(j)})}{\sum_{l\in R(t_{(j)})}\exp(\hat{\boldsymbol{\beta}}^{\prime}\boldsymbol{x}_l)}\right)^{\exp(-\hat{\boldsymbol{\beta}}^{\prime}\boldsymbol{x}_{(j)})}
\end{equation}\]</span></p>
<p>其中 <span class="math inline">\(\boldsymbol{x}_{(j)}\)</span> 是在时间 <span class="math inline">\(t_{(j)}\)</span> 死亡的个体的解释变量向量。</p>
<p>当存在观测结时,即当一个或多个 <span class="math inline">\(d_j>1\)</span> 时,式 <a href="cox-%E5%9B%9E%E5%BD%92%E6%A8%A1%E5%9E%8B.html#eq:3-20">(3.20)</a> 左侧的求和是一系列分数之和,其中,在分母中出现了 <span class="math inline">\(\widehat{\xi}_{j}\)</span>,并具有不同的幂次。则式 <a href="cox-%E5%9B%9E%E5%BD%92%E6%A8%A1%E5%9E%8B.html#eq:3-20">(3.20)</a> 无法显式求解,需要迭代计算。</p>
<p>我们现在假设相邻死亡时间之间的死亡风险是恒定的。然后,通过将式 <a href="cox-%E5%9B%9E%E5%BD%92%E6%A8%A1%E5%9E%8B.html#eq:3-19">(3.19)</a> 中的风险估计除以时间区间长度,从而得到该区间内基线风险函数的合适估计,这是一个阶跃函数</p>
<p><span class="math display" id="eq:3-21">\[\begin{equation}
\hat{h}_0(t)=\frac{1-\hat{\xi}_j}{t_{(j+1)}-t_{(j)}}
\tag{3.21}
\end{equation}\]</span></p>
<p>其中 <span class="math inline">\(t_{(j)}\leqslant t<t_{(j+1)},j=1,2,\ldots,r-1\)</span>,且对于 <span class="math inline">\(t<t_{(1)}\)</span> 有 <span class="math inline">\(\hat{h}_0(t)=0\)</span>。</p>
<p>量 <span class="math inline">\(\hat{\xi}_j\)</span> 可视为个体在 <span class="math inline">\(t_{(j)}\)</span> 到 <span class="math inline">\(t_{(j+1)}\)</span> 区间内生存概率的估计。那么基线生存函数可估计为</p>
<p><span class="math display" id="eq:3-22">\[\begin{equation}
\hat{S}_0(t)=\prod_{j=1}^k\hat{\xi}_j
\tag{3.22}
\end{equation}\]</span></p>
<p>其中 <span class="math inline">\(t_{(k)}\leqslant t<t_{(k+1)},k=1,2,\ldots,r-1\)</span>,该估计也为阶跃函数。且对于 <span class="math inline">\(t<t_{(1)}\)</span>,基线生存函数的估计为 1;对于 <span class="math inline">\(t\geqslant t_{(r)}\)</span>,估计为 0,除非有大于 <span class="math inline">\(t_{(r)}\)</span> 的删失生存时间,如果是这种情况,则在最大删失时间之前可以将 <span class="math inline">\(\hat{S}_0(t)\)</span> 取为 <span class="math inline">\(\hat{S}_0(t_{(r)})\)</span>,但在该时间之后生存函数估计是未定义的。</p>
<p>根据式 <a href="chap1.html#eq:1-8">(1.8)</a>,基线累积风险函数为 <span class="math inline">\(H_0(t)=-\log S_0(t)\)</span>,该函数的估计为</p>
<p><span class="math display" id="eq:3-23">\[\begin{equation}
\hat{H}_0(t)=-\log\hat{S}_0(t)=-\sum_{j=1}^k\log\hat{\xi}_j
\tag{3.23}
\end{equation}\]</span></p>
<p>其中 <span class="math inline">\(t_{(k)}\leqslant t<t_{(k+1)},k=1,2,\ldots,r-1\)</span>,且对于 <span class="math inline">\(t<t_{(1)}\)</span> 有 <span class="math inline">\(\hat{H}_0(t)=0\)</span>。</p>
<p>式 <a href="cox-%E5%9B%9E%E5%BD%92%E6%A8%A1%E5%9E%8B.html#eq:3-21">(3.21)</a>, <a href="cox-%E5%9B%9E%E5%BD%92%E6%A8%A1%E5%9E%8B.html#eq:3-22">(3.22)</a> 和 <a href="cox-%E5%9B%9E%E5%BD%92%E6%A8%A1%E5%9E%8B.html#eq:3-23">(3.23)</a> 中的基线风险函数、生存函数和累积风险函数的估计可用于得到具有解释变量向量 <span class="math inline">\(\boldsymbol{x}_{i}\)</span> 的个体的相应估计。具体来说,根据式 <a href="cox-%E5%9B%9E%E5%BD%92%E6%A8%A1%E5%9E%8B.html#eq:3-18">(3.18)</a> ,通过 <span class="math inline">\(\exp(\hat{\boldsymbol{\beta}}'\boldsymbol x_i)\hat{h}_0(t)\)</span> 来估计风险函数。接下来,对式 <a href="cox-%E5%9B%9E%E5%BD%92%E6%A8%A1%E5%9E%8B.html#eq:3-18">(3.18)</a> 两边进行积分,我们得到</p>
<p><span class="math display" id="eq:3-24">\[\begin{equation}
\int_0^t\hat{h}_i(u)\mathrm{d}u=\exp(\hat{\boldsymbol{\beta}}'\boldsymbol{x}_i)\int_0^t\hat{h}_0(u)\mathrm{d}u
\tag{3.24}
\end{equation}\]</span></p>
<p>因此第 <span class="math inline">\(i\)</span> 个个体的累积风险函数估计为</p>
<p><span class="math display" id="eq:3-25">\[\begin{equation}
\hat{H}_{\boldsymbol{i}}(t)=\operatorname{exp}(\hat{\boldsymbol \beta}'\boldsymbol x_{{i}})\hat{H}_{0}(t)
\tag{3.25}
\end{equation}\]</span></p>
<p>将式 <a href="cox-%E5%9B%9E%E5%BD%92%E6%A8%A1%E5%9E%8B.html#eq:3-24">(3.24)</a> 的两边乘以 −1 后进行指数运算,并利用式 <a href="chap1.html#eq:1-6">(1.6)</a>,我们得到第 <span class="math inline">\(i\)</span> 个个体的生存函数估计</p>
<p><span class="math display" id="eq:3-26">\[\begin{equation}
\hat{S}_i(t)=\left\{\hat{S}_0(t)\right\}^{\exp(\hat{\boldsymbol{\beta}}^{\prime}\boldsymbol{x}_i)}
\tag{3.26}
\end{equation}\]</span></p>
<p>其中 <span class="math inline">\(t_{(k)}\leqslant t<t_{(k+1)},k=1,2,\ldots,r-1\)</span>。请注意,一旦获得了生存函数估计 <span class="math inline">\(\hat{S}_i(t)\)</span>,累积风险函数的估计就简单地是 <span class="math inline">\(-\operatorname{log}\hat{S}_{{i}}(t)\)</span>。</p>
<div id="sec3-10-1" class="section level3" number="3.10.1">
<h3>
<span class="header-section-number">3.10.1</span> 无协变量的特例<a class="anchor" aria-label="anchor" href="#sec3-10-1"><i class="fas fa-link"></i></a>
</h3>
<p>当不存在协变量时,因此我们只有一个生存时间样本,式 <a href="cox-%E5%9B%9E%E5%BD%92%E6%A8%A1%E5%9E%8B.html#eq:3-20">(3.20)</a> 变为</p>
<p><span class="math display">\[\begin{aligned}\frac{d_j}{1-\hat{\xi}_j}&=n_j\end{aligned}\]</span></p>
<p>其中</p>
<p><span class="math display">\[\hat{\xi_j}=\frac{n_j-d_j}{n_j}\]</span></p>
<p>那么,在时间 <span class="math inline">\(t_{(j)}\)</span> 处的基线风险函数估计为 <span class="math inline">\(1-\hat{\xi}_j\)</span>,也就是 <span class="math inline">\(d_j/n_j\)</span>。式 <a href="cox-%E5%9B%9E%E5%BD%92%E6%A8%A1%E5%9E%8B.html#eq:3-22">(3.22)</a> 中生存函数的相应估计为 <span class="math inline">\(\prod_{j=1}^k\hat{\xi}_j\)</span>,即</p>
<p><span class="math display">\[\prod_{j=1}^k\left(\frac{n_j-d_j}{n_j}\right)\]</span></p>
<p>这正是之前在式 <a href="chap2.html#eq:2-4">(2.4)</a> 中给出的生存函数的 Kaplan-Meier 估计。这表明,式 <a href="cox-%E5%9B%9E%E5%BD%92%E6%A8%A1%E5%9E%8B.html#eq:3-26">(3.26)</a> 给出的生存函数估计将 Kaplan-Meier 估计推广到风险函数取决于解释变量的情况。</p>
<p>此外,式 <a href="cox-%E5%9B%9E%E5%BD%92%E6%A8%A1%E5%9E%8B.html#eq:3-21">(3.21)</a> 中的风险函数估计简化为 <span class="math inline">\(d_j/\{n_j(t_{(j+1)}-t_{(j)})\}\)</span>,这是第 2 章式 <a href="chap2.html#eq:2-13">(2.13)</a> 中给出的风险函数估计。</p>
</div>
<div id="sec3-10-2" class="section level3" number="3.10.2">
<h3>
<span class="header-section-number">3.10.2</span> 基线函数估计的一些近似<a class="anchor" aria-label="anchor" href="#sec3-10-2"><i class="fas fa-link"></i></a>
</h3>
<p>当存在生存时间结时,只能通过使用迭代方法求解式 <a href="cox-%E5%9B%9E%E5%BD%92%E6%A8%A1%E5%9E%8B.html#eq:3-20">(3.20)</a> 来得到的基线风险估计。但可以通过使用式 <a href="cox-%E5%9B%9E%E5%BD%92%E6%A8%A1%E5%9E%8B.html#eq:3-20">(3.20)</a> 左侧求和的近似来绕过这种迭代过程。</p>
<p>在式 <a href="cox-%E5%9B%9E%E5%BD%92%E6%A8%A1%E5%9E%8B.html#eq:3-20">(3.20)</a> 左侧分母中的项</p>
<p><span class="math display">\[\hat{\xi}_j^{\exp(\hat{\boldsymbol{\beta}}^{\prime}\boldsymbol{x}_l)}\]</span></p>
<p>可写为</p>
<p><span class="math display">\[\exp\left\{e^{\hat{\boldsymbol{\beta}}^{\prime}\boldsymbol{x}_l}\log\hat{\xi}_j\right\}\]</span></p>
<p>取指数展开中的前两项,得到</p>
<p><span class="math display">\[\exp\left\{e^{\hat{\boldsymbol{\beta}}^{\prime}\boldsymbol{x}_l}\log\hat{\xi}_j\right\}\approx1+e^{\hat{\boldsymbol{\beta}}^{\prime}\boldsymbol{x}_l}\log\hat{\xi}_j\]</span></p>
<p>将使用该近似在时间 <span class="math inline">\(t_{\left(j\right)}\)</span> 处获得的基线风险估计记作 <span class="math inline">\(1-\tilde{\xi}_j\)</span>,并在式 <a href="cox-%E5%9B%9E%E5%BD%92%E6%A8%A1%E5%9E%8B.html#eq:3-20">(3.20)</a> 中用 <span class="math inline">\(1+e^{\hat{\boldsymbol{\beta}}^{\prime}\boldsymbol{x}_l}\log\widetilde{\xi}_{j}\)</span> 替换 <span class="math inline">\(\hat{\xi}_j^{\exp(\hat{\boldsymbol{\beta}}^{\prime}\boldsymbol{x}_l)}\)</span>,我们发现 <span class="math inline">\(\tilde{\xi}_j\)</span> 满足</p>
<p><span class="math display">\[-\sum_{l\in D(t_{(j)})}\frac1{\log\tilde{\xi}_j}=\sum_{l\in R(t_{(j)})}\exp(\hat{\boldsymbol{\beta}}^{\prime}\boldsymbol{x}_l)\]</span></p>
<p>因此</p>
<p><span class="math display">\[\begin{aligned}\frac{-d_j}{\log\widetilde{\xi_j}}&=\sum_{l\in R(t_{(j)})}\exp(\hat{\boldsymbol{\beta}}'\boldsymbol{x}_l)\end{aligned}\]</span></p>
<p>由于 <span class="math inline">\(d_j\)</span> 是第 <span class="math inline">\(j\)</span> 个有序死亡时间 <span class="math inline">\(t_{(j)}\)</span> 处的死亡人数,因此</p>
<p><span class="math display" id="eq:3-27">\[\begin{equation}
\tilde{\xi}_j=\exp\left(\frac{-d_j}{\sum_{l\in R(t_{(j)})}\exp(\hat{\boldsymbol{\beta'x}}_l)}\right)
\tag{3.27}
\end{equation}\]</span></p>
<p>根据式 <a href="cox-%E5%9B%9E%E5%BD%92%E6%A8%A1%E5%9E%8B.html#eq:3-22">(3.22)</a> ,基于 <span class="math inline">\(\tilde{\xi}_j\)</span> 的值,生存函数的估计为</p>
<p><span class="math display" id="eq:3-28">\[\begin{equation}
\tilde{S}_0(t)=\prod_{j=1}^k\exp\left(\frac{-d_j}{\sum_{l\in R(t_{(j)})}\exp(\hat{\boldsymbol{\beta}}^{\prime}\boldsymbol{x}_l)}\right)
\tag{3.28}
\end{equation}\]</span></p>
<p>其中 <span class="math inline">\(t_{(k)}\leqslant t<t_{(k+1)},k=1,2,\ldots,r-1\)</span>。根据该定义,与式 <a href="cox-%E5%9B%9E%E5%BD%92%E6%A8%A1%E5%9E%8B.html#eq:3-22">(3.22)</a> 中的估计不同,当最长生存时间未删失时,生存函数估计不一定为 0. 根据 <span class="math inline">\(\tilde{S}_0(t)\)</span> 得出的基线累积风险函数的估计为</p>
<p><span class="math display" id="eq:3-29">\[\begin{equation}
\tilde{H}_0(t)=-\log\tilde{S}_0(t)=\sum_{j=1}^k\frac{d_j}{\sum_{l\in R(t_{(j)})}\exp(\hat{\boldsymbol{\beta}}'\boldsymbol x_l)}
\tag{3.29}
\end{equation}\]</span></p>
<p>其中 <span class="math inline">\(t_{(k)}\leqslant t<t_{(k+1)},k=1,2,\ldots,r-1\)</span>。该估计通常称为基线累积风险函数的 Nelson-Aalen 估计或 Breslow 估计。</p>
<p>当不存在协变量时,由于 <span class="math inline">\(n_j\)</span> 是在时间 <span class="math inline">\(t_{(j)}\)</span> 处于风险的个体数量,式 <a href="cox-%E5%9B%9E%E5%BD%92%E6%A8%A1%E5%9E%8B.html#eq:3-28">(3.28)</a> 中的基线生存函数估计变为</p>
<p><span class="math display" id="eq:3-30">\[\begin{equation}
\prod_{j=1}^k\exp(-d_j/n_j)
\tag{3.30}
\end{equation}\]</span></p>
<p>这是第 2 章式 <a href="chap2.html#eq:2-5">(2.5)</a> 中给出的生存函数的 Nelson-Aalen 估计,基线累积风险函数的相应估计为 <span class="math inline">\(\sum_{j=1}^kd_j/n_j\)</span> ,如第 2 章 <a href="chap2.html#sec2-3-3">2.3.3</a> 节所示。</p>
<p>注意到表达式</p>
<p><span class="math display">\[\frac{-d_j}{\sum_{l\in R(t_{(j)})}\exp(\hat{\boldsymbol{\beta}}'\boldsymbol{x}_l)}\]</span></p>
<p>是式 <a href="cox-%E5%9B%9E%E5%BD%92%E6%A8%A1%E5%9E%8B.html#eq:3-27">(3.27)</a> 的指数部分,该值往往很小,除非在特定死亡时间有大量的结。取此指数展开的前两项,将这个关于 <span class="math inline">\(\xi_j\)</span> 的新的近似记为 <span class="math inline">\(\xi_j^*\)</span>,得到</p>
<p><span class="math display">\[\xi_j^*=1-\frac{d_j}{\sum_{l\in R(t_{(j)})}\exp(\hat{\boldsymbol{\beta}}'\boldsymbol{x}_l)}\]</span></p>
<p>利用式 <a href="cox-%E5%9B%9E%E5%BD%92%E6%A8%A1%E5%9E%8B.html#eq:3-21">(3.21)</a>,从 <span class="math inline">\(t_{(j)}\)</span> 到 <span class="math inline">\(t_{(j+1)}\)</span> 的区间的基线风险函数估计由下式给出</p>
<p><span class="math display" id="eq:3-31">\[\begin{equation}
h_0^*(t)=\frac{d_j}{(t_{(j+1)}-t_{(j)})\sum_{l\in R(t_{(j)})}\exp(\hat{\boldsymbol{\beta}}'\boldsymbol{x}_l)}
\tag{3.31}
\end{equation}\]</span></p>
<p>其中 <span class="math inline">\(t_{(j)}\leqslant t<t_{(j+1)},j=1,2,\ldots,r-1\)</span>。使用 <span class="math inline">\(\xi_{j}^{*}\)</span> 替换式 <a href="cox-%E5%9B%9E%E5%BD%92%E6%A8%A1%E5%9E%8B.html#eq:3-22">(3.22)</a> 中的 <span class="math inline">\(\xi_{j}\)</span>,相应的基线生存函数估计为</p>
<p><span class="math display">\[\begin{aligned}S_0^*(t)=\prod_{j=1}^k\left(1-\frac{d_j}{\sum_{l\in R(t_{(j)})}\exp(\hat{\boldsymbol{\beta}}'\boldsymbol{x}_l)}\right)\end{aligned}\]</span></p>
<p>以及,基线累积风险函数估计的进一步近似为 <span class="math inline">\(H^*_0(t)=-\log S_0^*(t)\)</span>。请注意,式 <a href="cox-%E5%9B%9E%E5%BD%92%E6%A8%A1%E5%9E%8B.html#eq:3-29">(3.29)</a> 中在时间 <span class="math inline">\(t\)</span> 处 的累积风险函数可以表示为</p>
<p><span class="math display">\[\begin{aligned}\tilde{H}_0(t)=\sum_{j=1}^k(t_{(j+1)}-t_{(j)})h_0^*(t)\end{aligned}\]</span></p>
<p>其中 <span class="math inline">\(h^*_0(t)\)</span> 由式 <a href="cox-%E5%9B%9E%E5%BD%92%E6%A8%A1%E5%9E%8B.html#eq:3-31">(3.31)</a> 给出。因此,式 <a href="cox-%E5%9B%9E%E5%BD%92%E6%A8%A1%E5%9E%8B.html#eq:3-29">(3.29)</a> 中基线累积风险函数估计的连续值之差提供了在时间 <span class="math inline">\(t_{(1)},t_{(2)},\ldots,t_{(r)}\)</span> 处的基线风险函数的近似,这很容易计算。</p>
<p>在无协变量的特例中,估计 <span class="math inline">\(h_0^*(t),S_0^*(t)\)</span> 和 <span class="math inline">\(H_0^*(t)\)</span> 与 <a href="cox-%E5%9B%9E%E5%BD%92%E6%A8%A1%E5%9E%8B.html#sec3-10-1">3.10.1</a> 节中给出的相同。类似于式 <a href="cox-%E5%9B%9E%E5%BD%92%E6%A8%A1%E5%9E%8B.html#eq:3-25">(3.25)</a> 和 <a href="cox-%E5%9B%9E%E5%BD%92%E6%A8%A1%E5%9E%8B.html#eq:3-26">(3.26)</a> 的方程可用于估计解释变量向量为 <span class="math inline">\(\boldsymbol x_i\)</span> 的个体的累积风险和生存函数。</p>
<p>在实践中,使用 <span class="math inline">\(\tilde{S}_0(t)\)</span> 或 <span class="math inline">\(S_0^*(t)\)</span> 代替 <span class="math inline">\(\hat{S}_0(t)\)</span> 通常在计算上是有利的。当生存时间结的数量很小时,三种估计往往非常相似。此外,由于估计通常用作生存数据的描述性总结,因此估计之间的微小差异不太可能具有实际意义。</p>
<div class="rmdnote">
<div class="example">
<p><span id="exm:ex3-14" class="example"><strong>示例 3.13 (肾癌的治疗) </strong></span><br></p>
<p>在<a href="chap3.html#exm:ex3-4">示例 3.4</a> 中,利用 Cox 回归模型拟合了高肾瘤患者的生存时间数据。研究发现,风险函数取决于患者的年龄组,以及是否进行了肾切除术。第 <span class="math inline">\(i\)</span> 名患者的风险函数估计为</p>
<p><span class="math display">\[\begin{aligned}\hat{h}_i(t)=\exp\{0.013A_{2i}+1.342A_{3i}-1.412N_i\}\hat{h}_0(t)\end{aligned}\]</span></p>
<p>其中,如果患者年龄在 60 - 70 岁之间,则 <span class="math inline">\(A_{2i}\)</span> 为 1,否则为 0;如果患者年龄超过 70 岁,则 <span class="math inline">\(A_{3i}\)</span> 为 1,否则为 0,并且如果患者进行了肾切除术,则 <span class="math inline">\(N_i\)</span> 为 1,反之为 0. 因此基线风险函数估计是年龄小于 60 且未进行肾切除术的个体在时间 <span class="math inline">\(t\)</span> 时死亡的风险估计。</p>
<p>分别使用式 <a href="cox-%E5%9B%9E%E5%BD%92%E6%A8%A1%E5%9E%8B.html#eq:3-19">(3.19)</a>, <a href="cox-%E5%9B%9E%E5%BD%92%E6%A8%A1%E5%9E%8B.html#eq:3-23">(3.23)</a> 和 <a href="cox-%E5%9B%9E%E5%BD%92%E6%A8%A1%E5%9E%8B.html#eq:3-22">(3.22)</a> 得到的基线风险函数估计 <span class="math inline">\(\hat{h}_0(t)\)</span>、累积风险函数估计 <span class="math inline">\(\hat{H}_0(t)\)</span> 和 生存函数估计 <span class="math inline">\(\hat{S}_0(t)\)</span>,列于表 3.19 中。</p>
<details><summary><font color="#8B2232">表 3.19</font>
</summary><img src="figure/table%203.19.png#center" style="width:80.0%"></details><p><br>
根据该表,我们可以看出,基线风险函数估计的总体趋势是随着时间的推移而增加。根据基线风险函数估计的计算方式,该估计仅适用于研究中患者的死亡时间。然而,如果假设在每个时间区间内存在恒定的风险,通过将估计的风险除以相应的时间区间长度,可以得到每单位时间的死亡风险。这得到了式 <a href="cox-%E5%9B%9E%E5%BD%92%E6%A8%A1%E5%9E%8B.html#eq:3-21">(3.21)</a> 中的估计。该风险函数如图 3.4 所示。</p>
<details><summary><font color="#8B2232">图 3.4</font>
</summary><img src="figure/figure%203.4.png#center" style="width:80.0%"></details><p><br>
该图显示,在研究期间,每单位时间的死亡风险大致恒定。表 3.19 还显示,正如预期的那样,<span class="math inline">\(\hat{H}_{0}(t)\)</span> 的连续观测之差与 <span class="math inline">\(\hat{h}_{0}(t)\)</span> 非常相似。</p>
<p>我们现在考虑中位生存时间估计,其定义为生存函数估计小于 0.5 的最小观测生存时间。根据表 3.19,年龄在 60 岁以下且未进行肾切除术的患者的中位生存时间估计为 12 个月。</p>
<p>通过将基线生存函数估计的指定合适的幂,可以使用式 <a href="cox-%E5%9B%9E%E5%BD%92%E6%A8%A1%E5%9E%8B.html#eq:3-26">(3.26)</a> 获得其他年龄组患者以及接受过肾切除术患者的生存函数估计。因此,第 <span class="math inline">\(i\)</span> 个个体的生存函数估计由下式给出</p>
<p><span class="math display">\[\hat{S}_i(t)=\left\{\hat{S}_0(t)\right\}^{\exp\{0.013A_{2i}+1.342A_{3i}-1.412N_i\}}\]</span></p>
<p>对于一个年龄小于 60 岁、接受过肾切除术的个体,有 <span class="math inline">\(A_2=0,A_3=0\)</span> 以及 <span class="math inline">\(N_=1\)</span>,因此该个体的生存函数估计成为</p>
<p><span class="math display">\[\left\{\hat{S}_0(t)\right\}^{\exp\{-1.412\}}\]</span></p>
<p>该函数与同一年龄组但未接受肾切除术个体的基线生存函数估计一起绘制在图 3.5 中。此图表明,接受肾切除术的患者相比未接受肾切除术的患者,在任何给定时间的生存概率都更大,从而证实肾切除术能够改善肾癌患者的预后。</p>
<details><summary><font color="#8B2232">图 3.5</font>
</summary><img src="figure/figure%203.5.png#center" style="width:80.0%"></details><p><br>
请注意,由于假设了比例风险,图 3.5 中的两个生存函数估计不会交叉。此外,那些接受过肾切除的患者的生存函数估计高于那些没有接受过肾切除的患者。这是接受过手术的人相对于未接受手术的人风险比估计小于 1 的直接结果。</p>
<p>此类患者的中位生存时间估计可以从生存函数估计的表格或图 3.5 中获得。我们发现,年龄小于 60 岁、接受肾切除术的患者的中位生存时间估计为 36 个月。可以使用类似的方法估计生存时间分布的其他百分位数。</p>
<p>以类似的方式,可以比较不同年龄组患者的生存函数,无论是否接受过肾切除术。例如,对于接受过肾切除术的患者,三个年龄组患者的生存函数估计分别为 <span class="math inline">\(\{\hat{S}_0(t)\}^{\exp\{-1.412\}},~\{\hat{S}_0(t)\}^{\exp\{-1.412+0.013\}}\)</span> 和 <span class="math inline">\(\{\hat{S}_0(t)\}^{\exp\{-1.412+1.342\}}\)</span>。这些生存函数估计如图 3.6 所示,它清楚地表明 70 岁以上的患者的预后比其他两个年龄组的患者更差。</p>
<details><summary><font color="#8B2232">图 3.6</font>
</summary><img src="figure/figure%203.6.png#center" style="width:80.0%"></details>
</div>
</div>
</div>
</div>
<div id="sec3-11" class="section level2" number="3.11">
<h2>
<span class="header-section-number">3.11</span> 风险调整的生存函数<a class="anchor" aria-label="anchor" href="#sec3-11"><i class="fas fa-link"></i></a>
</h2>
<p>一旦拟合了 Cox 回归模型,就可以获得每个个体的生存函数估计。接下来可能会关注拟合的生存函数与未经调整的 Kaplan-Meier 估计的生存函数有何差异。这样就可以确定风险调整的影响。为此,通过在每个事件时间点上对个体生存函数估计进行平均来获得风险调整的生存函数 (risk-adjusted survival function).</p>
<p>正式地说,假设 Cox 回归模型拟合了 <span class="math inline">\(n\)</span> 个个体的生存数据,其中第 <span class="math inline">\(i(i=1,2,\ldots,n)\)</span> 个个体在时间 <span class="math inline">\(t\)</span> 的死亡风险为</p>
<p><span class="math display">\[\begin{aligned}h_i(t)=\exp(\boldsymbol{\beta'x}_i)h_0(t)\end{aligned}\]</span></p>
<p>其中 <span class="math inline">\(\boldsymbol\beta'\boldsymbol{x}_i=\beta_1x_{1i}+\beta_2x_{2i}+\cdots+\beta_px_{pi}\)</span>。<span class="math inline">\(x_{1i},x_{2i},\ldots,x_{pi}\)</span> 为每个个体的 <span class="math inline">\(p\)</span> 个解释变量的值,<span class="math inline">\(h_0(t)\)</span> 为基线风险函数。第 <span class="math inline">\(i\)</span> 个个体相应的生存函数为</p>
<p><span class="math display">\[S_i(t)=\{S_0(t)\}^{\exp(\boldsymbol{\beta'x_i})}\]</span></p>
<p>模型拟合过程会得出 <span class="math inline">\(p\)</span> 个 <span class="math inline">\(\beta\)</span> 参数 <span class="math inline">\(\hat{\beta}_1,\hat{\beta}_2,\ldots,\hat{\beta}_p\)</span> 以及基线生存函数 <span class="math inline">\(\hat{S}_0(t)\)</span> 的估计。然后,在给定时间 <span class="math inline">\(t\)</span> 处的平均生存函数 (average survivor function) 为</p>
<p><span class="math display" id="eq:3-32">\[\begin{equation}
\hat{S}(t)=\frac{1}{n}\sum_{i=1}^n\hat{S}_i(t)
\tag{3.32}
\end{equation}\]</span></p>
<p>其中</p>
<p><span class="math display">\[\hat{S_i}(t)=\left\{\hat{S_0}(t)\right\}^{\exp(\hat{\boldsymbol{\beta}}'\boldsymbol x_i)}\]</span></p>
<p>为第 <span class="math inline">\(i\)</span> 个个体的生存函数估计。那么可以根据 <span class="math inline">\(\hat{S_i}(t)\)</span> 获得生存率(生存时间分布中位数和其他百分位数)的风险调整估计。</p>
<div class="rmdnote">
<div class="example">
<p><span id="exm:ex3-15" class="example"><strong>示例 3.14 (多发性骨髓瘤患者的生存率) </strong></span><br></p>
<p>在<a href="chap3.html#exm:ex3-5">示例 3.5</a> 中,发现包含解释变量 Hb 和 Bun 的 Cox 回归模型适合对<a href="chap1.html#exm:ex1-3">示例 1.3</a> 中介绍的多发性骨髓瘤患者生存时间数据进行建模。第 <span class="math inline">\(i\)</span> 个患者 <span class="math inline">\(i = 1, 2,..., 48\)</span> 的生存函数估计为</p>
<p><span class="math display">\[\hat{S_i}(t)=\left\{\hat{S_0}(t)\right\}^{\exp(\hat{\eta_i})}\]</span></p>
<p>其中风险评分 <span class="math inline">\(\hat{\eta}_{{i}}\)</span> 为 <span class="math inline">\(\hat{\eta}_i=-0.134Hb_i+0.019Bun_i\)</span>。那么可以在数据集中的每个事件时间获取 48 名患者的生存函数估计。对每个事件时间的 48 名患者的估计进行平均,得出风险调整的生存函数。图 3.7 绘制了该函数以及生存函数未经调整的 Kaplan-Meier 估计。这两种生存函数估计非常接近,因此在本例中,风险调整过程对生存率或中位生存时间的估计几乎没有影响。</p>
<details><summary><font color="#8B2232">图 3.7</font>
</summary><img src="figure/figure%203.7.png#center" style="width:80.0%"></details>
</div>
</div>
<div id="sec3-11-1" class="section level3" number="3.11.1">
<h3>
<span class="header-section-number">3.11.1</span> 分组风险调整的生存函数<a class="anchor" aria-label="anchor" href="#sec3-11-1"><i class="fas fa-link"></i></a>
</h3>
<p>在许多情况下,对个体的某些特定组别进行风险调整以调整这些分组之间因解释变量值的不同而产生的差异,并估计调整的生存函数是有意义的。例如,考虑一项关于采用两种不同治疗方案的无病生存 (disease-free survival) 的研究。若这项研究是以随机对照试验的方式进行,那么很可能各治疗组之间解释变量的值会均衡分配。这时,可以使用未经调整的 Kaplan-Meier 方法对每个组别估计生存函数,辅以未经调整和经过调整的治疗效应的风险比,从而充分总结数据。然而,如果数据来源于观察性研究,在该研究中,解释变量的值在两个治疗组之间不一定均衡分布。在这种情况下,对两个组别未经调整的生存函数估计可能会产生误导。此时,在得出关于治疗效应的结论之前,需要先进行风险调整过程,以便考虑到两个组别内个体特征之间不均衡的情况。</p>
<p>如果可以假设治疗组之间的差异与时间无关,则可以将组别效应添加到生存模型中,并利用式 <a href="cox-%E5%9B%9E%E5%BD%92%E6%A8%A1%E5%9E%8B.html#eq:3-32">(3.32)</a> 计算每个治疗组中个体的风险调整的生存函数。然而,在许多应用中,例如在第 <a href="chap11.html#chap11">11</a> 章中要考虑的比较机构之间的生存率时,不能做出这种假设。此时,就需要将 Cox 回归模型扩展:每组具有不同的基线风险函数。</p>
<p>假设在一项比较 <span class="math inline">\(g\)</span> 组个体生存率的研究中,已拟合了一个包含有意义的解释变量的 Cox 回归模型,但不包含组别效应。那么在第 <span class="math inline">\(j(j=1,2,\ldots,g)\)</span> 组中,第 <span class="math inline">\(i(i=1,2,\ldots,n_j)\)</span> 个个体在时间 <span class="math inline">\(t\)</span> 处的死亡风险模型可表示为</p>
<p><span class="math display">\[\begin{aligned}h_{ij}(t)=\exp(\boldsymbol{\beta'x}_{ij})h_{0j}(t)\end{aligned}\]</span></p>
<p>其中 <span class="math inline">\(\boldsymbol{\beta'x_{ij}}=\beta_1x_{1ij}+\beta_2x_{2ij}+\cdots+\beta_px_{pij}\)</span>。<span class="math inline">\(x_{1{i}j},x_{2{i}j},\ldots,x_{{pi}j}\)</span> 为对每个个体测量的 <span class="math inline">\(p\)</span> 个解释变量的值。<span class="math inline">\(h_{0j}(t)\)</span> 是第 <span class="math inline">\(j\)</span> 组的基线风险函数。在该模型中,<span class="math inline">\(p\)</span> 个解释变量的系数,<span class="math inline">\(\beta_1,\beta_2,\ldots,\beta_p\)</span> 在 <span class="math inline">\(g\)</span> 个组中是恒定的,但每组的基线风险函数不同。这是一个分层 Cox 回归模型 (stratified Cox regression model),其中 <span class="math inline">\(g\)</span> 个组定义了单独的分层。这些模型将在第 <a href="chap11.html#chap11">11</a> 章中进行更详细的讨论。</p>
<p>在拟合分层模型时,第 <span class="math inline">\(j\)</span> 组中第 <span class="math inline">\(i\)</span> 名患者的相应生存函数估计为</p>
<p><span class="math display">\[\hat{S}_{{i}{j}}(t)=\left\{\hat{S}_{{0}{j}}(t)\right\}^{\exp(\hat{\boldsymbol{\beta}}'\boldsymbol{x}_{ij})}\]</span></p>
<p>其中,<span class="math inline">\(\hat{S}_{0j}(t)\)</span> 是第 <span class="math inline">\(j\)</span> 组中个体的基线生存函数估计。</p>
<p>如果假定各组对风险函数的效应呈比例关系,则将拟合一个公共基线风险,并在模型中包含组别效应。那么 <span class="math inline">\(h_{0{j}}(t)\)</span> 被 <span class="math inline">\(\exp(g_j)h_0(t)\)</span> 代替,其中 <span class="math inline">\(g_j\)</span> 是第 <span class="math inline">\(j\)</span> 组的效应。一般来说,通过使用分层模型,允许组别效应随时间变化的限制较少。</p>
<p>在分层模型中,可以通过对各组别内的个体在每个事件时间点上的生存函数估计值进行平均,从而求得每个组别的风险调整的生存函数。因此,在时间 <span class="math inline">\(t\)</span> 处的平均风险调整生存函数为</p>
<p><span class="math display">\[\hat{S}_j(t)=\frac1{n_j}\sum_{i=1}^{n_j}\hat{S}_{ij}(t)\]</span></p>
<p>这对应于第 <span class="math inline">\(j\)</span> 组中的个体。</p>
<p>另一种方法是对每个组中个体的每个解释变量的值进行平均,然后使用这些值来估计特定于组的生存函数。令 <span class="math inline">\({\bar{\boldsymbol{x}}}_j\)</span> 为第 <span class="math inline">\(j\)</span> 组中个体的 <span class="math inline">\(p\)</span> 个变量的平均值向量,则组 <span class="math inline">\(j\)</span> 中“平均个体”的相应生存函数估计为</p>
<p><span class="math display">\[\tilde{S}_j(t)=\left\{\hat{S}_{0j}(t)\right\}^{\exp(\hat{\boldsymbol{\beta}}^{\prime}\bar{\boldsymbol{x}}_j)}\]</span></p>
<p>尽管这种方法被广泛应用,但它也受到了广泛的批评。对于分类变量而言,对其值进行平均并不恰当。例如,假设与糖尿病有无相关的某个变量有两个水平,分别编码为 1 和 0,且数据中有 10% 的个体患有糖尿病。将指示变量的平均值设为 0.1,在糖尿病状态以该值定义时,并不能得到生存函数有意义的解读。另外,即使对于连续型解释变量,在一个组别内部的解释变量平均值集合可能并不对应于真实组合的值,而且平均个体的生存函数可能与各个个体生存函数的模式大相径庭。</p>
<div class="rmdnote">
<div class="example">
<p><span id="exm:ex3-16" class="example"><strong>示例 3.15 (前列腺癌两种疗法的比较) </strong></span><br></p>
<p>考虑<a href="chap1.html#exm:ex1-4">示例 1.4</a> 中关于两个治疗组 38 名前列腺癌患者生存时间的数据。在<a href="chap3.html#exm:ex3-6">示例 3.6</a> 中,发现解释变量 Size 和 Index 会影响死亡风险,因此现在拟合包含这两个变量的分层 Cox 回归模型。对于 <span class="math inline">\(j = 1\)</span>(安慰剂)和 <span class="math inline">\(2\)</span>(DES),第 <span class="math inline">\(j\)</span> 个治疗组中第 <span class="math inline">\(i\)</span> 个患者的生存函数估计为</p>
<p><span class="math display">\[\hat{S}_{{i}{j}}(t)=\left\{\hat{S}_{0{j}}(t)\right\}^{\exp(\hat{\eta}_{{i}{j}})}\]</span></p>
<p>其中</p>
<p><span class="math display">\[\begin{aligned}\hat{\eta}_{ij}=0.0673Size_{ij}+0.6532Index_{ij}\end{aligned}\]</span></p>
<p><span class="math inline">\(\hat{S}_{0{j}}(t)\)</span> 是第 <span class="math inline">\(j\)</span> 个治疗组的基线生存函数估计。对每组患者在每个事件时间的生存函数估计进行平均,得到风险调整的生存函数,如图 3.8 所示。该图还显示了每组生存函数未经调整的 Kaplan-Meier 估计。</p>
<details><summary><font color="#8B2232">图 3.8</font>
</summary><img src="figure/figure%203.8.png#center" style="width:80.0%"></details><p><br>
该图显示了风险调整过程如何缩小治疗差异。当然,通过将 DES 组相对于安慰剂组的未调整的风险比 (0.14) 与根据肿瘤大小和 Gleason 指数调整的相应值 (0.33) 进行比较(这两个值见<a href="#exm:ex3-12">示例 3.12</a>),也能看出这一点,但这种分析假设了两种疗法的风险成比例。</p>
</div>
</div>
</div>
</div>
<div id="sec3-12" class="section level2" number="3.12">
<h2>
<span class="header-section-number">3.12</span> 一致性,预测能力和解释的变异<a class="anchor" aria-label="anchor" href="#sec3-12"><i class="fas fa-link"></i></a>
</h2>
<p>已经提出了许多指标用于:度量生存时间和基于模型的预测之间的一致性、解释变量在多大程度上解释了生存数据中的变异。这些指标量化了拟合模型的预测能力。在本节中,我们将介绍其中一些最有用的指标。</p>
<div id="sec3-12-1" class="section level3" number="3.12.1">
<h3>
<span class="header-section-number">3.12.1</span> 一致性的度量<a class="anchor" aria-label="anchor" href="#sec3-12-1"><i class="fas fa-link"></i></a>
</h3>
<p>生存时间与预测的生存时间的排序之间的一致性 (agreement or concordance),通过区分生存时间较长和较短的个体,总结了拟合的模型区分个体的能力。一致性度量值介于 0 和 1 之间,分别对应于完全不一致和完全一致。当模型没有预测能力时,一致性度量值约为 0.5;而具有合理预测能力的模型往往具有大于 0.7 的值。</p>
<p>Harrell, Lee and Mark (1996) 描述的 <span class="math inline">\(c\)</span> 统计量是一种特殊的一致性度量。该统计量是对以下概率的估计:对于任何两个个体,生存时间较短者是死亡风险较大者。要计算此统计量,请考虑所有可能的这样的生存时间对 (pairs):要么两个个体均已死亡,要么其一的生存时间小于另一个的删失生存时间。这样的对子不包括在内:两个个体的生存时间都删失,或者其一的生存时间大于另一个的删失生存时间。如果在两个个体均已死亡的对子中,基于模型的预测生存时间对于实际生存更久的个体而言更长,则称这两个个体是一致的 (concordant).</p>
<p>在比例风险模型中,预测生存时间最长的个体将会是:在给定时间下死亡风险较低、在给定时间下生存函数估计较高,或风险评分较低的个体。对于其一死亡且另一人的生存时间在其之后删失的对子,具有删失时间的个体生存时间超过了另一名成员,因此可以确定这种配对的两个成员是否一致。<span class="math inline">\(c\)</span> 统计量是通过将一致的配对数除以所考虑的所有可能的配对数来获得的。</p>
<p>对于只有一名个体死亡且另一名个体的删失生存时间大于此死亡时间的对子,具有删失生存时间的个体比另一名个体生存时间更长,因此可以判断这样的对子中的两名成员是否一致。通过将一致的对子数除以所有可能的对子数,可以得到 <span class="math inline">\(c\)</span> 统计量。</p>
<p>由于两名个体都删失或其中一名个体的删失生存时间小于另一名个体死亡时间的对子不会对 <span class="math inline">\(c\)</span> 统计量做出贡献,因此 <span class="math inline">\(c\)</span> 统计量会受到删失模式的影响。Gönen and Heller (2005) 提出了一个统计量克服了这一重大缺陷。他们对一致性的度量是在任何两个个体中,其一的生存时间超过另一人生存时间的概率的估计,条件是生存时间较长的个体的风险评分较低。</p>
<p>为了获得该统计量,令 <span class="math inline">\(\hat{\eta}_i=\hat{\boldsymbol{\beta}}^{\prime}\boldsymbol{x}_i\)</span> 为第 <span class="math inline">\(i\)</span> 个个体的风险评分。如果风险评分较低的个体具有较长的生存时间,则一对生存时间 <span class="math inline">\((T_i,T_j)\)</span> 是一致的。则一致性概率为 <span class="math inline">\(K=\mathrm{P}(T_i>T_j\mid\eta_i\leqslant\eta_j)\)</span>,并且该一致性概率的估计值 <span class="math inline">\(\hat K\)</span> 是模型预测值的 Gönen and Heller 度量。该估计由下式给出</p>
<p><span class="math display">\[\hat{K}=\frac{2}{n(n-1)}\mathop{\sum\sum}\limits_{i < j}\left\{\frac{I\{(\hat{\eta}_j-\hat{\eta}_i)<0\}}{1+\exp(\hat{\eta}_j-\hat{\eta}_i)}+\frac{I\{(\hat{\eta}_i-\hat{\eta}_j)<0\}}{1+\exp(\hat{\eta}_i-\hat{\eta}_j)}\right\} \]</span></p>
<p>其中指示函数 <span class="math inline">\(I(\cdot)\)</span> 满足:若 <span class="math inline">\(X < 0\)</span>,则 <span class="math inline">\(I\{X < 0\} = 1\)</span>,否则为 0. 另外,还可以得到 <span class="math inline">\(\hat K\)</span> 的标准误,从而评估 <span class="math inline">\(\hat K\)</span> 的精度,这里不再赘述。</p>
</div>
<div id="sec3-12-2" class="section level3" number="3.12.2">
<h3>
<span class="header-section-number">3.12.2</span> 预测能力<a class="anchor" aria-label="anchor" href="#sec3-12-2"><i class="fas fa-link"></i></a>
</h3>
<p>评估模型根据风险评分值对个体或群体进行区分的能力的一个度量指标是 Royston and Sauerbrei (2004) 提出的 <span class="math inline">\(D\)</span> 统计量。该统计量还总结了模型的预测能力,并且与风险评分的方差紧密相关。</p>
<p>为了得到该统计量,首先按照从小到大的顺序排列根据 Cox 回归模型得到的风险评分值 <span class="math inline">\(\hat{\eta_i}=\hat{\boldsymbol{\beta}}^{\prime}\boldsymbol{x}_i\)</span>,如此一来,第 <span class="math inline">\(i\)</span> 个有序值便是 <span class="math inline">\(\hat{\eta}_{(i)}=\hat{\boldsymbol{\beta}}^{\prime}\boldsymbol{x}_{(i)}\)</span>,其中 <span class="math inline">\(\hat{\eta}_{(1)}<\hat{\eta}_{(2)}<\cdots<\hat{\eta}_{(n)}\)</span>。然后,将这些有序值中的第 <span class="math inline">\(i\)</span> 个值与量 <span class="math inline">\(z_{(i)}\)</span> 关联起来,该量是对样本量为 <span class="math inline">\(n\)</span> 的观测值在标准正态分布中第 <span class="math inline">\(i\)</span> 个顺序统计量期望的一种近似。该量通常称为<strong>正态得分</strong> (normal score),使用最广泛的得分公式为 <span class="math inline">\(z_{(i)}=\Phi^{-1}\{(i-3/8)/(n+1/4)\}\)</span>,其中 <span class="math inline">\(\Phi^{-1}(\cdot)\)</span> 是标准正态分布函数的逆。然后,一个包含由标准化正态得分 <span class="math inline">\(z_{(i)}/√(8/π)\)</span> 形成的变量的 Cox 回归模型用于拟合生存数据。所得该变量的系数估计就是 <span class="math inline">\(D\)</span> 统计量,同时拟合模型还会给出 <span class="math inline">\(D\)</span> 的标准误。</p>
</div>
<div id="sec3-12-3" class="section level3" number="3.12.3">
<h3>
<span class="header-section-number">3.12.3</span> Cox 回归模型解释的变异<a class="anchor" aria-label="anchor" href="#sec3-12-3"><i class="fas fa-link"></i></a>
</h3>
<p>在线性回归分析中,解释变量所占的响应变量变异的比例广泛用于总结模型的解释能力。该统计量通常用 <span class="math inline">\(R^2\)</span> 表示。对于具有 <span class="math inline">\(p\)</span> 个解释变量的一般线性模型 (general linear model),响应变量 <span class="math inline">\(Y\)</span> 的第 <span class="math inline">\(i(i=1,2,\ldots,n)\)</span> 个值为</p>
<p><span class="math display" id="eq:3-33">\[\begin{equation}
y_i=\beta_0+\beta_1x_{1i}+\cdots+\beta_px_{pi}+\epsilon_i
\tag{3.33}
\end{equation}\]</span></p>
<p>其中 <span class="math inline">\(\beta_0\)</span> 为常数,<span class="math inline">\(\beta_1,\beta_2,\ldots,\beta_p\)</span>为 <span class="math inline">\(p\)</span> 个解释变量 <span class="math inline">\(x_{ji},j=1,2,\ldots,p\)</span> 的系数,以及 <span class="math inline">\(\epsilon\)</span> 为残差或误差项。拟合该模型时,<span class="math inline">\(R^2\)</span> 统计量定义为</p>
<p><span class="math display">\[\begin{aligned}R^2&=\frac{\text{模型平方和}}{\text{总平方和}} = \frac{\text{模型平方和}}{\text{模型平方和}+\text{残差平方和}}\end{aligned}\]</span></p>
<p>在此式中,由模型解释的响应变量的变异总结在模型平方和 (Model Sum of Squares, Model SS) <span class="math inline">\(\sum_{{i}}(\hat{y}_i-\bar{y})^2\)</span> 中,该式表示模型平方和占数据总变异的比例,而数据总变异由总平方和 (Total Sum of Squares, Total SS) <span class="math inline">\(\sum_{{i}}(y_{{i}}-\bar{y})^2\)</span> 表示,其中 <span class="math inline">\(\bar{y}=n^{-1}\sum_iy_i\)</span> 且 <span class="math inline">\(\hat y_i\)</span> 是第 <span class="math inline">\(i\)</span> 个由下式给出的拟合值</p>
<p><span class="math display" id="eq:3-34">\[\begin{equation}
\hat{y}_i=\hat{\beta}_0+\hat{\beta}_1x_{1i}+\cdots+\hat{\beta}_px_{pi}
\tag{3.34}
\end{equation}\]</span></p>
<p>总平方和可分解为模型平方和与残差平方和 <span class="math inline">\(\sum_{{i}}(y_{{i}}-\hat{y_{i}})^{2}\)</span>,后者表示无法解释的变异。<span class="math inline">\(R^2\)</span> 的值越大,模型所能解释的响应变量变异的比例就越大。</p>
<p>一般线性模型的 <span class="math inline">\(R^2\)</span> 统计量也可表示为以下形式</p>
<p><span class="math display" id="eq:3-35">\[\begin{equation}