#Dataset trabajado en clase
set.seed(123)
n <- 200
edad <- round(rnorm(n, 35, 10))
sexo <- rbinom(n, 1, 0.5)
estres <- round(runif(n, 1, 10),1)
sueno <- round(rnorm(n, 7, 1.2),1)
actividad <- round(rnorm(n, 45, 20))
impulsividad <- round(runif(n, 1, 10),1)
IMC <- round(22 +
0.4*estres +
0.3*impulsividad -
0.2*actividad/10 +
rnorm(n,0,2),1)
obesidad <- ifelse(IMC >= 30,1,0)
snacks_semana <- rpois(n,
lambda = exp(1 +
0.08*estres +
0.06*impulsividad))
episodios_emocionales <- rpois(n,
lambda = exp(0.5 +
0.12*estres +
0.08*impulsividad))
tiempo_redes <- rgamma(n,
shape = 5,
scale = 20 + 2*estres)
datos <- data.frame(
edad,
sexo,
estres,
sueno,
actividad,
impulsividad,
IMC,
obesidad,
snacks_semana,
episodios_emocionales,
tiempo_redes
)
head(datos)
## edad sexo estres sueno actividad impulsividad IMC obesidad snacks_semana
## 1 29 1 3.1 6.9 66 6.8 21.9 0 7
## 2 33 0 7.2 5.6 44 2.1 23.0 0 7
## 3 51 1 3.0 6.2 44 3.3 23.9 0 6
## 4 36 1 3.9 7.0 15 8.4 29.1 0 2
## 5 36 0 2.6 7.8 61 8.2 26.4 0 3
## 6 52 0 8.2 5.0 41 1.4 23.6 0 6
## episodios_emocionales tiempo_redes
## 1 6 217.88300
## 2 5 89.09039
## 3 1 159.86682
## 4 1 84.79594
## 5 7 40.85726
## 6 2 115.55849
Un investigador desea analizar si el estrés, la actividad física diaria y la edad influyen en el Índice de Masa Corporal (IMC) de adultos jóvenes.
Variable dependiente:IMC Tipo de variable:Continuo Modelo sugerido:Gamma Justificación metodológica:es una variable continua y positiva, puede tener valores fraccionados ¿Por qué no usar lm()?:es poco probable que la muestra siga una distribución normal ya que sólo indica que serán adultos jóvenes Sintaxis en R:
caso_1 <- glm(IMC ~ estres + actividad + edad,
family = Gamma(link="log"),
data = datos)
summary(caso_1)
##
## Call:
## glm(formula = IMC ~ estres + actividad + edad, family = Gamma(link = "log"),
## data = datos)
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 3.1793584 0.0322910 98.459 < 2e-16 ***
## estres 0.0107049 0.0024052 4.451 1.43e-05 ***
## actividad -0.0004586 0.0003074 -1.492 0.137
## edad 0.0001661 0.0006676 0.249 0.804
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for Gamma family taken to be 0.007855257)
##
## Null deviance: 1.7264 on 199 degrees of freedom
## Residual deviance: 1.5455 on 196 degrees of freedom
## AIC: 892.89
##
## Number of Fisher Scoring iterations: 3
Ahora el investigador no quiere analizar el valor exacto del IMC, sino únicamente si el participante presenta o no obesidad clínica, definida como:
1 = sí presenta obesidad 0 = no presenta obesidad Quiere usar como predictores el estrés, la impulsividad alimentaria y la actividad física.
Variable dependiente:presencia de obesidad clínica Tipo de variable: dicotómica Modelo sugerido:logística Justificación metodológica:tipo de variable ¿Por qué no usar lm()?:debido a la naturaleza de la variable las probabilidades del modelo lineal clásico podrían predecir probabilidades sin sentido. Sintaxis en R:
caso_2 <- glm(obesidad ~ estres + impulsividad + actividad,
family = binomial,
data = datos)
summary(caso_2)
##
## Call:
## glm(formula = obesidad ~ estres + impulsividad + actividad, family = binomial,
## data = datos)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -3.0514402 2.0065835 -1.521 0.128
## estres 0.0003926 0.1984367 0.002 0.998
## impulsividad -0.0144320 0.1968880 -0.073 0.942
## actividad -0.0186707 0.0246006 -0.759 0.448
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 39.216 on 199 degrees of freedom
## Residual deviance: 38.624 on 196 degrees of freedom
## AIC: 46.624
##
## Number of Fisher Scoring iterations: 7
Se busca modelar el número de snacks ultraprocesados consumidos por semana en función del estrés y la impulsividad alimentaria.
Variable dependiente:número de snacks ultraprocesados Tipo de variable:conteo discreto Modelo sugerido:poisson Justificación metodológica:las cantidades pueden ser enteros e iguales o mayores a 0 ¿Por qué no usar lm()?:por el tipo de variable Sintaxis en R:
caso_3 <- glm(snacks_semana ~ estres + impulsividad,
family = poisson,
data = datos)
summary(caso_3)
##
## Call:
## glm(formula = snacks_semana ~ estres + impulsividad, family = poisson,
## data = datos)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 0.98781 0.10369 9.527 < 2e-16 ***
## estres 0.09290 0.01113 8.347 < 2e-16 ***
## impulsividad 0.05145 0.01071 4.806 1.54e-06 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for poisson family taken to be 1)
##
## Null deviance: 305.73 on 199 degrees of freedom
## Residual deviance: 223.33 on 197 degrees of freedom
## AIC: 940.01
##
## Number of Fisher Scoring iterations: 4
Un equipo de investigación estudia cómo el estrés y las horas de sueño influyen en el tiempo diario invertido en redes sociales, medido en minutos. Todos los participantes reportan valores positivos y la distribución presenta asimetría a la derecha.
Variable dependiente:tiempo diario invertido en redes sociales Tipo de variable:continuas y positivas Modelo sugerido:gamma Justificación metodológica: porque por el tipo de variable no puede existir la cantidad igual o inferior a cero ¿Por qué no usar lm()?:por el tipo de variable que sólo abarca números positivos Sintaxis en R:
caso_4 <- glm(tiempo_redes ~ estres + sueno,
family = Gamma(link="log"),
data = datos)
summary(caso_4)
##
## Call:
## glm(formula = tiempo_redes ~ estres + sueno, family = Gamma(link = "log"),
## data = datos)
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 4.67569 0.21271 21.982 < 2e-16 ***
## estres 0.05514 0.01240 4.448 1.45e-05 ***
## sueno 0.01080 0.02806 0.385 0.701
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for Gamma family taken to be 0.2106307)
##
## Null deviance: 46.125 on 199 degrees of freedom
## Residual deviance: 42.062 on 197 degrees of freedom
## AIC: 2249.5
##
## Number of Fisher Scoring iterations: 5
Se analiza el número de episodios de comer emocional por semana. La mayoría de los participantes reporta pocos eventos, pero algunos sujetos presentan valores mucho más altos de lo esperado. Los predictores son estrés e impulsividad.
Variable dependiente:episodios de comer emocional Tipo de variable:conteo con sobredispersión Modelo sugerido:binomial negativa (para sobredispersión) Justificación metodológica:algunos sujetos presentaron valores mucho más altos que otros ¿Por qué no usar lm()?: porque la curva no es normal debido a la sobredispersión Sintaxis en R:
library(MASS)
caso_5 <- glm.nb(episodios_emocionales ~ estres + impulsividad,
data = datos)
## Warning in theta.ml(Y, mu, sum(w), w, limit = control$maxit, trace =
## control$trace > : iteration limit reached
## Warning in theta.ml(Y, mu, sum(w), w, limit = control$maxit, trace =
## control$trace > : iteration limit reached
summary(caso_5)
##
## Call:
## glm.nb(formula = episodios_emocionales ~ estres + impulsividad,
## data = datos, init.theta = 74789.86771, link = log)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 0.45362 0.11675 3.885 0.000102 ***
## estres 0.11677 0.01226 9.523 < 2e-16 ***
## impulsividad 0.08399 0.01186 7.080 1.44e-12 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for Negative Binomial(74789.87) family taken to be 1)
##
## Null deviance: 299.55 on 199 degrees of freedom
## Residual deviance: 175.31 on 197 degrees of freedom
## AIC: 852.52
##
## Number of Fisher Scoring iterations: 1
##
##
## Theta: 74790
## Std. Err.: 869484
## Warning while fitting theta: iteration limit reached
##
## 2 x log-likelihood: -844.521
##Tabla de Apoyo
library(knitr)
## Warning: package 'knitr' was built under R version 4.3.3
tabla <- data.frame(
Caso = 1:5,
Variable_dependiente = c("IMC", "Presencia de obesidad", "Número de snacks ultraprocesados", "Tiempo diario invertido en RS", "Episodios de comer emocional"),
Tipo_de_variable = c("Continua", "Dicotómica", "Conteo discreto", "Continua", "Conteo con sobredispersión"),
Modelo_sugerido = c("Gamma", "Logística", "Poisson", "Gamma", "Binomial Negativa"),
Justificacion_breve = c("Valores fraccionados", "Tipos de variable", "Enteros iguales o mayores a 0", "No puede tener valor inferior o igual a 0", "Alta variabilidad")
)
kable(tabla, caption = "Tabla resumen de apoyo")
| Caso | Variable_dependiente | Tipo_de_variable | Modelo_sugerido | Justificacion_breve |
|---|---|---|---|---|
| 1 | IMC | Continua | Gamma | Valores fraccionados |
| 2 | Presencia de obesidad | Dicotómica | Logística | Tipos de variable |
| 3 | Número de snacks ultraprocesados | Conteo discreto | Poisson | Enteros iguales o mayores a 0 |
| 4 | Tiempo diario invertido en RS | Continua | Gamma | No puede tener valor inferior o igual a 0 |
| 5 | Episodios de comer emocional | Conteo con sobredispersión | Binomial Negativa | Alta variabilidad |
##Pregunta final
###¿Por qué en modelos lineales generalizados no basta con conocer las variables independientes, sino que también es indispensable analizar la naturaleza de la variable dependiente?
Porque se debe tomar en cuenta para ejecutar el modelo adecuado y no obtengamos resultados sin sentido o errores en la interpretación