0%

一、摘要

  1. 要比较两个总率时,发现两组人群的内部构成(如年龄、性别构成等)存在明显不同,而且影响到了总率比较的结果,这时就不宜再直接比较总率,而应考虑采用标准化法。标准化法的基本思想,就是采用统一的标准(统一的内部构成)计算出消除内部构成不同影响后的标准化率,然后再进行比较。
  2. 在直接年龄调整中(direct age-adjustment),使用常见的年龄结构人口作为标准。这个年龄结构人口可能是实际存在的(例如1999年的美国人口),也可能是虚构的(例如,可以组合两个群体以创建标准人群)。
  3. 在间接年龄调整中(indirect age-adjustment),一组共同的年龄特定比率(age-specific rates)应用于将率标准化的人群。最简单和最有用的间接调整形式是标准化死亡率(SMR)。

二、前言

比较两个或多个不同地理区域的死亡率和发病率对于评估社区健康状况非常重要。由于在不同的人群中可能存在不同的频率分布,因此粗率(crude rates)之间的比较容易产生误导,因为粗率对人群的健康状况的信息不是很全面。需要对在比较中有差异的特征进行标准化。

年龄和性别是两个最常见的用于标准化的变量,它们被称为标准化率(standardized rates)。

粗率与标准化率之间的区别在于,粗率是根据所研究的人群整体计算的,而标准化率则是基于特定的作为标准的特征(particular characteristics)。

如果基于特定特征计算“率”,则将它们称为“特定的率”(specific rates)(例如age-specific mortality rate/特定年龄死亡率)。

本文试图帮助研究者选择和使用合适的标准化方法。有两种计算标准化率的方法,即直接和间接标准化(direct and indirect standardization)。

下面的例子都是围绕基于年龄标准化率(age-standardized rates)的标准化方法。

三、直接标准化

(一)直接标准化的概念与应用条件

  1. 当已知两个或更多人群的特定年龄死亡率(age-specific mortality rates)时,可以应用直接标准化方法。
  2. 直接标准化的思路:调整原因,即人口构成差异。利用标准人口构成调整死亡率。
Figure 1: Concept of direct standardization

(二)直接标准化方法步骤

  1. 计算每个人群中每个年龄组的特定年龄死亡率。

  2. 然后选择其中一个人群作为标准(参考)人群。

    注意:如果将特定人群的死亡率与全国人口进行比较,则全国人口将被视为“标准”人群

  3. 将所研究的其他人群的特定年龄死亡率乘以标准人口的每个年龄组的人数。

  4. 通过这种方式,可以获得每个人群每个年龄组的预期死亡人数(expected death)。将预期死亡总数除以标准人口数(standard population) ,从而得到年龄校正的死亡率(age-adjusted mortality rates)。

  5. 通过比较两个人群的特定年龄死亡率来得出结论。

    Figure 2:Procedure for application of direct standardization method

(三)实例

在讨论粗死亡率时,人群B的死亡率似乎高于人群A。选择全国人口作为参考人群(reference population),因此计算如下:

Table 2:Calculation of expected deaths by applying direct standardization method

预计死亡(expected deaths)总人数:

  • Population A = 1186.18

  • Population B = 1158.99

  • Age adjusted death rate for population A

    \[=\cfrac{1186.18}{51000}\times1000=23.3/1000 population\]

  • Age adjusted death rate for population B

    \[=\cfrac{1158.99}{51000}\times1000=22.7/1000 population\]

  • 当讨论age-adjusted rates时,实际上人群A的死亡风险高于人群B。如果仅仅依靠粗死亡率,你可能会得到误导性的结论。

四、间接标准化

(一)间接标准化的概念与应用条件

  1. 当感兴趣的人群的特定年龄死亡率未知时,只有每个年龄组人口数和观察到的死亡总数时,可应用间接标准化方法。
  2. 间接标准化的思路:调整结果,即死亡率。利用标准死亡率调整粗死亡率。
Figure 3:Concept of indirect standardization

(二)间接标准化的步骤

  1. 选择参考或标准人口。

  2. 计算感兴趣的人群中观察到的死亡人数。

  3. 将所选参考人群的特定年龄死亡率应用于感兴趣的人群。

  4. 将感兴趣人群的每个年龄组中的人数乘以参考人群中相应年龄组中的特定年龄死亡率。

  5. 将每个感兴趣的人群的预期死亡总数相加。

  6. 将观察到的人群死亡总数除以预期的死亡人数。

    Figure 4:Procedure for application of indirect standardization method
    • 观察到的死亡人数与预期死亡人数的比率称为“标准化死亡率”或SMR:\[SMR=\cfrac{观察到的死亡人数}{预期的死亡人数}\]

    • 调整后的死亡率(Adjusted mortality rates,AMR):\[AMR = SMR \times CDR(Standard)\]

      如果应用参考人群的特定年龄死亡率,必须从该参考人群中计算粗死亡率(CDR)。

(三)实例

观察到的人群A和B的死亡情况如下(前提已知条件):

  • Observed deaths in population A = 120
  • Observed deaths in population B = 30

将观察到的死亡总人数除以预期死亡总人数。

  • SMR for population A \(=\cfrac{120}{195.5}\times1000=0.61\)

  • SMR for population B \(=\cfrac{30}{69.5}\times1000=0.43\)

  • 在根据年龄调整差异后,人群A中的死亡风险实际上高于人群B。

五、结论

标准化方法并不困难,但有时研究者对选择哪种方法以及如何计算和应用特定的方法存在一些困惑。真诚希望本文可以提高研究者对标准化方法的理解,从而可以比较两种或更多在某些特征上存在差异的群体。

说明
1. 译自Keith Goldfeld的文章:Be careful not to control for a post-exposure covariate

一位研究人员正在分析不同类型的童年创伤可能对成年时药物滥用产生的影响。显然,这是一个非常有趣且具有挑战性的研究问题。显然,这是一个非常有趣且具有挑战性的研究问题。

统计模型包含了对若干因素的调整。这些因素是童年创伤和药物滥用之间关系可能的混淆因素,如儿童时家境贫穷。然而,该模型还包括对成年时家境贫穷的测量(a measurement for poverty in adulthood) ,认为它在某种程度上混淆了童年创伤和药物滥用之间的关系。

混淆是暴露/治疗(exposure/treatment)与结果(outcome)之间的常见原因(cause)。很难将成年时家境贫穷视为童年时事件(childhood events)的原因(cause),尽管它可能与成年时药物滥用有关(或许无关)。

最多,成年时家境贫穷这个因素被调整控制(control)后,对研究结论没有影响;然而,不太好的是,它可能导致童年创伤的影响小于实际的结果。

使用模拟的数据和潜在结果的抽象概念,我希望能够阐明这种分析引起的一些问题。

潜在的结果与因果效应/Potential outcomes and causal effects

我的目标是提出潜在结果的概念,以便我们能够至少清楚地阐明一种可以定义因果效应的明确方法。

