如何编写一个 for 循环来创建模型并具有引用同一模型的函数

2024-01-09

我正在尝试使用不平衡的双向方差分析进行事后分析anova_test函数在rstatix包裹。我需要迭代地运行这个事后测试,因为我有大约 26 个响应 (y) 变量。我的第一步是创建我所有的模型y与相关的变量group and treatment。我已经成功地做到了这一点,创建了一个包含 26 个模型的列表:

models <- map(data[,y1:y26], ~(lm(.x ~data$group*data$treatment)))

现在到了我坚持的部分。迭代地参考这些模型。我想运行以下代码every y我有变量:

group_by(group) %>%
anova_test(y ~ treatment, error = models(y), type = 3)

我的在哪里y每次都会发生变化,并且“模型”(在error =术语)相应更新。我正在努力解决这一问题,因为我制作的第一组模型用于通知第二组模型。

但是,如果我只运行一个y一次通过这一整段代码,我得到了适当的结果。

model <- lm(y ~ group*treatment, data = data)

data %>%
group_by(group) %>%
anova_test(y ~ treatment, error = model, type = 3)

我尝试创建一个 for 循环以及使用map函数在purrr包但是我一直不成功。我是 for 循环的新手purrr所以我确信这是一个简单的修复,我只是看不到它。

基本上我想要一种跑步方式

data %>%
group_by(group) %>%
anova_test(y ~ treatment, error = model, type = 3)

对于不同的迭代y变量(y1, y2, ..., y26)同时也提到了适当的model(模型$y1,模型$y2,...,模型$26)。

感谢您的帮助!


好吧,你没有提供任何数据,所以让我们使用牙齿生长。您似乎喜欢模型格式,所以让我们构建一个模型列表。您可以以自动化的方式完成此操作,但为了清楚起见,让我们手动完成。电话purrr::mapanova_test功能。您会收到一份清单。既然你负责命名列表元素,那就去城里吧。

5月18日更新答案。现在使用map2因为你想要两个不同的模型通过为每个模型构建一个列表......

library(rstatix)
library(purrr)

ToothGrowth$len2 <- ToothGrowth$len^2 # for variety

models <- list(model1 = lm(len ~ supp*dose, ToothGrowth), 
               model2 = lm(len ~ dose*supp, ToothGrowth),
               model3 = lm(len2 ~ dose*supp, ToothGrowth),
               model4 = lm(len2 ~ supp*dose, ToothGrowth))

models2 <- list(model1 = lm(len ~ supp, ToothGrowth), 
               model2 = lm(len ~ dose, ToothGrowth),
               model3 = lm(len2 ~ dose, ToothGrowth),
               model4 = lm(len2 ~ supp, ToothGrowth))


# one model
purrr::map(models, ~ anova_test(.x, type = 3))


