Выход квантильной регрессии в LATEX с использованием R
У меня есть эта квантильная регрессия, с этими taus
:.
taus <-c(.05,.10,.15,.20,.25,.30,.35,.40,.45,.50,.55,.60,.65,.70,.75,.80,.85,.90,.95)
fit1_List<-list()
for(i in 1:length(taus)) {
fit1_List[[i]]<-rq(foodexp~xx,tau =taus[i],method="br")
}
Я хочу построить таблицу, используя stargazer
stargazer(fit1_List,
intercept.bottom = FALSE,
rq.se="nid",ci=TRUE, ci.level=0.90,
style = "qje",
title="Quantile Regression Results", align=TRUE,
dep.var.caption = "",model.numbers = TRUE
, t.auto = TRUE, p.auto = TRUE,
font.size="scriptsize", keep.stat="aic",
dep.var.labels = "",multicolumn = TRUE
,dep.var.labels.include = TRUE)
Результат:
\begin{table}[!htbp] \centering
\caption{Quantile Regression Results}
\label{}
\scriptsize
\begin{tabular}{@{\extracolsep{5pt}}lD{.}{.}{-3} D{.}{.}{-3} D{.}{.}{-3} D{.}{.}{-3} D{.}{.}{-3} D{.}{.}{-3} D{.}{.}{-3} D{.}{.}{-3} D{.}{.}{-3} D{.}{.}{-3} D{.}{.}{-3} D{.}{.}{-3} D{.}{.}{-3} D{.}{.}{-3} D{.}{.}{-3} D{.}{.}{-3} D{.}{.}{-3} D{.}{.}{-3} D{.}{.}{-3} }
\\[-1.8ex]\hline
\hline \\[-1.8ex]
\\[-1.8ex] & \multicolumn{19}{c}{} \\
\\[-1.8ex] & \multicolumn{1}{c}{(1)} & \multicolumn{1}{c}{(2)} & \multicolumn{1}{c}{(3)} & \multicolumn{1}{c}{(4)} & \multicolumn{1}{c}{(5)} & \multicolumn{1}{c}{(6)} & \multicolumn{1}{c}{(7)} & \multicolumn{1}{c}{(8)} & \multicolumn{1}{c}{(9)} & \multicolumn{1}{c}{(10)} & \multicolumn{1}{c}{(11)} & \multicolumn{1}{c}{(12)} & \multicolumn{1}{c}{(13)} & \multicolumn{1}{c}{(14)} & \multicolumn{1}{c}{(15)} & \multicolumn{1}{c}{(16)} & \multicolumn{1}{c}{(17)} & \multicolumn{1}{c}{(18)} & \multicolumn{1}{c}{(19)}\\
\hline \\[-1.8ex]
Constant & 462.223^{***} & 504.866^{***} & 527.975^{***} & 541.381^{***} & 561.277^{***} & 571.916^{***} & 586.173^{***} & 602.919^{***} & 623.829^{***} & 631.845^{***} & 645.349^{***} & 655.283^{***} & 668.013^{***} & 677.463^{***} & 695.123^{***} & 705.958^{***} & 717.999^{***} & 741.622^{***} & 760.745^{***} \\
& \multicolumn{1}{c}{(431.899$, $492.548)} & \multicolumn{1}{c}{(481.055$, $528.677)} & \multicolumn{1}{c}{(507.211$, $548.740)} & \multicolumn{1}{c}{(523.405$, $559.357)} & \multicolumn{1}{c}{(544.158$, $578.396)} & \multicolumn{1}{c}{(554.395$, $589.437)} & \multicolumn{1}{c}{(567.408$, $604.938)} & \multicolumn{1}{c}{(585.782$, $620.056)} & \multicolumn{1}{c}{(606.506$, $641.152)} & \multicolumn{1}{c}{(614.249$, $649.440)} & \multicolumn{1}{c}{(627.930$, $662.768)} & \multicolumn{1}{c}{(640.077$, $670.489)} & \multicolumn{1}{c}{(651.814$, $684.211)} & \multicolumn{1}{c}{(663.463$, $691.464)} & \multicolumn{1}{c}{(681.002$, $709.245)} & \multicolumn{1}{c}{(690.350$, $721.566)} & \multicolumn{1}{c}{(704.852$, $731.146)} & \multicolumn{1}{c}{(725.196$, $758.047)} & \multicolumn{1}{c}{(749.225$, $772.265)} \\
& & & & & & & & & & & & & & & & & & & \\
xx & 0.343^{***} & 0.402^{***} & 0.424^{***} & 0.447^{***} & 0.474^{***} & 0.481^{***} & 0.489^{***} & 0.510^{***} & 0.552^{***} & 0.560^{***} & 0.566^{***} & 0.586^{***} & 0.605^{***} & 0.609^{***} & 0.644^{***} & 0.660^{***} & 0.678^{***} & 0.686^{***} & 0.709^{***} \\
& \multicolumn{1}{c}{(0.261$, $0.425)} & \multicolumn{1}{c}{(0.336$, $0.468)} & \multicolumn{1}{c}{(0.366$, $0.482)} & \multicolumn{1}{c}{(0.398$, $0.496)} & \multicolumn{1}{c}{(0.426$, $0.522)} & \multicolumn{1}{c}{(0.432$, $0.530)} & \multicolumn{1}{c}{(0.439$, $0.539)} & \multicolumn{1}{c}{(0.462$, $0.558)} & \multicolumn{1}{c}{(0.505$, $0.600)} & \multicolumn{1}{c}{(0.514$, $0.607)} & \multicolumn{1}{c}{(0.519$, $0.612)} & \multicolumn{1}{c}{(0.545$, $0.627)} & \multicolumn{1}{c}{(0.565$, $0.644)} & \multicolumn{1}{c}{(0.573$, $0.645)} & \multicolumn{1}{c}{(0.606$, $0.682)} & \multicolumn{1}{c}{(0.616$, $0.703)} & \multicolumn{1}{c}{(0.640$, $0.715)} & \multicolumn{1}{c}{(0.639$, $0.733)} & \multicolumn{1}{c}{(0.680$, $0.739)} \\
& & & & & & & & & & & & & & & & & & & \\
\hline
\hline \\[-1.8ex]
\textit{Notes:} & \multicolumn{19}{r}{$^{***}$Significant at the 1 percent level.} \\
& \multicolumn{19}{r}{$^{**}$Significant at the 5 percent level.} \\
& \multicolumn{19}{r}{$^{*}$Significant at the 10 percent level.} \\
\end{tabular}
\end{table}
Как видите, формат горизонтальный. Как я положил вертикально? То есть в итоге у меня будет только две колонки.
И самое главное, сохраняйте значение Звездочки.
1 ответ
Я не думаю, что есть простой способ сделать это с stargazer
, Как stargazer
пользователь, я создал несколько пользовательских функций для обобщения этих пакетов, которые после дополнительного кодирования приведут вас к чему-то близкому к желаемому результату.
Например,
taus <-c(.05,.10,.15,.20,.25,.30,.35,.40,.45,.50,.55,.60,.65,.70,.75,.80,.85,.90,.95)
fit1_List<-list()
#First I save all the coef and test statistics from the specifications. Notice I use the iris data set since you did not provide data.
MYcoef <- matrix(NA, nrow = length(taus), ncol = 2)
MYteststat <- matrix(NA, nrow = length(taus), ncol = 2)
for(i in 1:length(taus)) {
res <- rq(iris$Sepal.Length ~ iris$Sepal.Width, tau = taus[i], method = "br")
MYcoef[i, ] <- res$coef
MYteststat[i, ] <- summary(res, se = "nid")$coef[, 3]
}
#Then utilize my user defined function, myStars, to star all the coefficients. This little function is really helpful and I use it all the time when reporting results.
myStars <- function(testStat, cval, sig_dig, coef = FALSE, coefValue = NULL){
testStat<- round(testStat, sig_dig)
if(!is.matrix(testStat))
test <- matrix(testStat, length(cval), 1)
if(!is.matrix(cval))
cval <- matrix(cval, 1, length(cval))
test <- matrix(rep(testStat, ncol(cval)),nrow(cval), ncol(cval))
starCount <- rowSums(abs(test) > abs(cval))
stars <- sapply(starCount, function(x) paste(rep("*", x), collapse = ""))
if(coef)
paste0(round(coefValue, sig_dig), stars)
else
paste0(testStat, stars)
}
#I don't know much about QR, however, I suspect the critical values are incorrect below.
MYcoefStars <- matrix(NA, nrow = length(taus), ncol = 2)
for(i in 1:nrow(MYcoef)){
for(j in 1:ncol(MYcoef)){
MYcoefStars[i,j] <- myStars(MYteststat[i, j], c(1.64, 1.96, 2.33), 2, coef = TRUE, coefValue = MYcoef[i, j])
}
}
#Finally, I've starred all the coefficients, however, stargazer is going to interpret the asterisk as a undesirable latex character. The below user defined function fixStar, as its names suggests, fixes this. It is essentially a wrapper for stargazer, so you can pass it any stargazer argument you like.
fixStar <- function(x,...){
tbl <- capture.output(stargazer(x, ...))
undo <- gsub("\\\\textasteriskcentered", "*", tbl)
restar <- gsub("* * *", "${}^{***}$", undo, fixed = TRUE)
restar <- gsub("* *", "${}^{**}$", restar, fixed = TRUE)
restar <- gsub("* ", "${}^{*}$", restar, fixed = TRUE)
cat(restar, sep="\n")
}
fixStar(MYcoefStars)
Это должно дать вам большую часть пути туда. Форматирование таблицы потребует работы, и может потребоваться некоторое кодирование в латексе. При этом, я думаю, что две вышеуказанные пользовательские функции могут быть полезны stargazer
пользователь.