在这个框架下,我们生成模拟数据,从而可以找到因果效应的“真实”测量(“true” measure of causal effect)。然后我们可以使用简单的回归模型来看看他们是否很够很好地重新获得这些“已知”的因果效应。

如果某一个体 \(i\),在儿童期经历了创伤(traumatic effect),我们可以说该个体 \(i\)的暴露(exposure)为 \(X_i=1\),反之,没有经历创伤,则为 \(X_i=0\)。可以认为,每一个个体,都有潜在的结果(possible outcomes) \(Y_{1i}\)\(Y_{0i}\)\(Y_{1i}\) 是指如果个体经历过创伤,我们会观察到的结果。\(Y_{0i}\) 则相反,是指如果个体没有经历过创伤,我们会观察到的结果。

我们定义\(Y\)为结果,\(X\)为原因,则潜在结果的差异为 \(CE_i= Y_{1i} - Y_{0i}\)。如果\(Y_{1i} = Y_{0i}\),即两者的潜在结果相同,那么我们可以说,对于个体 \(i\)而言,\(X\)并不会导致\(Y\)

在现实世界中,我们只观察到一个潜在的结果:与实际暴露相关的结果。

在因果推理领域,对于我们使用观测数据估计平均因果效应所需的假设和条件有很多限制。许多人会说,除非我们使用随机对照研究,否则这些假设不合理。但在使用模拟数据时,我们可以产生潜在结果(potential outcomes)和观测结果(observed outcomes)。因此,我们知道个体水平和平均人口水平的因果效应。同时,我们还可以看到我们的模型拟合得有多好。

Simple confounding/简单的混淆

这是一个相对简单的例子。\(Y\)为结果,\(X\)为原因。还有一个共同的影响因素\(C\)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
library(broom) 
#用于将统计模型的结果整理成数据框形式

library(data.table)
#快速处理大数据集

library(simstudy)

def <- defData(varname = "C", formula = 0.4, dist = "binary")
def <- defData(def, "X", formula = "0.3 + 0.4 * C", dist = "binary")
def <- defData(def, "e", formula = 0, variance = 2, dist = "normal")
def <- defData(def, "Y0", formula = "2 * C + e", dist="nonrandom")
def <- defData(def, "Y1", formula = "0.5 + 2 * C + e", dist="nonrandom")
def <- defData(def, "Y_obs", formula = "Y0 + (Y1 - Y0) * X", dist = "nonrandom")

def
1
2
3
4
5
6
7
##        varname        formula   variance  dist     link
## 1: C 0.4 0 binary identity
## 2: X 0.3 + 0.4 * C 0 binary identity
## 3: e 0 2 normal identity
## 4: Y0 2 * C + e 0 nonrandom identity
## 5: Y1 0.5 + 2 * C + e 0 nonrandom identity
## 6: Y_obs Y0 + (Y1 - Y0) * X 0 nonrandom identity

在上述的例子里,\(X\)\(C\)均对\(Y\)产生了一定的影响。如果我们在评估\(X\)\(Y\)的效应大小时,忽略了因素\(C\),我们会高估这种效应大小(即0.5)。

我们可以生成数据并看到这种情况:

1
2
set.seed(5)
dt <- genData(1000, def)
1
2
3
4
5
6
7
8
9
10
11
12
        id C X       e            Y0          Y1         Y_obs
1: 1 0 0 -2.057757922 -2.057757922 -1.5577579 -2.057757922
2: 2 1 1 1.760077725 3.760077725 4.2600777 4.260077725
3: 3 1 1 -0.610865399 1.389134601 1.8891346 1.889134601
4: 4 0 0 0.009714623 0.009714623 0.5097146 0.009714623
5: 5 0 1 0.176141782 0.176141782 0.6761418 0.676141782
---
996: 996 1 1 -0.147379631 1.852620369 2.3526204 2.352620369
997: 997 0 0 1.336474722 1.336474722 1.8364747 1.336474722
998: 998 0 0 -0.127816908 -0.127816908 0.3721831 -0.127816908
999: 999 0 1 0.022055022 0.022055022 0.5220550 0.522055022
1000: 1000 0 0 -0.292353254 -0.292353254 0.2076467 -0.292353254

我们看到,如果我们能够获得潜在的结果\(Y_{1}\)\(Y_{0}\),那么就很容易获得真正的因果效应,但显然,我们无法获得潜在的结果\(Y_{1}\)\(Y_{0}\)

1
2
3
dt[, mean(Y1 - Y0)] # True causal effect

## [1] 0.5

如果我们比较每个暴露组的平均观察结果而忽略混杂因素(confounder),我们会高估暴露的影响:

1
2
3
dt[X == 1, mean(Y_obs)] - dt[X == 0, mean(Y_obs)]

## [1] 1.285009

我们可以使用简单的线性回归估计相同的效果:

1
2
lm1 <- lm(Y_obs ~ X, data = dt)
tidy(lm1)
1
2
3
##          term  estimate  std.error statistic      p.value
## 1 (Intercept) 0.5515963 0.07325865 7.529436 1.137854e-13
## 2 X 1.2850091 0.10674523 12.038094 2.916261e-31

如果我们调整混淆因素\(C\),我们可以获得\(X\)\(Y\)的真正(或接近)因果效应。

1
2
lm2 <- lm(Y_obs ~ X + C, data = dt)
tidy(lm2)
1
2
3
4
##          term   estimate  std.error statistic      p.value
## 1 (Intercept) 0.08491216 0.06502545 1.305830 1.919117e-01
## 2 X 0.48935880 0.09678110 5.056347 5.083959e-07
## 3 C 2.05729945 0.09825925 20.937464 5.767575e-81

调整暴露后的协变量

在这种情况下,混淆因素\(C\)在两个阶段被测量,同时,暴露在period 1的效应与period 2有关(例如,如果童年时贫穷,成年后就更容易贫穷)。我们关心的是,是否\(X\)(童年创伤)会导致\(Y\)(药物滥用)。困难在于\(C_2\)\(X\)\(Y\)均有关系。

为了充分了解\(X\)对于\(Y\)的效果,我们不能控制\(C_2\)。直觉在于\(X\)对于\(Y\)的部分效应,来源于\(X\)\(C_2\)的作用。如果我们控制了\(C_2\),则移除了因果机制中关键部分。下面是数据生成过程:

  1. 基于暴露因素\(X\)\(C_2\)有潜在的结果。
  2. 我们限制了潜在的结果\(C_{21}\)为1,如果\(C_{20}\)是1的话。例如,如果有人在没有受到童年创伤的情况下,成年后也很穷。我们则会认为,如果他们在童年遭受创伤,他们成年后也会很穷。
  3. \(Y\)的潜在结果,依赖于\(C_2\)的相关潜在结果。\(Y_0\)依赖于\(C_{20}\),而\(Y_1\)则依赖于\(C_{21}\)
