r - 来自扫帚输出的具有多个模型的格式化乳胶回归表?
问题描述
我有几个模型,例如下面的示例,我有估计、标准误差、p 值、r2 等作为整洁格式的 data.frames,但我没有原始模型对象(分析是在不同的机器)。
require(broom)
model <- lm(mpg ~ hp + cyl, mtcars)
tidy_model <- tidy(model)
glance_model <- glance(model)
# tidy_model
# # A tibble: 3 x 5
# term estimate std.error statistic p.value
# <chr> <dbl> <dbl> <dbl> <dbl>
# 1 (Intercept) 36.9 2.19 16.8 1.62e-16
# 2 hp -0.0191 0.0150 -1.27 2.13e- 1
# 3 cyl -2.26 0.576 -3.93 4.80e- 4
# glance(model)
# # A tibble: 1 x 11
# r.squared adj.r.squared sigma ...
# * <dbl> <dbl> <dbl> ...
# 1 0.760 0.743 3.06 ...
有几个包(例如stargazer
or texreg
)可以将一个或多个模型对象(lm
,glm
等)并排转换为格式良好的回归表,请参见下面的示例texreg
:
require(texreg)
screenreg(list(model1, model1)
# =================================
# Model 1 Model 2
# ---------------------------------
# (Intercept) 34.66 *** 34.66 ***
# (2.55) (2.55)
# cyl -1.59 * -1.59 *
# (0.71) (0.71)
# disp -0.02 -0.02
# (0.01) (0.01)
# ---------------------------------
# R^2 0.76 0.76
# Adj. R^2 0.74 0.74
# Num. obs. 32 32
# RMSE 3.06 3.06
# =================================
# *** p < 0.001, ** p < 0.01, * p < 0.05
是否有类似的包使用生成的整洁估计结果broom
作为输入而不是模型对象来生成如上例所示的表格?
解决方案
是否有类似的软件包使用扫帚产生的整齐估计结果作为输入
据我所知,但stargazer
允许您使用自定义输入来生成回归表。这使我们可以创建“假”的 shell 表,我们可以使用 tidy 表中的值填充这些表。使用您的示例
# create fake models
dat <- lapply(tidy_model$term, function(...) rnorm(10))
dat <- as.data.frame(setNames(dat, c("mpg", tidy_model$term[-1])))
f <- as.formula(paste("mpg ~", paste(tidy_model$term[-1], collapse = " + ")))
fit <- lm(f, dat)
# set up model statistics
fit_stats <- data.frame(labels = names(glance_model),
mod1 = round(unlist(glance_model), 3),
mod2 = round(unlist(glance_model), 3),
row.names = NULL,
stringsAsFactors = FALSE)
然后我们可以将这些值输入stargazer
:
图书馆(观星者)
stargazer(fit, fit, type = "text",
coef = list(tidy_model$estimate, tidy_model$estimate),
se = list(tidy_model$std.error, tidy_model$std.error),
add.lines = lapply(1:nrow(fit_stats), function(i) unlist(fit_stats[i, ])),
omit.table.layout = "s"
)
# ==========================================
# Dependent variable:
# ----------------------------
# mpg
# (1) (2)
# ------------------------------------------
# hp -0.019 -0.019
# (0.015) (0.015)
# cyl -2.265*** -2.265***
# (0.576) (0.576)
# Constant 36.908*** 36.908***
# (2.191) (2.191)
# ------------------------------------------
# r.squared 0.741 0.741
# adj.r.squared 0.723 0.723
# sigma 3.173 3.173
# statistic 41.422 41.422
# p.value 0 0
# df 3 3
# logLik -80.781 -80.781
# AIC 169.562 169.562
# BIC 175.425 175.425
# deviance 291.975 291.975
# df.residual 29 29
# ==========================================
# Note: *p<0.1; **p<0.05; ***p<0.01
推荐阅读
- c# - 如何防止来自外部库的特定方法调用
- python - 有没有办法简化多个列表理解?
- javascript - 从 HTML (JS) 到 PHP 的复选框状态
- machine-learning - 为什么我从同一个神经网络模型得到不同的预测?
- java - 使用 Java 和 Angular 5 下载 BLOB 到 PDF
- jquery - JSON 日期未正确传递给控制器
- git - 控制推送到中央裸存储库的方法
- java - Maven项目目录结构中目标中的类文件夹
- sql - Postgres:将对象图转换为 JSON
- ios - locationManager:didEnterRegion 在提供的区域中输入时未调用