如何在 stargazer 包中报告标准化模型?
How to report a standardized model in stargazer package?
我制作了以下简单的回归模型,并使用 stargazer 输出了一个 table,它绘制了标准化与非标准化回归模型的系数、标准误差和 p 值。
library(lm.beta)
mod <- lm(mpg ~ cyl + disp, mtcars)
summary(mod)
mod_std <- lm.beta(mod)
summary(mod_std)$coe[, 2]
library(stargazer)
stargazer(mod, mod_std,
coef = list(mod$coefficients,
mod_std$standardized.coefficients),
type='text')
这是输出:
==========================================================
Dependent variable:
----------------------------
mpg
(1) (2)
----------------------------------------------------------
cyl -1.587** -0.470
(0.712) (0.712)
disp -0.021** -0.423***
(0.010) (0.010)
Constant 34.661*** 0.000
(2.547) (2.547)
----------------------------------------------------------
Observations 32 32
R2 0.760 0.760
Adjusted R2 0.743 0.743
Residual Std. Error (df = 29) 3.055 3.055
F Statistic (df = 2; 29) 45.808*** 45.808***
==========================================================
Note: *p<0.1; **p<0.05; ***p<0.01
从这里可以看出,stargazer 报告的标准误差(对于系数)对于标准化模型和非标准化模型是相同的。这是不正确的,因为标准误差应该随着系数的标准化而改变。有没有办法报告正确的标准错误?或者,如果没有,只需删除它们?
最后,从标准化模型到非标准化模型的变化还有(系数的)显着性水平。这些不应更改,因为它们不受标准化的影响。有没有办法防止观星者修改它们? p 或 p.auto 参数可能会起作用,但我不知道如何使用它们。
lm.beta 的参考文献:Stefan Behrendt (2014)。 lm.beta:将标准化回归系数添加到 lm 对象。 R 包版本 1.5-1。 https://CRAN.R-project.org/package=lm.beta
您需要为每个模型手动输入附加值,list
-wise,因为您从系数开始。标准化 se=
,p=
值(对于星星),...以及 GOF(R2,R2adj., ...), 阅读帮助页面中的选项:?stargazer
.
然而,lm.beta
似乎只添加标准化系数,并且 none 尚未计算以报告它们。
标准化标准误差使用公式 SE*beta_star/beta.
计算得出
所以你可以包装一个函数,然后计算它们,以便将它们填入 stargazer
table:
std_se <- \(x) x[, 'Std. Error']*x[, 'Standardized']/x[, 'Estimate']
std_se(summary(mod_std)$coefficients)
# (Intercept) cyl disp
# 0.0000000 0.2109356 0.2109356
但是,计算一个实际的标准化模型肯定会更容易
mod_std2 <- lm(mpg ~ cyl + disp, as.data.frame(scale(mtcars)))
summary(mod_std2) |> getElement('coefficients')
# Estimate Std. Error t value Pr(>|t|)
# (Intercept) 34.66099474 2.54700388 13.608536 4.022869e-14
# cyl -1.58727681 0.71184427 -2.229809 3.366495e-02
# disp -0.02058363 0.01025748 -2.006696 5.418572e-02
并将其放入:
stargazer(mod, mod_std2, type='text')
# ==========================================================
# Dependent variable:
# ----------------------------
# mpg
# (1) (2)
# ----------------------------------------------------------
# cyl -1.587** -0.470**
# (0.712) (0.211)
# disp -0.021* -0.423*
# (0.010) (0.211)
# Constant 34.661*** -0.000
# (2.547) (0.090)
# ----------------------------------------------------------
# Observations 32 32
# R2 0.760 0.760
# Adjusted R2 0.743 0.743
# Residual Std. Error (df = 29) 3.055 0.507
# F Statistic (df = 2; 29) 45.808*** 45.808***
# ==========================================================
# Note: *p<0.1; **p<0.05; ***p<0.01
我成功制作了以下脚本:
stargazer(mod_std,
coef=list(mod_std$standardized.coefficients),
se=list(summary(mod_std)$coe[, 2]),
p=list(summary(mod)$coe[, 4]),
type='text',
omit.stat = c("all"),
keep = c("cyl","disp"),
report = c('vcp'), notes.append = FALSE,
notes = "Coefficients are standardized")
输出如下:
===================================
Dependent variable:
-----------------------------
mpg
-----------------------------------
cyl -0.470
p = 0.034
disp -0.423
p = 0.055
===================================
===================================
Note: Coefficients are standardized
此处报告了标准化系数,以及来自原始模型的 p-values(在标准化过程中应该保持不变)。
我制作了以下简单的回归模型,并使用 stargazer 输出了一个 table,它绘制了标准化与非标准化回归模型的系数、标准误差和 p 值。
library(lm.beta)
mod <- lm(mpg ~ cyl + disp, mtcars)
summary(mod)
mod_std <- lm.beta(mod)
summary(mod_std)$coe[, 2]
library(stargazer)
stargazer(mod, mod_std,
coef = list(mod$coefficients,
mod_std$standardized.coefficients),
type='text')
这是输出:
==========================================================
Dependent variable:
----------------------------
mpg
(1) (2)
----------------------------------------------------------
cyl -1.587** -0.470
(0.712) (0.712)
disp -0.021** -0.423***
(0.010) (0.010)
Constant 34.661*** 0.000
(2.547) (2.547)
----------------------------------------------------------
Observations 32 32
R2 0.760 0.760
Adjusted R2 0.743 0.743
Residual Std. Error (df = 29) 3.055 3.055
F Statistic (df = 2; 29) 45.808*** 45.808***
==========================================================
Note: *p<0.1; **p<0.05; ***p<0.01
从这里可以看出,stargazer 报告的标准误差(对于系数)对于标准化模型和非标准化模型是相同的。这是不正确的,因为标准误差应该随着系数的标准化而改变。有没有办法报告正确的标准错误?或者,如果没有,只需删除它们?
最后,从标准化模型到非标准化模型的变化还有(系数的)显着性水平。这些不应更改,因为它们不受标准化的影响。有没有办法防止观星者修改它们? p 或 p.auto 参数可能会起作用,但我不知道如何使用它们。
lm.beta 的参考文献:Stefan Behrendt (2014)。 lm.beta:将标准化回归系数添加到 lm 对象。 R 包版本 1.5-1。 https://CRAN.R-project.org/package=lm.beta
您需要为每个模型手动输入附加值,list
-wise,因为您从系数开始。标准化 se=
,p=
值(对于星星),...以及 GOF(R2,R2adj., ...), 阅读帮助页面中的选项:?stargazer
.
然而,lm.beta
似乎只添加标准化系数,并且 none 尚未计算以报告它们。
标准化标准误差使用公式 SE*beta_star/beta.
计算得出所以你可以包装一个函数,然后计算它们,以便将它们填入 stargazer
table:
std_se <- \(x) x[, 'Std. Error']*x[, 'Standardized']/x[, 'Estimate']
std_se(summary(mod_std)$coefficients)
# (Intercept) cyl disp
# 0.0000000 0.2109356 0.2109356
但是,计算一个实际的标准化模型肯定会更容易
mod_std2 <- lm(mpg ~ cyl + disp, as.data.frame(scale(mtcars)))
summary(mod_std2) |> getElement('coefficients')
# Estimate Std. Error t value Pr(>|t|)
# (Intercept) 34.66099474 2.54700388 13.608536 4.022869e-14
# cyl -1.58727681 0.71184427 -2.229809 3.366495e-02
# disp -0.02058363 0.01025748 -2.006696 5.418572e-02
并将其放入:
stargazer(mod, mod_std2, type='text')
# ==========================================================
# Dependent variable:
# ----------------------------
# mpg
# (1) (2)
# ----------------------------------------------------------
# cyl -1.587** -0.470**
# (0.712) (0.211)
# disp -0.021* -0.423*
# (0.010) (0.211)
# Constant 34.661*** -0.000
# (2.547) (0.090)
# ----------------------------------------------------------
# Observations 32 32
# R2 0.760 0.760
# Adjusted R2 0.743 0.743
# Residual Std. Error (df = 29) 3.055 0.507
# F Statistic (df = 2; 29) 45.808*** 45.808***
# ==========================================================
# Note: *p<0.1; **p<0.05; ***p<0.01
我成功制作了以下脚本:
stargazer(mod_std,
coef=list(mod_std$standardized.coefficients),
se=list(summary(mod_std)$coe[, 2]),
p=list(summary(mod)$coe[, 4]),
type='text',
omit.stat = c("all"),
keep = c("cyl","disp"),
report = c('vcp'), notes.append = FALSE,
notes = "Coefficients are standardized")
输出如下:
===================================
Dependent variable:
-----------------------------
mpg
-----------------------------------
cyl -0.470
p = 0.034
disp -0.423
p = 0.055
===================================
===================================
Note: Coefficients are standardized
此处报告了标准化系数,以及来自原始模型的 p-values(在标准化过程中应该保持不变)。