Объединение нескольких таблиц регрессии в одну для использования в xtable с Sweave в R

xtable на Sweave работает потрясающе, но делает одну таблицу на регрессию. Вы также можете подать ему фрейм данных, поэтому я был вручную rbindи pasteing приводит к фреймам данных, но это не кажется очень масштабируемым.

есть ли более автоматизированный/надежное решение, которое работает как 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 что-то скрывают от меня.

6 ответов


некоторое время назад я наткнулся на outreg функция Пола Джонсона.

вы можете напрямую обратиться outreg на lm объект и объединить несколько lm выходы в одну, славную таблицу латекса.

здесь вы найдете пример .формат PDF

примеры outreg

и код для функции

outreg код

"общие" Домашняя страница по Пол Джонсон

Павел Джонсон!--12-->


ваш код бросил ошибки для меня при вызове dcast, поэтому я просто прочитал в выходных данных, которые вы предложили, и скорректировал имена colnames в соответствии. Этот код создает хорошо сформированный pdf-файл в моей системе после его передачи через мой процессор LaTex. (Я предполагаю, что у вас есть соответствующая установка LaTeX, если вы уже используете Sweave.)

require(Hmisc)
latex(df.res)

когда я передал пример в справке (lmList) в пакете lme4 latex (), также создайте довольно большой и невесомый 4-страничный дисплей, который будет нужны некоторые корректировки, чтобы расширить страницу на моей машине, но также может быть стоит рассмотреть.

require(lme4)
(fm1 <- lmList(Reaction ~ Days | Subject, sleepstudy))
latex(fm1)

ссылка outreg в принятом ответе теперь нарушена. Новая ссылка

http://pj.freefaculty.org/stat/ps706/outreg-worked.R

в родительской папке также есть сопровождающий PDF-файл.


Проверьте apsrtable пакет таблиц в CRAN, который создает таблицы стилей американского политологического обзора, которые выглядят примерно так, как я думаю, что вы хотите. Он принимает модели lm и glm, а также некоторые нелинейные модели из некоторых пакетов. Он также имеет длинный ряд вариантов для генерации звезд на определенных уровнях и тому подобное. Есть хороший vingette и он генерирует таблицы LaTeX и HTML, которые затем могут быть добавлены в OpenOffice/Word.

Я использует его в течение 2-3 лет, и он продолжает активно развиваться. Я просто быстро посмотрел, но он кажется гораздо более твердым / характерным, чем outreg.


вот еще один вариант, который я видел Брусника Это напомнило мне об этом вопросе:

texreg - смотреть на!--8-->vingette, похоже, это действительно хорошая работа по созданию довольно стандартных таблиц регрессии в R и которая находится в очень активной разработке на момент написания.

обновление: я играл с некоторыми из них, и я думаю, что со временем,texreg стал лидер лидером в этой области с точки зрения его зрелости, стабильности и featurefulness. Самое главное для меня, он работает с различными моделями и делает удивительно удобные вещи, такие как стандартные ошибки bootstrap для создания звезд для lme4() модели-то, что сам пакет делает немного сложно получить (по уважительным причинам), но что рецензенты и журналы часто требуют, тем не менее. Я настоятельно рекомендую использовать texreg. Он, кажется, активно поддерживается.


пакета звездочет будет еще одним вариантом для таблиц HTML, LaTeX или ASCII, бок о бок. См. также Мой ответ to таблица нескольких моделей lm () с использованием apsrtable в Rmarkdown что включает в себя скриншот.