1
2
3
4
5
6
7
8
9
10
11
##     varname                  formula variance      dist     link
## 1: C1 0.25 0 binary identity
## 2: X -2 + 0.8 * C1 0 binary logit
## 3: C2.0 -2.0 + 1 * C1 0 binary logit
## 4: C2.1x -1.5 + 1 * C1 0 binary logit
## 5: C2.1 pmax(C2.0, C2.1x) 0 nonrandom identity
## 6: e 0 4 normal identity
## 7: Y0 -3 + 5*C2.0 + e 0 nonrandom identity
## 8: Y1 0 + 5*C2.1 + e 0 nonrandom identity
## 9: C2_obs C2.0 + (C2.1 - C2.0) * X 0 nonrandom identity
## 10: Y_obs Y0 + (Y1 - Y0) * X 0 nonrandom identity
1
2
set.seed(25)
dt <- genData(5000, def2)

基础

使用simstudy包进行模拟有两个基本步骤。首先,用户在外部csv文件中或通过一组重复的定义语句在内部定义数据集的数据元素。其次,用户使用这些定义生成数据。

数据生成可以像横截面设计(cross-sectional design)或前瞻性队列设计(prospective cohort design)一样简单,也可以稍复杂一些。

模拟可以包括观察性或随机的治疗分配/暴露,生存数据,纵向/面板数据(longitudinal/panel data),多级/分层数据(multi-level/hierarchical data),基于特定协方差结构的相关变量的数据集,以及由任何类型的缺失模式导致的缺失数据的数据集。

  • Longitudinal Data/纵向数据:对同一组受试个体在不同时间上的重复观测。
  • Panel Data/面板数据(平行数据):指在时间序列上取多个截面,在这些截面上同时选取样本观测值所构成的样本数据。

simstudy包中模拟数据的关键是创建一系列数据定义表(data definition table),如下所示:

data definition tables

用于生成上述定义的代码

1
2
3
4
5
6
7
8
9
10
library(simstudy)
library(data.table)

def <- defData(varname = "nr", dist = "nonrandom", formula = 7, id = "idnum")
def <- defData(def, varname = "x1", dist = "uniform", formula = "10;20")
def <- defData(def, varname = "y1", formula = "nr + x1 * 2", variance = 8)
def <- defData(def, varname = "y2", dist = "poisson", formula = "nr - 0.2 * x1", link = "log")
def <- defData(def, varname = "xCat", formula = "0.3;0.2;0.5", dist = "categorical")
def <- defData(def, varname = "g1", dist = "gamma", formula = "5+xCat", variance = 1, link = "log")
def <- defData(def, varname = "a1", dist = "binary", formula = "-3 + xCat", link = "logit")
要根据这些定义创建一个简单的数据集,所有人都需要执行一个genData命令。

在此示例中,我们生成500条记录,这些记录基于def表中的定义:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
dt <- genData(500, def)

idnum nr x1 y1 y2 xCat g1 a1
1: 1 7 11.14037 34.04765 138 3 637.50317 1
2: 2 7 11.92208 30.44868 100 1 79.01242 0
3: 3 7 16.18471 39.71205 37 3 73.57740 0
4: 4 7 15.99059 38.68228 37 1 115.78951 0
5: 5 7 10.61884 30.63140 137 3 11407.90428 1
---
496: 496 7 16.95754 38.20793 38 3 954.34293 0
497: 497 7 17.38688 46.24585 41 1 23.14826 0
498: 498 7 13.10723 38.21072 69 3 3799.37787 0
499: 499 7 13.40657 33.17099 78 1 1512.06894 0
500: 500 7 11.72582 36.90359 106 3 3903.30936 1

用重复测量模拟一项前瞻性队列研究

问题是,我们是否可以模拟一项双臂研究(对照组和治疗组),在三个时间点上重复测量:基线,1个月后和2个月后? 答案当然是of course。

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
library(ggplot2)

# Define the outcome

ydef <- defDataAdd(varname = "Y", dist = "normal",
formula = "5 + 2.5*period + 1.5*T + 3.5*period*T",
variance = 3)

# Generate a 'blank' data.table with 24 observations and assign them to groups

set.seed(1234)

indData <- genData(24)
indData <- trtAssign(indData, nTrt = 2, balanced = TRUE, grpName = "T")

# Create a longitudinal data set of 3 records for each id

longData <- addPeriods(indData, nPeriods = 3, idvars = "id")
longData <- addColumns(dtDefs = ydef, longData)

longData[, `:=`(T, factor(T, labels = c("No", "Yes")))]

# Let's look at the data

ggplot(data = longData, aes(x = factor(period), y = Y)) + geom_line(aes(color = T,
group = id)) + scale_color_manual(values = c("#e38e17", "#8e17e3")) + xlab("Time")

说明:
1. 部分参考Elsevier/The Lancet出版的The Lancet Handbook of Essential Concepts in Clinical Research

一、摘要

  1. 根据研究者是否分配暴露因素将临床研究分为两大类:实验性和观察性。
  2. 实验性研究也可再分为两类:随机和非随机研究。
  3. 观察性研究可以是分析性的,也可以是描述性的。
  4. 分析性研究的特点是有一个比较(对照)组,而描述性研究则没有
  5. 在分析性研究中,队列研究追踪人群的时间方向是从暴露到结局。病例-对照研究与之相反是从结局回溯到暴露。横断面研究像一次快照,同时检测暴露和结局。
  6. 描述性研究,如个案报告则没有对照组。在这类研究中,研究者不能检测两者的因果关系,这是一个常常被遗忘或忽略的事实。
  7. 对相关性(association)的测量,如相对危险度或比值比。是常用的表达二分类结局(如患病和健康)的方法。相对危险度或比值比的可信区间提示了结果的精确性。
  8. 相关性测量(相对危险度或比值比)的可信区间显示了作用的强度、方向和可能的范围以及机遇发生的概率。与此相反,P仅表示机遇的大小。武断地用0.05的P来检验无效假设(Testing null hypotheses)是没有医学基础的,也不应该鼓励。

二、临床研究的分类

Scientific illiteracy is a major failing of medical education.
科学无知是医学教育的主要问题。

(一)临床研究的分类方法

  1. 没有对照组的研究称为描述性研究。
    • 最下端是个案报告(case report)
    • 当报告的患者超过一个时,就称为病例系列报告(a case-series report)

(二)临床证据的分级/Rating clinical evidence:Assessment system of the US Preventive Services Task Force美国预防服务工作组评估系统

