首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用texreg (或类似)为集群标准错误函数(cl)输出生成回归表

使用texreg (或类似)为集群标准错误函数(cl)输出生成回归表
EN

Stack Overflow用户
提问于 2013-10-17 05:15:35
回答 1查看 4.1K关注 0票数 3

我一直在使用优秀的包texreg来从合适的模型对象生成现成的回归表,但它似乎与调整集群标准错误的各种函数不兼容。一些假数据和代码给出了一个例子和错误信息下面。

对于如何获得我想要的输出(类似于我从texreg获得的输出),有什么想法吗?

代码语言:javascript
复制
x  = rnorm(1000)
IDs = ceiling(seq(from = .1, to = 10,length.out=1000))
s = c(rep(rnorm(1),100),rep(rnorm(1),100),rep(rnorm(1),100),rep(rnorm(1),100),rep(rnorm(1),100),rep(rnorm(1),100),rep(rnorm(1),100),rep(rnorm(1),100),rep(rnorm(1),100),rep(rnorm(1),100))
y = 3*x + 1.5^(IDs)*rnorm(n=1000,sd=s^2)*x + rnorm(1000)*.3
IDs = as.factor(IDs)
d = data.frame(x,IDs,y)
m = lm(y~IDs+x,data=d)
summary(m)

library(texreg)
texreg(m,omit.coef="IDs")

\begin{table}
\begin{center}
\begin{tabular}{l c }
\hline
            & Model 1 \\
\hline
(Intercept) & $0.12$       \\
            & $(4.50)$     \\
x           & $5.28^{***}$ \\
            & $(1.41)$     \\
\hline
R$^2$       & 0.02         \\
Adj. R$^2$  & 0.01         \\
Num. obs.   & 1000         \\
\hline
\multicolumn{2}{l}{\scriptsize{\textsuperscript{***}$p<0.001$, 
  \textsuperscript{**}$p<0.01$, 
  \textsuperscript{*}$p<0.05$}}
\end{tabular}
\caption{Statistical models}
\label{table:coefficients}
\end{center}
\end{table}

cl   <- function(dat,fm, cluster){
           cluster = as.numeric(cluster)
       attach(dat, warn.conflicts = F)
           library(sandwich)
        library(lmtest)
           M <- length(unique(cluster))
           N <- length(cluster)
           K <- fm$rank
           dfc <- (M/(M-1))*((N-1)/(N-K))
           uj  <- apply(estfun(fm),2, function(x) tapply(x, cluster, sum));
           vcovCL <- dfc*sandwich(fm, meat=crossprod(uj)/N)
           coeftest(fm, vcovCL) }

result = cl(d,m,IDs)
texreg(result,omit.coef="IDs")

错误(函数(类、fdef、mtable):无法找到用于签名‘coeftest’的函数‘提取’的继承方法

EN

回答 1

Stack Overflow用户

发布于 2013-10-17 07:10:16

一揽子方案第5.5节提供了一个解决办法。该软件包已作为一篇文章发表在“统计软件杂志”上。它可以在这里找到:http://www.jstatsoft.org/v55/i08/

更具体地说,健壮的标准错误和p值必须从result矩阵中提取出来,并通过override.seoverride.pval参数传递给texreg

代码语言:javascript
复制
se <- result[, 2]
pval <- result[, 4]
screenreg(    # display the results in the R console
    m, 
    omit.coef = "IDs", 
    override.se = se, 
    override.pval = pval
)
texreg(       # for LaTeX output
    m, 
    omit.coef = "IDs", 
    override.se = se, 
    override.pval = pval
)

另一种方法是从原始模型中提取系数,将它们保存到texreg对象中,操作该对象,然后将其交给texreg函数:

代码语言:javascript
复制
tr <- extract(m)
tr@pvalues <- result[, 4]
tr@se <- result[, 2]
screenreg(tr)  # or texreg including your original arguments...
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19418774

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档