Reputation: 83
I was wondering how to use modelsummary to combine model names and DV names as in outreg2 in Stata? Here is the reprex:
url <- 'https://vincentarelbundock.github.io/Rdatasets/csv/HistData/Guerry.csv'
dat <- read.csv(url)
models <- list(
"OLS 1" = lm(Donations ~ Literacy + Clergy, data = dat),
"Poisson 1" = glm(Donations ~ Literacy + Commerce, family = poisson, data = dat),
"OLS 2" = lm(Crime_pers ~ Literacy + Clergy, data = dat),
"Poisson 2" = glm(Crime_pers ~ Literacy + Commerce, family = poisson, data = dat),
"OLS 3" = lm(Crime_prop ~ Literacy + Clergy, data = dat)
)
modelsummary(models)
#N: DV names
modelsummary(dvnames(models), output = "flextable", estimate="{estimate}{stars}",
statistic = 'statistic', stars = c('*' = .1, '**' = .05, '***'=0.01))
#N: Model names
modelsummary(models, output = "flextable", estimate="{estimate}{stars}",
statistic = 'statistic', stars = c('*' = .1, '**' = .05, '***'=0.01))
Here is how a DV and model name combined table would look in outreg2
in Stata:
Any info or advice would be appreciated!
Upvotes: 0
Views: 451
Reputation: 17725
You could use the add_rows
argument and create your own custom function to automate the process:
library(modelsummary)
insert_row <- function(x) {
out <- c("DV:", names(dvnames(x)))
out <- data.frame(as.list(out))
attr(out, "position") <- 0
return(out)
}
mod <- list(
lm(mpg ~ hp, mtcars),
lm(vs ~ hp, mtcars))
modelsummary(mod, add_rows = insert_row(mod))
Model 1 | Model 2 | |
---|---|---|
DV: | mpg | vs |
(Intercept) | 30.099 | 1.217 |
(1.634) | (0.150) | |
hp | -0.068 | -0.005 |
(0.010) | (0.001) | |
Num.Obs. | 32 | 32 |
R2 | 0.602 | 0.523 |
R2 Adj. | 0.589 | 0.507 |
AIC | 181.2 | 28.3 |
BIC | 185.6 | 32.7 |
Log.Lik. | -87.619 | -11.134 |
F | 45.460 | 32.876 |
Upvotes: 1