【问题标题】:Comparing groups with different lengths in a tibble比较 tibble 中不同长度的组
【发布时间】:2020-03-16 11:19:31
【问题描述】:

我正在研究干旱对植物的影响,为此我需要比较干旱之前、期间和之后的数据。然而,事实证明很难从我的数据中选择这些时期,因为天的长度会有所不同。由于我有几年的每日分辨率时间序列,我想避免手动选择时间段。我已经为此苦苦挣扎了很长一段时间,如果有任何提示和建议,我将非常感激。

这是我的数据的简化示例:

myData <- tibble(
  day = c(1:16),
  TWD = c(0,0,0,0.444,0.234,0.653,0,0,0.789,0.734,0.543,0.843,0,0,0,0),
  Amp = c(0.6644333,0.4990167,0.3846500,0.5285000,0.4525833,0.4143667,0.3193333,0.5690167,0.2614667,0.2646333,0.7775167,3.5411667,0.4515333,2.3781333,2.4140667,2.6979333)
)

在我的数据中,TWD > 0 表示有干旱,所以我确定了这些时期。

myData %>%
  mutate(status = case_when(TWD > 0 ~ "drought", 
                           TWD == 0 ~ "normal")) %>%
{. ->> myData} 

我使用以下代码来获取各个正常期和干旱期的长度

myData$group <- with(myData, rep(seq_along(z<-rle(myData$status)$lengths),z))
with(myData, table(group, status))     

     status
group drought normal
    1       0      3
    2       3      0
    3       0      2
    4       4      0
    5       0      4

这就是我卡住的地方。理想情况下,我想获得每个干旱期的 Amp 平均值,并将它们与干旱前后的正常时期的平均值进行比较,然后再转移到下一个干旱期。我如何比较例如的日子第 1、2 和 3 组?我在这里找到了一个有前途的解决方案Selecting a specific range of days prior to event in R,其中使用了map(. , function(x) dat[(x-5):(x), ]),但问题是我没有要比较的固定天数,因为天数取决于正常和干旱期的长度.

我想创建一个嵌套的 tibble 来比较不同的组,比如这里 Compare groups with each other

tibble(value = myData,
    group= myData$group %>%
    nest(value))

但这会产生一个错误,我认为这是因为我试图组合一个向量而不是一个小标题。

【问题讨论】:

  • 你想如何比较周期的平均值?例如如果第 1 期的平均值是 0.5,第 2 期是 0.4,第 3 期是 0.44,你将如何进行比较?
  • @user2474226 我想分别比较所有组,例如周期 1 的平均值是否大于周期 2?它是否大于第 3 期?周期 2 是否大于周期 3?我的问题是:干旱期间 Amp 的平均值是否较小,干旱后的 Amp 是否与干旱前的 Amp 一样大。我希望这能澄清我正在尝试做的事情。
  • 哇。这里有一些有趣的东西。你为什么用{. -&gt;&gt; myData} 而不是-&gt; myData
  • 另外,你为什么要把一个小标题作为一个列放在另一个小标题中?做myData %&gt;% group_by(group) %&gt;% nest(value)不是更容易吗?
  • 仅供参考:您的示例数据没有任何关于组、日期或时间的信息,因此我们很难复制。

标签: r dplyr tibble


【解决方案1】:

一种可能性是使用成对的 Wilcoxon 检验来比较每个组的均值(但老实说,我不是 Wilcoxon 是否适合该数据的专家):

pairwise.wilcox.test(myData$Amp, myData$group, p.adjust.method = 'none', alternative = 'greater')

列和行索引是组,在这种情况下,您知道偶数组是“干旱”时期。

您可能需要更正多重比较(通过调查p.adjust.method 参数)。

【讨论】:

  • 谢谢!我认为这是我问题的部分解决方案。这将有助于在统计上比较不同的组。我也有兴趣在视觉上比较它们。而且我认为为此我还需要能够绘制每日值。
  • 你试过了吗? myData %&gt;% group_by(group) %&gt;% mutate(meanAmp = mean(Amp))?这将为您提供每个组的平均 Amp
  • 其实我没有!谢谢!
猜你喜欢
  • 1970-01-01
  • 2013-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-18
  • 1970-01-01
相关资源
最近更新 更多