es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Crear una nueva variable de valores de otra variable: regresión multinivel.

Estoy listo para crear un análisis multinivel (y soy un principiante total).

En este análisis quiero probar si un alto valor de un predictor (aquí: sentido del humor) (valor numérico – convertido en “alto”, “bajo”, “medio”) predice más el resultado (numérico) que los otros predictores (seriedad-amistad-sentido del humor).
Tengo un conjunto de datos con muchas personas y grupos y quiero comparar el resultado entre los grupos con respecto a la influencia de Sentido del Humor Alto.

El código para eso podría verse así

RandomslopeEC <- lme(criterio(timepoint1) ~ sentido del humor + seriedad + amistad, datos = DATA, aleatorio = ~ SenseofhumorHIGH|grupo)

Por esa razón, creé los valores “alto”, “bajo” y “medio” para mi predictor numérico a través de

library(tidyverse)
DATA <- DATA %>%
  mutate(predictorNuevo = case_when(senseofhumor < quantile(senseofhumor, 0.5) ~ 'bajo',
                      senseofhumor > quantile(senseofhumor, 0.75)~'alto',
                      TRUE ~ 'medio'))

Ahora se ven así:

Persona Grupo sentido del humor
1 56 bajo
7 1 alto
87 7 bajo
764 45 alto

Ahora me di cuenta de que tal vez necesite dividir los valores de esta variable en variables separadas si quiero probar mi idea.

¿Alguno de ustedes sabe cómo generar variables para que parezcan esto?

Persona Grupo sentido del humor alto sentido del humor medio sentido del humor bajo
1 56 0 0 1
7 1 1 0 0
87 7 0 0 1
764 45 1 0 0
51 3 1 0 0
362 9 1 0 0
87 27 0 0 1

¿Tiene sentido esto para ustedes en cuanto a mi enfoque? ¿O tienen una idea mejor?

Muchas gracias de antemano.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Tiene sentido generar variables separadas para cada nivel del predictor si desea incluirlas como predictores separados en su análisis. Una forma de hacer esto es utilizando la función pivot_wider() en el paquete tidyr. Aquí tienes un código de ejemplo:

    “`{r}
    library(tidyr)

    DATA <- DATA %>%
    mutate(sentidodelhumor = cut(sentidodelhumor, breaks = quantile(sentidodelhumor, c(0,0.5,0.75,1)), labels = c(“bajo”, “medio”, “alto”))) %>%
    pivot_wider(names_from = sentidodelhumor, values_from = sentidodelhumor, values_fill = 0) %>%
    rename(sentidodelhumorBAJO = “bajo”, sentidodelhumorMEDIO = “medio”, sentidodelhumorALTO = “alto”)

    #Ajustar el modelo multinivel
    RandomslopeEC <- lme(criterio(timepoint1) ~ sentidodelhumorALTO + sentidodelhumorMEDIO + sentidodelhumorBAJO + seriedad + amabilidad ,
    data = DATA, random = ~ sentidodelhumorALTO|grupo)
    “`

    En este código, primero uso la función cut() para generar la variable sentidodelhumor con los niveles “bajo”, “medio” y “alto” basados en los cuantiles. Luego, uso pivot_wider() para remodelar el marco de datos de manera que cada nivel de la variable se convierta en una columna separada. Finalmente, renombro las columnas para que coincidan con tu convención de nomenclatura y ajusto el modelo multinivel utilizando las variables generadas como predictores separados.

    Ten en cuenta que si tienes valores faltantes para el predictor, es posible que desees rellenarlos con 0 utilizando el argumento values_fill en la función pivot_wider().

Comments are closed.