从stat输出创建可发布的表

时间:2012-10-31 08:13:29

标签: r statistics output publish tabular

我想知道是否有人可以指出我可以从不同的统计测试的输出中制作好的可发布表格,无论是在 R 还是从其他软件。

现在,我在.txt(来自使用scipy / numpy的脚本)格式和 R 中的ks.test的输出中有一个大的混乱输出。 对于ks.test的输出,我在 R 中看了一些xtable。但是,当将ks.test的输出分配给字符串时,例如ks = ks.test(x,y)然后尝试使用xtable,我收到错误:

  

没有适用于'xtable'的方法适用于“htest”类的对象

表的格式最好是.pdf或.eps(未嵌入)。

5 个答案:

答案 0 :(得分:4)

如果要生成LaTeX表,可以使用xtable包,也可以使用latex包中的Hmisc。您可以将LaTeX文件渲染为pdf,以便发布者可以接受。

答案 1 :(得分:3)

如果您希望以LaTeX或HTML格式打印表格,可以尝试使用xtable包。例如:

my.R.table <- matrix(runif(21), ncol=3)
my.x.table <- xtable(my.R.table,
                     caption = c("The long caption for this",
                                 "The short caption"),
                     label = c("my.latex.label"),
                     align = c("l", "l", "r", "c"),
                     digits = 3)
print(my.x.table, caption.placement = "top",
      include.rownames = FALSE, type="html")

对于统计模型,还存在一个名为stargazer的包。我没有试过这个。

答案 2 :(得分:3)

您显示的错误是因为ks.test的输出不是表格输出,也不是xtable理解的格式。输出如下:

> x <- rnorm(50)
> y <- runif(30)
> # Do x and y come from the same distribution?
> (res <- ks.test(x, y))

    Two-sample Kolmogorov-Smirnov test

data:  x and y 
D = 0.46, p-value = 0.0004387
alternative hypothesis: two-sided

哪个不是真正的表格。为了让您使用ks.test,您需要为xtable编写"htest"的方法(ks.test返回的是什么类型的对象。其他类型的对象已经存在几种方法:

> require(xtable)
Loading required package: xtable
> methods(xtable)
 [1] xtable.anova*           xtable.aov*            
 [3] xtable.aovlist*         xtable.coxph*          
 [5] xtable.data.frame*      xtable.glm*            
 [7] xtable.lm*              xtable.matrix*         
 [9] xtable.prcomp*          xtable.summary.aov*    
[11] xtable.summary.aovlist* xtable.summary.glm*    
[13] xtable.summary.lm*      xtable.summary.prcomp* 
[15] xtable.table*           xtable.ts*             
[17] xtable.zoo*            

   Non-visible functions are asterisked

"htest"相当普遍(它用于大多数并非所有R经典测试),所以我冒昧地认为缺少xtable.htest是假设检验的结果如同这不适合表格输出 - 例如,KS测试输出中只有两个感兴趣的数字。

正如我在评论中所说,我只会在文本中引用测试统计信息Dp-value内嵌。

如果您有多个测试并希望对它们进行汇总,请将几个ks.test次运行的输出收集到一个数据框中,然后在该数据框上使用xtable(这将有效,因为它有一个方法)。要将多个ks测试组合到一个表(数据框)中,您可以执行类似

的操作
df.res <- data.frame(D = c(res$statistic, res$statistic),
                     `p value` = c(res$p.value, res$p.value))
xtable(df.res)

给出:

> df.res <- data.frame(D = c(res$statistic, res$statistic),
+                      `p value` = c(res$p.value, res$p.value))
> xtable(df.res)
% latex table generated in R 2.15.2 by xtable 1.7-0 package
% Wed Oct 31 09:19:16 2012
\begin{table}[ht]
\begin{center}
\begin{tabular}{rrr}
  \hline
 & D & p.value \\ 
  \hline
1 & 0.46 & 0.00 \\ 
  2 & 0.46 & 0.00 \\ 
   \hline
\end{tabular}
\end{center}
\end{table}

然后查看print.xtable xtable 手册,了解如何格式化数据框名称等的详细信息,以便在LaTeX输出中获得更好的输出。

答案 3 :(得分:3)

您可以将pander包视为格式化输出的另一种方式。它有几个选项可供创建的最终文件类型,并且有htest的方法。

但是对于发布,您通常不希望使用与默认输出相同的格式,最好从htest对象中提取关键部分并自行格式化。 sweaveknitr等工具可用于创建所需格式,并将重要信息插入您的格式。

答案 4 :(得分:2)

根据您使用的统计测试,一个很好的选择可能是sjPlot:http://www.strengejacke.de/sjPlot/

其中一些选项是:

  • sjt.corr - 作为HTML表格的相关性
  • sjt.lm - HTML表格的线性模型
  • sjt.lmer - 线性混合模型为HTML表格
  • sjt.pca - 主要组件分析为HTML表格

使用&#34;文件&#34;参数可以保存输出。

library(sjPlot)
sjt.lm(fitted_model, file = "file_name.pdf")

使用上述代码(来自:http://www.strengejacke.de/sjPlot/sjt.lm/)的线性模型的发布就绪表的示例:

enter image description here