purrr::map 和 dplyr 的组合给出的结果与简单的统计测试不一致

2024-01-14

我使用 ks.test() 将两个向量(data_A_score、data_B_score)与另一个向量 K1 进行比较, 我得到这个结果:

score_ref_k1 <- c(0.09651, 0.09543, 0.09122, 0.09458, 0.09382, 0.10158, 0.10339, 
  0.13594, 0.09458, 0.09296)
data_A_score_src <- c(0.09293, 0.09838, 0.09866, 0.10866, 0.09726, 0.10731, 
  0.09866, 0.09398, 0.10007, 0.10408)
data_B_score_src <- c(0.04741, 0.0621, 0.09606, 0.08851, 0.05063, 0.39775, 0.05509, 
  0.10784, 0.0468, 0.04782)
ks.test(data_A_score_src, score_ref_k1, exact = FALSE, alternative = "g")
#> Warning in ks.test(data_A_score_src, score_ref_k1, exact = FALSE,
#> alternative = "g"): p-value will be approximate in the presence of ties
#> 
#>  Two-sample Kolmogorov-Smirnov test
#> 
#> data:  data_A_score_src and score_ref_k1
#> D^+ = 0.1, p-value = 0.9048
#> alternative hypothesis: the CDF of x lies above that of y

ks.test(data_B_score_src, score_ref_k1, exact = FALSE, alternative = "g")
#> Warning in ks.test(data_B_score_src, score_ref_k1, exact = FALSE,
#> alternative = "g"): p-value will be approximate in the presence of ties
#> 
#>  Two-sample Kolmogorov-Smirnov test
#> 
#> data:  data_B_score_src and score_ref_k1
#> D^+ = 0.7, p-value = 0.007447
#> alternative hypothesis: the CDF of x lies above that of y

然后我尝试用同样的方法咕噜::地图 http://purrr.tidyverse.org/reference/map.html。首先这是数据:

library(tidyverse)

all_comb <- structure(list(src = structure(1:2, .Label = c("data_B", "data_A"), 
  class = "factor"), ref = structure(c(1L, 1L), .Label = "K1", class = "factor"), 
  data = list(structure(list(score_ref = c(0.09651, 0.09543, 0.09122, 0.09458, 
    0.09382, 0.10158, 0.10339, 0.13594, 0.09458, 0.09296), score_src = c(0.04741, 
    0.0621, 0.09606, 0.08851, 0.05063, 0.39775, 0.05509, 0.10784, 0.0468, 
    0.04782)), row.names = c(NA, -10L), class = c("tbl_df", "tbl", "data.frame"), 
    .Names = c("score_ref", "score_src")), structure(list(score_ref = c(0.09651, 
    0.09543, 0.09122, 0.09458, 0.09382, 0.10158, 0.10339, 0.13594, 0.09458, 
    0.09296), score_src = c(0.09293, 0.09838, 0.09866, 0.10866, 0.09726, 
    0.10731, 0.09866, 0.09398, 0.10007, 0.10408)), row.names = c(NA, -10L), 
    class = c("tbl_df", "tbl", "data.frame"), .Names = c("score_ref", "score_src")))), 
  class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA, -2L), .Names = c("src", 
    "ref", "data"))

# just showing the content
all_comb %>% unnest(data)
#> # A tibble: 20 × 4
#>       src    ref score_ref score_src
#>    <fctr> <fctr>     <dbl>     <dbl>
#> 1  data_B     K1   0.09651   0.04741
#> 2  data_B     K1   0.09543   0.06210
#> 3  data_B     K1   0.09122   0.09606
#> 4  data_B     K1   0.09458   0.08851
#> 5  data_B     K1   0.09382   0.05063
#> 6  data_B     K1   0.10158   0.39775
#> 7  data_B     K1   0.10339   0.05509
#> 8  data_B     K1   0.13594   0.10784
#> 9  data_B     K1   0.09458   0.04680
#> 10 data_B     K1   0.09296   0.04782
#> 11 data_A     K1   0.09651   0.09293
#> 12 data_A     K1   0.09543   0.09838
#> 13 data_A     K1   0.09122   0.09866
#> 14 data_A     K1   0.09458   0.10866
#> 15 data_A     K1   0.09382   0.09726
#> 16 data_A     K1   0.10158   0.10731
#> 17 data_A     K1   0.10339   0.09866
#> 18 data_A     K1   0.13594   0.09398
#> 19 data_A     K1   0.09458   0.10007
#> 20 data_A     K1   0.09296   0.10408

