我在R中有多个回归模型,我想以一种可以包含在出版物中的漂亮表格格式进行总结。我已准备好所有结果,但无法找到导出它们的方法,手动执行此操作效率不高,因为我需要大约20个表格。
所以,我的一个模特是:
felm1=felm(ROA~BC+size+sizesq+age | stateyeard+industryyeard, data=data)
我在R中得到了理想的总结。
但是,我对论文的要求是在表格中只有以下内容,括号中的t统计量和重要性代码( *,等)的估计值。
有没有办法创建包含上述内容的任何类型的表? Lyx,excel,word,.rft,真的。
更好的是,我拥有的另一个模型(有些变量不同):
felm2=felm(ROA~BC+BCHHI+size+sizesq+age | stateyeard+industryyeard, data=data)
我可以在一个表中汇总两个回归(其中相同的变量将在同一行,其他变量会产生空单元格)吗?
提前感谢您,我将不胜感激任何帮助。
这是一个可重复的例子:
x<-rnorm(1:20)
y<-(1:20)/10+x
summary(lm(y~x))
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Itercept) 1.0539 0.1368 7.702 4.19e-07 ***
x 1.0257 0.1156 8.869 5.48e-08 ***
这是R中的结果。我希望表中的结果看起来像
(Itercept) 1.0539*** (7.702)
X 1.0257*** (8.869)
这可能吗?
答案 0 :(得分:10)
Broom包非常适合使回归表适合导出。然后可以将结果导出到csv以便用Excel进行调整,或者可以使用Rmarkdown和knitr中的kable函数来生成Word文档(或者乳胶)。
require(broom) # for tidy()
require(knitr) # for kable()
x<-rnorm(1:20)
y<-(1:20)/10+x
model <- lm(y~x)
out <- tidy(model)
out
term estimate std.error statistic p.value
1 (Intercept) 1.036583 0.1390777 7.453261 6.615701e-07
2 x 1.055189 0.1329951 7.934044 2.756835e-07
kable(out)
|term | estimate| std.error| statistic| p.value|
|:-----------|--------:|---------:|---------:|-------:|
|(Intercept) | 1.036583| 0.1390777| 7.453261| 7e-07|
|x | 1.055189| 0.1329951| 7.934044| 3e-07|
我应该提一下,我现在使用优秀的pixiedust导出回归结果,因为它允许更精细的输出控制,允许用户在R中做更多而在任何其他包中做得更少。
library(dplyr) # for pipe (%>%) command
library(pixiedust)
dust(model) %>%
sprinkle(cols = c("estimate", "std.error", "statistic"), round = 2) %>%
sprinkle(cols = "p.value", fn = quote(pvalString(value))) %>%
sprinkle_colnames("Term", "Coefficient", "SE", "T-statistic",
"P-value")
Term Coefficient SE T-statistic P-value
1 (Intercept) 1.08 0.14 7.44 < 0.001
2 x 0.93 0.14 6.65 < 0.001
答案 1 :(得分:3)
对于文本表,请尝试以下方法:
x<-rnorm(1:20)
y<-(1:20)/10+x
result <- lm(y~x)
library(stargazer)
stargazer(result, type = "text")
导致......
===============================================
Dependent variable:
---------------------------
y
-----------------------------------------------
x 0.854***
(0.108)
Constant 1.041***
(0.130)
-----------------------------------------------
Observations 20
R2 0.777
Adjusted R2 0.765
Residual Std. Error 0.579 (df = 18)
F Statistic 62.680*** (df = 1; 18)
===============================================
Note: *p<0.1; **p<0.05; ***p<0.01
对于多元回归,只需执行
stargazer(result, result, type = "text")
而且,只是为了提出问题结果。
addStars <- function(coeffs) {
fb <- format(coeffs[, 1], digits = 4)
s <- cut(coeffs[, 4],
breaks = c(-1, 0.01, 0.05, 0.1, 1),
labels = c("***", "**", "*", ""))
sb <- paste0(fb, s)
}
addPar <- function(coeffs) {
se <- format(coeffs[, 2], digits = 3)
pse <- paste0("(", se, ")")
}
textTable <- function(result){
coeffs <- result$coefficients
lab <- rownames(coeffs)
sb <- addStars(coeffs)
pse <- addPar(coeffs)
out <- cbind(lab,sb, pse)
colnames(out) <- NULL
out
}
print(textTable(result), quote = FALSE)
一旦有了文本表,就可以使用xtable::xtable
,Hmisc::latex
,Gmisc::htmltable
等。有人在评论中发布了一个链接。 :)