【发布时间】:2021-02-28 16:05:49
【问题描述】:
我想创建一个函数,从我的数据集中删除所有异常值。我已经阅读了很多关于此的 Stack Overflow 文章,因此我意识到删除异常值的危险,但到目前为止我看到的所有函数都不适合我的数据类型。到目前为止,这是我所拥有的:
我的最小数据集示例:
ID, Treatment, conc, relabs
1, A, 40.00, 1.0793923
2, A, 40.00, 0.6436631
3, A, 40.00, 0.5556844
4, A, 40.00, 0.4834845
5, A, 40.00, 0.7224756
6, A, 40.00, 0.6804259
7, A, 20.00, 0.9958288
8, A, 20.00, 0.7099360
9, A, 20.00, 0.7028124
10, A, 20.00, 0.5016352
11, A, 20.00, 0.6860346
12, A, 20.00, 0.7341970
13, A, 10.00, 0.8175491
14, A, 10.00, 0.6900910
15, A, 10.00, 0.5278228
16, A, 10.00, 0.7560026
17, A, 10.00, 0.8841343
18, A, 10.00, 0.6687616
19, A, 5.00, 0.8563232
20, A, 5.00, 0.7419997
21, B, 0.80, 1.2049695
22, B, 0.80, 0.4969811
23, B, 0.80, 0.2835814
24, B, 0.80, 0.6700250
25, B, 0.80, 1.3126651
26, B, 0.80, 0.4510617
27, B, 0.60, 0.7629639
28, B, 0.60, 0.7513716
19, B, 0.60, 0.7956074
我使用rstatix 包中的identify_outliers 函数通过不同的处理和浓度来识别异常值,它为我提供了两个新列is.outlier 和is.extreme 的数据框。
df_outliers <-
df %>%
group_by(Treatment, conc) %>%
identify_outliers("relabs")
df_outliers
然后,我只需将 df_outliers 数据框的 dplyr 包中的 slice 函数中的 ID 粘贴到 slice 函数中,手动删除异常值,如果我有更大的数据集,这将很麻烦:
df_wo_outliers <-
df %>%
slice(-c(1, 7, 10, 19 )) %>%
select(-ID)
df_wo_outliers
我不知何故需要从我的原始数据集 relabs 列中自动删除 is.outlier = TRUE 所在的行。
这意味着在该浓度(可变浓度)和处理(可变处理)内,相对吸光度(可变 relabs)过高或过低(Q3 + 1.5xIQR/Q1 - 1.5xIQR)。
我愿意听取有关该函数的任何建议或编写我自己的建议,但是我不确定如何过滤数据,以便它可以删除数据集中不同组中的异常值,我的意思是 Treatment 和 conc 而不是正如我所见,整个数据集被讨论了很多。
另外有没有办法以类似的方式计算置信区间?由于我还没有以正确的方式过滤我的数据集,我相信我会遇到类似的问题
如果需要,我还包括我的部分数据的图片: section of my data set
我正在使用 Windows 10,R 版本 1.3.1073
【问题讨论】:
-
哪个包包含
identify_outliers()函数? -
你能提供一个可重现的例子吗? stackoverflow.com/questions/5963269/…
-
@Dave2e identify_outliers 函数来自一个包 rstatix
-
@william3031 我已经在我的帖子中添加了所有缺失的点,我相信现在更容易理解我正在使用的内容
标签: r statistics scatter-plot outliers confidence-interval