输出标准误差低于估计值的表格

时间:2011-03-19 01:04:50

标签: r latex sweave

所以我有一些像这样的参数估计

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")

我希望输出一个Latex(或HTML)表,其中每个参数估计值都在其下方的parens中有标准误。

表格看起来应该是这样的

    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)

除了,你知道,在适当的Latex(或HTML)中。我怎么能从R?

这样做

3 个答案:

答案 0 :(得分:2)

两个步骤:

使用表格中的数据创建矩阵

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

将矩阵写为latex或html table:

library(xtable)
print(xtable(M),type="latex") # or type="html" 

答案 1 :(得分:2)

如果您不介意拥有行标签,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 = "")来省略top,bottom和mid规则。

请注意,您应安装texreg(&gt; = 1.29.7)。

答案 2 :(得分:0)

查看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')