¿Son realmente mejores los métodos robustos?

17

Tengo dos grupos de sujetos, A y B, cada uno con un tamaño de aproximadamente 400 y aproximadamente 300 predictores. Mi objetivo es construir un modelo de predicción para una variable de respuesta binaria. Mi cliente quiere ver el resultado de aplicar el modelo creado a partir de A en B. (En su libro, "Estrategias de modelado de regresión", @FrankHarrell menciona que es mejor combinar los dos conjuntos de datos y construir un modelo sobre eso, ya que hacerlo agrega potencia y precisión --- vea la página 90, Validación externa. Tiendo a estar de acuerdo con él, considerando que recopilar el tipo de datos que tengo es muy costoso y requiere mucho tiempo. Pero no tengo elección sobre lo que quiere el cliente .) Muchos de mis predictores están altamente correlacionados y también muy sesgados. Estoy usando regresión logística para construir mi modelo predictivo.

Mis predictores provienen principalmente de la mecánica. Por ejemplo, el tiempo total que el sujeto estuvo bajo un estrés superior al umbral para el período de tiempo [ t 1 , t 2 ] , para varios valores de α > 0 y 0 t 1 < t 2 . Está claro que solo por sus definiciones, muchos de estos tiempos totales están relacionados algebraicamente entre sí. Muchos de los predictores que no están relacionados algebraicamente están relacionados debido a su naturaleza: sujetos que están bajo estrés durante un período de tiempo [ t 1 ,α[t1,t2]α>0 00 0t1<t2[t1,t2]tienden a estar bajo estrés durante el período de tiempo , incluso si [ t 1 , t 2 ] [ t 3 , t 4 ] = . Para reducir la dimensión de los datos, agrupé los predictores relacionados (por ejemplo, todos los tiempos de estrés total juntos) y utilicé el análisis de componentes principales para representar cada grupo. Como las variables estaban sesgadas, probé dos caminos alternativos:[t3,t4 4][t1,t2][t3,t4 4]=

  • Antes de hacer el PCA, utilicé una transformación logarítmica para reducir el sesgo en las variables.
  • Utilicé el algoritmo ROBPCA de Mia Hubert, implementado por el paquete rrcov en R, (PcaHubert), para encontrar los componentes principales robustos.

Estoy usando la forma general de la curva ROC, la forma de la curva de recuperación de precisión y el área bajo la curva ROC (AUC) como mis medidas de rendimiento, y me gustaría obtener resultados similares para los conjuntos de datos A y B Esperaba obtener un resultado mucho mejor al usar los componentes principales robustos, pero para mi sorpresa, el primer método fue mejor: mejor valor de AUC para los conjuntos de datos A y B, más similitud entre las curvas ROC y un recuerdo de precisión más similar. curvas.

¿Cuál es la explicación para esto? ¿Y cómo puedo usar componentes principales robustos, en lugar de tratar de hacer que mis datos se vean normales? ¿Hay algún método PCA robusto en particular que recomendaría en lugar de ROBPCA?

usuario765195
fuente
"Agrupe los predictores relacionados", ¿puede explicar mejor qué pasos implica? "Esperaba obtener un resultado mucho mejor al usar los componentes principales robustos" ¿Puede explicar cómo mide los resultados?
user603
¿Por qué crees que es mejor combinar los conjuntos de datos? No estoy de acuerdo en absoluto. Una dificultad que tiene este tipo de problema es confiar demasiado en los datos particulares. Probar el modelo en otro conjunto de datos es una buena idea.
Peter Flom - Restablece a Monica
¿En qué sentido fue la PCA regular en las variables de registro "mejor"? ¿Tiene más sentido intuitivo? ¿Dio un mejor resultado en el segundo conjunto de datos?
Peter Flom - Restablece a Monica
¡Gracias @PeterFlom por tus comentarios! He actualizado la pregunta según sus comentarios.
user765195
¡Gracias @ user603 por tu comentario! He actualizado la pregunta para reflejar tu comentario.
user765195

Respuestas:

17

En resumen, y según su descripción, está comparando manzana con naranjas ... de dos maneras.

Iniciar sesión

Considere este ejemplo:

library("MASS")
library("copula")
library("rrcov")
p<-2;n<-100;

eps<-0.2
l1<-list()
l3<-list(rate=1)
#generate assymetric data
model<-mvdc(claytonCopula(1,dim=p),c("unif","exp"),list(l1,l3));
x1<-rMvdc(ceiling(n*(1-eps)),model);
#adding 20% of outliers at the end:
x1<-rbind(x1,mvrnorm(n-ceiling(n*(1-eps)),c(7,3),1/2*diag(2))) 

datos

Ahora, ajuste los dos modelos (ROBPCA y classic pca, ambos en el registro de los datos):

x2<-log(x1)
v0<-PcaClassic(x2)
v1<-PcaHubert(x2,mcd=FALSE,k=2)

Ahora, considere el eje de variación más pequeño encontrado por cada método (aquí, por conveniencia, lo trazo en el espacio transformado logarítmicamente, pero obtendría las mismas conclusiones sobre el espacio original).

modelo

Visiblemente, ROBPCA hace un mejor trabajo al manejar la parte no contaminada de los datos (los puntos verdes):

Pero ahora, llego a mi segundo punto.

Htuzyowyo

tienes eso (esto es visible en la trama de arriba):

yoHtu(zyo)2<yoHtu(wyo)2(1)

Pero parece sorprenderte que:

yo=1norte(zyo)2>yo=1norte(wyo)2(2)

- de la forma en que describió su procedimiento de prueba, calcula el criterio de evaluación del ajuste en todo el conjunto de datos, por lo que su criterio de evaluación es una función monótona de (2) donde debe usar una función monótona de (1) -

En otras palabras, no espere que un ajuste robusto tenga una suma menor de residuos ortogonales al cuadrado que un procedimiento no robusto en su conjunto de datos completo: el estimador no robusto ya es el minimizador único del SSOR en el conjunto de datos completo.

usuario603
fuente
1
Gracias por su respuesta. Me llevó un tiempo experimentar con otros datos y pensar en su respuesta para comprenderlos realmente.
user765195