Modelos multinivel para grupos que tienen diferentes predictores

Aug 20 2020

Imagine que estoy tratando de ajustar un modelo de varios niveles a productos y quiero agruparlos por tipo de producto.

En los casos en que los tipos de productos tienen todos los mismos predictores, esto es sencillo. Por ejemplo, puede estimar el efecto del color en las ventas o algo similar.

Pero, ¿qué pasa si algunos predictores solo tienen sentido para algunos de los tipos de productos? Por ejemplo, una característica de "longitud de la pierna" podría tener sentido para los pantalones cortos si las personas prefieren qué tan arriba o debajo de la rodilla les gustan sus pantalones cortos, pero no para los pantalones que siempre son largos. Y puede que tenga menos sentido para las camisas, ya que no tienen longitud de pierna.

En ese caso, ¿hay alguna forma de manejar eso o es mejor tener diferentes modelos por grupo? Para las características que se comparten y se espera que se extraigan de la misma distribución, supongo que perdemos algunos beneficios allí, por eso me pregunto si los modelos se pueden hacer como un solo modelo.

He pensado en una serie de cosas (por ejemplo, para productos que no tienen la característica, establecerla en un valor constante o en un valor aleatorio extraído de una distribución de valores de características de productos donde la característica tiene sentido, etc. ) pero todos parecen tener problemas muy obvios.

Respuestas

2 Eoin Aug 24 2020 at 20:52

Hay una forma bastante sensata de hacer esto si centra todos sus predictores restando el valor medio.

Usando su ejemplo, digamos que tiene pantalones cortos deportivos, pantalones cortos y jeans, y sus predictores numéricos son a) brillo (definido para todas las categorías) yb) longitud corta (definido solo NApara pantalones cortos, para pantalones). Ahora, si centra sus dos predictores numéricos, obtiene medidas de a) si los elementos son más oscuros o más claros que el promedio, yb) si los cortos son más cortos o más largos que el promedio. Puedes decir con seguridad que los pantalones son$\pm0$cm más corto o más largo que el promedio, por lo que impute un valor de 0 para este predictor para todos los elementos que no sean cortos (ni más cortos ni más largos que el promedio). Luego, puede ajustar un nivel múltiple como lo haría normalmente, permitiendo que todos los predictores varíen entre categorías:

lmer(sales ~ 1 + centred_colour + centred_leg_length + 
             (1 + centred_colour + centred_leg_length | category),
     data=sales_data)

Dado que este predictor solo varía para los diferentes tipos de pantalones cortos, solo las ventas de esos artículos tendrán un efecto en este parámetro. Dado que se establece en 0 para todos los demás productos, este predictor no afectará las inferencias o predicciones sobre ellos.

Si sucede que termina con solo una categoría de cortos en sus datos, no será posible incluirlo como un efecto aleatorio, y tendrá que cambiar su modelo en consecuencia:

lmer(sales ~ 1 + centred_colour + centred_leg_length + 
             (1 + centred_colour | category),
     data=sales_data)
1 Alex.C-L-ReinstateMonica Aug 24 2020 at 15:46

Intente crear una variable ficticia que sea 0 cuando un producto no tiene la característica (es decir, no tiene pierna) y 1 cuando tiene esta característica. Convierta entonces esta variable ficticia en un factor.

Cuando un maniquí no tiene una característica, reemplace el valor faltante con cero.

Luego, en su modelo, interactúe su variable continua de interés con la variable del factor ficticio. Agregue también las variables de factor ficticio.


Nota: Estoy feliz de leer de una persona más conocida por qué esto funciona (o no funciona en el caso general).