Коэффициент стека участков в R

Я запускаю набор моделей с одинаковыми независимыми переменными, но разными зависимыми переменными, и хотел бы создать набор графиков коэффициентов на одной фигуре, в которой каждая модель получает свою собственную панель. Следующий код обеспечивает интуицию, но при этом все модели объединены в одну фигуру, а не имеют 3 уникальные панели рядом на одной фигуре:

require("coefplot") 
set.seed(123)
dat <- data.frame(x = rnorm(100), z = rnorm(100), y1 = rnorm(100), y2 = rnorm(100), y3 = rnorm(100))
mod1 <- lm(y1 ~ x + z, data = dat)
mod2 <- lm(y2 ~ x + z, data = dat)
mod3 <- lm(y3 ~ x + z, data = dat)    
multiplot(mod1,mod2, mod3)

Что генерирует этот сюжет:

Есть какие-нибудь мысли о том, как расположить их рядом друг с другом на одной фигуре? Спасибо!

1 ответ

Решение

Я не использовал coefplot пакет, но вы можете создать график коэффициентов непосредственно в ggplot2,

set.seed(123)
dat <- data.frame(x = rnorm(100), z = rnorm(100), y1 = rnorm(100), y2 = rnorm(100), y3 = rnorm(100))
mod1 <- lm(y1 ~ x + z, data = dat)
mod2 <- lm(y2 ~ x + z, data = dat)
mod3 <- lm(y3 ~ x + z, data = dat)    

## Create data frame of model coefficients and standard errors
# Function to extract what we need
ce = function(model.obj) {
  extract = summary(get(model.obj))$coefficients[ ,1:2]
  return(data.frame(extract, vars=row.names(extract), model=model.obj))
}

# Run function on the three models and bind into single data frame
coefs = do.call(rbind, sapply(paste0("mod",1:3), ce, simplify=FALSE))

names(coefs)[2] = "se" 

# Faceted coefficient plot
ggplot(coefs, aes(vars, Estimate)) + 
  geom_hline(yintercept=0, lty=2, lwd=1, colour="grey50") +
  geom_errorbar(aes(ymin=Estimate - se, ymax=Estimate + se, colour=vars), 
                lwd=1, width=0) +
  geom_point(size=3, aes(colour=vars)) +
  facet_grid(. ~ model) +
  coord_flip() +
  guides(colour=FALSE) +
  labs(x="Coefficient", y="Value") +
  theme_grey(base_size=15)

введите описание изображения здесь

Другие вопросы по тегам