当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R concordance 计算数据或模型的一致性统计量


R语言 concordance 位于 survival 包(package)。

说明

一致性统计量计算观察到的响应与预测变量之间的一致性。它与 Kendall 的 tau-a 和 tau-b、Goodman 的 gamma 和 Somers 的 d 密切相关,所有这些也可以从该函数的结果计算出来。

用法

concordance(object, ...)
## S3 method for class 'formula'
concordance(object, data, weights, subset, na.action,
  cluster, ymin, ymax, timewt= c("n", "S", "S/G", "n/G2", "I"),
  influence=0, ranks = FALSE, reverse=FALSE, timefix=TRUE, keepstrata=10, ...)
## S3 method for class 'lm'
concordance(object, ..., newdata, cluster, ymin, ymax,
  influence=0, ranks=FALSE, timefix=TRUE, keepstrata=10)
## S3 method for class 'coxph'
concordance(object, ..., newdata, cluster, ymin, ymax,
  timewt= c("n", "S", "S/G", "n/G2", "I"), influence=0,
  ranks=FALSE, timefix=TRUE, keepstrata=10)
## S3 method for class 'survreg'
concordance(object, ..., newdata, cluster, ymin, ymax,
  timewt= c("n", "S", "S/G", "n/G2", "I"), influence=0,
  ranks=FALSE, timefix=TRUE, keepstrata=10)

参数

object

拟合模型或公式。该公式应采用 y ~xy ~ x + strata(z) 形式,具有单个数字或生存响应和单个预测变量。每个层分别计算一致、不一致和绑定对的计数,然后相加。

data

data.frame,用于解释 formulasubsetweights 参数中指定的变量。仅当 object 是公式时才适用。

weights

案例权重的可选向量。仅当 object 是公式时才适用。

subset

表达式,指示在拟合中应使用数据行的哪个子集。仅当 object 是公式时才适用。

na.action

缺失数据过滤函数。在使用任何子集参数后,这将应用于model.frame。默认为 options()\$na.action 。仅当 object 是公式时才适用。

...

允许多个拟合模型。仅当 object 是模型对象时才适用。

newdata

可选,一个新的 DataFrame ,用于评估(但不重新拟合)模型

cluster

用于计算稳健方差的可选分组向量

ymin , ymax

计算限制范围 ymin <= y <= ymax 上的一致性。 (对于生存数据,这是一个时间范围。)

timewt

要应用的权重。总体统计数据是事件时间的加权平均值。

influence

1=返回 dfbeta 向量,2=返回完整影响矩阵,3=返回两者

ranks

如果为 TRUE,则返回一个 DataFrame ,其中包含构成总体分数的缩放排名。

reverse

如果为 TRUE,则假设较大的 x 值预测较小的响应值 y ;比例风险模型就是常见的例子,更大的风险=更短的生存期。

timefix

纠正可能的舍入误差。请参阅有关绑定时间的小插图以获取更多说明。本质上,精确关系是一致性计算的重要组成部分,但"exact"对于浮点数来说可能是一个微妙的问题。

keepstrata

TRUE、FALSE 或整数值。计算始终在层内完成,然后相加。如果层总数大于 keepstratakeepstrata=FALSE ,则这些小计不会保留在输出中。

细节

一致性是 的估计值,对于模型拟合,将 替换为 (模型的预测响应)。对于生存结果,某些值对是不可比较的,例如,在时间 5 进行审查,在时间 6 进行死亡,因为我们不知道第一个观察是否会比第二个观察更长久。在这种情况下,可评估对的总数较小。

与其他统计量的关系:对于连续的 x 和 y,2C-1 等于 Somers' d。如果响应是二元的,C 等于受试者工作曲线下的面积或 AUC。对于生存响应和二元预测变量 C 是 Gehan-Wilcoxon 测试的分子。

简单的计算需要将所有 n(n-1)/2 次比较相加,这对于大型数据集来说可能相当慢。此例程使用 O(n log(n)) 算法。在每个未经审查的事件时间 y,计算发生该事件的受试者的 x 排名,与所有其他存活时间较长的受试者的 x 值相比,其中排名的值在 0 到 1 之间。一致性是以下各项的加权平均值这些排名由 timewt 选项确定。当受试者添加到风险集中时,可以有效地更新排名向量。有关更多详细信息,请参阅小插图。

方差基于无穷小折刀。这种方法的一个优点是,它还为基于多个不同预测值的协方差提供了有效的协方差,即使这些预测来自完全不同的模型。例如,请参见下面的示例,其中有一个泊松模型和两个非嵌套 Cox 模型。例如,这对于将机器学习模型与 Cox 模型拟合进行比较很有用。然而,预测值必须准确对齐,每行都有相同的观察值,这一点绝对至关重要;否则结果将是无意义的。 (警惕缺失值的影响。)

