Статистика теста (например, тест chisquare) внутри таблицы latex с использованием пакета tables в R / Knitr / Rstudio

Я хотел бы использовать функцию tabular () из пакета tables, чтобы сделать перекрестную таблицу двух переменных (например, v1 и v2) и представить p-значение chisq-test в таблице. Получить перекрестную таблицу легко, но я не могу получить значение p внутри таблицы. Это то, что я безуспешно пытался:

введите описание изображения здесь

\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}

person Rasmus Larsen    schedule 12.05.2013    source источник
comment
Возможно, вам стоит использовать пакет reporttools.   -  person sgibb    schedule 12.05.2013


Ответы (2)


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

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

введите описание изображения здесь

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

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}
person IRTFM    schedule 12.05.2013
comment
Как заставить его работать с Knitr в Rstudio. Когда я помещаю это: latex (summary (v2 ~ v1, data = df, method = reverse, test = TRUE), exclude1 = FALSE) в results = asis-chunk, Rstudio просто зависает (под зависанием я имею в виду, что знак остановки отображается в правом нижнем углу вкладки compile-pdf-tab, и мне нужно нажать кнопку «Стоп», прежде чем я смогу запустить другие фрагменты. - person Rasmus Larsen; 13.05.2013
comment
Я не являюсь ни RStudio, ни пользователем knitr, поэтому я не знаком с использованием asis-chunks. Вы можете получить необработанный латексный вывод на консоль, указав file =, который может сохранить вывод в среде RStudio. Выложу вывод. - person IRTFM; 13.05.2013

Вы также можете вставить текст из статистики хи-квадрат в заголовок с помощью 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 
person spindoctor    schedule 13.11.2017