2013-05-12 14 views
6

Tôi muốn sử dụng hàm tableular() từ gói bảng để thực hiện việc lập bảng chéo của hai biến (ví dụ v1 và v2), và trình bày giá trị p của chisq-test trong bảng. Nó rất dễ dàng để có được crosstabulation, nhưng tôi không thể có được giá trị p bên trong bảng. Đây là những gì tôi đã cố gắng, mà không cần bất kỳ may mắn:Thống kê kiểm tra (ví dụ: kiểm tra chisquare) bên trong bảng cao su sử dụng bảng-gói trong 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

Có thể bạn có thể sử dụng gói [reporttools] (http://cran.r-project.org/web/packages/reporttools/index.html). – sgibb

Trả lời

7

Tôi không biết làm thế nào để làm điều đó với tables::tabular nhưng điều này sẽ làm điều đó với Hmisc::summary.formula.reverse giả sử bạn đã hệ thống của bạn cấu hình để tạo tệp pdf thông qua latex(). Tôi đã phải tìm kiếm các lưu trữ của Rhelp để tìm ra rằng đối số 'exclude1' cần thiết để đi vào danh sách đối số latex. Một khi bạn quay trở lại thông qua các tài liệu hướng dẫn exclude1 không xuất hiện trong ví dụ sử dụng latex.summary.formula.reverse mặc dù tôi nghĩ Tôi đã đọc các trang trợ giúp cho summary.rms:

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

enter image description here

Bạn có thể đánh chặn các đầu ra mủ "cùng cách "nếu bạn muốn nhúng nó vào một tài liệu dài hơn bằng cách gán đầu ra cho một tệp được đặt tên.

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

Tôi sẽ đi với điều đó, nhờ –

+0

Làm thế nào để tôi làm cho nó hoạt động với Knitr trong Rstudio. Khi tôi đặt điều này: latex (tóm tắt (v2 ~ v1, dữ liệu = df, phương thức = "đảo ngược", test = TRUE), exclude1 = FALSE) trong một kết quả = "asis" -chunk, Rstudio chỉ bị treo (bằng "treo" tôi có nghĩa là dấu hiệu "dừng" xuất hiện ở góc dưới bên phải của "biên dịch-pdf" -tab, và tôi cần phải bấm dừng lại trước khi tôi có thể chạy các khối khác –

+1

Tôi không phải là một RStudio cũng không phải là một người sử dụng đan, vì vậy Tôi không quen với việc sử dụng các khối "asis". Bạn có thể lấy đầu ra latex "thô" tới giao diện điều khiển bằng cách chỉ rõ tệp = "" có thể giữ đầu ra trong môi trường RStudio. Tôi sẽ đăng đầu ra. –

0

Bạn cũng có thể dán văn bản từ thống kê chi bình phương vào phụ đề qua xtable(). Ví dụ:

#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 
Các vấn đề liên quan