10 votos

Especificación e interpretación de los términos de interacción mediante glm()

Estoy ajustando un modelo logístico a los datos utilizando la función glm en R. He intentado especificar términos de interacción de dos maneras:

fit1 <- glm(y ~ x*z, family = "binomial", data = myData) 
fit2 <- glm(y ~ x/z, family = "binomial", data = myData) 

Tengo 3 preguntas:

  1. ¿Cuál es la diferencia entre especificar mis términos de interacción como x*z en comparación con x/d ?

Cuando llamo summary(fit1) el informe incluye resultados para el intercepto, x, z, y x:z mientras que summary(fit2) sólo incluye resultados para intercepto, x y x:z.

Miré la sección 11.1 en "An Introduction to R" pero no pude entender el significado.

  1. ¿Cómo interpreto matemáticamente la ecuación de ajuste? Concretamente, ¿cómo interpreto los términos de interacción desde el punto de vista de la fórmula?

Pasando a matemáticas en lugar de R, ¿interpreto la ecuación como:

logit(y) = (intercept) + (coeff_x)*x + (coeff_z)*x + (coeff_xz)*x*z
?

Esta interpretación puede diferir en las dos especificaciones fit1 y fit2 . ¿Cuál es la interpretación de cada uno?

  1. Suponiendo que la interpretación anterior sea correcta, ¿cómo puedo ajustar el modelo de x*(1/z) en R? ¿Tengo que crear otra columna con estos valores?

0 votos

Esto puede quedar más claro si se da una muestra de myData . ¿Te refieres a tener x/d en fit2 ? o x/z

0 votos

@mnel quise decir x/z. Acabo de corregirlo.

10voto

Roland Puntos 2023

x/z se amplía a x + x:z y hasta ahora sólo lo he utilizado para modelar efectos aleatorios anidados.

set.seed(42)
x <- rnorm(100)
z <- rnorm(100)
y <- sample(c(0,1),100,TRUE)

fit2 <- glm(y ~ x/z, family = "binomial") 
fit3 <- glm(y ~ x + z %in% x, family = "binomial")
identical(summary(fit2)$coefficients,summary(fit3)$coefficients)
#TRUE
fit4 <- glm(y ~ x + x:z, family = "binomial")
identical(summary(fit2)$coefficients,summary(fit4)$coefficients)
#TRUE

fit5 <- glm(y ~ I(x/z), family = "binomial")    
a <- x/z
fit6 <- glm(y ~ a, family = "binomial")
all.equal(summary(fit5)$coefficients,summary(fit6)$coefficients)
#[1] "Attributes: < Component 2: Component 1: 1 string mismatch >"
#which means that only the rownames don't match, but values are identical

2voto

Peter Puntos 11

Nunca he visto x/d en ninguna fórmula. ¿Puedes dar un enlace a una página así? La mejor forma de especificar una fórmula es utilizando + y :, por ejemplo, si quieres modelar y en x1 y x2 y la interacción de x1 y x2, tendrás que dar: y ~ x1 + x2 + x1:x2 o x1 * x2 (que es un atajo).

Ahora viene la cuestión de interpretar los coeficientes cuando se tienen términos de interacción. Imaginemos un modelo lineal simple: y ~ x1 + x2. El coeff de x1 o x2 indica el aumento de y con un aumento unitario de x1 o x2 respectivamente.

Sin embargo, en el momento en que se añade un término de interacción, la interpretación no es tan sencilla. Si aumentas x1 en 1 unidad en un modelo: y = b0 + b1 x1 + b2 x2 + b3 x1:x2, el aumento de y es : b1 + b3*x2. Como ves el incremento no es lineal, depende del nivel de x2. Lo que puedes hacer es trazar curvas de respuesta para varios niveles de x2, y trazar y vs x1, para mostrar el cambio en la respuesta.

Espero que esto ayude. Voy a tratar de responder al resto de las preguntas en otro post.

1 votos

En la sección 11.1 de la guía "An Introduction to R" que viene con la instalación, dice que x*z especifica "clasificación cruzada" mientras que x/z especifica "clasificación anidada". No estoy muy seguro de lo que eso significa. También lo describe en términos de clasificadores matriciales en lugar de covariables. No estoy seguro de si eso cambiaría la interpretación.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X