交叉验证和有序逻辑回归

机器算法验证 回归 交叉验证 有序的logit 有效值
2022-03-04 05:50:18

我试图了解序数逻辑回归的交叉验证。游戏的目的是验证分析中使用的模型......

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

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)。符号是相反的,因为在我的模型中,我使用系数来计算存在的几率1, 和2,这是另一种方式,我认为那里没有太多问题。

但是我不明白歧视和排名歧视指数你能帮助我吗?!一些指针?

当我们转向交叉验证时,情况会更糟......

> 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

嗯?这是什么?我如何解释这个?手册页几乎没有解释,我无法访问这篇论文......而且我对复杂的海洋感到不知所措。请帮忙!

2个回答

现在专注于一些指数。 index.orig是根据用于拟合模型的数据评估它时的表观预测能力/准确度得分。 index.corrected是同一索引的交叉验证校正版本,即针对过度拟合(去偏)进行校正。 Dxy是萨默斯的Dxy等级相关系数 - 纯歧视的量度。有关详细信息,请参阅原始论文或非参数文本。 Dxy=2(C12)在哪里C是广义 ROC 区域(一致性概率)。 Intercept并且Slope与 logit 标度上的校准曲线有关。 Emax是使用该斜率和截距估计的最大校准误差。 B是 Brier 准确度得分(结合了判别和校准)。

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

对于您的第一个问题:它们是不同的模型性能测量。你希望它们中的一些大,而另一些小。事实上它们在某种程度上是相关的,所以建议你专注于一两个

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

高温高压