我正在尝试了解有序逻辑回归的交叉验证。游戏的目的是验证分析中使用的模型。
我首先构造一个玩具数据集:
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计算和的几率,这是另一种方式,我认为那里没有太多问题。≤ 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
嗯?这是什么?我该如何解释?手册页上几乎没有解释,我无法访问本文 ...而我感到自己被复杂的海洋淹没了。请帮忙!