然后我用这个计算相同的测试:

all_comb %>%
      mutate(vt = purrr::map(data,  ~ks.test(.$score_ref, .$score_src, exact=FALSE, alternative="g")),
      tidied = purrr::map(vt, broom::tidy)) %>%
      tidyr::unnest(tidied) %>%
      select(src, ref, p.value) 

这使:

# A tibble: 2 × 3
     src    ref   p.value
  <fctr> <fctr>     <dbl>
1 data_B     K1 0.9048374
2 data_A     K1 0.0820850

请注意与最上面结果的差异:

#> data:  data_A_score_src and score_ref_k1
#> D^+ = 0.1, p-value = 0.9048
#> data:  data_B_score_src and score_ref_k1
#> D^+ = 0.7, p-value = 0.007447

为什么?如何修复我的 purrr、dplyr 方法?


如果您在 ks.test 中切换分数和测试,您会得到相同的值:

all_comb %>%
      mutate(vt = purrr::map(data,  ~ks.test(.$score_src,.$score_ref,  exact=FALSE, alternative="g")),
      tidied = purrr::map(vt, broom::tidy)) %>%
      tidyr::unnest(tidied) %>%
      select(src, ref, p.value) 
# A tibble: 2 <U+00D7> 3
      src    ref     p.value
   <fctr> <fctr>       <dbl>
1 bcdidsp     K1 0.007446583
2 bcdipsp     K1 0.904837418
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

