交叉验证和有序逻辑回归


12

我正在尝试了解有序逻辑回归的交叉验证。游戏的目的是验证分析中使用的模型。

我首先构造一个玩具数据集:

set.seed(1)
N <- 10000
# predictors
x1 <- runif(N)
x2 <- runif(N)
x3 <- runif(N)

# coeffs in the model
a <- c(-2,-1)
x <- -x1+2*x2+x3

# P( y ≤ i ) is given by logit^{-1} ( a[i]+x )
p <- outer(a,x, function(a,x) 1/(1+exp(-a-x)) )

# computing the probabilities of each category
q <- 1 - p[2,]
p[2,] <- p[2,] - p[1,];
p <- rbind(p,q);

# outcome
y <- ordered( apply( p, 2, function(p) which(rmultinom(1,1,p)>0) ) ) 

现在,我lrm在package中使用它拟合模型rms

require("rms")
fit <- lrm(y~x1+x2+x3, x=TRUE,y=TRUE)


> fit

Logistic Regression Model

lrm(formula = y ~ x1 + x2 + x3, x = TRUE, y = TRUE)

                      Model Likelihood     Discrimination    Rank Discrim.
                         Ratio Test            Indexes          Indexes   
Obs         10000    LR chi2    1165.46    R2       0.126    C       0.664
 1           2837    d.f.             3    g        0.779    Dxy     0.328
 2           2126    Pr(> chi2) <0.0001    gr       2.178    gamma   0.329
 3           5037                          gp       0.147    tau-a   0.203
max |deriv| 4e-10                          Brier    0.187                 

     Coef    S.E.   Wald Z Pr(>|Z|)
y>=2  2.1048 0.0656  32.06 <0.0001
y>=3  1.0997 0.0630  17.45 <0.0001
x1    0.8157 0.0675  12.09 <0.0001
x2   -1.9790 0.0701 -28.21 <0.0001
x3   -1.0095 0.0687 -14.68 <0.0001

我了解了结果的第二部分:我在模型中输入的系数在这里(几乎完美N = 100000)。正负号相反,因为在我的模型中我使用coeffs计算和的几率,这是另一种方式,我认为那里没有太多问题。212

但是我不理解歧视和等级歧视指数。你能帮助我吗?!一些指针?

当我们转向交叉验证时,情况变得更糟了。

> validate(fit, method="cross")
          index.orig training    test optimism index.corrected  n
Dxy           0.3278   0.3278  0.3290  -0.0012          0.3291 40
R2            0.1260   0.1260  0.1313  -0.0053          0.1313 40
Intercept     0.0000   0.0000 -0.0072   0.0072         -0.0072 40
Slope         1.0000   1.0000  1.0201  -0.0201          1.0201 40
Emax          0.0000   0.0000  0.0056   0.0056          0.0056 40
D             0.1164   0.1165  0.1186  -0.0021          0.1186 40
U            -0.0002  -0.0002 -0.8323   0.8321         -0.8323 40
Q             0.1166   0.1167  0.9509  -0.8342          0.9509 40
B             0.1865   0.1865  0.1867  -0.0001          0.1867 40
g             0.7786   0.7786  0.7928  -0.0142          0.7928 40
gp            0.1472   0.1472  0.1478  -0.0007          0.1478 40

嗯?这是什么?我该如何解释?手册页上几乎没有解释,我无法访问本文 ...而我感到自己被复杂的海洋淹没了。请帮忙!

Answers:


11

现在专注于一些索引。 index.orig是在用于拟合模型的数据上评估时的表观预测能力/准确性得分。 index.corrected是相同索引的经过交叉验证校正的版本,即针对过度拟合进行校正(消除偏差)。 Dxy是Somers的等级相关系数-一种纯区分度的量度。有关详细信息,请参见原始论文或非参数文本。 ,其中是广义ROC区域(一致性概率)。 并与对数刻度上的校准曲线有关。 是使用该斜率和截距估计的最大校准误差。 D x y = 2 C 1DxyCDxy=2(C12)CInterceptSlopeEmaxB 是Brier准确性得分(结合判别和校准)。

方法在我的书或该书的网站上的课程笔记中进行了描述:http : //biostat.mc.vanderbilt.edu/rms


谢谢,弗兰克。您的书是否提及包装?它包含有关Dxy的更多详细信息吗?
猫王

1
是。该书介绍了Design现在已被替换rms并以相同方式使用的软件包,除了如何获得部分效果图和列线图的最终绘图步骤外,请参见biostat.mc.vanderbilt.edu/Rrms。对于 google是您的朋友。我有好几首。这个看起来不错:stata-journal.com/sjpdf.html?articlenum=st0007Dxy
弗兰克·哈雷尔

谢谢。我用Google搜索了几个小时,但没有找到。我买你的书。
猫王2012年

1

第一个问题:它们是不同的模型性能度量。您希望其中一些变大,另一些变小。实际上它们之间存在某种联系,因此建议您专注于一两个

第二个问题是:第一个R输出中包含的是训练样本的模型性能。通过交叉验证进行验证时,您可以在多个测试样本及其平均值上获得这些测量结果。这使您可以更实际地估计模型的性能。

高温超导

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.