R-从datafram打印异常值

R-从datafram打印异常值,r,statistics,outliers,R,Statistics,Outliers,我想从数据帧中提取异常值。例如,1000个数据点中有10个可能是异常值或不在95%置信区间内。有一些方法可以找到它与样本平均值之间差异最大的值 > a <- c(1,3,2,4,5,2,3,90,78,56,78,23,345) > require("outliers") > outlier(a) [1] 345 >要求(“异常值”) >离群值(a) [1] 345 我不想从数据框或箱线图中删除异常值。我想打印或子集 有什么想法吗?根据数据: a <- c(1,

我想从数据帧中提取异常值。例如,1000个数据点中有10个可能是异常值或不在95%置信区间内。有一些方法可以找到它与样本平均值之间差异最大的值

> a <- c(1,3,2,4,5,2,3,90,78,56,78,23,345)
> require("outliers")
> outlier(a)
[1] 345
>要求(“异常值”)
>离群值(a)
[1] 345
我不想从数据框或箱线图中删除异常值。我想打印或子集

有什么想法吗?

根据数据:

a <- c(1,3,2,4,5,2,3,90,78,56,78,23,345)
要回答的第一个问题是:53是您最可能期望的“正常”值吗? 我为什么要问?因为如果要打印不在95%范围内的值:

a[a > mean(a) + qt(0.975, df = length(a) - 1) * mean(a) / sqrt(length(a)) |
    a < mean(a) - qt(0.975, df = length(a) - 1) * mean(a) / sqrt(length(a))]

[1]   1   3   2   4   5   2   3  90 345
a[a>平均值(a)+qt(0.975,df=长度(a)-1)*平均值(a)/sqrt(长度(a))|
a<平均(a)-qt(0.975,df=长度(a)-1)*平均(a)/sqrt(长度(a))]
[1]   1   3   2   4   5   2   3  90 345

在您的情况下,您可能会得到比预期多得多的东西。

您可能会发现这个问题及其答案非常有用:@A.Val。如果我考虑95%置信区间,他们中的一些将被认为是离群值。让我们选择这个作为标准,你能推荐一些吗?怎么做?啊。好的,我试试看。但从表面上看,95%的置信度会对你的数据起到有趣的作用。这只是一个样本。考虑“RNORM(200,Mead=10,SD=3)”或其他。
a[a > mean(a) + qt(0.975, df = length(a) - 1) * mean(a) / sqrt(length(a)) |
    a < mean(a) - qt(0.975, df = length(a) - 1) * mean(a) / sqrt(length(a))]

[1]   1   3   2   4   5   2   3  90 345