使用R / Knitr / Rstudio中的tables-package在乳胶表内测试统计(i.n.ki square test)

时间:2013-05-12 18:26:40

标签: r latex knitr chi-squared

我想使用tables-package中的tabular() - 函数对两个变量(例如v1和v2)进行交叉制表,并在表中显示chisq-test的p值。很容易得到交叉制表,但我不能得到表内的p值。这是我一直在尝试的,没有任何运气:

enter image description here

\documentclass{article}

\begin{document}

<<echo=TRUE,message=FALSE>>=
library(Hmisc)
library(tables)
v1 <- sample(letters[1:2],200,replace=TRUE)
v2 <- sample(month.name[1:3],200,replace=TRUE)
df <- data.frame(v1,v2)
@

It is straight forward to get the crosstabulation:
<<results='asis'>>=
latex(   tabular(    Factor(v1)   ~   Factor(v2)      , data=df)  )
@

But I cant get the p-value inside the table:

<<results='asis'>>=
latex(   tabular(    Factor(v1)*chisq.test(v1,v2)$p.value   ~   Factor(v2)      , data=df)  )
@

\end{document}

2 个答案:

答案 0 :(得分:7)

我不知道如何使用tables::tabular进行此操作,但这将使用Hmisc::summary.formula.reverse进行,假设您已将系统配置为通过latex()生成pdf文件。我不得不搜索Rhelp档案,以确定'{1}}参数列表中需要的'exclude1'参数。回到文档后latex确实出现在exclude1的使用示例中,虽然我想到我正在阅读latex.summary.formula.reverse的帮助页面:

summary.rms

enter image description here

如果要通过将输出分配给指定文件将其嵌入更长的文档中,可以“沿途”拦截乳胶输出。

library(Hmisc)
latex(summary( v2 ~ v1, data=df,  method="reverse" ,test=TRUE), exclude1=FALSE)

答案 1 :(得分:0)

您还可以通过xtable()将卡方统计中的文本粘贴到标题中。例如:

#sample data
var1<-sample(c('A', 'B'), 10, replace=T)
var2<-sample(c('Red', 'Blue'), 10, replace=T)
#join in frequency table
tab<-table(var1, var2)
#conduct chisq.test
test<-chisq.test(tab)
#show values of chisq.test()
name(test)
#Use xtable, use print.xtable for further manipulations
out<-xtable(tab, caption=paste('Important table, chi-squared =', test$statistic, ', p=', test$p.value,',' ,test$parameter, 'df', sep=' '))
#print
out