【问题标题】:How to use iteration in R to simplify my code for GLM?如何在 R 中使用迭代来简化我的 GLM 代码?
【发布时间】:2022-06-20 17:50:36
【问题描述】:

我刚开始使用 R,在尝试简化代码时遇到了一些问题。我无法分享我的真实数据,但我使用了一个开放的数据集来提出我的问题(品种代表我的 IV,年龄代表一个 DV)。

在我的数据集中,我有所有因子变量 - 我的自变量有 3 个水平,我的因变量都有 2 个水平 (0/1)。在一个更大的数据集中,我有六个因变量,并希望为每个变量运行一些描述性统计数据和 GLM。我已经找到了独立运行每个 DV 的工作代码,见下文。但是,我目前只是复制和粘贴此代码并每次替换 DV 变量。我想创建一个可以应用来简化代码的函数。

我曾尝试使用 purr 包(地图)来执行此操作,但没有运气。如果有人可以使用下面的示例数据提供如何执行此操作的示例,那将对我有很大帮助(尽管我知道在下面的数据中只提供了一个 DV)。

install.packages("GLMsData")
library(GLMsData)
data(butterfat)

library(tidyverse)
library(dplyr)
#Descriptive summaries
butterfat %>%
group_by(Breed, Age) %>%
summarise(n())

prop.table(table(butterfat$Breed, butterfat$Age), 1)

#Model
Age_model1 <- glm(Age ~ Breed, family=binomial, data=butterfat, na.action = na.omit)

#Get summary, including coefficients and p-values
summary(Age_model1)

#See coefficients, get odds ratio and confidence intervals
Age_model1$coefficients
exp(Age_model1$coefficients)
exp(confint(Age_model1))

【问题讨论】:

    标签: loops iteration purrr glm simplify


    【解决方案1】:

    Many Models: R for Data Science

    library(tidyverse)
    
    iris %>%
      group_by(Species) %>%
      nest() %>% 
      mutate(lm = map(data,
                      ~glm(Sepal.Length~Sepal.Width,data = .))) %>% 
      mutate(tidy = map(lm,
                        broom::tidy)) %>% 
      unnest(tidy)
    

    【讨论】:

      猜你喜欢
      • 2018-10-24
      • 1970-01-01
      • 2019-09-07
      • 2020-09-30
      • 2023-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多