【问题标题】:Creating boxplot based on some conditions根据某些条件创建箱线图
【发布时间】:2020-06-12 08:52:34
【问题描述】:

给出的数据是 样本 胆固醇水平样本 来自 24 医院 员工 他们  美国 标准饮食 和 同意 采用 素食 饮食 1 个月。血清胆固醇 测量 在 采用 饮食 和 1 个月 后进行。

   Subject Before After Difference
1        1    195   146         49
2        2    145   155        -10
3        3    205   178         27
4        4    159   146         13
5        5    244   208         36
6        6    166   147         19
7        7    250   202         48
8        8    236   215         21
9        9    192   184          8
10      10    224   208         16
11      11    238   206         32
12      12    197   169         28
13      13    169   182        -13
14      14    158   127         31
15      15    151   149          2
16      16    197   178         19
17      17    180   161         19
18      18    222   187         35
19      19    168   176         -8
20      20    168   145         23
21      21    167   154         13
22      22    161   153          8
23      23    178   137         41
24      24    137   125         12

现在这是我要回答的问题。一些 研究人员 相信 饮食的 影响   胆固醇 在  高 而不是 低 胆固醇 水平的人 更 明显 。如果 您 根据 基线 胆固醇 是 高于 还是低于 中位数 对 数据 拆分 数据  您可以 对 这个问题进行描述 评论吗? 现在,我正在考虑在这里基于两个类别创建箱线图。我希望在这里使用dplyr 进行数据操作。因此,我将根据Before 是否小于或大于Before 的中值来创建一个新列。因此,我将有一个新的特征向量,其中“高”表示高胆固醇之前,低表示低之前胆固醇。然后,我将根据分类新列绘制Difference 的箱线图。所以,这是我的代码。我称原始数据集为df2

df2 %>% 
  mutate(new_col = if_else(Before < median(Before), "low", "high")) %>%
  group_by(new_col) %>%
  ggplot(aes(x= new_col, y=Difference)) +
  geom_boxplot()

以下是我得到的箱线图

因此,基于此,我得出结论,调查人员是正确的, 饮食对 胆固醇 的影响 在 高 而不是 低 胆固醇 水平的人群中 更为明显。我想知道这是否可以更有效地完成。

【问题讨论】:

  • 这个问题可能会产生基于意见的答案。鉴于 OP 中的 R 脚本生成了一个箱线图,可以回答以下问题:在预测试中高胆固醇的患者是否比在预测试中的低胆固醇患者更能从素食中受益,脚本是“有效”。
  • @LenGreski 不应该迁移到 stats.stackexchange 而不是关闭吗?
  • @DanChaltiel - 这取决于人们如何解释这个问题。如果问题是“是否有更有效的方法来创建 2 组箱线图”,我会说它不需要迁移。如果问题是“2 组比较是分析这些数据的最佳方式吗?”它值得迁移。也许 user9026 可以提供更多上下文,但这看起来像是一个家庭作业问题,其中关于将区间比率变量更改为序数变量以进行分析的优点的辩论可能超出了课堂上目前所教授的内容。

标签: r dplyr


【解决方案1】:

这更像是一个统计计划问题而不是编程问题,因此它更多属于 stats.stackexchange 而不是 StackOverflow。

无论如何,根据中位数对变量进行分类并不是可视化关联的推荐方式,因为您会隐藏大量信息。您可以在 Peter Flom 的 this very good article 中阅读相关内容。

最好保留所有点并应用一些样条或平滑算法。

例如,您可以考虑这样的事情:

ggplot(df2, aes(x= Before, y=Difference)) + 
  geom_point() + 
  geom_smooth()

在这里,关系清晰可见,同时保留了您想要的所有信息。

如果你真的要生成子组,你也可以试试这样:

df2 %>% 
  mutate(new_col = if_else(Before < median(Before), "low", "high")) %>% 
  ggplot(aes(x= Before, y=Difference, group=new_col, color=new_col)) + 
  geom_point() + 
  geom_smooth(span=3) #try some other values here

但是,使用中位数仍然不是一个好主意,尤其是在有这么多数据点的情况下。您可能想要评估关系的功能形式,但这需要在stats.stackexchange.com 上提出具体问题。

【讨论】:

  • 我认为这样更好。会检查文章,谢谢。
【解决方案2】:

不是真正的答案,而是更多不同的数据可视化方法..

library( data.table )
library( ggplot2 )

DT.melt <- melt( DT, id.vars = "Subject", measure.vars = c( "Before", "After" ) )

ggplot() +
  geom_line( data = DT.melt, 
             aes( x = variable, y = value, group = Subject ) ) +
  geom_line( data = DT.melt[, .(mean = mean(value)), by = variable ],
             aes( x = variable, y = mean, group = 1 ), color = "red", size = 2 ) +
  labs( x = "", y = "" )

使用的样本数据

DT <- fread(" Subject Before After Difference
        1    195   146         49
        2    145   155        -10
        3    205   178         27
        4    159   146         13
        5    244   208         36
        6    166   147         19
        7    250   202         48
        8    236   215         21
        9    192   184          8
    10    224   208         16
      11    238   206         32
      12    197   169         28
      13    169   182        -13
      14    158   127         31
      15    151   149          2
      16    197   178         19
      17    180   161         19
      18    222   187         35
      19    168   176         -8
      20    168   145         23
      21    167   154         13
      22    161   153          8
      23    178   137         41
      24    137   125         12")

【讨论】:

  • 有趣的方法
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多