Werden wir Helden für einen Tag

Home | About | Archive

R, Latex

Posted on Mar 12, 2009 by Chung-hong Chan

很多人覺得 SPSS 列出的結果較 R 美麗。根本 R 就不會列出一大堆結果,完全採用 KISS 原則。 ((我在 JPRCC 寫過一期 Statistical Corner 講 KISS ,當時寫出的解譯是 Keep It Small and Simple 。其實根本不是這個解,只是尺度問題不想冒犯地位高尚的醫生讀者。有認知 UNIX 設計概念的人應該知道, KISS 其實解 Keep It Simple, Stupid! ))
例如做一個 Generalized Linear Model , SPSS 彈出來的結果是一大版,我們再在這一大版東西找出你想要的數字。 R 不是,它的特性是:


> model1 < - glm(cbind(ncases, ncontrols) ~ agegp + tobgp * alcgp, data = esoph, family = binomial())
>

是不會彈出任何結果的。這種反應,完全像 UNIX 。對 UNIX 有認識的人都知道,就算你輸入 UNIX 的剷機指令 rm -rf / 都不會有任何的多餘反應,只會在完成剷機工作後,跳行。

unix_kiss

亦因為設計概念像 UNIX , R 的哲學也很 UNIX 。 UNIX 習慣將一個指令的結果使用 Pipeline 或 Redirection 的方法送交另一個指令處理,例如:


ls -l | less

就是將 ls -l (詳細列出檔案列表)結果,送交 less 指令(一個有搜尋及逐頁觀看功能的閱讀器)處理。改善 ls -l 長篇大論的問題。

R 也有相關的設計。例如上面建立的 model1 ,我們可以轉到 summary() 指令處理。如 summary(model1) 。如只想看 regression coefficient ,可用 coef(model1) ,之類之類。
我認為最有趣莫過於這個:


> library("xtable") # install xtable library if you don't
> print(xtable(model1,label="GLM for esoph data", digits=3))
% latex table generated in R 2.6.2 by xtable 1.5-2 package
% Thu Mar 12 13:07:13 2009
\begin{table}[ht]
\begin{center}
\begin{tabular}{rrrrr}
\hline
& Estimate & Std. Error & z value & Pr($>$$|$z$|$) \\
\hline
(Intercept) & $-$1.760 & 0.198 & $-$8.878 & 0.000 \\
agegp.L & 2.996 & 0.654 & 4.583 & 0.000 \\
agegp.Q & $-$1.350 & 0.592 & $-$2.281 & 0.023 \\
agegp.C & 0.134 & 0.451 & 0.298 & 0.766 \\
agegp\verb|^|4 & 0.071 & 0.310 & 0.229 & 0.819 \\
agegp\verb|^|5 & $-$0.213 & 0.196 & $-$1.088 & 0.277 \\
tobgp.L & 0.638 & 0.197 & 3.239 & 0.001 \\
tobgp.Q & 0.029 & 0.196 & 0.149 & 0.882 \\
tobgp.C & 0.156 & 0.198 & 0.788 & 0.430 \\
alcgp.L & 1.371 & 0.211 & 6.485 & 0.000 \\
alcgp.Q & $-$0.149 & 0.196 & $-$0.759 & 0.448 \\
alcgp.C & 0.228 & 0.182 & 1.254 & 0.210 \\
tobgp.L:alcgp.L & $-$0.704 & 0.411 & $-$1.712 & 0.087 \\
tobgp.Q:alcgp.L & 0.122 & 0.420 & 0.291 & 0.771 \\
tobgp.C:alcgp.L & $-$0.292 & 0.429 & $-$0.680 & 0.497 \\
tobgp.L:alcgp.Q & 0.129 & 0.389 & 0.333 & 0.739 \\
tobgp.Q:alcgp.Q & $-$0.445 & 0.392 & $-$1.135 & 0.256 \\
tobgp.C:alcgp.Q & $-$0.052 & 0.395 & $-$0.132 & 0.895 \\
tobgp.L:alcgp.C & $-$0.161 & 0.367 & $-$0.439 & 0.661 \\
tobgp.Q:alcgp.C & 0.048 & 0.362 & 0.134 & 0.894 \\
tobgp.C:alcgp.C & $-$0.139 & 0.358 & $-$0.389 & 0.697 \\
\hline
\end{tabular}
\label{GLM for esoph data}
\end{center}
\end{table}

那些分明就是 Latex 的 code ,可以 copy and paste 到你的 Latex 文件,進行編譯後結果是這樣的:

xtable

不喜歡 Latex 可轉成 HTML 也可:


>print(xtable(model1,label="GLM for esoph data", digits=3), type="HTML")


Powered by Jekyll and profdr theme