Выведите таблицу со стандартными ошибками ниже оценки - PullRequest
2 голосов
/ 19 марта 2011

Итак, у меня есть некоторые оценки параметров, например

est<-matrix(1:10,nrow=2)
colnames(est)<-c("a","b","c","d","e")

, и у меня есть некоторые стандартные ошибки, например

se<-matrix(seq(0.1,1,by=0.1),nrow=2)
colnames(se)<-c("a","b","c","d","e")

, и я хочу вывести латекс (илиHTML) таблица, где каждая оценка параметра имеет стандартную ошибку в паренах чуть ниже нее.

Таблица должна выглядеть примерно так:

    a    &   b    &  c    &  d    &  e
    1    &   3    &  5    &  7    &  9
  (0.1)  &  (0.3) & (0.5) & (0.7) & (0.9)
    2    &   4    &  6    &  8    &  10
  (0.2)  &  (0.4) & (0.6) & (0.8) & (1.0)

, за исключением, как вы знаете, соответствующего латекса (или HTML).).Как я могу сделать это из R?

Ответы [ 3 ]

2 голосов
/ 19 марта 2011

Два шага:

Создать матрицу с данными в таблице

M <- matrix(as.vector(rbind(as.character(est),
                            paste("(",as.vector(se),")", sep="")
                            )
             ), nrow=4)
colnames(M) <- colnames(est)

Запись матрицы в виде латексной или HTML-таблицы:

library(xtable)
print(xtable(M),type="latex") # or type="html" 
2 голосов
/ 17 октября 2013

Если вы не против иметь метки строк, пакет texreg может предложить решение:

# your original code:
est <- matrix(1:10, nrow = 2)
colnames(est) <- c("a", "b", "c", "d", "e")
se <- matrix(seq(0.1, 1, by = 0.1), nrow = 2)
colnames(se) <- c("a", "b", "c", "d", "e")

# add row labels:
rownames(est) <- c("row 1", "row 2")
rownames(se) <- c("row 1", "row 2")

library("texreg")

# create a texreg object:
tr <- list()
for (j in 1:ncol(est)) {
  tr[[j]] <- createTexreg(
      coef.names = rownames(est), 
      coef = est[, j], 
      se = se[, j]
  )
}

# for text output:
screenreg(tr, custom.model.names = colnames(est), 
    custom.note = "")

# for LaTeX output:
texreg(tr, custom.model.names = colnames(est), 
    custom.note = "")

# for HTML output:
htmlreg(tr, custom.model.names = colnames(est), 
    custom.note = "")

Например, вывод текста будет выглядеть следующим образом:

=============================================
       a       b       c       d       e     
---------------------------------------------
row 1   1.00    3.00    5.00    7.00    9.00 
       (0.10)  (0.30)  (0.50)  (0.70)  (0.90)
row 2   2.00    4.00    6.00    8.00   10.00 
       (0.20)  (0.40)  (0.60)  (0.80)  (1.00)
=============================================

Вы также можете опустить верхнее, нижнее и среднее правила, указав дополнительные аргументы для функции screenreg (inner.rule = "" и outer.rule = "").

Обратите внимание, что у вас должно быть texreg (> = 1,29.7) установлено.

0 голосов
/ 19 марта 2011

Проверьте, работает ли пакет apsrtable для вас.В зависимости от типа имеющегося у вас объекта модели, это может быть решением.Пакет довольно легко распространяется и на другие модели.

----------------- ОБНОВЛЕНИЕ

Почему бы вам просто не использовать простой цикл for и некоторые команды вставки?Вероятно, легче сделать что-то вроде хакерства, чем это, чем найти общее решение.

est<-matrix(1:10,nrow=2)
colnames(est)<-c("a","b","c","d","e")

se<-matrix(seq(0.1,1,by=0.1),nrow=2)
colnames(se)<-c("a","b","c","d","e")

se <- apply(se, 2, function(i) paste('(', i, ')', sep=''))

output <- NULL
for (i in 1:nrow(est)){
  output <- rbind(output, est[i,])
  output <- rbind(output, se[i,])
}
output <- apply(output, 1, paste, collapse=' & ')
output <- paste(output, '\\\\')
cat(output, sep='\n')
...