Регрессионные таблицы в формате Markdown (для гибкого использования в R Markdown v2)
Новая версия R Markdown основана на pandoc, поэтому вы можете легко изменить формат вывода.
Моя проблема состоит в том, чтобы получить таблицы с разбивкой по меткам, например. регрессионные модели, поскольку таблицы LATEX и HTML не выдерживают преобразования pandoc.
Я знаю пакеты, которые генерируют LATEX/HTML вывод из множества моделей (stargazer, texreg, asprtable...), и я знаю о функциях/пакетах, которые генерируют таблицы разметки из фреймов данных и матриц, но не из других объекты.
Любые предложения?
Ответы
Ответ 1
Мой выше комментарий более подробно:
-
Определите несколько моделей для воспроизводимого примера:
lm0 <- lm(hp ~ wt, mtcars)
lm1 <- lm(qsec ~ hp, mtcars)
lm2 <- lm(qsec ~ wt, mtcars)
-
Создайте сравнительную таблицу из них:
require(memisc)
mtable123 <- mtable('Model 1' = lm0,
'Model 2' = lm1,
'Model 3' = lm2,
summary.stats = c('R-squared','F','p','N'))
-
Отметьте таблицу разметки с простым вызовом pander
:
pander(mtable123)
-
Наслаждайтесь результатом:
--------------------------------------------------
Model 1 Model 2 Model 3
----------------- ---------- ---------- ----------
**(Intercept)** -1.821\ 20.556***\ 18.875***\
(32.325) (0.542) (1.103)
**wt** 46.160***\ \ -0.319\
(9.625) (0.328)
**hp** \ -0.018***\ \
(0.003)
**R-squared** 0.434 0.502 0.031
**F** 22.999 30.190 0.945
**p** 0.000 0.000 0.339
**N** 32 32 32
--------------------------------------------------
Спасибо за Роман Цегельский за реализацию этой приятной функции в GSoC 2014.
Ответ 2
Просто создайте таблицы HTML или LATEX. Все, что вам нужно сделать, это просто добавить результаты = 'asis' в кусок кода. Он оставит выход как есть.
Например, этот код, использующий xtable, работает для меня.
```{r,results='asis'}
x<-rnorm(100)
y<-rnorm(100)
lm <- lm(y~x)
library(xtable)
print(xtable(summary(lm)),type='html')
```
Ответ 3
Вот что я сделал несколько часов назад:
-
Некоторые данные:
lm1 <- lm(qsec ~ hp, mtcars)
lm2 <- lm(qsec ~ wt, mtcars)
-
Мы используем пакет sjPlot
```{r}
library(sjPlot)
sjt.lm(lm1,lm2, file="output.html")# You have to save the table in html format.
htmltools::includeHTML("output.html")# Finally you can call it from markdown
```
![введите описание изображения здесь]()
Ответ 4
Еще один способ использования sjPlot (отличная библиотека для простой презентации регрессионного вывода) - использовать функцию no.output:
library(sjmisc)
library(sjPlot)
library(magrittr)
lm(qsec ~ wt, mtcars) %>%
sjt.lm(no.output = TRUE, show.se = TRUE) %>%
return() %>% .[["knitr"]] %>% asis_output