當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。