证据质量/Quality of evidence
I Evidence from at least one properly designed randomised controlled trial.来自至少一个设计良好的随机对照临床试验中获得的证据
II-1 Evidence obtained from well-designed controlled trials without randomisation.来自设计良好的非随机对照试验中获得的证据
II-2 Evidence from well-designed cohort or case-control studies, preferably from more than one centre or research group.来自设计良好的队列研究或病例对照研究(最好是多中心研究)的证据
II-3 Evidence from multiple time series with or without the intervention. Important results in uncontrolled experiments (such as the introduction of penicillin treatment in the 1940s) could also be considered as this type of evidence.来自多个时间序列的、带有或不带有干预的研究得出的证据。重要的非对照试验(例如19世纪40年代青霉素的引入)的结果有时也可作为这一等级的证据。
III Opinions of respected authorities, based on clinical experience, descriptive studies, or reports of expert committees.来自临床经验、描述性研究或专家委员会报告的权威意见
推荐强度/Strength of recommendations
A Good evidence to support the intervention.良好的科学证据支持该干预行为
B Fair evidence to support the intervention.尚可的证据支持该干预行为
C Insufficient evidence to recommend for or against the intervention, but recommendation might be made on other grounds.没有足够的依据推荐或反对该干预行为,但在其他情况下可能会推荐
D Fair evidence against the intervention.尚可的科学证据反对该干预行为
E Good evidence against the intervention.良好的证据反对该干预行为

三、研究可以做什么,无法做什么

研究设计与研究问题是否匹配/Is the study design appropriate for the question?

(一)描述性研究/descriptive study

  1. 描述性研究可以阐述发病率(frequency)、自然病程和可能的决定因素(possible determinants of a condition)。这些结果显示多少人在一定时间患该病或发生某种状态,描述疾病和患病者的特征,并产生关于疾病的假设。这些假设可以通过更严格的研究来评价,如分析性研究或随机对照试验。
  2. 描述性研究没有对照组,不能用来评估因果关系(associations)。只有对照研究(分析性研究和实验性研究)才能够评估可能的因果关系。

(二)横断面研究(cross-sectional study):特定时间的快照

  1. 别名:频率调查(frequency survey)/现况研究(prevalence study)

  2. 横断面研究用来检测在特定时间点上,疾病和某个暴露因素,两者的存在与否。这样,焦点是患病,而不是发病。因为结局和暴露在同一时间被确定,这两个的时间关系可能不清楚。

    例如假设横断面研究发现有关节炎的女性比没有关节炎的女性肥胖更常见。是增加的体重负担导致关节炎还是有关节炎的女性不得不减少活动然后出现肥胖呢?这种问题在横断面研究中是无法回答的。

  3. 典型案例:检测心肌梗死男性患者收治入院时的血清胆固醇和他们的隔壁邻居的血清胆固醇。这种类型的研究同时提供了人群的瞬时疾病和健康状况。

(三)队列研究(cohort study):从暴露到结局

  1. 调查者确定一组暴露于感兴趣的因素的人群和一组或多组不暴露的人群,然后随访暴露组和非暴露组一段时间来观察结局。如果暴露人群比不暴露人群有较高的结局发生率,那么暴露因素与该结局的高危险性相关。
  2. 优点
    • 暴露因素在一开始就确定,可以认为暴露因素比结局发生要早,就不必像在病例-对照研究中那样考虑回忆偏倚(recall bias)。
    • 队列研究可以计算真正的发病率(true incidence rates)、相对危险度(relative risk)和归因危险度(attributable risks)。
  3. 缺点:但对于罕见事件或需要很多年才发病的疾病,这种类型的研究需要很长时间才有结果,因此费用非常高。
  4. 典型案例:从一项暴露开始(如口服避孕药),然后随访女性数年来评价其结局(如卵巢癌),那它肯定是队列研究。队列研究可以是同期的,也可以是非同期的(即前瞻性和回顾性队列研究)。

(四)病例-对照研究(Case-control study):从结局到暴露

  1. 研究者定义一组有一种结局(如卵巢癌)的人群和一组没有该结局的人群(对照),然后通过调查表、面谈或者其他方式确定两组人群某一危险因素的暴露情况(如口服避孕药、促排卵药物)。如果暴露因素在病例中的发生高于对照组,暴露因素与该结局的高危险性有关。
  2. 优点:省钱、省时
  3. 缺点:
    • 选择合适的对照组比较困难。除了研究的结局外,对照应该是在其他所有重要的方面都与病例类似。不合适的对照破坏了很多病例-对照研究,并产生错误的结果。
    • 回忆偏倚(recall bias)(病例组比对照组对暴露因素的回忆更好)始终是依靠记忆研究的难题。
    • 因为病例-对照研究缺乏分母,调查者不能计算发病率(incidence rate)、相对危险度(relative risk, RR)以及归因危险度。
    • 但可以用比值比(odds ratio, OR)评价其相关性。当结局是不常见的时候(如绝大多数癌症),比值比可以很好地代表相对危险度。
  4. 典型案例:食物造成的疾病暴发。在游船上,呕吐腹泻的患者和没有生病的人都会被问及食物因素。如果生病的人中吃某一种食物的比例高于 未生病的人,这种食物就可疑了。
三种研究设计的时间方向示意图

(五)非随机试验(non-randomised trial)

  1. 有些实验性研究不是随机将参加者分到暴露组中的(如治疗或预防策略研究)。和真正的随机不同的是,研究者常常用不够标准的方法,如交替分配(alternate assignment)。

    交替分配:在一项试验中采用月份交替的方法来分配产妇的电子胎儿监测情况(一个月自由检查,另一个月限制检查)

  2. 美国预防服务工作组和加拿大定期体检工作组(Canadian Task Force on the Periodic Health Examination)指定这种研究设计为II-1类,认为这种设计虽然不如随机试验严谨,但比其他分析性研究好。

  3. 在研究者将参加者分配到各治疗组中后,非随机试验就像队列研究一样实施和分析。暴露和未暴露的人随访一段时间以确定结局发生的频率。

  4. 优点

    • 有对照组
    • 对照组和治疗组,在确认结局上有统一的标准。
  5. 缺点:可能存在选择偏倚

(六)随机对照试验(randomised controlled trials):金标准

  1. 是临床研究中避免选择偏倚和混杂偏倚(confoundiiig biases)的唯一方法。
  2. 随机对照试验的标志是:参加者分配到暴露因素中纯粹是随机的。
  3. 随机对照试验降低了确定结局时偏倚的可能性。如果正确的设计和完成,随机对照试验有可能避免偏倚,这样,对检验轻微的和中等程度的作用特别有效。在观察性研究中,偏倚很容易产生小的和中等程度的差异。
    • 只要正确完成,随机分配可以杜绝选择偏倚(selection bias)
    • 随机对照试验对于结局有统一的诊断标准,而且常常对参与者使用盲法,这样,减少了信息偏倚(information bias)
    • 随机对照试验独一无二的优势是消除混杂偏倚(confounding bias),包括已知的和未知的。
  4. 随机对照试验的缺点
    • 外部真实性(external validity):表示结果是否可以推广到更大区域或范围的程度。如果正确的实施,随机对照试验有内部真实性(internal validity)(它按计划进行了检测),但可能没有外部真实性。与观察性研究不同的是,随机对照试验只纳人通过筛查程序的志愿者。志愿参加试验的人与其他人有差异,比如,他们的健康状况可能比较好。
    • 随机对照试验中有些情况下是不适用的,因为故意暴露于危险状态(如毒素、细菌或其他有害因素)是不道德的。
    • 随机对照试验费用相当高

