2015-05-03 2 views
0

У меня возникли проблемы с использованием texreg для создания вывода TeX файлов для нескольких моделей multinom.texreg-ing несколько многомодовых моделей

Давайте использовать версию this multionmial установки логит для конкретности:

library(foreign) 
library(nnet) 
library(data.table) 
ml <- data.table(read.dta("http://www.ats.ucla.edu/stat/data/hsbdemo.dta")) 

mnl<-lapply(c(model1="male",model2="female"), 
      function(x){multinom(prog ~ ses + write, 
           data = ml[female==x,])}) 

Я хочу создать две таблицы: один для коэффициентов, соответствующих «академической» и один соответствующий «призвание» (третий результат prog, «общий», опущен).

В принципе, я не знаю, как отдельно получить доступ к уровням от объекта nnet/multinom, потому что я не знаю, где хранятся коэффициенты. Если мы просто запустить texreg(mnl), мы получим таблицу с 4-мя колонками:

model1 & model2 & NA & NA \\ 

Что еще хуже, эти столбцы помечаются - фактический порядок

model1-academic, model1-vocation, model2-academic, model2-vocation 

Если я просто хотел таблицу мужчину и таблицу женских коэффициентов, я бы просто запустил texreg(mnl["model1"]) и texreg(mnl["model2"]), но неясно, как разбить коэффициенты на уровни prog.

Как я могу использовать texreg, чтобы получить две таблицу, я хочу, что (скелет) выглядят как:

#TABLE 1: ACADEMIC 
> cbind(male=coef(mnl[["model1"]])[1,], 
+  female=coef(mnl[["model2"]])[1,]) 
        male  female 
(Intercept) -3.23410968 -3.01401061 
sesmiddle 1.15893835 0.17086744 
seshigh  2.00007946 0.57690699 
write  0.05464579 0.06598217 

#TABLE 2: VOCATION 
> cbind(male=coef(mnl[["model1"]])[2,], 
+  female=coef(mnl[["model2"]])[2,]) 
        male  female 
(Intercept) 3.69215046 1.57234796 
sesmiddle 1.15573930 0.69043245 
seshigh  0.67476976 -0.16955825 
write  -0.09640053 -0.03412729 
+0

Может быть, я не понимая ваш вопрос. Если вам нужна отдельная таблица для каждой регрессии, почему бы не просто texreg (model1), а затем texreg (model2)? – Alex

+0

Сделано крупное редактирование с рабочим примером для конкретности. Надеюсь, теперь это ясно. – MichaelChirico

ответ

0

связались с разработчиком пакета профессора Филиппом Ляйфельдом, и он так любезно добавил функциональные возможности для обработки именно эта проблема до texreg, в частности, добавление двух опций: levels и beside, для упаковки версии 1.35.1 (у него возникают некоторые проблемы с его зеркальным отображением на CRAN, но скоро он будет обновлен - я могу отправить вам tar.gz пакета если вам это нужно в то же время).

Ответ на мой первоначальный вопрос достигается через levels:

texreg(mnl,levels="vocation") 
texreg(mnl,levels="academic") 

\begin{table} 
\begin{center} 
\begin{tabular}{l c c } 
\hline 
       & vocation & vocation \\ 
\hline 
(Intercept)  & $3.69^{*}$ & $1.57$ \\ 
       & $(1.77)$ & $(1.84)$ \\ 
sesmiddle  & $1.16$  & $0.69$ \\ 
       & $(0.79)$ & $(0.65)$ \\ 
seshigh   & $0.67$  & $-0.17$ \\ 
       & $(0.99)$ & $(0.91)$ \\ 
write   & $-0.10^{*}$ & $-0.03$ \\ 
       & $(0.04)$ & $(0.04)$ \\ 
\hline 
AIC    & 167.56  & 218.73 \\ 
BIC    & 187.65  & 240.26 \\ 
Log\ Likelihood & -75.78  & -101.36 \\ 
Deviance  & 151.56  & 202.73 \\ 
Num.\ obs.  & 91   & 109  \\ 
\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} 

(я подавить вывод из "academic" для экономии места, но вы получите точку).

Функциональность beside работает немного по-другому, вместо укладки коэффициентов, если это то, что подходит вашей фантазии:

\begin{table} 
\begin{center} 
\begin{tabular}{l c c } 
\hline 
         & model1 & model2 \\ 
\hline 
academic: (Intercept) & $-3.23$  & $-3.01$ \\ 
         & $(1.66)$ & $(1.82)$ \\ 
academic: sesmiddle & $1.16$  & $0.17$  \\ 
         & $(0.75)$ & $(0.58)$ \\ 
academic: seshigh  & $2.00^{*}$ & $0.58$  \\ 
         & $(0.85)$ & $(0.69)$ \\ 
academic: write  & $0.05$  & $0.07^{*}$ \\ 
         & $(0.03)$ & $(0.03)$ \\ 
vocation: (Intercept) & $3.69^{*}$ & $1.57$  \\ 
         & $(1.77)$ & $(1.84)$ \\ 
vocation: sesmiddle & $1.16$  & $0.69$  \\ 
         & $(0.79)$ & $(0.65)$ \\ 
vocation: seshigh  & $0.67$  & $-0.17$ \\ 
         & $(0.99)$ & $(0.91)$ \\ 
vocation: write  & $-0.10^{*}$ & $-0.03$ \\ 
         & $(0.04)$ & $(0.04)$ \\ 
\hline 
AIC     & 167.56  & 218.73  \\ 
BIC     & 187.65  & 240.26  \\ 
Log\ Likelihood  & -75.78  & -101.36 \\ 
Deviance    & 151.56  & 202.73  \\ 
Num.\ obs.   & 91   & 109  \\ 
\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} 
Смежные вопросы