Entonces nuestros datos están estructurados de la siguiente manera:
Tenemos participantes, cada participante se puede clasificar en 3 grupos ( G ), y para cada participante tenemos muestras de una variable continua. Y estamos tratando de predecir valores que son 0 o 1.
¿Cómo usaríamos matlab para probar una interacción entre la variable continua y la variable categórica al predecir estos valores?
logistic
matlab
interaction
mpacer
fuente
fuente
Respuestas:
La forma más fácil, IMO, es construir la matriz de diseño usted mismo, ya quex g g=1,2,3
glmfit
acepta una matriz de valores brutos (observados) o una matriz de diseño. Codificar un término de interacción no es tan difícil una vez que escribió el modelo completo. Digamos que tenemos dos predictores, (continuo) (categórico, con tres niveles desordenados, digamos ). Usando la notación de Wilkinson, escribiríamos este modelo como , descuidando el lado izquierdo (para un resultado binomial, usaríamos una función de enlace logit). Solo necesitamos dos vectores ficticios para codificar los niveles (como presente / ausente para una observación particular), por lo que tendremos 5 coeficientes de regresión, más un término de intercepción. Esto se puede resumir comoy ~ x + g + x:g
g
donde representa una matriz indicadora que codifica el nivel de .I g
En Matlab, usando el ejemplo en línea, haría lo siguiente:
No incluí una columna de unos para la intercepción ya que está incluida por defecto. La matriz de diseño se parece a
y puede ver que los términos de interacción están codificados como el producto de
x
con la columna correspondiente deg
(g = 2 y g = 3, ya que no necesitamos el primer nivel).Los resultados se dan a continuación, como coeficientes, errores estándar, estadística y valor p (de la
stats
estructura):Ahora, se puede probar la interacción calculando la diferencia en la desviación del modelo completo anterior y un modelo reducido (omitiendo el término de interacción, es decir, las dos últimas columnas de la matriz de diseño). Esto se puede hacer manualmente o utilizando la
lratiotest
función que proporciona la prueba de hipótesis de la razón de verosimilitud. La desviación para el modelo completo es 4.3122 (dev
), mientras que para el modelo sin interacción es 6.4200 (utilicéglmfit(X(:,1:3), [y n], 'binomial', 'link', 'probit');
), y la prueba LR asociada tiene dos grados de libertad (la diferencia en el número de parámetros entre los dos modelos). Como la desviación escalada es solo dos veces la probabilidad logarítmica de GLM, podemos usardonde la estadística se distribuye como a con 2 df (el valor crítico es entonces 5.9915, ver ). El resultado indica un resultado no significativo: no podemos concluir la existencia de una interacción entre y en la muestra observada.χ2
chi2inv(0.95, 2)
x
g
Supongo que puede concluir los pasos anteriores en una función conveniente de su elección. (¡Tenga en cuenta que la prueba LR puede hacerse a mano en muy pocos comandos!)
Verifiqué esos resultados con la salida R, que se proporciona a continuación.
Aquí está el código R:
Aquí están los resultados, para los coeficientes en el modelo completo,
Para la comparación de los dos modelos anidados, utilicé los siguientes comandos:
que produce la siguiente "tabla de desviaciones":
fuente