我在我的数据中估算了一些 NA,计算了一个回归模型,并希望在 HTML 表格中显示结果。我知道如何为常规模型执行此操作。
library(stargazer)
mydf <- iris
mydf_nonmice_model <- lm(
Petal.Length ~ Petal.Width + Sepal.Length + Sepal.Width,
data = mydf)
stargazer(mydf_nonmice_model, type = "html", out = "mice_reg.html")
但是,当我尝试对从 MICE 插补获得的模型结果做同样的事情时,我做不到。
library(mice)
library(stargazer)
mydf <- iris
# create some NAs
l <- nrow(mydf)
set.seed(1)
indeces <- sample(1:l, l/3)
mydf$Sepal.Length[indeces] <- NA
# impute data with 30 variations
m <- 30
mydf_mice <- mice::mice(data=mydf, m=m, maxit=10, seed=1, print=F)
# create models for imputed data
# (I know that you can also do this using 'with()', but the code below works ok for me)
mydf_mice_models <- lapply(1:m, function(i) {
lm(Petal.Length ~ Petal.Width + Sepal.Length + Sepal.Width,
data = mice::complete(data = mydf_mice, i))
})
# look at the results
mice::pool(mydf_mice_models)
# creating a stargazer table gives an error
stargazer(
mice::pool(mydf_mice_models),
type = "html",
out = "mice_reg.html")
观星者命令给我一个错误:
Error in start.lines[table.number]:length(all.latex.code) :
argument of length 0
那么,有没有办法让 MICE 推算回归的模型结果显示与使用 stargazer 的常规模型结果相同?非常感谢您提供的所有提示!
我认为最简单的方法是在单个估算数据集(例如
stargazer()
)中的一个模型上调用 mydf_mice_models[[1]]
,您可以将系数、标准误差、t 统计量和 p 值替换为从合并模型。
library(mice)
library(stargazer)
project.org/package=stargazer
mydf <- iris
# create some NAs
l <- nrow(mydf)
set.seed(1)
indeces <- sample(1:l, l/3)
mydf$Sepal.Length[indeces] <- NA
# impute data with 30 variations
m <- 30
mydf_mice <- mice::mice(data=mydf, m=m, maxit=10, seed=1, print=F)
# create models for imputed data
# (I know that you can also do this using 'with()', but the code below works ok for me)
mydf_mice_models <- lapply(1:m, function(i) {
lm(Petal.Length ~ Petal.Width + Sepal.Length + Sepal.Width,
data = mice::complete(data = mydf_mice, i))
})
mydf_mice_models2 <- lapply(1:m, function(i) {
lm(Petal.Length ~ Petal.Width + Sepal.Width,
data = mice::complete(data = mydf_mice, i))
})
# look at the results
pool.mod <- mice::pool(mydf_mice_models)
smry <- summary(pool.mod)
pool.mod2 <- mice::pool(mydf_mice_models2)
smry2 <- summary(pool.mod2)
b <- smry$estimate
names(b) <- smry$term
se <- smry$std.error
t_stat = smry$statistic
p_val <- smry$p.value
b2 <- smry2$estimate
names(b2) <- smry2$term
se2 <- smry2$std.error
t_stat2 = smry2$statistic
p_val2 <- smry2$p.value
回答评论中的最后一个问题,您可以使用
add.lines()
添加到表格中,只需传入您将为合并模型AIC和LL计算的值即可。
stargazer(mydf_mice_models[[1]],
mydf_mice_models2[[1]],
coef = list(b, b2),
se = list(se, se2),
t = list(t_stat, t_stat2),
p = list(p_val, p_val2),
add.lines = list(c("AIC", 1.234, 3.456),
c("log likelihood", 5.678, 6.789)),
keep.stat = "n",
type = "text")
#>
#> ===========================================
#> Dependent variable:
#> ----------------------------
#> Petal.Length
#> (1) (2)
#> -------------------------------------------
#> Petal.Width 1.507*** 2.156***
#> (0.068) (0.053)
#>
#> Sepal.Length 0.715***
#> (0.058)
#>
#> Sepal.Width -0.634*** -0.355***
#> (0.072) (0.092)
#>
#> Constant -0.287 2.258***
#> (0.298) (0.314)
#>
#> -------------------------------------------
#> AIC 1.234 3.456
#> log likelihood 5.678 6.789
#> Observations 150 150
#> ===========================================
#> Note: *p<0.1; **p<0.05; ***p<0.01
创建于 2023-05-07 与 reprex v2.0.2