Cuando se usa glmnet, ¿cómo informar la significancia del valor p para reclamar la significancia de los predictores?

9

Tengo un gran conjunto de predictores (más de 43,000) para predecir una variable dependiente que puede tomar 2 valores (0 o 1). El número de observaciones es más de 45,000. La mayoría de los predictores son unigramas, bigramas y trigramas de palabras, por lo que existe un alto grado de colinealidad entre ellos. También hay mucha escasez en mi conjunto de datos. Estoy usando la regresión logística del paquete glmnet, que funciona para el tipo de conjunto de datos que tengo. Mi problema es cómo puedo informar la importancia del valor p de los predictores. Obtengo el coeficiente beta, pero ¿hay alguna manera de afirmar que los coeficientes beta son estadísticamente significativos?

Aquí está mi código:

library('glmnet')
data <- read.csv('datafile.csv', header=T)
mat = as.matrix(data)
X = mat[,1:ncol(mat)-1] 
y = mat[,ncol(mat)]
fit <- cv.glmnet(X,y, family="binomial")

Otra pregunta es: estoy usando la penalización predeterminada de lazo alfa = 1, que causa el problema adicional de que si dos predictores son colineales, el lazo seleccionará uno de ellos al azar y asignará un peso beta cero al otro. También probé con la penalización de cresta (alfa = 0) que asigna coeficientes similares a variables altamente correlacionadas en lugar de seleccionar una de ellas. Sin embargo, el modelo con penalización por lazo me da una desviación mucho menor que el que tiene penalización por cresta. ¿Hay alguna otra manera de informar ambos predictores que sean altamente colineales?

bronceado
fuente
Me parece que esto es más un problema de clasificación multivariante, en lugar de ser un modelo lineal.
ADP
gracias @ADP, ¿cuál será su modelo sugerido para este tipo de situación?
bronceado

Respuestas:

8

Hay un nuevo artículo, A Signi fi cance Test for the Lasso , que incluye al inventor de LASSO como autor que informa los resultados de este problema. Esta es un área de investigación relativamente nueva, por lo que las referencias en el documento cubren mucho de lo que se conoce en este momento.

En cuanto a tu segunda pregunta, ¿has intentado α(0,1)? A menudo hay un valor en este rango medio que logra un buen compromiso. Esto se llama regularización de Elastic Net . Como está utilizando cv.glmnet, probablemente desee realizar una validación cruzada en una cuadrícula de(λ,α) valores.

MichaelJ
fuente
2

La inferencia posterior a la selección es un tema muy activo de la investigación estadística. En mi opinión, un problema con el método descrito en Una prueba de importancia para el lazo es que se requieren suposiciones estrictas (reproducidas a partir de aquí ):

  1. El modelo lineal es correcto.
  2. La varianza es constante.
  3. Los errores tienen una distribución Normal.
  4. El vector de parámetros es escaso.
  5. La matriz de diseño tiene una colinealidad muy débil. Esto generalmente se expresa en forma de incoherencia, restricciones de valor propio o supuestos de incompatibilidad.

El enfoque que he encontrado útil, siempre y cuando haya suficientes datos disponibles, es la división de datos. La idea de la división de datos se remonta al menos a Moran (1974) y simplemente implica dividir los datos aleatoriamente en dos conjuntos, hacer elecciones de modelado en el primer conjunto y hacer inferencia en el segundo conjunto.

Entonces, en este caso, dividiría los datos en dos, haría una selección variable en la primera mitad y luego (suponiendo que tenga n>p) utilizan técnicas de regresión estándar en la segunda mitad para determinar la significación estadística de los coeficientes. Por supuesto, aún se requieren suposiciones en ambas etapas, pero pueden ser más fáciles de satisfacer para cada etapa individualmente.

Usted menciona que las covariables son uni-, bi- y tri-gramos, por lo que son altamente colineales. Entonces, en este caso, aplicar el lazo en la primera etapa también violaría los supuestos, en particular, el n. ° 5 desde arriba. Por lo tanto, para hacer que este enfoque sea realmente útil y teóricamente sólido, necesitaría hacer algún tipo de detección de colinealidad previa al Lazo.

Zoë Clark
fuente
0

Tal vez eche un vistazo al paquete CRAN hdi , que proporciona inferencia para modelos de alta dimensión y debería hacer el truco ... Los métodos completos son un poco tediosos para repetir aquí (hay varios, y todavía es un área bastante activa de investigación), pero están bien descritos en este documento: http://projecteuclid.org/euclid.ss/1449670857 (Si publica públicamente algunos datos de prueba o simula algunos datos, también puedo darle un ejemplo concreto)

Tom Wenseleers
fuente
No puede hacer esto y obtener valores de p significativos. No tienen en cuenta la varianza en su selección de variables.
Matthew Drury el
Editado mi respuesta - paquete hdi que cito debe estar bien, y tiene en cuenta la variación causada por su selección de variables ...
Tom Wenseleers