¿Cómo se manejan las variables "anidadas" en un modelo de regresión?


11

Considere un problema estadístico en el que tiene una responsevariable que desea describir condicional en una explanatoryvariable y una nestedvariable, donde la variable anidada solo surge como una variable significativa para valores particulares de la variable explicativa . En los casos en que la variable explicativa no admite una variable anidada significativa, esta última generalmente se codifica como NAen el conjunto de datos, o si se codifica con un valor, ese valor es simplemente un marcador de posición que no tiene ninguna interpretación significativa.

Esta situación tiende a surgir cada vez que tiene una variable explicativa que indica la existencia de una cosa, y una o más variables anidadas que describen las características de esa cosa. Algunos ejemplos de este tipo de situación en problemas estadísticos son los siguientes:

  • La variable explicativa es un indicador de si un participante de la encuesta es married, y la variable anidada es alguna characteristic of the spouse(por ejemplo, educación, edad, etc.);

  • La variable explicativa es un indicador de presence of an itemen un espacio, y la variable anidada es una medida de algunos characteristic of the item(por ejemplo, tamaño, distancia, etc.);

  • La variable explicativa es un indicador de la aparición de an eventy la variable anidada es una descripción de algunos characteristic of the event(por ejemplo, duración, magnitud, etc.).

En este tipo de situaciones, a menudo queremos construir un modelo de tipo de regresión (en sentido amplio que incluya GLM, GLMM, etc.) que describa la relación entre la variable de respuesta y las otras variables. No es obvio cómo tratar con la variable anidada en este tipo de modelo.

Pregunta: ¿Cómo lidiamos con la nestedvariable en este tipo de modelo?


Nota: Esta pregunta está diseñada para dar una respuesta generalizada a una pregunta recurrente en CV.SE con respecto a las variables anidadas en la regresión (ver, por ejemplo, aquí , aquí , aquí y aquí ). Esta pregunta está diseñada para dar un ejemplo generalizado independiente del contexto de este problema.


