R analiz sonuçlarını LaTeX'e çevirmek
Bu notta (bir okuyucunun talebi üzerine) R analiz sonuçlarının LaTeX formatına çevrilmesini ele alacağım. Bu işlem için hazırlanmış pek çok R paketi mevcut. En bilinenlerden birisi xtable. Bir önceki notta paylaştığım MS Word formatına aktarma işlemini gerçekleştiren fonksiyonda ufak değişiklikler yaparak LaTeX formatında çıktı alabiliriz:
library(e1071)
library(xtable)
apadesc <- function(x){
desc <- function(x) {
funs <- c(min, max, mean, median, sd, mad, skewness, kurtosis)
lapply(funs, function(f) round(f(x, na.rm = TRUE), digits = 2))
}
x <- x[unlist(lapply(x, is.numeric))]
destats <- t(sapply(x, desc))
dimnames(destats)[[2]] <- c("min", "max", "mean", "median", "sd", "mad", "skew", "kurtosis")
dfdestats <- as.data.frame(destats)
xtable(dfdestats, caption = "Betimsel İstatistikler")
}
apadesc(mtcars)
## % latex table generated in R 4.0.3 by xtable 1.8-4 package
## % Sun Jan 10 18:33:45 2021
## \begin{table}[ht]
## \centering
## \begin{tabular}{rrrrrrrrr}
## \hline
## & min & max & mean & median & sd & mad & skew & kurtosis \\
## \hline
## mpg & 10.40 & 33.90 & 20.09 & 19.20 & 6.03 & 5.41 & 0.61 & -0.37 \\
## cyl & 4.00 & 8.00 & 6.19 & 6.00 & 1.79 & 2.97 & -0.17 & -1.76 \\
## disp & 71.10 & 472.00 & 230.72 & 196.30 & 123.94 & 140.48 & 0.38 & -1.21 \\
## hp & 52.00 & 335.00 & 146.69 & 123.00 & 68.56 & 77.10 & 0.73 & -0.14 \\
## drat & 2.76 & 4.93 & 3.60 & 3.70 & 0.53 & 0.70 & 0.27 & -0.71 \\
## wt & 1.51 & 5.42 & 3.22 & 3.33 & 0.98 & 0.77 & 0.42 & -0.02 \\
## qsec & 14.50 & 22.90 & 17.85 & 17.71 & 1.79 & 1.42 & 0.37 & 0.34 \\
## vs & 0.00 & 1.00 & 0.44 & 0.00 & 0.50 & 0.00 & 0.24 & -2.00 \\
## am & 0.00 & 1.00 & 0.41 & 0.00 & 0.50 & 0.00 & 0.36 & -1.92 \\
## gear & 3.00 & 5.00 & 3.69 & 4.00 & 0.74 & 1.48 & 0.53 & -1.07 \\
## carb & 1.00 & 8.00 & 2.81 & 2.00 & 1.62 & 1.48 & 1.05 & 1.26 \\
## \hline
## \end{tabular}
## \caption{Betimsel İstatistikler}
## \end{table}
Fonksiyonun verdiği LaTeX çıktısını .tex dökümanımıza yapıştırıp derlerseniz aşağıdaki tabloyu elde edersiniz:
xtable paketinde pek fazla format seçeneği olmadığından çıktıyı istediğimiz biçime sokmak için LaTeX kodu üzerinde çalışmak gerekiyor.
Kullanımı kolay diğer bir LaTeX paketi de stargazer. Verisetinin (data frame olmalı) betimsel istatistiklerini hesaplamak için aşağıdaki kod yeterli:
library(stargazer)
##
## Please cite as:
## Hlavac, Marek (2018). stargazer: Well-Formatted Regression and Summary Statistics Tables.
## R package version 5.2.2. https://CRAN.R-project.org/package=stargazer
stargazer(mtcars, title = "Betimsel İstatistikler")
##
## % Table created by stargazer v.5.2.2 by Marek Hlavac, Harvard University. E-mail: hlavac at fas.harvard.edu
## % Date and time: Sun, Jan 10, 2021 - 18:33:45
## \begin{table}[!htbp] \centering
## \caption{Betimsel İstatistikler}
## \label{}
## \begin{tabular}{@{\extracolsep{5pt}}lccccccc}
## \\[-1.8ex]\hline
## \hline \\[-1.8ex]
## Statistic & \multicolumn{1}{c}{N} & \multicolumn{1}{c}{Mean} & \multicolumn{1}{c}{St. Dev.} & \multicolumn{1}{c}{Min} & \multicolumn{1}{c}{Pctl(25)} & \multicolumn{1}{c}{Pctl(75)} & \multicolumn{1}{c}{Max} \\
## \hline \\[-1.8ex]
## mpg & 32 & 20.091 & 6.027 & 10 & 15.4 & 22.8 & 34 \\
## cyl & 32 & 6.188 & 1.786 & 4 & 4 & 8 & 8 \\
## disp & 32 & 230.722 & 123.939 & 71 & 120.8 & 326 & 472 \\
## hp & 32 & 146.688 & 68.563 & 52 & 96.5 & 180 & 335 \\
## drat & 32 & 3.597 & 0.535 & 2.760 & 3.080 & 3.920 & 4.930 \\
## wt & 32 & 3.217 & 0.978 & 1.513 & 2.581 & 3.610 & 5.424 \\
## qsec & 32 & 17.849 & 1.787 & 14.500 & 16.892 & 18.900 & 22.900 \\
## vs & 32 & 0.438 & 0.504 & 0 & 0 & 1 & 1 \\
## am & 32 & 0.406 & 0.499 & 0 & 0 & 1 & 1 \\
## gear & 32 & 3.688 & 0.738 & 3 & 3 & 4 & 5 \\
## carb & 32 & 2.812 & 1.615 & 1 & 2 & 4 & 8 \\
## \hline \\[-1.8ex]
## \end{tabular}
## \end{table}
Yine tabloyu formatlamak için LaTeX tarafında çalışmak gerekiyor. Diğer yandan yukarıdaki kodla tabloda verilenden farklı bir istatistik üretmemiz mümkün değil. Eğer başka istatistiklere ihtiyacımız varsa bunun için kod yazmalıyız. Mesela yukarıda kullandığımız apadesc fonksiyonunun son satırında yer alan xtable(dfdestats, caption = "Betimsel İstatistikler")yerine
stargazer(dfdestats, summary = FALSE,
column.labels = dimnames(destats)[[2]], rownames = TRUE)
yazarak aynı tabloyu üretebiliriz.
Her iki paket te doğrusal regresyon modeli gibi farklı analizlerin sonuçlarını içeren nesneleri algılayarak tablo üretebilmektedir:
dmodel <- with(mtcars, lm(mpg ~ disp + wt))
xtable(dmodel)
## % latex table generated in R 4.0.3 by xtable 1.8-4 package
## % Sun Jan 10 18:33:45 2021
## \begin{table}[ht]
## \centering
## \begin{tabular}{rrrrr}
## \hline
## & Estimate & Std. Error & t value & Pr($>$$|$t$|$) \\
## \hline
## (Intercept) & 34.9606 & 2.1645 & 16.15 & 0.0000 \\
## disp & -0.0177 & 0.0092 & -1.93 & 0.0636 \\
## wt & -3.3508 & 1.1641 & -2.88 & 0.0074 \\
## \hline
## \end{tabular}
## \end{table}
stargazer(dmodel)
##
## % Table created by stargazer v.5.2.2 by Marek Hlavac, Harvard University. E-mail: hlavac at fas.harvard.edu
## % Date and time: Sun, Jan 10, 2021 - 18:33:45
## \begin{table}[!htbp] \centering
## \caption{}
## \label{}
## \begin{tabular}{@{\extracolsep{5pt}}lc}
## \\[-1.8ex]\hline
## \hline \\[-1.8ex]
## & \multicolumn{1}{c}{\textit{Dependent variable:}} \\
## \cline{2-2}
## \\[-1.8ex] & mpg \\
## \hline \\[-1.8ex]
## disp & $-$0.018$^{*}$ \\
## & (0.009) \\
## & \\
## wt & $-$3.351$^{***}$ \\
## & (1.164) \\
## & \\
## Constant & 34.961$^{***}$ \\
## & (2.165) \\
## & \\
## \hline \\[-1.8ex]
## Observations & 32 \\
## R$^{2}$ & 0.781 \\
## Adjusted R$^{2}$ & 0.766 \\
## Residual Std. Error & 2.917 (df = 29) \\
## F Statistic & 51.689$^{***}$ (df = 2; 29) \\
## \hline
## \hline \\[-1.8ex]
## \textit{Note:} & \multicolumn{1}{r}{$^{*}$p$<$0.1; $^{**}$p$<$0.05; $^{***}$p$<$0.01} \\
## \end{tabular}
## \end{table}
Sonuç olarak, R çıktılarını LaTeX formatına çeviren paketler bizi rakamları teker teker aktarmak zahmetinden kurtarmakta. Ancak “tam da istediğimiz gibi” tablolar oluşturmak için bu sefer de elimizi LaTeX koduna bulaştırmamız gerekiyor.