四、结局的测量

(一)术语

比值(ratio)

  1. 是一个数目除以另一个数目得到的值。
  2. 这两个数目可以相关也可以不相关。
  3. 这一特点(分子和分母的相关性)将比分为两种:
    • 分母包含分子
    • 分母不包含分子
      • 产妇死亡比:死于妊娠相关的病因的妇女为分子,活产的母亲(常常用100000)为分母。然而,不是所有的分子都包含在分母中(比如,死于异位妊娠的妇女不可能被包含在活产的母亲中)

率(rate)

  1. 率(rate)考量的是人群中事件的频率
  2. 率的分子(发生结局的人数)必须包含在分母(有发生结局这一危险的人数)中
  3. 率包含时间成分。
  4. 发病率(incidence rate):表示在特定的时间段中处于危险的人群中新发病例的数目(比如11个结核病例/100000人/年)。

比例

  1. 比例(proportion)常用作率的同义词,但前者不含有时间成分。
  2. 比例和率一样必须分母含有分子。因为分子和分母的单位相同,他们相除后得到没有维度的数值,一个没有单位的数目。
  3. 例如患病比例(每100个处于危险的人中27个患枯草热)。这一数值表示处于危险的人群中有多少人在特定的时间中处于某种状态(这里是27%)。因为没有记录某段时间的新发病例,把患病率(prevalence rate)看作比例(而不是率)更合适。

五、相关性(association)的测量

(一)相对危险度(relative risk,RR)

  1. 定义:暴露组中发生结局的频率除以非暴露组中结局的频率。
  2. 解释
    • 如果结局在两组中的频率是相同的,比值为1.0,表示暴露与结局没有关联
    • 如果结局在暴露组中更频繁,比值就大于1.0,提示暴露与危险性增加相关
    • 如果疾病频率在暴露组中低,相对危险度就会小于1.0,提示一种保护性作用

(二)比值比(odds ratio,OR)/交叉乘积比(cross-products ratio)/相对比值(relative odds)

是病例-对照研究中常用的衡量相关性的方法

  1. 定义:在病例组中暴露的可能性除以对照组中暴露的可能性。
  2. 解释
    • 如果病例组和对照组暴露的可能性相等,比值比为1.0,提示没有意义
    • 如果病例组暴露的可能性高于对照组,比值就高于1.0,提示暴露与危险性增高有关
    • 比值比低于1.0提示保护性作用
  3. 横断面研究、队列研究和随机对照研究中也可以计算比值比。
    • 疾病比值比是暴露组中发生疾病的可能性除以非暴露组中发生疾病的可能性
    • 在这种情况下,如果在荟萃分析中汇集研究的时候,比值比就有一些吸引人的统计学特点
    • 但当结局发生的比例大于5%〜10%的时候,比值比不能代表相对危险度(例如,发病率高的时候这一术语没有什么临床关联和意义)

(三)可信区间(confidence intervals)

  1. 可信区间反映了研究结果的精确性,提供了一个参数(如比例、相对危险度或者比值比)的数值范围,表示了含有来自于整个人群的研究样本的真实值的可能性。
  2. 尽管95%可信区间是最常用的,其他的,如90%可信区间也可以见到。
  3. 可信区间越大,结果的精确性越差,反之亦然。
  4. 对相对危险度和比值比来说,当95%可信区间不包括1.0时,在常用的0.05水平差别有显著性。但是,将可信区间的这一特性作为假设检验的内推方法是不合适的。

行内公式

语法是$行内公式$。可以让公式在文中与文字或其他东西混编,不独占一行。

  1. 示例
    • 质能方程$E = mc^2$
  2. 显示
    • 质能方程\(E = mc^2\)

独立公式

语法是$$行内公式$$。使公式单独占一行,不与文中其他文字等混编。

  1. 示例
    • 质能方程$$E = mc^2$$
  2. 显示
    • 质能方程\[E = mc^2\]

普通公式

普通的加减乘除数学公式的输入方法与平常的书写一样。

  1. 示例
    • $$x = 100 * y + z - 10 / 33 + 10 % 3$$
  2. 显示
    • \[x = 100 * y + z - 10 / 33 + 10 % 3\]

上下标

使用^来表示上标,_来表示下标,同时如果上下标的内容多于一个字符,可以使用{}来将这些内容括起来当做一个整体。

  1. 示例
    • $$x = a_{1}^n + a_{2}^n + a_{3}^n$$
  2. 显示
    • \[x = a_{1}^n + a_{2}^n + a_{3}^n\]

如果希望左右两边都能有上下标,可以使用\sideset语法

  1. 示例
    • $$\sideset{^1_2}{^3_4}A$$
  2. 显示
    • \[\sideset{^1_2}{^3_4}A\]

括号

()[]|都表示它们自己,但是{}因为有特殊作用因此当需要显示大括号时一般使用\lbrace \rbrace来表示。

  1. 示例
    • $$f(x, y) = 100 * \lbrace[(x + y) * 3] - 5\rbrace$$
  2. 显示
    • \[f(x, y) = 100 * \lbrace[(x + y) * 3] - 5\rbrace\]

分数

分数使用\frac{分子}{分母}这样的语法,不过推荐使用\cfrac来代替\frac,显示公式不会太挤。

  1. 示例
    • $$\frac{1}{3} 与 \cfrac{1}{3}$$
  2. 显示
    • \[\frac{1}{3} 与 \cfrac{1}{3}\]

开方

开方使用\sqrt[次数]{被开方数}这样的语法

  1. 示例
    • $$\sqrt[3]{X}$$
    • $$\sqrt{5 - x}$$
  2. 显示
    • \[\sqrt[3]{X}\]
    • \[\sqrt{5 - x}\]

希腊字母

代码 大写 代码 小写
A \(A\) \alpha \(\alpha\)
B \(B\) \beta \(\beta\)
\Gamma \(\Gamma\) \gamma \(\gamma\)
\Delta \(\Delta\) \delta \(\delta\)
E \(E\) \epsilon \(\epsilon\)
Z \(Z\) \zeta \(\zeta\)
H \(H\) \eta \(\eta\)
\Theta \(\Theta\) \theta \(\theta\)
I \(I\) \iota \(\iota\)
K \(K\) \kappa \(\kappa\)
\Lambda \(\Lambda\) \lambda \(\lambda\)
M \(M\) \mu \(\mu\)
N \(N\) \nu \(\nu\)
\Xi \(\Xi\) \xi \(\xi\)
O \(O\) \omicron \(\omicron\)
\Pi \(\Pi\) \pi \(\pi\)
P \(P\) \rho \(\rho\)
\Sigma \(\Sigma\) \sigma \(\sigma\)
T \(T\) \tau \(\tau\)
\Upsilon \(\Upsilon\) \upsilon \(\upsilon\)
\Phi \(\Phi\) \phi \(\phi\)
X \(X\) \chi \(\chi\)
\Psi \(\Psi\) \psi \(\psi\)
\Omega \(\Omega\) \omega \(\omega\)

