我正在处理一个数据集,这些数据集在数据中有一些明显的错误(即,1岁以下的孩子,信用卡余额为$ 50,000)。我不能一行一行地设置为> 100k行。有没有正式的工作如何在数据集中搜索这些类型的明显问题,甚至更好的R中的任何包?或者我应该开始做直方图?
答案 0 :(得分:5)
今年在UseR2011会议上有一个会议。我记得很清楚,因为我主持了它:)
http://www.warwick.ac.uk/statsdept/user-2011/schedule/thursday.html
'deducorrect'和'editrules'包可能对你有所帮助,而那个会话中的其他一些讨论也可能有一些指示。
数据管理,MS.01,主席:Barry Rowlingson
Susan Ranney这是一个 男孩!用R [幻灯片]分析数百万的出生记录
Joanne Demmler使用大型数据库的挑战 常规收集的健康数据:结合SQL和R [幻灯片]
约翰 布莱恩特人口统计学:人口数据的类别和方法
Mark van der Loo使用更正违反线性限制的数据 deducorrect和editrules包
答案 1 :(得分:3)
据我所知,没有这样的包裹。看起来你所要求的是非常专业的。我认为你真的在寻找异常或异常值。虽然让一些东西在其他变量上退化并搜索潜在的极端异常值(可能不那么难)会很酷。
2个想法:
1)你将会考虑变量的散点图,例如年龄和收入。即使有100k行,其中一行(1岁,制作50K)也会远离其他所有行。
2)运行回归并查看模型图。那里有一些非常好的异常值检测。
3)搜索标准化残差并查找高于2或最有可能3 sd的值,使用哪个语句索引数据的观察数。
类似于:dataframe[which(rstandard(model)>3), ]
答案 2 :(得分:1)
有异常值检测方法,例如LOF,Local Outlier Factor。此方法尝试检测与类似对象明显不同的对象。它超越了简单的全局直方图。因此,50000美元的价值在全球范围内可能并不常见,但是当您查找类似的记录时,无论是年龄偏差还是平衡。这就是所谓的“本地”异常值。
我不知道是否有R包。也许,也许不是。根据您的使用情况 - 由于年龄和平衡是非常不同的领域,欧几里德距离的天真实现可能无论如何都不会。
对于这类任务,我喜欢使用ELKI。它是非常可定制的 - 您可以实现自定义距离函数,它在distance function tutorial中进行了解释。由于它使用索引结构,因此速度相当快。我不认为R有任何好的数据索引结构。