2011-10-15 8 views
6

मैं एक कॉक्स रिग्रेशन से आउटपुट को उस तालिका में निर्यात करने के लिए नहीं चाहता जिसे मैं अपने लेख में डाल सकता हूं। मैं इसके बारे में जाने के लिए सबसे अच्छा तरीका लगता है xtable साथ है:xtable में कॉक्स रिग्रेशन आउटपुट - पंक्तियों/कॉलम चुनना और आत्मविश्वास अंतराल

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% की विश्वास अंतराल (सीआई) जोड़े
  • करें कुछ पंक्तियाँ, का कहना है कि उम्र और लॉग (protime)
  • exp (बी) दौर & सीआई तीन दशमलव के
  • 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 के साथ क्या देख

+०१२३५१६४१०६
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

आप 'राउंड' के माध्यम से इसे 'xtable'' के बजाय 'xtable'' का उपयोग भी कर सकते हैं। –

+0

मुझे लगता है कि सारांश पहले से ही 2 अंकों के लिए गोल है। (लेकिन वैसे भी 2 अंकों से अधिक उचित ठहराने के लिए शायद ही कभी पर्याप्त सटीकता है।) –

+0

प्रयास के लिए धन्यवाद, जोश के जवाब को चुना क्योंकि यह मेरे सभी मुद्दों को हल करता है। @DWin - मैंने 3 अंक निर्दिष्ट किए हैं क्योंकि सारांश अंक 2 अंकों तक हैं - मेरे पास एक बहुत बड़ा डेटासेट है और मैंने अभी तक दशमलव की मात्रा पर निर्णय नहीं लिया है, हालांकि मैं पूरी तरह से सहमत हूं कि कई दशमलव आंकड़ों की झूठी धारणा को अधिक सटीक मानते हैं वो हैं। –

संबंधित मुद्दे