1
Hubiera dejado esto como un comentario, pero no tengo suficiente reputación. Tengo problemas para usar esta solución en R - glm () o lm (). Estoy usando el modelo: y ~ x1 + x1: x2 Desafortunadamente, si codifico los datos que faltan como NA, la acción na.por defecto elimina las filas con NA y deja x1 con un solo nivel, haciendo que el modelo sea equivalente a solo: y ~ x2 Si uso un argumento para glm: na.action = na.pass me sale un error: Error en glm.fit (x = c (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 , 1, 1, 1, 1, 1,: NA / NaN / Inf en 'x' Si en cambio codifico la variable que falta como 0, el modelo anidado: y ~ x1 + x1: x2 Da el resultado exacto
Adam Waring

Respuestas:


9

Los valores sin sentido de las variables anidadas no deben afectar su modelo: el desideratum crucial con este tipo de análisis de datos es que la nestedvariable no debe afectar el modelo si la explanatoryvariable original no lo admite como una variable significativa. En otras palabras, el modelo debe ser de una forma que ignore los valores sin sentido de la variable anidada . Este es un requisito crucial para un modelo válido con variables anidadas, ya que garantiza que la salida del modelo no se vea afectada por opciones de codificación arbitrarias.


Modelado con variables anidadas: este requisito se logra colocando la nestedvariable en el modelo solo como una interacción con la explanatoryvariable original , sin incluirla como un efecto principal. (Más específicamente, la variable anidada debe interactuar con una declaración lógica en la variable explicativa que indica que es una variable significativa). Tenga en cuenta que esta es una excepción a la regla general de que los términos no deben incluirse como interacciones sin un término de efecto principal .

Considere el caso general donde la nestedvariable solo es significativa cuando la explanatoryvariable está en algún conjunto de valores A. En ese caso, usaría un modelo de formulario como este:

response ~ 1 + explanatory + (explanatory %in% A):nested + ...

En el caso común donde su explanatoryvariable es una variable indicadora (con un valor de uno que da lugar a una variable anidada significativa), esta forma de modelo se simplifica a esto:

response ~ 1 + explanatory + explanatory:nested + ...

Observe que en estas declaraciones modelo no hay un término de efecto principal para la nestedvariable. Esto es así por diseño: la variable anidada no debe tener un término de efecto principal, ya que no es una variable significativa en ausencia de una condición en la variable explicativa. Con este tipo de formulario modelo obtendrá una estimación del efecto de la variable explicativa y otra estimación del efecto de la variable anidada.


Codificación de variables anidadas en sus datos: cuando se trata de marcos de datos que enumeran las variables para la regresión, es una buena práctica que los valores de la nestedvariable se codifiquen como NAen los casos en que no surge significativamente de la variable explicativa. Esto le dice al lector que no hay una variable significativa aquí. Algunos analistas codifican estas variables con otros valores, como cero, pero eso generalmente es una mala práctica, ya que puede confundirse con una cantidad significativa.

Matemáticamente, si multiplicas cualquier número real por cero, obtienes cero. Sin embargo, si está codificando R, debe tener cuidado aquí porque el programa se multiplica 0:NApara dar en NAlugar de 0. Esto significa que es posible que deba volver a codificar los NAvalores a cero para el ajuste del modelo, o construir la matriz de diseño para el modelo de modo que estos valores se establezcan en cero.


Casos donde la variable base es una función de la variable anidada: Una situación que ocasionalmente surge en el análisis de regresión que involucra variables anidadas es el caso donde la variable anidada tiene una cantidad suficiente de detalles que determina completamente la variable explicativa inicial de la que surge: - es decir, la variable explicativa original es una función de la variable anidada. Un ejemplo de esto ocurre en esta pregunta , donde el analista tiene una variable indicadora DrugAde si se ha tomado o no un medicamento, y una variable anidada DrugA_Concpara la concentración del medicamento. En este ejemplo, la última variable permite un valor de concentración de cero, que es equivalente al medicamento que no se está tomando, y por DrugAlo tanto es equivalente a DrugA_Conc != 0.

En este tipo de casos, el término de interacción entre la variable explicativa y la variable anidada es funcionalmente equivalente a la variable anidada, por lo que es posible (y generalmente deseable) eliminar la variable explicativa inicial del modelo por completo, y simplemente usar el variable anidada por sí sola. Esto es legítimo en este caso, porque los valores en la variable anidada determinan el valor de la variable explicativa inicial. Hemos notado anteriormente que a menudo es apropiado codificar variables anidadas como NAcuando las condiciones para ellas no son aplicables. Si la condición surge de una variable explicativa que es un indicador, y el indicador corresponde al uso de la variable anidada, entonces el evento nested != NAes equivalente aexplanatory. En tales casos, es posible volver a codificar la variable anidada para que la variable explicativa inicial no sea necesaria en el modelo.

Tenga en cuenta que se debe tener cuidado al mirar esta situación. Incluso en el caso de que esté utilizando una variable explicativa inicial que es una variable indicadora, puede ser útil para fines interpretativos no fusionar la variable explicativa y la variable anidada. Además, en los casos en que la variable explicativa no es una variable indicadora, generalmente contendrá información no contenida en la variable anidada, por lo que no se puede eliminar.


¿Qué significa la matriz de diseño? X¿parece? Aquí mencionaste que se puede usar NA. Pero creo que el software convierte NA en algún tipo de código, porqueXNo acepta el valor perdido.
user158565

Como no he especificado ningún software en particular (pero estoy usando la sintaxis de R), no me queda claro por qué los NAvalores no serían aceptables. En Rciertamente puede tener NAvalores en sus marcos de datos.
Ben - Restablece a Monica el

Supongamos que hay NA en X, como calcular (XX)-1?
user158565

2
Con los modelos utilizados en esta respuesta, los NAvalores se producen en el marco de datos para las variables, pero no aparecen en la matriz de diseño , ya que la variable anidada solo ingresa al modelo a través de una interacción.
Ben - Restablece a Monica el

Esa es mi pregunta original: ¿Cómo se ve la matriz de diseño? De hecho, quiero hacerlo en SAS, pero el valor faltante no puede estar en la matriz de diseño.
user158565
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.