timewt 选项仅适用于审查数据。在本例中,默认值对应于 Harrell 的 C 统计量,该统计量与 Gehan-Wilcoxon 测试密切相关; timewt="S" 对应于 Peto-Wilcoxon,timewt="S/G" 是由 Schemper 建议的,timewt="n/G2" 对应于 Uno 的 C。事实证明,Schemper 和 Uno 权重在计算上是相同的,为了方便用户,我们保留了两个选项标签。 timewt= "I" 选项与log-rank 统计信息相关。

当层数非常大时,例如在条件逻辑回归中(clogit 函数),当不保留各个层结果时,可以使用更快的计算速度;使用keepstrata=FALSEkeepstrata=0 来执行此操作。在一般情况下,keepstrata = 10 默认值只是保持打印输出易于管理:如果层数 <= 10,它会保留并打印 per-strata 计数。

concordance 类的对象包含以下组件:

concordance

估计的一个或多个一致性值

count

包含一致对数量的向量,不一致,与 x 相关但不与 y 相关,与 y 相关但不与 x 相关,并且与 x 和 y 均相关

n

观察数量

var

包含基于无穷小折刀 (IJ) 方法的一致性估计方差的向量。如果有多个模型,它包含估计的方差/协方差矩阵。

cvar

包含一致性值的估计方差的向量,基于比例风险模型的相关分数测试的方差公式。 (这是 survConcordance 函数中使用的主要方差。)

dfbeta

可选,一致性的杠杆估计向量

influence

可选,每个计数的杠杆值矩阵,每个观察一行

ranks

可选,包含每个事件时间 Somers d 排名的 DataFrame ,以及时间权重和观察的案例权重。排名的时间加权和将等于一致对-不一致对。

注意

出现数值故障的 coxph 模型可能具有未定义的预测值,在这种情况下,一致性将为 NULL。

现有 coxph 模型与 newdata 的计算对于原始调用中的额外参数有一些微妙之处。这些包括

  • 模型中的tt() 项。 newdata 不支持此函数。

  • 子集。原始调用中的任何子集子句都将被忽略,即不应用于新数据。

  • 模型中的strata() 项。新数据预计将具有在原始数据集中找到的分层变量,并在分层内计算一致性。地层变量的水平不必与原始数据中的水平相同。

  • id 或 cluster 指令。这个问题还没有解决。

例子

fit1 <- coxph(Surv(ptime, pstat) ~ age + sex + mspike, mgus2)
concordance(fit1, timewt="n/G2")  # Uno's weighting

# logistic regression 
fit2 <- glm(I(sex=='M') ~ age + log(creatinine), binomial, data= flchain)
concordance(fit2)  # equal to the AUC

# compare multiple models 
options(na.action = na.exclude)   # predict all 1384 obs, including missing
fit3 <- glm(pstat ~ age + sex + mspike + offset(log(ptime)), 
            poisson, data= mgus2)
fit4 <- coxph(Surv(ptime, pstat) ~ age + sex + mspike, mgus2)
fit5 <- coxph(Surv(ptime, pstat) ~ age + sex + hgb + creat, mgus2)

tdata <- mgus2; tdata$ptime <- 60   # prediction at 60 months
p3 <- -predict(fit3, newdata=tdata) 
p4 <- -predict(fit4) # high risk scores predict shorter survival
p5 <- -predict(fit5)
options(na.action = na.omit)      # return to the R default

cfit <- concordance(Surv(ptime, pstat) ~p3 +  p4 + p5, mgus2)
cfit
round(coef(cfit), 3)
round(cov2cor(vcov(cfit)), 3)  # high correlation

test <- c(1, -1, 0)  # contrast vector for model 1 - model 2 
round(c(difference = test %*% coef(cfit),
        sd= sqrt(test %*% vcov(cfit) %*% test)), 3)

作者

Terry Therneau

参考

F Harrell, R Califf, D Pryor, K Lee and R Rosati, Evaluating the yield of medical tests, J Am Medical Assoc, 1982.

R Peto and J Peto, Asymptotically efficient rank invariant test procedures (with discussion), J Royal Stat Soc A, 1972.

M Schemper, Cox analysis of survival data with non-proportional hazard functions, The Statistician, 1992.

H Uno, T Cai, M Pencina, R D'Agnostino and Lj Wei, On the C-statistics for evaluating overall adequacy of risk prediction procedures with censored survival data, Statistics in Medicine, 2011.

也可以看看

coxph

相关用法


注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Compute the concordance statistic for data or a model。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。