关系运算符

代码 符号
\pm \(\pm\)
\times \(\times\)
\div \(\div\)
\mid \(\mid\)
\nmid \(\nmid\)
\cdot \(\cdot\)
\circ \(\circ\)
\ast \(\ast\)
\bigodot \(\bigodot\)
\bigotimes \(\bigotimes\)
\bigoplus \(\bigoplus\)
\leq \(\leq\)
\geq \(\geq\)
\neq \(\neq\)
\approx \(\approx\)
\equiv \(\equiv\)
\sum \(\sum\)
\prod \(\prod\)
\coprod \(\coprod\)

集合运算符

代码 符号
\emptyset \(\emptyset\)
\in \(\in\)
\notin \(\notin\)
\subset \(\subset\)
\supset \(\supset\)
\subseteq \(\subseteq\)
\supseteq \(\supseteq\)
\bigcap \(\bigcap\)
\bigcup \(\bigcup\)
\bigvee \(\bigvee\)
\bigwedge \(\bigwedge\)
\biguplus \(\biguplus\)
\bigsqcup \(\bigsqcup\)

对数运算符

代码 符号
\log \(\log\)
\lg \(\lg\)
\ln \(\ln\)

三角运算符

代码 符号
\bot \(\bot\)
\angle \(\angle\)
\sin \(\sin\)
\cos \(\cos\)
\tan \(\tan\)
\cot \(\cot\)
\sec \(\sec\)
\csc \(\csc\)

微积分运算符

代码 符号
\prime \(\prime\)
\int \(\int\)
\iint \(\iint\)
\iiint \(\iiint\)
\iiiint \(\iiiint\)
\oint \(\oint\)
\lim \(\lim\)
\infty \(\infty\)
\nabla \(\nabla\)
\mathrm{d} \(\mathrm{d}\)

说明
1. 部分参考自博客[始终]上文章:解决MathJax与Markdown的冲突
2. 部分参考自博客[天空的城]上的文章:Hexo下mathjax的转义问题

启用Mathjax插件

  1. 安装:cd进入Hexo的根目录

    1
    npm install hexo-math --save

  2. 配置

    在站点配置文件_config.yml中加入下述代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    math:
    engine: 'mathjax' # or 'katex'
    mathjax:
    src: custom_mathjax_source
    config:
    # MathJax config
    katex:
    css: custom_css_source
    js: custom_js_source # not used
    config:
    # KaTeX config

NexT如何集成mathjax?

可以在next文件中的主题配置文件_config.xml下做类似如下配置后便可用:

1
2
3
4
5
# MathJax Support
mathjax:
enable: true
per_page: false
cdn: //cdn.bootcss.com/mathjax/2.7.1/latest.js?config=TeX-AMS-MML_HTMLorMML

如果框架不提供配置怎么集成mathjax?

只要在需要集成的页面上加载一个script即可

1
2
3
<script type="text/javascript"
src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
</script>

如何复制别人的mathjax代码?

  1. 可以查看网页源码。

  2. 可以直接在公式上右键,按照如下图的操作后便可看到代码。

  3. 在线识别手写数学公式并转换为的mathjax代码网站

MathJax与Markdown的冲突

MathJax是一个JavaScript引擎,能够将LaTeX语法书写的公式在网页上显示出来。Markdown是一种轻量级的标记语言。用Markdown书写的文章,可以用Markdown解释器处理成标准的HTML文档。因此Markdown很适合用来写博客。

在Markdown中,下划线_被保留,用作标记符号。比如_Slant_会生成倾斜的_Slant_。在LaTeX中,下划线_被用作下标记号。比如x_i会生成\(x_i\)

由于 Markdown 在 MathJax 之前起作用,有时下标记号会被 Markdown 吃掉,变成 HTML 标记<i>而失去 LaTeX 的下标效果,造成数学公式显示不正常。

比如This is an example: $f_i = f_{i + 1}$里的两个下划线会被Markdown理解成倾斜的标记,显示成这样:

解决方案

  1. 更换Hexo的markdown引擎

    把Hexo默认的渲染markdown的引擎替换成插件pandoc(hexo-renderer-pandoc)进行渲染。但pandoc的语法与markdown有些微的差异,需要注意。

    • 安装pandoc

    • cd进入Hexo的根目录,卸载Hexo默认的markd,再安装pandoc

      1
      2
      npm uninstall hexo-renderer-marked --save
      npm install hexo-renderer-pandoc --save

说明
1. 译自Keith Goldfeld的文章Visualizing how confounding biases estimates of population-wide (or marginal) average causal effects

当我们试图评估暴露或干预对结果的影响时,混淆因素(confounding)对我们得出正确结论的能力始终存在威胁。我的目标是考虑一下如何描述混淆的方式,使得有可能从表面上看出为什么不正确地估计干预效应(intervention effects)可能会导致偏倚。

混淆、潜在的结果和因果效应

通常,我们认为混淆因素会影响暴露和结果。如果,我们在评价暴露效果的时候,忽略混杂因素,我们可能轻易地高估或低估由于暴露所造成的效果大小。

如果病情较重的患者比健康的患者更有可能服用某种特定的药物,那么服用该药的患者,其相对较差的预后,可能是由于最初的健康状况而不是药物造成的。

一个稍微不同的混淆因素的观点与潜在结果的概念性框架相关联。如果一个个体受到特定的暴露,我们可能会观察到一个潜在的结果。我们可能会或可能不会观察到潜在的结果:这取决于实际的暴露程度。(为了简化,假定我们只对两种不同的暴露感兴趣。)

\(Y_0\)代表患者未受到暴露,\(Y_1\)代表患者受到暴露。暴露因素对个人i的因果影响(causal effect)可以被定义为\(Y_{1i}-Y_{0i}\)

如果我们有足够长的时间来观察两种状态(有或没有暴露)下,每一个研究对象的结局\(Y\),并测量两种潜在的结局以及因果效应。对样本中所有个体进行平均,可以估计人口平均因果效应。(Think of a crossover or N-of-1 study.)

不幸的是,在现实世界中,将个体暴露于多种条件下几乎是不可行的。只能设置对照组和暴露组,进行比较(除了暴露因素以外,两组其他情况都相同)。

我们的目标是比较对照组与暴露组的结果分布。我们经常通过查看每个分布的均值来简化这种比较。

平均因果效应(所有个体)可以写成\(E(Y_{1i}-Y_{0i})\)\(E()\)是期望值或平均值。实际上,我们无法直接衡量这一点,因为每个人只能观察到一个潜在的结果。

我们可以使用观察到的测量值来估计无法观察的平均因果效应。 混淆因素-期望

  1. 因为期望是线性的。故此:E(Y1-Y0)=E(Y1)-E(Y0)
  2. 可以说\[A_1 = 5 \]

