在 stargazer 输出中包含 vif 信息

Include vif information in stargazer output

我有一个 lm 函数的输出,我应用了 car 包中的 vif 函数。我想将 vif 包含在由 stargazer 包生成的回归 table 中,但我无法添加额外的列。

这可能吗?我也愿意听取有关使用其他软件包的建议。

谢谢,如果您需要更多信息,请告诉我。

正如 所建议的,使用 stargazer 自定义输出的可能性是有限的。一种方法是利用 summary=FALSE 选项,它只打印您插入的数据框。

library(stargazer)
library(car)
library(broom)
library(tidyverse)

#generate dummy data with correlated regressors
set.seed(123)
x <- runif(1000)
z <- x^0.5
y <-  x + z + rnorm(1000, sd=.05)
model <- lm(y ~ x + z)

# create a new tibble with vifs
vif(model) %>% tibble(.) %>% mutate(term = names(vif(model)) %>% rename('vif'='.') -> vifs

#merge summary stats of model with vifs
tidy_sum <- tidy(summary(model))
left_join(tidy_sum, vifs) -> summary_with_vif

stargazer(summary_with_vif, type='html', summary=FALSE) 

输出如下所示:

<table style="text-align:center"><tr><td colspan="7" style="border-bottom: 1px solid black"></td></tr><tr><td style="text-align:left"></td><td>term</td><td>estimate</td><td>std.error</td><td>statistic</td><td>p.value</td><td>vif</td></tr>
<tr><td colspan="7" style="border-bottom: 1px solid black"></td></tr><tr><td style="text-align:left">1</td><td>(Intercept)</td><td>0.0004</td><td>0.009</td><td>0.041</td><td>0.968</td><td></td></tr>
<tr><td style="text-align:left">2</td><td>x</td><td>0.992</td><td>0.027</td><td>36.180</td><td>0</td><td>24.716</td></tr>
<tr><td style="text-align:left">3</td><td>z</td><td>1.006</td><td>0.034</td><td>30.003</td><td>0</td><td>24.716</td></tr>
<tr><td colspan="7" style="border-bottom: 1px solid black"></td></tr></table>

很遗憾,您需要重命名您的列,并自行选择位数。