2013-05-12 9 views
6

Chciałbym użyć funkcji tabelarycznej() z tabeli-pakietów, aby utworzyć krzyżową tabelę dwóch zmiennych (np. v1 i v2) i przedstawić wartość p testu chisq w tabeli. Łatwo jest uzyskać tabelę, ale nie mogę uzyskać wartości p wewnątrz tabeli. To właśnie próbowałam, bez powodzenia:Statystyka testowa (np. Test chisquare) wewnątrz tabeli lateksowej za pomocą tabeli-pakietu w 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

Może mógłbyś użyć pakietu [reporttools] (http://cran.r-project.org/web/packages/reporttools/index.html). – sgibb

Odpowiedz

7

nie wiem jak to zrobić z tables::tabular ale to zrobi to z Hmisc::summary.formula.reverse warunkiem, że zostały skonfigurowane tak, aby Twój system produkują pliki PDF poprzez latex(). Musiałem wykonać wyszukiwanie archiwów Rhelp, aby dowiedzieć się, że argument "exclude1" musi znaleźć się na liście argumentów latex. Po wrócić poprzez dokumentację exclude1 jest widoczna na przykład użytkowej latex.summary.formula.reverse chociaż myślał czytałem na stronie pomocy dla summary.rms:

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

enter image description here

Można przechwycić wyjście lateks „wraz sposób ", jeśli chcesz osadzić go w dłuższym dokumencie, przypisując dane wyjściowe do nazwanego pliku.

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

Pójdę z tym, dziękuję –

+0

Jak mogę go uruchomić z Knitr w Rstudio. Kiedy umieściłem to: latex (podsumowanie (v2 ~ v1, data = df, method = "reverse", test = TRUE), exclude1 = FALSE) w result = "asis" -chunk, Rstudio po prostu zawiesza się (przez "zawiesza się" mam na myśli, że znak "stop" pojawia się w prawym dolnym rogu tabeli "compile-pdf" i muszę kliknąć "stop", zanim będę mógł uruchamiać inne fragmenty: –

+1

Nie jestem ani użytkownikiem RStudio, ani użytkownikiem dzianin, więc Nie jestem zaznajomiony z użyciem "asis" -chunks.Można uzyskać "surowe" wyjście latex do konsoli, określając file = "", który może przechowywać dane wyjściowe w środowisku RStudio. –

0

Możesz również wkleić tekst ze statystyki chi-kwadrat do podpisu przez xtable(). Na przykład:

#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 
Powiązane problemy