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`)
我希望这能很好地表达我的问题,感谢您的阅读。
如评论中所述,mutate
是 dplyr
包中的一个函数,旨在处理数据帧, 不适用于模型 对象或 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
所以我是运行多个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`)
我希望这能很好地表达我的问题,感谢您的阅读。
如评论中所述,mutate
是 dplyr
包中的一个函数,旨在处理数据帧, 不适用于模型 对象或 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