0

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

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

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

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

4

5 回答 5

4

如果你想生成 LaTeX 表格,你可以使用xtable包,也可以latexHmisc包中使用。您可以将 LaTeX 文件呈现为 pdf,这样出版商可能会接受。

于 2012-10-31T08:34:03.770 回答
3

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

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

于 2012-10-31T15:00:49.923 回答
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}

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

于 2012-10-31T09:04:28.057 回答
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. 我还没有尝试过这个。

于 2012-10-31T08:38:57.573 回答
2

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

它的一些选项是:

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

使用“文件”参数,您可以保存输出。

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

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

在此处输入图像描述

于 2016-10-28T09:33:10.113 回答