3 votos

Cómo ilustrar la relación entre la variable ajustada y la variable de interés

Voy a poner un ejemplo.

En una simple correlación, la presión arterial está asociada a la grasa corporal.

Sin embargo, quiero ajustar el % de grasa corporal según la edad y el sexo. Así, en SAS, PROC CORR utilizo la edad y el sexo como variables parciales y la asociación sigue siendo significativa entre la presión arterial y la grasa corporal (ajustada).

¿Cómo puedo ilustrar esto en un gráfico (es decir, presión arterial frente a % de grasa corporal (ajustado))?

Lo primero que se me ocurrió fue utilizar una regresión lineal (PROC REG/PROC GLM) con el % de grasa corporal como variable dependiente y la edad y el sexo como variables independientes/cuantitativas, y luego obtener los residuos. Añadir la media de % de grasa corporal a los residuos y luego trazar esto como mis valores y.

¿Es esto apropiado o hay otra forma de hacerlo?

4voto

James Puntos 21

Dado que sólo tienes dos variables para las que estás ajustando, una de las cuales es un factor de 2 categorías, la forma más fácil de visualizarlo todo sería simplemente utilizando algunos colores y símbolos:

# simulate data
set.seed(1234)
age <- round(rnorm(30, 40, 10))
sex <- round(runif(30, 0, 1))
bodyfat <- rnorm(30, 10 + 5 * sex + age / 10, 3)
bloodpressure <- rnorm(30, 55 + bodyfat * 2 + age / 10, 5)

# plot original with color and pch set to other variables
cols <- colorRampPalette(c("blue", "black", "red"))(30)
par(mfrow = c(1, 1))
plot(bloodpressure ~ bodyfat, col = cols[order(age)], pch = sex + 17)
legend("bottomright", legend = c("male", "female"), pch = 17:18)

original

Podría añadir una escala de colores a su leyenda para la edad.


También se puede ajustar la grasa corporal en función de la edad y el sexo, aunque esto pierde su fácil interpretación . Si quiere ajustar como propone en su pregunta -regresando la grasa corporal en función de la edad y el sexo- debe añadir el interceptar de este modelo a los residuos, no a la media.

Esto equivale a restar $\beta_1 \cdot \text{age}$ y $\beta_2 \cdot \text{sex}$ del porcentaje de grasa corporal en:

$$\text{body fat percentage} = \beta_0 + \beta_1 \cdot \text{age} + \beta_2 \cdot{sex} + \epsilon$$

Eso se vería así:

# plot blood pressure vs adjusted bodyfat
LM <- lm(bodyfat ~ age + sex)
adjusted_BF <- (coef(LM)[1] + resid(LM))
par(mfrow = c(1, 2))
plot(bloodpressure ~ bodyfat)
plot(bloodpressure ~ adjusted_BF)

adjusted

Como era de esperar, la relación observada en el gráfico de dispersión de la derecha es ligeramente más débil tras ajustar los efectos de la edad y el sexo.


Sin embargo, , mirar las correlaciones parciales es más bien ajustar ambos para el resto de variables:

LM2 <- lm(bloodpressure ~ age + sex)
adjusted_BP <- coef(LM2)[1] + resid(LM2)
plot(adjusted_BP ~ adjusted_BF)

partial

Pero de nuevo, tenga cuidado de no engañar a sus lectores con esto, ya que estos ejes ya no representan la presión arterial y la grasa corporal.

0voto

Si tiene suficientes datos para cada grupo de edad que le interesa, " facetas " puede ser una mejor manera de transmitir su mensaje que el primer gráfico propuesto por @Frans Rodenburg.

Simular datos

set.seed(1234)
age <- round(rnorm(1000, 40, 10))
sex <- round(runif(1000, 0, 1))
bodyfat <- rnorm(1000, 10 + 5 * sex + age / 10, 3)
bloodpressure <- rnorm(1000, 55 + bodyfat * 2 + age / 10, 5)

Transformación de datos

library(tidyverse)

data <- tibble(bodyfat, bloodpressure, age, sex)
data <- data %>%
          mutate(age_group = case_when(age < 25 ~ "0 to 25",
                                       age >= 25 & age < 40 ~ "25 to 40",
                                       age >= 40 & age < 50 ~ "40 to 50",
                                       age >= 50 & age < 60 ~ "50 to 60",
                                       age >= 60 ~ "60 and over"
                                       )) %>%
          mutate(sex = case_when(sex == 0 ~ "female",
                                 sex == 1 ~ "male"))

Visualización de datos mediante facetas

ggplot(data, aes(bodyfat, bloodpressure)) +
  geom_point() +
  facet_wrap(age_group ~ sex)

enter image description here

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