lapply 代替 for 循环进行随机假设检验 r

2023-12-11

我有一个看起来像这样的 df:

set.seed(42)
ID <- sample(1:30, 100, rep=T) 
Trait <- sample(0:1, 100, rep=T) 
Year <- sample(1992:1999, 100, rep=T)
df <- cbind(ID, Trait, Year)
df <- as.data.frame(df)

其中 ID 是个体生物体,性状是表型的存在/不存在,年份是进行观察的年份。

我想模拟个体之间的特征是否是随机的,像这样

library(MCMCglmm) 
m <- MCMCglmm(Trait ~ ID, random = ~ Year, data = df, family = "categorical")

现在,想要对 Trait 列进行洗牌并运行 x 排列,以检查我观察到的平均值和 CI 是否超出了随机预期。 我可以使用 for 循环来完成此操作,但我宁愿使用 tidyverse 解决方案。 我读过 lapply 是一个更好的(?)替代方案,但我正在努力寻找一个我可以遵循的足够具体的演练。

我很感激这里提供的任何建议。

Cheers!

Jamie


10 月 10 日编辑。清理了代码,并根据下面的评论添加了代码,为您提供了一个组织良好的tibble\dataframe

### decide how many shuffles you want and name them
### in an orderly fashion for the output

shuffles <- 1:10
names(shuffles) <- paste0("shuffle_", shuffles)

library(MCMCglmm)
library(dplyr)
library(tibble)
library(purrr)

ddd <- purrr::map(shuffles,
                  ~ df %>%
                     mutate(Trait = sample(Trait)) %>%
                     MCMCglmm(fixed = Trait ~ ID,
                              random = ~ Year,
                              data = .,
                              family = "categorical",
                              verbose = FALSE)) %>%
   purrr::map( ~ tibble::as_tibble(summary(.x)$solutions, rownames = "model_term")) %>%
   dplyr::bind_rows(., .id = 'shuffle')
ddd
#> # A tibble: 20 x 7
#>    shuffle    model_term  post.mean `l-95% CI` `u-95% CI` eff.samp pMCMC
#>    <chr>      <chr>           <dbl>      <dbl>      <dbl>    <dbl> <dbl>
#>  1 shuffle_1  (Intercept)  112.         6.39     233.       103.   0.016
#>  2 shuffle_1  ID            -6.31     -13.5       -0.297    112.   0.014
#>  3 shuffle_2  (Intercept)   24.9      -72.5      133.       778.   0.526
#>  4 shuffle_2  ID            -0.327     -6.33       5.33     849.   0.858
#>  5 shuffle_3  (Intercept)    4.39     -77.3       87.4      161.   0.876
#>  6 shuffle_3  ID             1.04      -3.84       5.99     121.   0.662
#>  7 shuffle_4  (Intercept)    7.71     -79.0      107.       418.   0.902
#>  8 shuffle_4  ID             0.899     -4.40       6.57     408.   0.694
#>  9 shuffle_5  (Intercept)   30.4      -62.4      144.       732.   0.51 
#> 10 shuffle_5  ID            -0.644     -6.61       4.94     970.   0.866
#> 11 shuffle_6  (Intercept)  -45.5     -148.        42.7      208.   0.302
#> 12 shuffle_6  ID             4.73      -0.211     11.6       89.1  0.058
#> 13 shuffle_7  (Intercept)  -16.2     -133.        85.9      108.   0.696
#> 14 shuffle_7  ID             2.47      -2.42      10.3       47.8  0.304
#> 15 shuffle_8  (Intercept)    0.568      0.549      0.581      6.60 0.001
#> 16 shuffle_8  ID            -0.0185    -0.0197    -0.0168     2.96 0.001
#> 17 shuffle_9  (Intercept)   -6.95    -112.        92.2      452.   0.886
#> 18 shuffle_9  ID             2.07      -3.30       8.95     370.   0.476
#> 19 shuffle_10 (Intercept)   43.8      -57.0      159.       775.   0.396
#> 20 shuffle_10 ID            -1.36      -7.44       5.08     901.   0.62

您的原始数据

set.seed(42)
ID <- sample(1:30, 100, rep=T) 
Trait <- sample(0:1, 100, rep=T) 
Year <- sample(1992:1999, 100, rep=T)
df <- cbind(ID, Trait, Year)
df <- as.data.frame(df)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

lapply 代替 for 循环进行随机假设检验 r 的相关文章

