为什么来自 car package 的 Boxplot 函数不 return 所有异常值?
Why Boxplot function from car package does not return all outliers?
我很好奇函数Boxplot()
从car
包到return识别异常值的方法(参见示例
).
事实上,我认为检测到的异常值应该与任何方法都相同,但事实并非如此,特别是对于长向量。由于某种原因,这个函数 return 似乎只是最极端的异常值。
这里使用模拟数据进行演示(模拟方法来自:)
my.rnorm <- function(N, num.out, mean=0, sd=1){
x <- rnorm(N, mean = mean, sd = sd)
ind <- sample(1:N, num.out, replace=FALSE )
x[ind] <- (abs(x[ind]) + 3*sd) * sign(x[ind])
x
}
vector<-my.rnorm(1200,20)
首先使用 boxplot()
函数给我 32 个异常值:
outliers1<-sort(boxplot(vector)$out)
sort(outliers1)
1 -4.124101 -3.869423 -3.768973 -3.768571 -3.639510 -3.536848 -3.469979 -3.422215 -3.240268 -3.141479 -3.107837
[12] -2.822105 -2.723802 2.685210 2.712847 2.726344 2.726544 2.751796 2.762394 3.008180 3.030209 3.116131
[23] 3.146028 3.198794 3.353337 3.423981 3.605032 3.607052 3.944753 3.950593 4.012654 4.623255
现在 car::Boxplot()
函数给出了 20 个最极端的值:
id_outliers<-car::Boxplot(vector)
outliers2<-vector[id_outliers]
sort(outliers2)
1 -4.124101 -3.869423 -3.768973 -3.768571 -3.639510 -3.536848 -3.469979 -3.422215 -3.240268 -3.141479 3.146028
[12] 3.198794 3.353337 3.423981 3.605032 3.607052 3.944753 3.950593 4.012654 4.623255
似乎 car::Boxplot()
没有保留 12 个不太极端的离群值。比较两个箱线图时问题更清楚:
我的问题是为什么 car::Boxplot
函数不 return 所有异常值?
好的,我探索了car::Boxplot
的代码,发现该函数默认只return只有10个最低值和10个最高值。
我想现在我需要与开发人员一起了解在编写函数时选择这种选择的统计原因(如果有的话)。
我很好奇函数Boxplot()
从car
包到return识别异常值的方法(参见示例
事实上,我认为检测到的异常值应该与任何方法都相同,但事实并非如此,特别是对于长向量。由于某种原因,这个函数 return 似乎只是最极端的异常值。
这里使用模拟数据进行演示(模拟方法来自:
my.rnorm <- function(N, num.out, mean=0, sd=1){
x <- rnorm(N, mean = mean, sd = sd)
ind <- sample(1:N, num.out, replace=FALSE )
x[ind] <- (abs(x[ind]) + 3*sd) * sign(x[ind])
x
}
vector<-my.rnorm(1200,20)
首先使用 boxplot()
函数给我 32 个异常值:
outliers1<-sort(boxplot(vector)$out)
sort(outliers1)
1 -4.124101 -3.869423 -3.768973 -3.768571 -3.639510 -3.536848 -3.469979 -3.422215 -3.240268 -3.141479 -3.107837
[12] -2.822105 -2.723802 2.685210 2.712847 2.726344 2.726544 2.751796 2.762394 3.008180 3.030209 3.116131
[23] 3.146028 3.198794 3.353337 3.423981 3.605032 3.607052 3.944753 3.950593 4.012654 4.623255
现在 car::Boxplot()
函数给出了 20 个最极端的值:
id_outliers<-car::Boxplot(vector)
outliers2<-vector[id_outliers]
sort(outliers2)
1 -4.124101 -3.869423 -3.768973 -3.768571 -3.639510 -3.536848 -3.469979 -3.422215 -3.240268 -3.141479 3.146028
[12] 3.198794 3.353337 3.423981 3.605032 3.607052 3.944753 3.950593 4.012654 4.623255
似乎 car::Boxplot()
没有保留 12 个不太极端的离群值。比较两个箱线图时问题更清楚:
我的问题是为什么 car::Boxplot
函数不 return 所有异常值?
好的,我探索了car::Boxplot
的代码,发现该函数默认只return只有10个最低值和10个最高值。
我想现在我需要与开发人员一起了解在编写函数时选择这种选择的统计原因(如果有的话)。