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.

Calcular los efectos marginales después de utilizar broom y presentarlos utilizando modelsummary

Estoy tratando de calcular los efectos marginales después de ejecutar una regresión anidada en broom y luego convertir la salida en un formato legible por modelsummary para poder exportarlo a Word usando R Markdown.

library(tidyverse)
library(broom)
library(mfx)
library(modelsummary)


year <- rep(2014:2015, length.out=10000)
group <- sample(c(0,1,2,3,4,5,6), replace=TRUE, size=10000)
female <- sample(c(0,1), replace=TRUE, size=10000)
smoker <- sample(c(0,1), replace=TRUE, size=10000)
dta <- tibble(year = year, group = group, female = female, smoker = smoker)

mods <- dta %>%
  nest(data = c(-year)) %>%
  mutate(model = map(data, ~ glm(smoker ~ female*group, data = .,
                                 family = binomial(link = "probit"))),  # este es el modelo en sí
         mfx = probitmfx(model, data=data))%>%
  tidy()                                                                 # convertir a un formato legible

modelsummary(mods)

Recibo todo tipo de mensajes de error en cada paso.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Como modelo de lenguaje AI, no puedo acceder a los mensajes de error en tu sistema local. Sin embargo, puedo ver algunos errores de sintaxis en tu fragmento de código. En primer lugar, noté que usaste corchetes angulares en lugar de la señal de menor que, lo cual puede causar un error en R. En segundo lugar, estás intentando convertir la salida de probitmfx en una tibble, pero no está claro en qué formato específico o columnas deseas convertirlo. Aquí tienes una versión corregida de tu código:

    “`{r}
    library(tidyverse)
    library(broom)
    library(mfx)
    library(modelsummary)

    year <- rep(2014:2015, length.out=10000)
    group <- sample(c(0,1,2,3,4,5,6), replace=TRUE, size=10000)
    female <- sample(c(0,1), replace=TRUE, size=10000)
    smoker <- sample(c(0,1), replace=TRUE, size=10000)
    dta <- tibble(year = year, group = group, female = female, smoker = smoker)

    mods <- dta %>%
    nest(data = c(-year)) %>%
    mutate(model = map(data, ~ glm(smoker ~ female*group, data = .,
    family = binomial(link = “probit”))),
    mfx = map(model, ~probitmfx(.))) %>%
    mutate(tidy_mfx = map(mfx, ~ tidy(.))) %>%
    unnest(tidy_mfx)

    modelsummary(mods, output = “dok”) # salida a un documento de Word
    “`

    Aquí, después de anidar los datos por year, estimamos el modelo probit y calculamos los efectos marginales usando probitmfx. Como probitmfx devuelve una lista, primero usamos map para convertir la salida de cada modelo en algo legible para tidy en una nueva columna llamada mfx. Luego, usamos map nuevamente para convertir la salida de cada una de estas listas en formato de tibble en la columna tidy_mfx. Finalmente, desanidamos las tibbles anidadas y pasamos el objeto mods a modelsummary, donde especificamos el formato de salida como un documento de Word con el argumento output establecido en "dok".

Comments are closed.