随机推荐

  • Service Fabric 中的应用程序洞察?

    我需要在我正在开发的 Azure Service Fabric 应用程序中添加性能日志记录 我尝试遵循以下指南 该指南看起来非常简单明了 https github com Microsoft azure content blob maste
  • 查询嵌套表

    我正在尝试查询NESTED TABLE using PL SQL 几个消息来源告诉我这是可能的 但我不断收到错误消息 ORA 21700 对象不存在或已标记为删除 我不明白为什么它不让我这样做 我已经确定dados变量中有内容 我输出它 c
  • Java比较字符串与正则表达式 - while循环

    我希望用户输入一个字符串 如果该字符串与我的正则表达式不匹配 那么我希望输出一条消息 并且用户再次输入一个值 问题是 即使字符串与正则表达式匹配 它也会将其视为不匹配 我的正则表达式 这应该等于 Name Name A Z a zA Z s
  • 单击复选框数据动态保存到数据库

    当我选中复选框时 我需要一些 js ajax jquery 脚本将数据动态保存到数据库 此时的复选框或加载到记录旁边 并根据是否选中来更改数据库中的变量 但是在我选择一个将其保存到数据库后 我必须重新加载页面 我可以做其他所有事情 但了解如
  • 如何在 React JSX 中使用“< >”

    如何在 React 中使用 作为文本 我想将它用于我的投资组合 你需要使用HTML 实体 HTML 中的保留字符必须替换为字符实体 Result Description Entity Name Entity Number lt less t
  • Kivy:如何将复选框设置为在启动时选中

    如何将 id 设置为蓝色的复选框的状态设置为在启动时检查 我使用 python 3 6 和 Kivy 1 9 2 dev0 我以为线条blue ObjectProperty True in py and value root blue in
  • jQuery 滑块范围:将范围应用为表行的过滤器

    在我的实习中 我必须为表格创建一个过滤器 该过滤器必须仅显示您给定的值之间的行 我使用 jQuery UIrange slider我有一个普通的 HTML 表格 我无法让它工作 我尝试了很多不同的事情 这是我的代码 function sli
  • 在饼图中显示附加值

    我有这个饼图数据的示例 import javafx application Application import javafx collections FXCollections import javafx collections Obse
  • 表单视觉隐藏字段和所需验证使用

    我有一个带有隐藏字段的 HTML5 Bootstrap 表单 style display none 我通过 jQuery 显示 隐藏 show hide 对于字段验证 我使用属性required 我希望所有隐藏字段均按要求显示 但当其中一些
  • PHP将抄送插入邮件功能[重复]

    这个问题在这里已经有答案了 可能的重复 PHP 邮件 抄送字段 我正在使用以下 php 发送电子邮件 我需要将抄送添加到我的电子邮件中 当我尝试插入标头时 html 消息显示原始 html 处理抄送的最佳方式是什么 Thanks heade
  • TS(2352) 声明具有动态属性的对象和一个具有特定类型的属性

    我需要创建一个对象 该对象将包含一个名为 state 的属性 该属性将具有通用类型 所有其他属性将是具有覆盖上下文的函数 我不确定这是否可能 因此我决定写在这里 我有一个代码 declare interface ContextModule
  • MySQL 连接运算符

    我不知道 MySQL 的连接运算符 我已经尝试过这段代码用于串联 SELECT vend name vend country FROM Vendors ORDER BY vend name 但这没有用 我应该使用哪个运算符来连接字符串 是
  • golang json 和接口切片

    我在迭代包含接口切片的接口切片时遇到问题 此问题是在尝试使用返回 JSON 数据的 API 调用时出现的 返回的数据相当多 并且结构根据请求的不同而有很大差异 API 文档中也没有 JSON 响应的结构 因此我尝试实现一些处理任意 JSON
  • 如何后台加载sapui5资源

    在我们的应用程序中 我们加载了许多 SAPUI5 库 index html 有以下代码来加载 SAPUI5 资源 在我们的 web xml 中我们已经提到https sapui5 hana on
  • dotnet 不支持多重继承。但多接口支持吗? [复制]

    这个问题在这里已经有答案了 可能的重复 C 中的多重继承 dotnet 不支持多重继承 但多种接口支持 为什么会存在这种行为 有具体原因吗 您可以使用接口模拟多重继承 如果允许类的多重继承 则会导致钻石问题 由于不支持多重继承的原因 我建议
  • IF 条件 - 连接多列

    我需要统计一个术语出现的次数 不幸的是 这些术语组织得不好 因此一个术语可能会出现在多个列中 所以我不能只使用 If A1 HEALTH 1 0 因为HEALTH出现在多个列 A B C 等中 我尝试过嵌套 IF A1 HEALTH 1 I
  • 为什么 TF-IDF 的值与 IDF_ 不同?

    为什么向量化语料的值与通过向量化得到的值不一样idf 属性 不应该idf 属性只是以与语料库矢量化中出现的相同方式返回逆文档频率 IDF from sklearn feature extraction text import TfidfVe
  • 只有一个底层锁的读写锁?

    我已经使用 Python 的并发原语编写了一个读写锁 我认为 我在 SO 或其他地方读到的每个实现似乎都使用 2 个锁 一个用于读取 另一个用于写入 我的实现只包含一个用于读取的监视器 但我可能遗漏了一些重要的东西 任何人都可以确认这会起作
  • 电晕将单选按钮转换为数字文本框(lua)

    我正在尝试创建一个有关医疗保健的移动应用程序 我必须创建一个类似调查的应用程序来筛选患者 现在我已经使用单选按钮完成了调查的一部分 另一部分也看起来像这样 见下图 但我希望单选按钮更改为数字文本框 我的应用程序看起来像这样 现在我想将单选按
  • lapply 代替 for 循环进行随机假设检验 r

    我有一个看起来像这样的 df set seed 42 ID lt sample 1 30 100 rep T Trait lt sample 0 1 100 rep T Year lt sample 1992 1999 100 rep T