【发布时间】:2014-10-06 12:25:24
【问题描述】:
假设我们有这个矩阵:
main = [10000 5 3 1;
5 5677 0 134;
1 1 456 3];
这种方法是计量经济学和统计问题中使用最广泛的方法。X 是我们在其中寻找异常值的数据。
X-mean(X)>= n*std(X)
因此,如果这个不等式为真,则该样本为异常值,否则我们将保留该样本。
现在我的问题。我想用这些代码找出异常值:
meann = mean(main);
stdd = std(main);
out = find(main-repmat(meann,size(main,1),1)>=repmat(2*stdd,size(main,1),1));
我们正在每一列中搜索异常值。 Out 应该是异常值的索引。在最后一步中,我们应该删除每列中的异常值。有没有更简单的函数或方法可以在 MAtLAB 中做到这一点?
谢谢。
【问题讨论】:
-
该矩阵或每列的全局异常值?
-
我编辑了我的问题。
-
我认为你应该解释你的逻辑,因为我觉得你的代码没有正确实现你所追求的。您是说要找到与平均值(每列)相差 2 个标准差的任何数字吗?
-
是的。确实如此。我正在每一列中寻找异常值。我知道这段代码不完整。这只是一个想法。谢谢。
-
谢谢。我在我的问题中添加了更多信息。