\[\frac{a}{b}\]

说明
1. 部分参考O'Reilly Media出版的HTML and CSS和HTML with CSS & XHTML
2. 部分参考作者兼续在简书上的笔记https://www.jianshu.com/p/727dbfcef685

在医学研究领域,通常用Table 1来描述所研究人群的特征情况。Table 1包含连续性变量的均值、分类变量所占百分比以及p值等信息。为了创建Table 1有时可能会非常耗时。想象一下:我们有3组数据,每组数据10个变量(如年龄,性别等),需对变量计算均值(标准差)、参与人数(百分比)。这样的话我们需要在表中填充60个数据。

tableone包的作者是Kazuki Yoshida和Justin Bohn,利用这个包可以很方便的在R中创建表格。

一、创建Table 1

(一)创建并导入数据

本文数据是由rnorm()sample()函数模拟产生的,从这里下载。

1
2
3
4
5
6
7
8
9
10
dt <- read.csv(file.choose(), header=TRUE, sep=",")
head(dt)

Age Gender Cholesterol SystolicBP BMI Smoking Education
1 67.9 Female 236.4 129.8 26.4 Yes High
2 54.8 Female 256.3 133.4 28.4 No Medium
3 68.4 Male 198.7 158.5 24.1 Yes High
4 67.9 Male 205.0 136.0 19.9 No Low
5 60.9 Male 207.7 145.4 26.7 No Medium
6 44.9 Female 222.5 130.6 30.6 No Low

(二)设定变量并定义分类变量

现在,我们使用tableone包来创建Table 1。

  1. 首先加载tableone包,并创建我们想要放到Table 1中的变量列表。
  2. 定义分类变量。
1
2
3
4
5
6
7
8
9
#加载tableone包
library(tableone)

#创建变量列表
listVars <- c("Age", "Gender", "Cholesterol", "SystolicBP", "BMI", "Smoking",
"Education")

#定义分类变量
catVars <- c("Gender","Smoking","Education")

(三)总体人群表格

1
2
3
4
5
6
7
8
9
10
11
12
13
14
table1 <- CreateTableOne(vars = listVars, data = dt, factorVars = catVars)

Overall
n 250
Age (mean (sd)) 57.50 (7.85)
Gender = Male (%) 107 (42.8)
Cholesterol (mean (sd)) 224.12 (24.90)
SystolicBP (mean (sd)) 145.51 (10.08)
BMI (mean (sd)) 26.79 (4.37)
Smoking = Yes (%) 72 (28.8)
Education (%)
High 108 (43.2)
Low 71 (28.4)
Medium 71 (28.4)

(四)特定人群(分类)表格

我们更感兴趣的是分别为男性和女性创建Table 1,并比较他们的均值和百分比。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 从变量列表中移除Gender
listVar <- c("Age", "Cholesterol", "SystolicBP", "BMI", "Smoking", "Education")
table1 <- CreateTableOne(listVars, dt, catVars, strata = c("Gender"))

Stratified by Gender
Female Male p test
n 143 107
Age (mean (sd)) 56.94 (8.05) 58.25 (7.55) 0.191
Cholesterol (mean (sd)) 224.80 (25.06) 223.21 (24.78) 0.620
SystolicBP (mean (sd)) 144.95 (10.99) 146.27 (8.71) 0.305
BMI (mean (sd)) 26.74 (4.58) 26.84 (4.09) 0.859
Smoking = Yes (%) 37 (25.9) 35 (32.7) 0.298
Education (%) 0.289
High 56 (39.2) 52 (48.6)
Low 45 (31.5) 26 (24.3)
Medium 42 (29.4) 29 (27.1)

tableone包还可以做更多事情。例如:计算非正态分布变量的中位数和四分位数,对不同组之间作各种假设检验的对比。

说明
1. 译自Rajyaguru DJ于2018年发表在JCO上的文章:Radiofrequency Ablation Versus Stereotactic BodyRadiotherapy for Localized Hepatocellular Carcinoma inNonsurgically Managed Patients: Analysis of the National Cancer Database.

射频消融与立体定向放疗对非手术治疗的局限性肝癌患者的影响:国家癌症数据库分析

摘要

研究目的

对于局部肝细胞癌(HCC)的管理,目前尚缺乏指导(医生)如何选择最佳局部消融治疗的数据。由于这些治疗方式的前瞻性、可比较数据有限,因此我们的目的是通过使用国家癌症数据库比较射频消融(radiofrequency ablation,RFA)与立体定向放射治疗(stereotactic body radiotherapy,SBRT)的有效性(effectiveness)。

方法

  1. 我们进行了一项观察性研究,以比较RFA与SBRT在非手术治疗肝癌患者(stage I or II)中的有效性。
  2. 通过使用基于患者(patient-),医疗设施(facility-)和肿瘤水平(tumor-level)特征的倾向性评分加权和倾向性评分匹配分析来比较总体生存率。
  3. 进行敏感性分析(A sensitivity analysis)以评估严重的肝纤维化/肝硬化程度。
  4. 此外,我们进行了探索性分析(exploratory analyses),以确定RFA和SBRT在临床相关患者子集中的有效性。

结果

  1. 3,684例(92.6%)和296例(7.4%)非手术治疗的I期或II期HCC患者分别接受RFA或SBRT治疗。
  2. 在倾向性评分匹配后,RFA组的5年总体生存率为29.8%(95%CI,24.5%-35.3%),而SBRT组则为19.3%(95%CI,13.5%-25.9%),两者差异显著(P=0.001)。
  3. 逆概率加权分析(Inverse probability–weighted analysis)也获得类似的结果。
  4. RFA的获益在所有亚组中都是一致的,并且对严重肝纤维化/肝硬化的效果是稳健的。

结论

  1. 我们的研究表明,对于I或II期HCC的非手术治疗患者,与SBRT相比,RFA治疗可获得更高的存活率。
  2. 尽管我们的结果受限于回顾性研究设计相关的偏倚。但我们认为,在没有随机临床试验的情况下,在推荐局部无法切除的HCC患者进行局部消融治疗时应考虑我们的研究结果。

前言

  1. 对于局限性肝细胞癌,可以通过手术切除或肝移植实现治愈。然而,大多数患者不适合手术,而是采用局部消融治疗(local ablative therapies),包括射频消融(radiofrequency ablation,RFA),微波消融(microwave ablation),冷冻消融(cryoablation)和立体定向放射治疗(stereotactic body radiation therapy,SBRT)。
  2. RFA广泛应用于体积较小(< 3cm)的不可切除肝癌,可实现70%到90%的优良局部控制率,并且在某些情况下被认为是治愈性治疗。
  3. 其他介入技术,例如微波消融或联合热-经动脉化学栓塞已被用于改善局部控制率,特别是对于在3cm和5cm之间的HCC肿瘤。
  4. SBRT是RFA的新兴替代方法,似乎为较小的HCC提供了类似的局部控制率。
  5. 尽管对SBRT的研究正在逐渐增加,但大多数SBRT的数据来自单中心,易于受到选择偏倚的影响。 此外,许多单中心的样本量相对较少,缺乏长期生存数据。
  6. 前瞻性随机试验对于比较RFA与SBRT治疗局部不可切除HCC的有效性是必要的。然而,目前尚无前瞻性随机试验,且进行此类试验面临许多挑战,耗时且花费较高。

