【问题标题】:How to calculate mean of multiple measures after removing outliers in R去除R中的异常值后如何计算多个度量的平均值
【发布时间】:2014-10-29 16:49:12
【问题描述】:

我有一个变量的三个独立测量值,它们会受到很多噪音和可能非常大的零星误差源的影响。我想丢弃离其他最远的值,记住哪个被丢弃,然后用剩下的两个计算平均值。例如,

a   b   c
15  6   7
11  10  3
5   12  6

会变成

a   b   c   ave     discard
15  6   7   6.5     15
11  10  3   10.5    3
5   12  6   5.5     12

【问题讨论】:

  • 如果三个值是100020003000,你会丢弃哪一个?如果您想对集中趋势进行稳健的测量,也许您应该使用中位数?

标签: r mean outliers


【解决方案1】:

试试:

ddf
   a  b c
1 15  6 7
2 11 10 3
3  5 12 6

ddf$ave = apply(ddf[1:3], 1, function(x) {
 x = sort(x)
 ifelse(abs(x[1]-x[2]) > abs(x[2]-x[3]), mean(x[2:3]), mean(x[1:2]))
 }
 )

ddf$discard = apply(ddf[1:3], 1, function(x) {
 x = sort(x)
 ifelse(abs(x[1]-x[2]) > abs(x[2]-x[3]), x[1], x[3])
 }
 )

ddf
   a  b c  ave discard
1 15  6 7  6.5      15
2 11 10 3 10.5       3
3  5 12 6  5.5      12

【讨论】:

    【解决方案2】:

    您的问题未指定。假设这三个值是100020003000。你会丢弃哪个?答案应该是1500 还是2500

    如果您要寻找的只是集中趋势的可靠度量,那么中值可能是一个好的开始(R 中的?median)。

    【讨论】:

    • 很好的解决方案,谢谢。关于规格不足,理论上存在平局的可能性,但在我的设置中不太可能,因为实际数字会出现许多小数位。我想我可以根据上面的代码建立一个平局
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多