[英]R :How to get a proper latex regression table from a dataframe?
考慮以下示例
inds <- c('var1','','var2','')
model1 <- c(10.2,0.00,0.02,0.3)
model2 <- c(11.2,0.01,0.02,0.023)
df = df=data.frame(inds,model1,model2)
df
inds model1 model2
var1 10.20 11.200
0.00 0.010
var2 0.02 0.020
0.30 0.023
在這里,您可以得到帶有系數和P值的自定義回歸模型的輸出(實際上,如果需要說系數的標准誤差,我可以顯示任何其他統計信息)。
有兩個變量, var1
和var2
。
例如,在model1中, var1
的系數為10.2
,P值為0.00
而var2
的系數為0.02
,P值為0.30
。
是否有一個程序包可以自動處理這些(自定義)表格,並可以創建一個帶有星號的整潔的Latex表格以提高重要性?
謝謝!
這是使用texreg
的解決方案。
注意, texreg
> = 1.36.18是必需的。
您在數據框中提供的信息(系數和p值)可以以任意方式在數據框中排列。 因此,我們需要編寫代碼以從數據框中的適當位置選擇這些數據,並使用它們來創建texreg
對象。 當您請求通用(可能是可重用)的解決方案時,我們應該將代碼包裝在可重用函數中。 我將這個函數extractFromDataFrame
。 因此,這里是函數,該函數從數據框中提取信息並為不同模型創建texreg
對象的列表:
require("texreg")
extractFromDataFrame <- function (dataFrame) {
coef.row.indices <- seq(1, nrow(dataFrame) - 1, 2)
pval.row.indices <- seq(2, nrow(dataFrame), 2)
texregObjects <- list()
for (i in 2:ncol(dataFrame)) {
coefs <- dataFrame[coef.row.indices, i]
coefnames <- as.character(dataFrame[coef.row.indices, 1])
pvalues <- dataFrame[pval.row.indices, i]
tr <- createTexreg(coef = coefs, coef.names = coefnames, pvalues = pvalues)
texregObjects[i - 1] <- list(tr)
}
return(texregObjects)
}
在此函數中,我們首先定義系數存儲在數據幀的哪些行中以及p值存儲在哪些行中。 然后,我們創建了一個空列表,用於存儲texreg
對象。 我們遍歷所有列,但第一列只包含標簽。 在每個模型列中,我們保存系數,它們的名稱和p值,然后將它們移交給createTexreg
構造函數,該函數是一個根據數據為我們創建texreg
對象的函數。 我們將texreg
對象添加到列表中。 最后,我們返回texreg
對象的列表。
現在,我們可以將該函數應用於任何具有任意列數(> 1)的數據框,該數據框看起來像問題中提供的數據框一樣。 在這種情況下,將函數應用於df
對象后,如果我們想確保我們做對了所有事情,我們可能希望打印列表的內容:
tr <- extractFromDataFrame(df)
tr
實際上,結果包含相關數據:
[[1]]
No standard errors were defined for this texreg object.
No decimal places were defined for the GOF statistics.
coef. p
var1 10.20 0.0
var2 0.02 0.3
No GOF block defined.
[[2]]
No standard errors were defined for this texreg object.
No decimal places were defined for the GOF statistics.
coef. p
var1 11.20 0.010
var2 0.02 0.023
No GOF block defined.
現在,我們可以簡單的手的名單texreg
對象到screenreg
,例如, screenreg(tr)
結果如下:
========================
Model 1 Model 2
------------------------
var1 10.20 *** 11.20 *
var2 0.02 0.02 *
========================
*** p < 0.001, ** p < 0.01, * p < 0.05
或使用htmlreg
創建HTML表。 或者,按照原始問題的要求,使用texreg
創建LaTeX表。 texreg(tr, single.row = TRUE)
的輸出如下所示:
\begin{table}
\begin{center}
\begin{tabular}{l c c }
\hline
& Model 1 & Model 2 \\
\hline
var1 & $10.20^{***}$ & $11.20^{*}$ \\
var2 & $0.02$ & $0.02^{*}$ \\
\hline
\multicolumn{3}{l}{\scriptsize{$^{***}p<0.001$, $^{**}p<0.01$, $^*p<0.05$}}
\end{tabular}
\caption{Statistical models}
\label{table:coefficients}
\end{center}
\end{table}
可以修改此解決方案以適應標准誤差,置信區間或擬合優度統計。
各種texreg
參數可用於自定義輸出,例如,包括使用booktabs
包或通過dcolumn
進行十進制對齊。
請注意,您不應調用數據框df
因為該對象名稱已在stats
包中定義。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.