如何检查和消除异常值时非正态分布

12个视图(30天)
我发现很多人说z分数和mapstd标准化检测异常值有好处。但z分数是有用的只有是正态分布。当我发现我的数据不符合正态分布。我应该做什么?(1)我应该改变我的数据(boxcox,约翰逊转换)成正态分布,用z分数检测离群值吗?(2)转换和删除离群值后,我应该用我的转换数据或原始数据(数据异常值删除)神经网络的输入?我发现如果我输入数据(Johnson转换)转换为神经网络,它比原始数据。它是怎么?
有人能帮忙。非常感谢。

答案(1)

约翰D 'Errico
约翰D 'Errico 2022年7月12日
z分数不是一个糟糕的方法。然而,如果你有很多异常值,然后将自己的偏见z得分,降低离群值容易探测。
更好的计划可能是使用从减少数据集参数。例如,假设我们从损坏的数据。在本例中,数据应该是正态分布均值= 0,和标准偏差= 1,但后来我破坏它以5%高方差随机废话,有非零的意思。
X = [randn (1000 1); 5 + randn (50, 1) * 50);
X = X (randperm(元素个数(X)));
直方图(X, 100,“规范”,“pdf”)
如果我们试图从这组估计均值和方差,我们将得到一个相当贫穷的估计。
意思是(X)
ans = 0.1366
性病(X)
ans = 11.7369
所以总胡扯。我们可以使用z得分来寻找离群值吗?可能不会,因为数据的标准差本身是巨大的,因为数据中的异常值仍当我计算这些参数。所以z得分会很奇怪。
相反,考虑如果我们使用减少数据集?把中央90%的数据,丢弃顶部和底部5%的数据。
nx =元素个数(X);
Xtrim = (X)进行排序;
tfac =装天花板(nx * 0.05);
Xtrim = Xtrim (tfac: nx-tfac + 1);
直方图(Xtrim, 100,“规范”,“pdf”)
这看起来很正常,但如你所见,它缺乏正确的尾巴形状为一个真正的正态分布。
意思是(Xtrim)
ans = 0.0257
性病(Xtrim)
ans = 0.8593
正如你可以看到,我们所做的更好方式。事实上,你可以使用z得分仅基于这些数据,并使用它们抛弃离群值。
我可以做得更好,也许使用最大似然估计来计算一套更好的参数估计?可能。但这个问题现在7岁了。

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!

翻译的