purrr::map 和 dplyr 的组合给出的结果与简单的统计测试不一致 的相关文章

  • 在 R 中向散点图添加线条

    如何向图表添加线条 我做了以下 dat lt data frame xvar 1 20 rnorm 20 sd 10 yvar 1 20 rnorm 20 sd 10 zvar 1 20 rnorm 20 sd 10 plot dat 1
  • 通过间接引用列来修改数据框中的某些值

    我正在整理一些数据 我们将失败的数据分类到垃圾箱中 并按批次计算每个分类箱的有限产量 我有一个描述排序箱的元表 这些行按升序测试顺序排列 一些排序标签带有非语法名称 sort tbl lt tibble tribble weight lab
  • 如何使用 usmap 标记数字而不是名称?

    我知道 usmap 有一个选项label in plot usmap 我想标记一些数字 而不是状态名称 我想 usmap 中应该有与州质心坐标相关的数据 但我不知道如何找到它 如果我能得到 坐标然后我可以用它来标记数字geom text 这
  • Dendextend:关于如何根据定义的组为树状图的标签着色

    我正在尝试使用一个名为 dendextend 的很棒的 R 包来绘制树状图并根据一组先前定义的组为其分支和标签着色 我已阅读您在 Stack Overflow 中的答案以及 dendextend vignette 的常见问题解答 但我仍然不
  • 以引用透明的方式从函数的省略号参数中提取符号

    事情又发生了 我正要按下发布答案按钮的问题被删除了 我正在寻找一种方法来从函数的省略号参数中提取绑定到符号的对象的值以及符号 也就是说 我试图以引用透明的方式从省略号中提取符号 我尝试过使用替代品和lazy dots 但没有成功 funct
  • R 中的列乘以子字符串

    假设我有一个数据框 其中包含多个组件及其在多个列中列出的属性 并且我想对这些列运行多个函数 我的方法是尝试将其基于每个列标题中的子字符串 但我无法弄清楚如何做到这一点 下面是数据框的示例 Basket F Type 1 F Qty 1 F
  • 将每列的值乘以 R 中另一个 data.frame 中的权重

    我有两个data frames df and weights 代码如下 df看起来像这样 id a b d EE f 1 this 0 23421153 0 02324956 0 5457353 0 73068586 0 5642554 2
  • 将数据框中重叠的范围合并到唯一的组中

    我有一个 n 行 3 的数据框 df lt data frame start c 178 400 983 1932 33653 end c 5025 5025 5535 6918 38197 group c 1 1 2 2 3 df sta
  • 基于时间窗口的不规则时间序列的优化滚动函数

    有没有办法使用 rollapply 来自zoo包或类似的东西 优化功能 rollmean rollmedian等 使用基于时间的窗口计算滚动函数 而不是基于大量观察的函数 我想要的很简单 对于不规则时间序列中的每个元素 我想计算一个具有 N
  • 将阴影区域添加到五分位数之间的直方图中

    All 我有一个包含 2 个直方图的图表 其中我还绘制了代表第 20 40 60 和 80 个百分位数的线条 下面的代码使用虚拟数据重现了类似的图表 data lt rbind data frame x rnorm 1000 0 1 g o
  • 计算 R 中各列的唯一值

    我正在尝试创建一个新变量 其中包含来自两个不同列的字符串值的唯一计数 所以我有这样的东西 例如 A tibble 4 x 2 names partners
  • ggplot2:如何标记事件发生的日期

    我想从第二个情节中获取第一个情节的信息 第二张图表示事件发生的天数 它看起来更宽 因为它没有图例 但它是相同的时间尺度 我选择在第一个图中手动分配颜色 I would like to overlay the second plot dots
  • 将不均匀的层次列表转换为数据框

    我认为还没有有人问过这个问题 但是有没有一种方法可以将具有多个级别和不均匀结构的列表的信息组合成 长 格式的数据帧 具体来说 library XML library plyr xml inning lt http gd2 mlb com c
  • R“错误:“}”中出现意外的“}”[重复]

    这个问题在这里已经有答案了 我有一个字符串变量 对于缺少数据的情况 它具有 空值 我想将 空值 重新编码为缺失 而不是说 空值 我正在尝试编写一个循环来删除这些 空值 条目 但我不断收到错误 错误 中出现意外的 for row in dat
  • applyStrategy 错误

    我是R新手 最近运行后遇到以下错误applyStrategy函数来自quantstrat包裹 Error in eval expr envir enclos object signal not found Error in colnames
  • 条件字体颜色 R Markdown

    我无法找到一种方法来根据变量的值 gt 0 0 或 r setup include FALSE x lt 4 This is an R Markdown document r if x gt 0 textcolor red Markdown
  • 闭包作为数据合并习惯的解决方案

    我正在尝试解决闭包问题 而且我think我发现了一个案例 他们可能会有所帮助 我有以下几部分需要处理 一组正则表达式 旨在清理状态名称 位于函数中 具有州名称 上述函数创建的标准化形式 和州 ID 代码的 data frame 用于链接两者
  • 如何绘制具有显着性水平的箱线图?

    前段时间问了一个关于绘制箱线图的问题Link1 https stackoverflow com questions 14604439 plot multiple boxplot in one graph 我有一些包含 3 个不同组 或标签
  • 在 ifelse() 语句内部和外部运行一行时的不同输出

    我正在尝试运行一个简单的命令 但不知道为什么在内部和外部运行它时输出不同ifelse 功能 函数条件评估为FALSE 所以输出应该完全相同 但是 单独运行时 输出为0 0 1 1 0 1 0 1 NA 根据需要 但是从ifelse 函数 输
  • 在 Shiny 中的用户会话之间共享反应数据集

    我有一个相当大的反应数据集 该数据集是通过轮询文件然后按预定义的时间间隔读取该文件而派生的 数据更新频繁 需要不断重新加载 诚然 重新加载可以增量完成并附加到 R 中的现有对象 但事实并非如此 然而目前 尽管会话中的数据相同 但此操作是针对

随机推荐