研究方法

数据来源

  1. 我们使用NCDB进行了回顾性分析,属于不受机构审查委员会监督的去标志数据(de-identified data)。
  2. NCDB是美国外科医师学会(American College of Surgeons)癌症委员会(Commission on Cancer,CoC)和美国癌症协会(the American Cancer Society)的联合项目。
  3. NCDB包含来自美国1500多家拥有CoC认证项目的医院的数据,其中包括约70%全美所有新诊断的癌症病例,即超过2900万个独特的癌症病例。
  4. 根据与每个认证机构签订的协议,删除来自美国退伍军人事务部、国防部,波多黎各的设施和其他某些计划的数据。
  5. 我们从NCDB参与者用户文件(Participant User Files,PUF)获得数据。The data elements are collected prospectively from cancer registries of CoC-accredited programs by using nationally standardized data item and coding definitions as specified in the CoC’s facility oncology registry data standards and nationally standardized data transmission format specifications coordinated by the North American Association of Central Cancer Registries.
  6. 数据元素包括患者特征、癌症分期、肿瘤的组织学特征、首次治疗的类型和时间以及结果。
  7. 对于所有在5年内诊断出的符合条件的患者,合格评定(accreditation)要求每年有90%的随访率。

研究人群

  1. 从2004年至2013年间诊断为原发性HCC的119,933名男性和女性人群中共识别了47,634例临床I期(T1N0M0)或II期(T2N0M0)患者

    International Classification of Disease-Oncology-3rd Edition code C22.0, histology codes 8170-8175

  2. 排除接受过肺叶切除术,扩大肺叶切除术,肝切除术或肝移植的患者。

  3. 以RFA或SBRT作为主要治疗方式,排除接受其他形式的局部消融治疗的患者。

  4. 排除接受任何形式的化疗(辅助或新辅助)或化疗信息未知的患者。

  5. 本研究最终纳入3,980名患者。

    CONSORT diagram

Covariates/协变量

可以在NCDB PUF数据dictionary中找到所有变量的完整详细描述。

  1. Patient-level variables
    • 诊断时的年龄
    • 性别
    • 种族
    • 保险状况
    • 根据患者邮政编码的家庭收入中位数
    • 患者人口普查区内低于高中教育的人口百分比
    • Charlson-Deyo合并症评分(被NCDB分为0,1,≥2的得分类别)
  2. Facility-level variables
    • 从患者居住区到治疗设施的距离
    • case volume in quartiles
    • 地理区域
    • type of treatment facilities(由CoC accreditation category指定,基于case volume和available services)
      • 社区
      • 综合性社区
      • 学术
      • integrated network cancer program
  3. Tumor-level variables
    • TNM分期
    • 肿瘤大小
    • 诊断年份(2004-2008 v 2009-2013)
    • 甲胎蛋白
    • 肿瘤分级和Ishak纤维化评分可用于接受活检以评估肿瘤的患者

目标

  1. 本研究的主要目的是比较非手术治疗的I期或II期HCC患者的总体生存期(overall survival,OS),同时比较接受RFA治疗的患者与接受SBRT治疗的患者的OS。 > OS的定义:从诊断日期到死亡(任何原因所导致)日期。

  2. 次要目标是确定RFA和SBRT在临床相关患者子集中的有效性。

统计分析

  1. 评估治疗方式与患者的特点,临床特点及和医疗设施特征之间的相关性
    • 分类数据:Pearson卡方,Fisher’s exact test
    • 计量数据:Wilcoxon rank sum test
  2. 对于主要结果,构建了两种OS与治疗方式之间相关性的模型
    • a propensity score-and time-to-treatment-matched univariable Cox proportional hazards model /倾向性评分和治疗时间匹配的单因素Cox比例风险模型
    • an unmatched univariable analysis based on the Kaplan-Meier estimator of inverse probability of treatment weight (IPTW)/基于IPTW的Kaplan-Meier估计量的未匹配的单因素分析
  3. 构建以接受SBRT为目标事件构建模型的倾向性评分模型。
    • 通过逐步多因素logistic回归模型。
    • 变量选择:先进行单因素分析,纳入所有与治疗方法显著相关的变量(a threshold of P <0.20 required for initial inclusion and P <0.10 required to remain in the model)。
  4. 在倾向性评分的基础上,计算稳定的IPTW。IPTWs were truncated at 第5和第95百分位
  5. 构建倾向性评分和治疗时间匹配的OS模型
    • 通过使用a greedy, nearest neighbor matching algorithm,接受SBRT治疗的患者与接受RFA治疗的患者,在倾向性评分和诊断到治疗的时间上,匹配为1:2。倾向性评分的最大允许差异为±2%,诊断到治疗的时间的最大允许差异为±14天。
    • 计算每组的Kaplan-Meier估计量,并使用对数秩检验(log-rank test)进行比较。
  6. 对于OS的最终模型,计算所有患者的IPTW Kaplan-Meier估计量,并通过对数秩检验在各组之间进行比较。
  7. 所有计算均使用SAS软件9.4版进行。
  8. 在匹配的患者组中,我们通过交互作用(interaction)和亚组分析(subgroup analyses)评估了治疗效果的异质性(heterogeneity of treatment effects),探讨了年龄,性别,临床T分期,肿瘤大小,肿瘤分级,Charlson-Deyo合并症评分和设施类型的影响。
  9. 由于在NCDB中纤维化/肝硬化例数较少,以及纤维化/肝硬化与OS减少之间的已知关联。我们在匹配的患者组中进行了敏感性分析,以研究这种未测量的混杂因素对我们的结果的潜在影响。
  10. 敏感性分析的目标是探索假设的结果情景,并在其中调整观察到的治疗效果以解释潜在的未测量的混杂因素。
  11. 除了观察到的治疗效果外,敏感性分析还纳入了关于生存效应和未测量混杂因子的不同暴露的假设信息,以计算如果去除未测量的混杂因素将会观察到的真实治疗效果。

结果

Factors Associated With Use of SBRT

  1. 开始SBRT和RFA治疗的中位时间分别为72天和48天。
  2. 患者基线特征列于表1中。 Table 1 Table 1_c
  3. 通过倾向性评分和time to treatment进行匹配,两组患者所有的协变量均取得了足够的组间平衡(见表A1)。 表A1 表A1_c
  4. 接受SBRT的患者比例随时间逐渐增加,年增长率为12%(P<0.001;图2),大多数患者(79.7%)接受三至五次治疗。

生存分析

严重纤维化/肝硬化的影响

讨论