我正在尝试计算数字样本(“S”)的平均偏差。我在使用“mad()”函数和每次进行平均偏差计算时得到的结果是不同的。为什么?

 s<- c(100,110,114,121,130,130,160)

使用“mad()”函数,我得到:
> mad(s)
[1] 13.3434

当分解公式并一次执行相同的操作时,我得到:
> sum(abs(s-mean(s)))/length(s)
[1] 14.08163

为什么这些结果不同?

输入公式时是否出错? (这并不奇怪 - 我刚刚开始学习 R)。我的公式有什么问题?

还是R用于计算平均平均偏差的公式与以下公式不同(基于Wikipedia给出)

疯狂 =
((每个值减去样本的平均值)的绝对值之和))
除以(样本中值的数量)?

(感谢您的帮助!)

最佳答案

不幸的是,“MAD”是一个具有多重含义的术语;与平均值的平均绝对偏差(有时称为 MD 或平均偏差)、与中位数的中位数绝对偏差、与中位数的平均绝对偏差(在拉普拉斯中计算比例时出现)等。维基百科——虽然通常很有用—— - 不是使用的仲裁者;有时它在术语的使用上可能有点特殊(这并不是对维基百科的特别批评;它部分是事物的本质所固有的)。 [就个人而言,在没有更多线索的情况下,我通常将MAD解释为相对于中位数的中位数绝对偏差,如果没有完全写成,则期望将其与平均值的平均绝对偏差写为“均值偏差”/“MD”或“平均绝对偏差”。]
?mad 的简单权宜之计解决了计算哪个 R 的问题:

 mad {stats}    R Documentation

 Median Absolute Deviation

 Description

 Compute the median absolute deviation, i.e., the (lo-/hi-) median of the
 absolute deviations from the median, and (by default) adjust by a factor
 for asymptotically normal consistency.

作为一般建议,第一次使用函数时,不要假设您知道它在做什么。例如,在我第一次阅读 MAD 的帮助之前,我不会期望它默认乘以该常数。 (我认为这是一个坏主意,因为这意味着默认情况下它实际上并不计算任何称为 MAD 的东西,而是对未受污染部分是高斯分布的总体的 σ 的稳健估计——但这就是它的工作原理。)

大多数函数会做你认为它们会做的事情,但有一些可能会让你感到惊讶。检查帮助中的定义,查看输入和输出是如何定义的,并尝试示例。

顺便说一句,如果你想要中值(绝对)偏离平均值,你可以通过 mad(x,mean(x),1) 得到。但是如果你想要平均偏差,我不知道有没有比 mean(abs(x-mean(x))) 更简单的写法;它至少具有完全明确的优点。

关于r - 为什么 mad(x) 的结果与预期结果不同?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31095550/

10-12 23:29