2016-04-13 51 views
2

我正在使用coda程序包來計算我的MCMC的彙總統計信息。但是,似乎沒有將打印的摘要轉換爲Latex表的選項。我試過stargazer,並強制summary.mcmc結果到一個數據幀。兩次嘗試都失敗了。如何將MCMC診斷轉換爲Latex表?

這裏有一個重複的例子:

library(coda) 
mock_mcmc <- mcmc(rnorm(1000)) 
summary(mock_mcmc) 

summary.mcmc會打印出

1. Empirical mean and standard deviation for each variable, 
    plus standard error of the mean: 

      Mean    SD  Naive SE Time-series SE 
     0.03180  0.98715  0.03122  0.03368 

2. Quantiles for each variable: 

    2.5%  25%  50%  75% 97.5% 
-1.89794 -0.65289 0.02952 0.67396 1.97158 

怎麼做的結果表爲乳膠文件I輸出?我明白可以手動計算彙總統計數據,但我很好奇是否有一個我不知道的結尾的方便功能。

+0

您要在此表中究竟做什麼?你應該包括一個[可重現的例子](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)以及樣本輸入和期望的輸出。對於企圖失敗的原因也要更加明確。 – MrFlick

+0

我已經添加了一個示例。 – Heisenberg

回答

0

我不知道是否有辦法在尾波做到這一點。下面的方法通過將對象轉換爲數據框然後重新運行xtable來定義mcmc對象的xtable方法。

library(coda) 
library(dplyr) 
library(magrittr) 
library(xtable) 

xtable.summary.mcmc = function(x, ...) 
    x %>% 
    use_series(statistics) %>% 
    c(x %>% 
     use_series(quantiles)) %>% 
    as.list %>% 
    dplyr::as_data_frame() %>% 
    xtable(...) 

1000 %>% 
    rnorm %>% 
    mcmc %>% 
    summary %>% 
    xtable      
+0

你能解釋一下這裏發生了什麼嗎? –

+0

好的,請參閱添加說明 – bramtayl

+3

最後幾行的內容是'xtable(summary(mcmc(rnorm(1000))))' – Spacedman

0

關鍵是從輸出中提取相關數量。要找到合適的數量,請使用R.中的names()函數。

library(coda) 
library(xtable) 

mock_mcmc = mcmc(rnorm(1000)) 
s = summary(mock_mcmc) 

stats_table = xtable(as.data.frame(t(s$statistics))) 
quant_table = xtable(as.data.frame(t(s$quantiles))) 

print(stats_table, file="stats_table.tex") 
print(quant_table, file="quant_table.tex")