【问题标题】:Create publishable tables from stat outputs [closed]从统计输出创建可发布的表[关闭]
【发布时间】:2012-10-31 08:13:29
【问题描述】:

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

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

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

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

【问题讨论】:

  • 您需要用什么格式标记表格? (即,您在用什么写文档?)
  • 出版商想要 MS word/excel 格式或 pdf 格式...所以我会选择 pdf。
  • 好的,PDF。你是如何制作那个PDF的。来自 Word、LaTeX?还是您的意思是他们希望表格本身是 PDF 文件,而不是嵌入的?您能否编辑问题以包括您希望表格的外观、信息等示例。
  • 另外,一个可重现的例子会很好,因为can't get it to work 非常模糊。
  • 如果您只有一个ks.test() 结果或一两个结果,我不会打扰一张桌子。只需在文本中引用测试统计量和 p 值即可; “发现这两个群体存在差异(KS 检验,D = x.xx,p = 0.002)”。

标签: r statistics output publish tabular


【解决方案1】:

如果你想生成 LaTeX 表格,你可以使用 xtable 包,或者使用 Hmisc 包中的 latex。您可以将 LaTeX 文件呈现为 pdf,这样发布者可能会接受。

【讨论】:

    【解决方案2】:

    如果您希望您的表格以 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 的包。不过这个我没试过。

    【讨论】:

      【解决方案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 一起工作,您需要为"htest" 类编写一个xtable 的方法(这是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.xtablextable 包的手册,了解如何格式化数据框的名称等以在 LaTeX 输出中获得更好的输出。

      【讨论】:

      • 是的,我有很多输出要合并到一个表中。谢谢,我会试试的。
      • 好的,我已经添加了一个这样做的例子。
      【解决方案4】:

      您可能会将pander 包视为格式化输出的另一种方式。它有几个用于创建最终文件类型的选项,并且确实有一个htests 的方法。

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

      【讨论】:

      • 谢谢大家!我去看看!
      【解决方案5】:

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

      它的一些选项是:

      • sjt.corr - 关联为 HTML 表格
      • sjt.lm - HTML表格形式的线性模型
      • sjt.lmer - 作为 HTML 表格的线性混合模型
      • sjt.pca - HTML 表格的主成分分析

      使用“file”参数可以保存输出。

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-10-23
        • 1970-01-01
        • 2018-02-13
        • 2021-12-14
        • 2014-12-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多