如何在给定序数响应的情况下计算外部验证数据集的Somer的D / C索引

时间:2013-09-24 17:51:57

标签: r hmisc

我使用Harrell'rms'包中的lrm函数拟合比例赔率回归模型。我想知道如何计算应用于我的拟合模型的外部验证数据集的c-index / Somer's D.可以使用fits.model $ stats直接计算拟合模型的这些统计数据,但我不确定如何将它们用于外部验证数据集。

对于“rms”包中的二进制或生存响应,似乎有内置函数,val.prob& val.surv,但我无法找到顺序响应的方法。

1 个答案:

答案 0 :(得分:1)

您应该重新阅读lrm的文档。在该函数中处理序数响应。我使用生成“适合”对象的?lrm中的第一个示例来运行此代码:

pred.logit <- predict(fit)
phat <- 1/(1+exp(-pred.logit))
> str(pred.logit)
 Named num [1:1000] NA NA NA 0.234 0.577 ...
 - attr(*, "names")= chr [1:1000] "1" "2" "3" "4" ...
> str(fit$y)
 Named num [1:997] 0 1 0 1 1 0 0 0 0 0 ...
 - attr(*, "names")= chr [1:997] "4" "5" "6" "7" ...

val.prob(phat[-(1:3)], y=fit$y, m=20, cex=.5)

          Dxy       C (ROC)            R2             D      D:Chi-sq           D:p 
 2.836172e-01  6.418086e-01  8.959553e-02  6.840647e-02  6.920125e+01  1.110223e-16 
            U      U:Chi-sq           U:p             Q         Brier     Intercept 
-2.006018e-03 -1.591616e-12  1.000000e+00  7.041249e-02  2.315756e-01  5.977542e-14 
        Slope          Emax           S:z           S:p          Eavg 
 1.000000e+00  1.956213e-13 -3.813108e-02  9.695832e-01  2.443947e-02 
>