2013-05-12 3 views
6

Я хотел бы использовать табличную() функцию из таблицы-пакета, чтобы выполнить кросс-табуляцию двух переменных (например, v1 и v2), и представить p-значение chisq-теста в таблице. Легко получить перекрестную пересылку, но я не могу получить значение p внутри таблицы. Это то, что я пытался, без везения:Тест-статистика (например, тест теста) внутри латексной таблицы с использованием таблицы-пакета в R/Knitr/Rstudio

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} 
+0

Может быть, вы могли бы использовать пакет [reporttools] (http://cran.r-project.org/web/packages/reporttools/index.html). – sgibb

ответ

7

Я не знаю, как сделать это с tables::tabular, но это будет делать это с Hmisc::summary.formula.reverse предполагается, что вы ваша система настроена на создавать pdf-файлы через латекс(). Я должен был выполнить поиск архивов Rhelp, чтобы выяснить, что аргумент «exclude1» необходимо включить в список аргументов latex. После того, как вы вернетесь через документацию exclude1 появляется в примере использования в latex.summary.formula.reverse хотя я думал я читал страницу справки для summary.rms:

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

enter image description here

Вы можете перехватывать вывод латекса «вместе путь ", если вы хотите встроить его в более длинный документ, назначив вывод в именованный файл.

latex(summary(v2 ~ v1, data=df, method="reverse" ,test=TRUE), exclude1=FALSE, file="") 
#-------- 
% latex.default(cstats, title = title, caption = caption, rowlabel = rowlabel,  col.just = col.just, numeric.dollar = FALSE, insert.bottom = legend,  rowname = lab, dcolumn = dcolumn, extracolheads = extracolheads,  extracolsize = Nsize, ...) 
% 
\begin{table}[!tbp] 
\caption{Descriptive Statistics by v2\label{summary}} 
\begin{center} 
\begin{tabular}{lcccc} 
\hline\hline 
\multicolumn{1}{l}{}&\multicolumn{1}{c}{February}&\multicolumn{1}{c}{January}&\multicolumn{1}{c}{March}&\multicolumn{1}{c}{Test Statistic}\tabularnewline 
&\multicolumn{1}{c}{{\scriptsize $N=56$}}&\multicolumn{1}{c}{{\scriptsize $N=73$}}&\multicolumn{1}{c}{{\scriptsize $N=71$}}&\tabularnewline 
\hline 
v1~:~a&43\%~{\scriptsize~(24)}&47\%~{\scriptsize~(34)}&44\%~{\scriptsize~(31)}&$ \chi^{2}_{2}=0.21 ,~ P=0.901 $\tabularnewline 
~~~~b&57\%~{\scriptsize~(32)}&53\%~{\scriptsize~(39)}&56\%~{\scriptsize~(40)}&\tabularnewline 
\hline 
\end{tabular} 
\end{center} 
Numbers after percents are frequencies.\\\noindent Test used:\\Pearson test\end{table} 
+0

Я пойду с этим, спасибо –

+0

Как мне заставить его работать с Knitr в Rstudio. Когда я помещаю это: латекс (сводка (v2 ~ v1, data = df, method = "reverse", test = TRUE), exclude1 = FALSE) в result = "asis" -chunk, Rstudio просто зависает ("зависает" Я имею в виду, что знак «stop» появляется в нижнем правом углу «compile-pdf» -tab, и мне нужно щелкнуть стоп, прежде чем я смогу запустить другие куски. –

+1

Я не являюсь ни RStudio, ни пользователем пользователя knitr Я не знаком с использованием «asis» -chunks. Вы можете получить «сырой» выход латекса на консоль, указав файл = «», который может содержать вывод в среде RStudio. Я выведу вывод. –

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