# now with model for error term
purrr::map2(models, models2, ~ anova_test(.x, error = .y, type = 3))
#> Coefficient covariances computed by hccm()
#> Coefficient covariances computed by hccm()
#> Coefficient covariances computed by hccm()
#> Coefficient covariances computed by hccm()
#> $model1
#> ANOVA Table (type III tests)
#> 
#>      Effect DFn DFd      F        p p<.05   ges
#> 1      supp   1  58  4.058 0.049000     * 0.065
#> 2      dose   1  58 12.717 0.000734     * 0.180
#> 3 supp:dose   1  58  1.588 0.213000       0.027
#> 
#> $model2
#> ANOVA Table (type III tests)
#> 
#>      Effect DFn DFd      F        p p<.05   ges
#> 1      dose   1  58 33.626 2.92e-07     * 0.367
#> 2      supp   1  58 10.729 2.00e-03     * 0.156
#> 3 dose:supp   1  58  4.200 4.50e-02     * 0.068
#> 
#> $model3
#> ANOVA Table (type III tests)
#> 
#>      Effect DFn DFd      F        p p<.05   ges
#> 1      dose   1  58 36.028 1.35e-07     * 0.383
#> 2      supp   1  58  7.128 1.00e-02     * 0.109
#> 3 dose:supp   1  58  2.709 1.05e-01       0.045
#> 
#> $model4
#> ANOVA Table (type III tests)
#> 
#>      Effect DFn DFd      F        p p<.05   ges
#> 1      supp   1  58  2.684 0.107000       0.044
#> 2      dose   1  58 13.566 0.000508     * 0.190
#> 3 supp:dose   1  58  1.020 0.317000       0.017
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何编写一个 for 循环来创建模型并具有引用同一模型的函数 的相关文章

  • 如何在Shiny中默认选择verbatimTextOutput中的文本?

    这是与我之前的问题相关的问题 是否可以有固定宽度的 verbatimTextOutput 并让文本在 Shiny 中换行 https stackoverflow com q 58516071 7669809 我有以下闪亮的应用程序 http
  • 在 R 中提取模式/分隔符之间的字符串

    我的变量名称格式如下 PP Sample 12 GT or PP Sample 17 GT 我正在尝试使用字符串拆分来 grep 出中间部分 即Sample 12 or Sample 17 但是 当我这样做时 IDtmp lt sapply
  • 按月/年间隔汇总每日数据

    我并不经常需要在 R 中处理日期 但我认为这相当简单 我有一列代表数据框中的日期 我只想创建一个新的数据框 使用日期按月 年总结第二列 最好的方法是什么 我想要第二个数据框 这样我就可以将它提供给绘图 您能提供的任何帮助将不胜感激 编辑 供
  • 重用 R 中内置的模型

    在 R 中构建模型时 如何保存模型规范以便可以在新数据上重用它 假设我根据历史数据建立逻辑回归 但直到下个月才会有新的观察结果 最好的方法是什么 我考虑过的事情 保存模型对象并在新会话中加载 我知道某些模型可以使用 PMML 导出 但还没有
  • 如何选择独特点

    我是一名 R 程序员新手 我有以下一系列观点 df lt data frame x c 1 2 3 4 y c 6 3 7 5 df lt df gt mutate k 1 df lt df gt full join df by k df
  • 添加带有错误的弹出窗口,警告闪亮

    有什么办法可以添加一个popup 可关闭的窗口 其中包含警告或其他消息Shiny 我用来构建 Web 应用程序的 R 包 我已经寻找了一段时间但没有任何结果 虽然我不认为有任何本地可用的东西shiny 你可以尝试添加jQueryUI到您的应
  • rmarkdown 中的内部链接不起作用

    我使用 rmarkdown 来渲染 pdf 文档 现在我想在文本中添加内部链接 在帮助页面中降价 http rmarkdown rstudio com authoring pandoc markdown html links 它说内部链接定
  • r : 直方图上的 ECDF

    在 R 中 与ecdf我可以绘制经验累积分布函数 plot ecdf mydata 与hist我可以绘制数据的直方图 hist mydata 如何在同一图中绘制直方图和 ecdf EDIT 我尝试做类似的东西 https mathemati
  • 我可以使用基于范围的 for 循环轻松迭代地图的值吗?

    是否可以迭代a中的所有值std map仅使用 foreach 这是我当前的代码 std map
  • 根据值的运行总计创建组

    我的数据在一个变量 Y 上是唯一的 另一个变量 Z 告诉我每个 Y 中有多少人 我的问题是我想从这些 Y 和 Z 创建 45 人的组 我的意思是 每当运行总计Z 达到 45 创建一组 然后代码继续创建下一组 我的数据看起来像这样 ID X
  • 在 for 循环中绘制的多个 ggplot2 绘图的网格

    作为一个新的 ggplot2 用户 我对可能性的数量感到有点迷失 并且很难在网上找到我认为简单问题的简单答案 我想在同一张纸上显示 ggplot2 的多个图 但知道这些图来自 for 循环 以下示例无法编译 仅用于说明 for i in c
  • 尽管提供了群落矩阵,纯素食 DBRDA 物种得分为空

    我使用纯素社区生态包在 R 中执行了 基于距离的冗余分析 dbRDA 我想在 dbRDA 结果的排序图中显示 鱼类 营养群体对样本之间差异 营养级鱼类组合的丰度数据 的相对贡献 IE 将箭头和营养级组名称叠加到排序图上 其中箭头线的长度表示
  • Quarto/Rmarkdown 中的美人鱼图:狭窄且模糊

    我正在尝试生成 pdf 格式的四开文档 稍后会生成 word 格式 我遇到了美人鱼图的问题 请在下面找到一个示例 qmd 文件来说明该问题 所以首先它应该支持 mermaid 标签 但当我这样做时 我无法在 rstudio 中 运行 单元
  • R 中大型稀疏矩阵的聚类分析

    我有一个包含 250000 笔交易 行 和 2183 项 列 的交易数据集 我想将其转换为稀疏矩阵 然后对其进行分层聚类 我尝试了包 sparcl 但它似乎不适用于稀疏矩阵 关于如何解决这个问题有什么建议吗 或者我可以使用任何其他包对稀疏矩
  • 如何获取分配给循环内处理的环境变量的逗号分隔字符串的每一项?

    The FOR循环仅输出列表的第一项 我正在尝试遍历整个列表 ECHO OFF set list this is a list FOR f tokens 1 delims a IN list DO echo a pause The FOR
  • readRDS() 加载额外的包

    什么情况下会出现readRDS R 中的函数尝试加载包 命名空间 我很惊讶地在新的 R 会话中看到以下内容 gt loadedNamespaces 1 base datasets graphics grDevices methods sta
  • 使用 ggplotly(ggplot2 withplotly)时可以去掉注释中的跟踪标签吗?

    使用ggplotly时是否可以删除注释中的跟踪标签 例如 library ggplot2 library plotly g lt ggplot iris aes Sepal Width Sepal Length geom point ann
  • r Shiny 中的 fileInput 函数没有响应

    我是 R 和 R闪亮的新手 一直致力于构建一个统计应用程序 该应用程序将允许用户导入文件 然后对数据运行不同的统计程序 直到最近 fileData 函数一直对我来说运行良好 现在每当我尝试上传文件时 都不会打开任何内容 我已尝试了所有我能想
  • mclapply 用户时间大于已用时间

    我正在尝试使用mclapply的功能parallel封装在R 该函数通过计算对数似然距离将值分配给序列矩阵 这是一个 CPU 密集型操作 所结果的system time价值观令人困惑 gt system time mclapply work
  • 评估 df 每行中的日期时间函数是否落在另一个 df 中的日期时间范围内

    我是 python 新手 需要一些帮助来解决有关日期时间函数的问题 I have df a其中有一列标题为time 我正在尝试创建一个新专栏id在这个df a 我想要id根据时间是否包含在某个时间范围内来确定的列df b date 和 da

随机推荐