Validación cruzada después de LASSO en datos de encuestas complejas

11

Estoy tratando de hacer una selección de modelo en algunos predictores candidatos que usan LASSO con un resultado continuo. El objetivo es seleccionar el modelo óptimo con el mejor rendimiento de predicción, que generalmente se puede hacer mediante validación cruzada K-fold después de obtener una ruta de solución de los parámetros de ajuste de LASSO. El problema aquí es que los datos provienen de un complejo diseño de encuestas en varias etapas (NHANES), con muestreo y estratificación por conglomerados. La parte de estimación no es difícil ya que glmneten R puede tomar pesos de muestreo. Pero la parte de validación cruzada es menos clara para mí, ya que las observaciones ahora ya no son válidas, y ¿cómo puede el procedimiento tener en cuenta los pesos de muestreo que representan una población finita?

Entonces mis preguntas son:

1) ¿Cómo llevar a cabo la validación cruzada K-fold con datos de encuestas complejas para seleccionar el parámetro de ajuste óptimo? Más específicamente, ¿cómo dividir adecuadamente los datos de muestra en conjuntos de capacitación y validación? ¿Y cómo definir la estimación del error de predicción?

2) ¿Hay alguna forma alternativa de seleccionar el parámetro de ajuste óptimo?

aenima
fuente
¿Tal vez el remuestreo (por ejemplo, bootstrap) sería un procedimiento más apropiado en lugar de k fold cv?
g3o2
Lumley advierte que "La teoría del bootstrap se desarrolló solo para la situación de muestreo de igual probabilidad dentro de cada estrato, no está claro qué tan bien funcionaría con probabilidades arbitrarias". (28) Los datos de NHANES no parecen tener un muestreo de igual probabilidad dentro de los estratos.
Dan Hicks
Sería interesante conocer este pequeño detalle del OP. No veo lo que sería tan complejo sobre el agrupamiento multietapa y el muestreo estratificado ...
g3o2
@Dan Hicks: No creo que realmente importe, al volver a muestrear, se replican varias instancias de exactamente el mismo plan de muestra.
g3o2
¿Usando algo como los métodos descritos aquí? amstat.tandfonline.com/doi/pdf/10.1080/01621459.1988.10478591 (¿O algo más reciente?) Si desea escribir esa idea con un poco más de detalle como respuesta, le daré la recompensa.
Dan Hicks

Respuestas:

2

No tengo una respuesta detallada, solo algunos consejos para trabajar que he querido leer:

Puede echar un vistazo a McConville (2011) en LASSO de encuestas complejas, para asegurarse de que el uso de LASSO sea apropiado para sus datos. Pero tal vez no sea un gran problema si está haciendo LASSO solo para la selección de variables, y luego ajusta algo más a las variables restantes.

Para la validación cruzada con datos de encuestas complejas (aunque no LASSO), McConville también cita a Opsomer & Miller (2005) y You (2009). Pero sus métodos parecen usar un CV de dejar uno afuera, no K-fold.

Leave-one-out debería ser más simple de implementar con encuestas complejas --- hay menos preocupación sobre cómo dividir los datos de manera adecuada. (Por otro lado, puede llevar más tiempo ejecutar K-fold. Y si su objetivo es la selección del modelo, se sabe que dejar una salida puede ser peor que K-fold para muestras grandes).

civilstat
fuente
0

EDITAR por OP: No aplicable a datos de encuestas complejas.

La función cv.glmet podría ayudarlo a realizar la validación cruzada requerida. El valor lambda.min es el valor de λ donde el error CV es mínimo. Lambda.1se representa el valor de λ en la búsqueda que fue más simple que el mejor modelo (lambda.min), pero que tiene un error dentro de 1 error estándar del mejor modelo.

  1. Elija una cuadrícula de valores que pueda elegir para alfa y lambda

grid <- expand.grid (.alpha = (1:10) * 0.1, .lambda = (1:10) * 0.1)

  1. Configure los parámetros de control de su modelo. El siguiente control del tren repite cv durante 10 iteraciones. Repase los métodos disponibles y elija el que se ajuste a su escenario actual.

.alpha,>=T,lambda=grid

Se puede acceder al valor lambda.min desde el propio modelo como se muestra a continuación.

cv.glmmod $ lambda.min

karthikbharadwaj
fuente
1
Sé cómo hacer una validación cruzada para los datos de iid usando glmnet. Estaba preguntando sobre datos de encuestas complejas correlacionadas.
aenima