Lar*_*ina 6 r mean absolute variation
我试图计算数字样本("S")的平均平均偏差.我在使用"mad()"函数时得到的结果以及一次一步地进行平均偏差计算的结果是不同的.为什么?
s<- c(100,110,114,121,130,130,160)
Run Code Online (Sandbox Code Playgroud)
使用"mad()"函数,我得到:
> mad(s)
[1] 13.3434
Run Code Online (Sandbox Code Playgroud)
当分解公式并一次一步地执行相同的操作时,我得到:
> sum(abs(s-mean(s)))/length(s)
[1] 14.08163
Run Code Online (Sandbox Code Playgroud)
为什么这些结果有所不同?
我在输入配方时出错了吗?(这并不奇怪 - 我刚开始学习R).我的配方有什么问题?
或者是R用来计算与以下不同的平均平均偏差的公式(在维基百科上给出)
MAD =(((每个值减去样品的平均值))的绝对值之和除以(样品中的值的数量)?
(谢谢您的帮助!)
不幸的是,"MAD"是一个具有多重含义的术语; 平均值的绝对偏差(有时称为MD或平均偏差),与中位数的中位数绝对偏差,与中位数的平均绝对偏差(在拉普拉斯计算尺度时出现)等.维基百科 - 虽然经常有用 - - 不是使用仲裁者; 它在使用术语时有时会有点特殊(这不是对维基百科的特别批评;它本质上是固有的).[就个人而言,在没有进一步线索的情况下,我通常将MAD解释为与中位数的中位数绝对偏差,并且如果没有完全写入,则期望与均值的平均绝对偏差被写为"均值偏差"/"MD"或"平均绝对偏差".]
R计算的问题通过简单的权宜之计解决?mad:
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.
Run Code Online (Sandbox Code Playgroud)
正如一般建议,当第一次使用函数时,不要假设你知道它在做什么.例如,在我第一次阅读MAD的帮助之前,我不希望它在默认情况下乘以该常量.(我认为这是一个坏主意,因为这意味着默认它实际上不会计算任何称为MAD的东西,而是对未被污染的部分是高斯的人口的强σ估计 - 但这就是它的工作原理.)
大多数功能都会按照您的想法执行,但有些功能可能会让您大吃一惊.检查帮助中的定义,查看输入和输出的定义方式,并尝试示例.
顺便提一下,如果你想要与均值的中位数(绝对)偏差,你可以得到它mad(x,mean(x),1).但如果你想要平均偏离均值,我不知道是否有更简单的写作mean(abs(x-mean(x))); 它至少具有完全明确的优势.