表示されるエラーは、からの出力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
これは実際には表形式ではありません。これを機能させるには、 forクラス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テスト出力で関心のある2つの数値。
コメントで述べたように、テキストの検定統計量D
とp-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}
次に、データフレームの名前などをフォーマットしてLaTeX出力でより良い出力を得る方法の詳細については、パッケージのxtableprint.xtable
のマニュアルを参照してください。