Приведение R-объекта felm в форму lm или другой способ его печати в таблице LaTeX. - PullRequest
0 голосов
/ 18 марта 2012

Я использую пакет lfe в R для регрессии с множеством фиксированных эффектов, поэтому о прямом lm не может быть и речи (и поскольку фиксированные эффекты не являются индивидуальными, то и plm ). Я получаю вывод без проблем, но теперь я хотел бы использовать его в таблице LaTeX. Однако ни один из пакетов, которые я пробовал (например, xtable, apsrtable, команда latex в Hmisc и т. Д.), Не имеет методов для объектов класса felm. Итак, мой вопрос, что мне делать? Есть ли способ получить доступ к lm.method и повернуть его, чтобы он мог читать felm объектов? Есть ли способ привести felm объекты в lm форму? Есть идеи?

Ответы [ 3 ]

4 голосов
/ 18 марта 2012

Возможно, что некоторые операции по пересадке на объекте Felm будут успешными. Вы несете ответственность за определение того, не создает ли такая химера насилие по отношению к важным базовым предположениям:

# with the first example in the lfe::
est <- lfe::felm(y ~ x+x2+G(id)+G(firm))
class(est) <- c("felm", "lm")
require(xtable)
 xtable(est)
#----------------
% latex table generated in R 2.14.0 by xtable 1.6-0 package
% Sun Mar 18 10:42:04 2012
\begin{table}[ht]
\begin{center}
\begin{tabular}{rrrrr}
  \hline
 & Estimate & Std. Error & t value & Pr($>$$|$t$|$) \\ 
  \hline
x & 1.0937 & 0.0971 & 11.26 & 0.0000 \\ 
  x2 & 0.4597 & 0.1177 & 3.91 & 0.0002 \\ 
   \hline
\end{tabular}
\end{center}
\end{table}

Прежде чем приступить к приживлению этого класса, я посмотрел на объект felm, чтобы увидеть, похож ли он на объект lm, и это так. Также кажется, что summary(est) возвращает вывод, который ожидал бы пользователь lm. (Это на самом деле не делает то, что вы просили. Единственное, что он делает - это позволяет функциям, нацеленным на lm, пытаться выполнять свою работу.)

Я не особо успешный пользователь методов S4, но, следуя паре ссылок на странице справки и создавая моды, это то, что я получил после игнорирования предупреждения:

 require(stats)
 setOldClass(c("felm", "lm"))
 setMethod("modelInfo", "summary.felm", function(x) {
   env <- sys.parent()
   digits <- evalq(digits, env)
   model.info <- list(
                      "$N$"=formatC(sum(x$df[1:2]),format="d"),
                      "Resid. sd" = formatC(x$sigma,format="f",digits=digits))
   class(model.info) <- "model.info"
   return(model.info)
 } )
#in method for ‘modelInfo’ with signature ‘"summary.felm"’: no definition for class “summary.felm”
#[1] "modelInfo"
 apsrtable(est,est, digits=1, align="l", 
           stars=1, model.counter=0, order="rl",
           coef.rows=1, col.hspace="3em", float="sidewaystable")
#----------------------
\begin{sidewaystable}[!ht]
\caption{}
\label{} 
\begin{tabular}{ l D{.}{.}{1}D{.}{.}{1}@{\hspace{3em}}D{.}{.}{1}D{.}{.}{1} } 
\hline 
  & \multicolumn{ 2 }{ c }{ Model 0 } & \multicolumn{ 2 }{ c }{ Model 1 } \\ \hline
 x      & 1.1 ^* & (0.1)  & 1.1 ^* & (0.1) \\ 
x2     & 0.5 ^* & (0.1)  & 0.5 ^* & (0.1)  \\
 $N$       & \multicolumn{2}{c}{172} & \multicolumn{2}{c}{172}\\ 
Resid. sd & \multicolumn{2}{c}{   } & \multicolumn{2}{c}{   } \\ \hline
 \multicolumn{5}{l}{\footnotesize{Robust standard errors in parentheses}}\\
\multicolumn{5}{l}{\footnotesize{$^*$ indicates significance at $p< 0.05 $}} 
\end{tabular} 
 \end{sidewaystable}
2 голосов
/ 04 апреля 2013

Как автор пакета lfe, я могу пролить свет на это.Это правда, что felm-объект имитирует lm-объект, но с некоторыми отличиями.

Не содержит копию матрицы данных.Пакет lfe предназначен для очень больших наборов данных в классе гигабайтов.Таким образом, были предприняты некоторые усилия для сохранения памяти.Другое отличие состоит в том, что объект felm не содержит информацию о ранге системы так же, как lm, ни qr-разложении, используемом lm.Фельм не использует qr-разложение, и ранг может быть несколько сложным делом.В результате некоторые стандартные методы будут работать с объектами felm, а другие - нет.В ранней версии lfe фактически был «lm» как унаследованный класс для «felm», но, поскольку это создает впечатление, что это на самом деле объект lm, я удалил его.

1 голос
/ 22 августа 2018

Немного опоздал на эту вечеринку, но я рекомендую использовать пакет stargazer для получения вывода LaTeX из пакетов регрессии.Stargazer хорошо работает на felm объектах (равно как и на других lm и т. Д.).

Вы можете найти посылку через CRAN здесь .

...