2011-10-15 31 views
6

我不想將輸出從cox迴歸導出到表中,然後我可以將其放入我的文章中。我想去做最好的辦法就是用xtable:xtable中的Cox迴歸輸出 - 選擇行/列並添加置信區間

library(survival) 
data(pbc) 
fit.pbc <- coxph(Surv(time, status==2) ~ age + edema + log(bili) + 
    log(protime) + log(albumin), data=pbc) 

summary(fit.pbc) 
library(xtable) 
xtable(fit.pbc) 

現在我想要做以下的輸出:

  • 添加的95%置信區間(CI)
  • 選擇某些行,說年齡和日誌(凝血酶原時間)
  • 回合的EXP(B)& CI到三位小數
  • 刪除以Z &定期COEF列

在此先感謝!

回答

9

我想通過首先看看survival包如何構建默認打印的表。

要找到這是否打印功能,檢查類你適合的對象,然後查找該類的打印方法:

class(fit.pbc) 
# [1] "coxph" 
grep("coxph", methods("print"), value=TRUE) 
# [1] "print.coxph"   "print.coxph.null" 
# [3] "print.coxph.penal" "print.summary.coxph" 

考慮看看print.coxph後,這裏就是我來了:

cox <- fit.pbc 

# Prepare the columns 
beta <- coef(cox) 
se <- sqrt(diag(cox$var)) 
p <- 1 - pchisq((beta/se)^2, 1) 
CI <- round(confint(cox), 3) 

# Bind columns together, and select desired rows 
res <- cbind(beta, se = exp(beta), CI, p) 
res <- res[c("age", "log(protime)"),] 

# Print results in a LaTeX-ready form 
xtable(res) 
+0

謝謝,正是我尋找的簡單解決方案:) –

3
xtable(round(summary(fit.pbc)$conf.int[c(1,3),],3)) 
#-----------------------------# 
% latex table generated in R 2.13.1 by xtable 1.5-6 package 
% Sat Oct 15 18:36:04 2011 
\begin{table}[ht] 
\begin{center} 
\begin{tabular}{rrrrr} 
    \hline 
& exp(coef) & exp(-coef) & lower .95 & upper .95 \\ 
    \hline 
age & 1.04 & 0.96 & 1.02 & 1.06 \\ 
    log(bili) & 2.37 & 0.42 & 2.02 & 2.79 \\ 
    \hline 
\end{tabular} 
\end{center} 
\end{table} 

這說明你與海峽查看摘要對象上

str(summary(fit.pbc)) 
# snipped 
$ conf.int : num [1:5, 1:4] 1.0404 2.4505 2.3716 10.8791 0.0815 ... 
    ..- attr(*, "dimnames")=List of 2 
    .. ..$ : chr [1:5] "age" "edema" "log(bili)" "log(protime)" ... 
    .. ..$ : chr [1:4] "exp(coef)" "exp(-coef)" "lower .95" "upper .95" 
+0

您也可以將'digits'參數用於'xtable',而不是通過'round'發送它。 –

+0

我認爲總結已經四捨五入到2位數。 (但是很少有足夠的精確度來證明超過2位數字。) –

+0

感謝您的努力,選擇了喬希的答案,因爲它解決了我所有的問題。 @DWin - 我指定了3位數,因爲彙總輪次爲2位數 - 我有一個非常大的數據集,我還沒有決定小數的數量,雖然我完全同意很多小數給出的統計數據更精確的錯覺他們是。 –