Объединение нескольких таблиц регрессии в один для использования в xxtable с Sweave в R
xtable
в Sweave
работает потрясающе, но имеет одну таблицу для каждой регрессии. Вы также можете подать его в кадр данных, так что я вручную rbind
ing и paste
вывод результатов в кадры данных, но это не кажется очень масштабируемым.
Есть ли более автоматизированное/надежное решение, которое работает как xtable
, но на нескольких объектах lm
? Все ли таблицы, которые я вижу в документах/книгах, созданных вручную? Есть ли лучшее решение для моего janky-кода, который генерирует кадр данных для подачи на xtable
?
library(reshape2)
data <- data.frame(matrix(rnorm(50), 10, 5))
names(data) <- letters[1:5]
l.raw <- list()
l.raw[["a"]] <- lm(a ~ d + e, data=data)
l.raw[["b"]] <- lm(b ~ d + e, data=data)
l.raw[["c"]] <- lm(c ~ d + e, data=data)
form.table.from.lm <- function(l.raw) {
summ <- list()
for (i in names(l.raw)) {
temp <- coef(summary(l.raw[[i]]))
summ[[i]] <- data.frame(param=rownames(temp), test=i, temp)
}
df.res <- do.call("rbind", summ)
df.res <- transform(df.res, t.value = paste("(", signif(t.value), ")", sep=""), Estimate = signif(Estimate))
df.res.long <- melt(df.res, id.vars=c("test", "param"))
df.res.wide <- dcast(df.res.long, test + variable ~ param)
temp <- subset(df.res.wide, variable %in% c("Estimate", "t.value"))
df.res <- temp[, -2]
df.res[, 1] <- as.vector(rbind(names(l.raw), ""))
colnames(df.res)[1] <- "regressor"
return(df.res)
}
Что создает кадр данных:
regressor (Intercept) d e
1 a 0.393996 -0.666721 0.159508
2 (0.573926) (0.422125) (0.526446)
5 b 0.611077 0.0288942 -0.70033
6 (0.32696) (0.24048) (0.299911)
9 c -0.101033 -0.287821 0.14581
10 (0.203193) (0.149449) (0.186383)
Учитывая удивительные планы построения R, я чувствую, что google и rseek скрывают что-то от меня.
Ответы
Ответ 1
Некоторое время назад я наткнулся на функцию outreg
Пол Джонсон.
Вы можете напрямую применить outreg
к вашему объекту lm
и объединить несколько
lm
выводится в одну красивую латексную таблицу.
Здесь вы найдете пример .pdf
примеры outreg
и код функции
код outreg
общая домашняя страница Paul Johnson
Пол Джонсон
Ответ 2
Ваш код забросил мне ошибки при вызове dcast, поэтому я просто прочитал в выводе, который вы предложили, и скорректировал совпадающие имена. Этот код создает хорошо сформированный pdf файл в моей системе после передачи его через мой процессор LaTex. (Я предполагаю, что у вас есть соответствующая установка LaTeX, если вы уже используете Sweave.)
require(Hmisc)
latex(df.res)
Когда я передал пример в справке (lmList) в пакете lme4, латекс() также создает довольно большой и unweildy 4-страничный дисплей, который потребует каких-либо корректировок для расширения страницы на моей машине, но может также заслуживать изучения.
require(lme4)
(fm1 <- lmList(Reaction ~ Days | Subject, sleepstudy))
latex(fm1)
Ответ 3
Ссылка outreg в принятом ответе прерывается. Новая ссылка
http://pj.freefaculty.org/stat/ps706/outreg-worked.R
В родительской папке также есть сопроводительный PDF файл.
Ответ 4
Просмотрите apsrtable табличный пакет в CRAN, который создает таблицы стилей American Policy Science Review, которые выглядят примерно так, как я думаю, вы хотите. Требуются модели lm и glm, а также некоторые нелинейные модели из некоторых пакетов. Он также имеет длинную серию вариантов для генерации звезд на определенных уровнях и т.д. Там хороший вингетт, и он генерирует как LaTeX, так и HTML-таблицы, которые затем могут быть добавлены в OpenOffice/Word.
Я использую его уже 2-3 года, и он продолжает активно развиваться. Я только что посмотрел быстро, но кажется, что он более твердый/особенный, чем outreg.
Ответ 5
Здесь еще один вариант, который я видел, - CRANberries, который напомнил мне об этом вопросе:
texreg - Посмотрите на vingette, кажется, действительно хорошая работа по созданию довольно стандартных регрессионных таблиц в R и которая находится под очень активной разработкой на момент написания.
Обновление: Я играл с несколькими из них, и я думаю, что со временем texreg стал лидером в этом пространстве с точки зрения его зрелости, стабильности и производительности. Самое главное для меня, он работает с различными моделями и прекрасно справляется с такими вещами, как стандартные ошибки начальной загрузки для создания звезд для моделей lme4()
- что-то, что сам пакет делает немного сложнее получить (по уважительным причинам), но эти рецензенты и журналы часто требуют, тем не менее. Я настоятельно рекомендую использовать texreg. Он, кажется, активно поддерживается.