如何在去除R中的异常值后计算多个度量的均值

时间:2014-10-29 16:49:12

标签: r mean outliers

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

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

2 个答案:

答案 0 :(得分:0)

你的问题不明确。假设这三个值为100020003000。哪个会丢弃?答案应该是1500还是2500

如果您正在寻找的是对集中趋势的有力衡量,那么中位数可能是一个良好的开端(R中为?median)。

答案 1 :(得分:0)

尝试:

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