如何在SAS中识别异常值(附实例)

750 阅读1分钟

离群点是指与数据集中的其他数值相距异常遥远的观测值。离群值可能是有问题的,因为它们会影响分析的结果。

识别数据集中离群值的最常用方法是使用四分位数范围。

四分位数范围(IQR)是数据集中第75个百分点(Q3)和第25个百分点(Q1)之间的差值。它衡量的是中间50%的数值的分布。

我们通常将一个观察值定义为离群值,如果它是大于第三四分位数(Q3)的1.5倍,或小于第一四分位数(Q1)的1.5倍的四分位数。

离群值 = 观察值 > Q3 + 1.5*IQR 或 < Q1 - 1.5*IQR

下面的例子显示了如何在SAS中使用这个公式来识别数据集中的离群值。

例子:识别SAS中的离群值

假设我们在SAS中拥有以下数据集:

/*create dataset*/
data original_data;
    input team $ points;
    datalines;
A 18
B 24
C 26
D 34
E 38
F 45
G 48
H 54
I 60
J 73
K 79
L 85
M 94
N 98
O 221
P 223
;
run;

/*view dataset*/
proc print data=original_data;

在SAS中识别离群值的最简单方法是创建一个boxplot,它自动使用前面提到的公式来识别并将数据集中的离群值显示为小圆圈:

/*create boxplot to visualize distribution of points*/
ods output sgplot=boxplot_data;
proc sgplot data=original_data;
    vbox points;
run;

/*view summary of boxplot descriptive statistics*/
proc print data=boxplot_data;

从boxplot中我们可以看到,在图的顶部附近有两个小圆圈。这表明有两个离群值。

从boxplot下面的表格中,我们可以看到这两个离群值的确切数值:221223

我们可以用前面的公式来手动验证这两个值是离群值。

离群值 = 观察值 > Q3 + 1.5*IQR 或 < Q1 - 1.5*IQR

四分位数范围是Q3-Q1=89.5-36=53.5。

异常值的上限将是Q3 + 1.5*IQR = 89.5 + 1.5*53.5 = 169.75。

由于221223都大于这个值,所以它们被归类为离群值。

如果我们愿意的话,我们可以使用下面的代码从数据集中删除这两个离群值:

/*create new dataset with outliers removed*/
data new_data;
    set original_data;
    if points >= 221 then delete;
run;

/*view new dataset*/
proc print data=new_data;

请注意,这两个离群值已经被删除了。

其他资源

下面的教程解释了如何在SAS中执行其他常见的任务:

如何在SAS中使用Proc Summary
如何在SAS中使用Proc Tabulate
如何在SAS中计算相关性
如何在SAS中创建频率表
如何在SAS中用0替换缺失值