J'essaie de comprendre la validation croisée pour la régression logistique ordinale. Le but du jeu est de valider le modèle utilisé dans une analyse ...
Je construis d'abord un ensemble de données sur les jouets:
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) ) )
Maintenant, j'adapte le modèle qu'il utilise lrm
dans le 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
Je comprends la deuxième partie du résultat: les coefficients que j'ai mis dans le modèle sont là (c'est presque parfait avec N = 100000
). Le signe est inversé parce que dans mon modèle, j'ai utilisé les coefficients pour calculer les chances d'être et ≤ 2 , ici c'est l'inverse, je pense qu'il n'y a pas beaucoup de problèmes là-bas.
Cependant, je ne comprends pas les indices de discrimination et de discrimination de rang . Pouvez-vous m'aider?! Quelques pointeurs?
La situation est pire lorsque nous nous tournons vers la validation croisée ...
> 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
Mmffff? Qu'est-ce que c'est ça? Comment interpréter cela? La page de manuel donne peu d'explications, je n'ai pas accès à cet article ... et je me sens submergé par un océan de complexité. Aidez-moi!
Design
rms
À votre première question: ce sont des mesures de performances de modèle différentes. Vous voulez que certains soient grands, d'autres petits. En fait, ils sont en quelque sorte liés donc vous suggérons de vous concentrer sur un ou deux
Pour votre deuxième question: ce que vous avez dans votre première sortie R est la performance de votre modèle sur l'échantillon d'entraînement. Lorsque vous effectuez une validation par validation croisée, vous obtenez ces mesures sur plusieurs échantillons de test et leur moyenne. Cela vous donne une estimation plus réaliste de la performance de votre modèle.
HTH
la source