【发布时间】:2022-11-02 02:57:58
【问题描述】:
我正在尝试像这样运行一个简单的 glm 模型。
library(dplyr)
library(purrr)
library(tidyr)
library(broom)
data("mtcars")
head(mtcars)
mtcars$Name <- row.names(mtcars)
row.names(mtcars) <- NULL
glm(mpg ~ wt, data=mtcars)
到目前为止没有任何问题。
接下来我试图在gear 的每个子组上运行这个模型,即gear=3, gear=4, gear=5,所以我在这样的 dlply 函数中运行我的 glm 模型。
Model1 <- plyr::dlply(mtcars, "gear",
function(x)
tryCatch(
glm(mpg ~ wt,
data =x ),
error = function(e) NA), .drop = TRUE)
SummaryCars <- map2_df(Model1,
names(Model1),
~broom::tidy(.x, confint = TRUE)[2,] %>%
mutate(gear = .y))
现在我有了第三个子组carb。这个变量有 6 个级别
table(mtcars$carb)
1 2 3 4 6 8
7 10 3 10 1 1
排除碳水化合物水平 6 和 8。我喜欢在 carb 水平 1、2、3 和 4 上运行我的模型。对于gear 的每个级别。但我喜欢在每次迭代中排除一级碳水化合物。
型号1- 碳水化合物水平 1,2,3 (从 carb= 4 中排除数据)
```
Model1 <- plyr::dlply(mtcars, "gear",
function(x)
tryCatch(
glm(mpg ~ wt,
data =x ),
error = function(e) NA), .drop = TRUE)
SummaryCars <- map2_df(Model1,
names(Model1),
~broom::tidy(.x, confint = TRUE)[2,] %>%
mutate(gear = .y))
```
**Model2 ** - 碳水化合物等级 1,2,4 (从 carb= 3 中排除数据)
```
Model1 <- plyr::dlply(mtcars, "gear",
function(x)
tryCatch(
glm(mpg ~ wt,
data =x ),
error = function(e) NA), .drop = TRUE)
SummaryCars <- map2_df(Model1,
names(Model1),
~broom::tidy(.x, confint = TRUE)[2,] %>%
mutate(gear = .y))
```
**Model3 ** - 碳水化合物等级 1,3,4 (从 carb= 2 中排除数据)
```
Model1 <- plyr::dlply(mtcars, "gear",
function(x)
tryCatch(
glm(mpg ~ wt,
data =x ),
error = function(e) NA), .drop = TRUE)
SummaryCars <- map2_df(Model1,
names(Model1),
~broom::tidy(.x, confint = TRUE)[2,] %>%
mutate(gear = .y))
```
**Model4l ** - 碳水化合物等级 2,3,4 (从 carb= 1 中排除数据)
```
Model1 <- plyr::dlply(mtcars, "gear",
function(x)
tryCatch(
glm(mpg ~ wt,
data =x ),
error = function(e) NA), .drop = TRUE)
SummaryCars <- map2_df(Model1,
names(Model1),
~broom::tidy(.x, confint = TRUE)[2,] %>%
mutate(gear = .y))
```
如您所见,我可以在 Gear (3,4,5) 的每个级别中运行模型,但我不确定如何在此之上添加另一个循环,其中一个级别的数据被排除并考虑休息。
预期的最终结果
Model SubModel Estimate Lower(CI) Upper(CI) stdError p
Exclude carb= 4 Gear = 3 xxx xxxx xxxx xxx x
Exclude carb= 4 Gear = 4 xxx xxxx xxxx xxx x
Exclude carb= 4 Gear = 5 xxx xxxx xxxx xxx x
Exclude carb= 3 Gear = 3 xxx xxxx xxxx xxx x
Exclude carb= 3 Gear = 4 xxx xxxx xxxx xxx x
Exclude carb= 3 Gear = 5 xxx xxxx xxxx xxx x
Exclude carb= 2 Gear = 3 xxx xxxx xxxx xxx x
Exclude carb= 2 Gear = 4 xxx xxxx xxxx xxx x
Exclude carb= 2 Gear = 5 xxx xxxx xxxx xxx x
Exclude carb= 1 Gear = 3 xxx xxxx xxxx xxx x
Exclude carb= 1 Gear = 4 xxx xxxx xxxx xxx x
Exclude carb= 1 Gear = 5 xxx xxxx xxxx xxx x
任何帮助深表感谢。提前致谢。
我在我的问题中包含了代码,显示了我尝试过的内容。
【问题讨论】: