2

betareg默认残差很重,这可能会由于其大尺寸而导致分配向量的错误。这可以通过更改调用type中的残差来解决,如此所述。summary

但是,当呈现带有 的回归表时stargazer,无法明确设置残差的类型。

有没有办法让(大)betareg物体在其中工作stargazer

我能想到但不知道如何实施的潜在解决方案是:

  • type指示原始betareg调用中的残差( type = "pearson"(或任何其他类型)不起作用)。
  • 明确指示调用对象stargazer时应包含summary的参数。betareg
  • 任何其他?

例子:

set.seed(1)
df <- data.frame(y=runif(100000), x=runif(100000))

library(betareg)
beta <- betareg(y ~ x, data=df)

library(stargazer)
stargazer(beta)
# Error: cannot allocate vector of size 74.5 Gb
4

1 回答 1

1

您可以承担stargazer::.stargazer.wrap任务并更改模型摘要的计算方式,但它大约有 8k 行。

作为一种解决方法,首先计算可以由表生成函数消化的较小回归,然后在编译之前替换系数和统计数据可能要容易得多。

我向您展示了使用texreg包的方法,也可以使用stargazer.

foo <- y ~ x
beta0 <- betareg::betareg(foo, data=df[sample(nrow(df), 1e3), ])  ## small version
beta <- betareg::betareg(foo, data=df)  ## actual version

(beta.sum <- betareg:::summary.betareg(beta, type='pearson')$coe)  ## actual summary
# $mean
#                 Estimate  Std. Error    z value  Pr(>|z|)
# (Intercept)  0.007933124 0.006967576  1.1385773 0.2548795
# x           -0.010845820 0.012080681 -0.8977822 0.3693017
# 
# $precision
#       Estimate  Std. Error z value Pr(>|z|)
# (phi) 1.999218 0.007501926 266.494        0

桌子

屏幕:

texreg::screenreg(beta0,
                  digits=3,
                  override.coef=unlist(lapply(beta.sum, \(x) x[, 1])),
                  override.se=unlist(lapply(beta.sum, \(x) x[, 2])),
                  override.pvalues=unlist(lapply(beta.sum, \(x) x[, 4]))
)
# ==============================
#                   Model 1     
# ------------------------------
# (Intercept)          0.008    
#                     (0.007)   
# x                   -0.011    
#                     (0.012)   
# Precision: (phi)     1.999 ***
#                     (0.008)   
# ------------------------------
# Pseudo R^2           0.000    
# Log Likelihood       2.137    
# Num. obs.         1000        
# ==============================
# *** p < 0.001; ** p < 0.01; * p < 0.05

乳胶:

texreg::texreg(beta0,
                  digits=3,
                  override.coef=unlist(lapply(beta.sum, \(x) x[, 1])),
                  override.se=unlist(lapply(beta.sum, \(x) x[, 2])),
                  override.pvalues=unlist(lapply(beta.sum, \(x) x[, 4]))
)
# \begin{table}
# \begin{center}
# \begin{tabular}{l c}
# \hline
# & Model 1 \\
# \hline
# (Intercept)      & $0.008$       \\
# & $(0.007)$     \\
# x                & $-0.011$      \\
# & $(0.012)$     \\
# Precision: (phi) & $1.999^{***}$ \\
# & $(0.008)$     \\
# \hline
# Pseudo R$^2$     & $0.000$       \\
# Log Likelihood   & $2.137$       \\
# Num. obs.        & $1000$        \\
# \hline
# \multicolumn{2}{l}{\scriptsize{$^{***}p<0.001$; $^{**}p<0.01$; $^{*}p<0.05$}}
# \end{tabular}
# \caption{Statistical models}
# \label{table:coefficients}
# \end{center}
# \end{table}

要获取 HTML 代码,请使用:

texreg::htmlreg

数据:

set.seed(1)
n <- 1e5
df <- data.frame(y=runif(n), x=runif(n))
于 2022-01-13T09:50:46.597 回答