Augmenting/Mutating 个 R 中的模型对象

Augmenting/Mutating of Model objects in R

所以我是运行多个cochrane orcutt回归,这没问题。然后我使用 modelsummary() 显示这些回归的输出。到目前为止仍然没有问题。

但是,当我随后尝试使用 modelplot() 比较模型时,cochrane orcutt 模型(class“orcutt”)中没有计算出置信区间,因此出现以下错误:

Error in eval(parse(text = text, keep.source = FALSE), envir) : object 'conf.low' not found

我知道这里的问题是什么 - cochrane.orcutt() 命令没有计算出置信区间“部分”。部分解决方案也很明显 - 我可以使用点 estimates/coefficients 和标准误差(默认情况下当然包含在模型中)来计算置信区间。

然而,当我想在 modelplot() 中使用这些置信区间值时,我的问题出现了,因为它们不在模型对象中。在我的无知中,我尝试了以下尝试并使用 mutate():

创建置信区间的下限
model %>% 
+   mutate(`conf.low`=`coefficients`-1.96*`std.error`)

我希望这能很好地表达我的问题,感谢您的阅读。

如评论中所述,mutatedplyr 包中的一个函数,旨在处理数据帧, 不适用于模型 对象或 modelsummary 表。

此外,请注意我无法正确诊断您的问题,因为您没有提供 MINIMAL REPRODUCIBLE EXAMPLE 并且您没有告诉我们您使用哪个函数来估计模型。

R 中执行 Cochrane-Orcutt 的一种方法是使用 orcutt 包:

library(orcutt)
data(icecream, package = "orcutt")
lm <- lm(cons ~ price + income + temp, data = icecream)
coch <- cochrane.orcutt(lm)

在幕后,modelsummary 包使用 broom 包中的 tidy 函数从模型对象中提取估计值:

library(broom)

tidy(coch)
#> # A tibble: 4 × 5
#>   term        estimate std.error statistic    p.value
#>   <chr>          <dbl>     <dbl>     <dbl>      <dbl>
#> 1 (Intercept)  0.157    0.290        0.543 0.592     
#> 2 price       -0.892    0.811       -1.10  0.282     
#> 3 income       0.00320  0.00155      2.07  0.0488    
#> 4 temp         0.00356  0.000555     6.42  0.00000102

从上面的输出中,您看到 broom 没有提取置信区间。这可以解释为什么 modelsummary 不能打印你的 table/plot.

另一种选择是指示 modelsummary 使用 parameters 包而不是 broom 来提取估计值。这可以通过设置全局选项来实现:

library(modelsummary)
options(modelsummary_get = "parameters")
modelsummary(coch, statistic = "conf.int", output = "markdown")
Model 1
(Intercept) 0.157
[-0.439, 0.754]
price -0.892
[-2.562, 0.778]
income 0.003
[0.000, 0.006]
temp 0.004
[0.002, 0.005]
Num.Obs. 30
R2 0.649
R2 Adj. 0.607
rho 0.401
number.interaction 11.000
dw.original 1.021
p.value.original 0.000
dw.transformed 1.549
p.value.transformed 0.051

并且 modelplot 现在也可以使用了:

modelplot(coch)

另一种选择是使用 broom 默认值,但使用您自己的 tidy_custom.orcutt 方法自定义输出。这有点复杂,但您可以在 modelsummary 网站上找到详细说明:https://vincentarelbundock.github.io/modelsummary/articles/modelsummary.html#adding-new-information-to-existing-models