驯服偏斜...为什么有这么多偏斜函数?

机器算法验证 偏度
2022-03-27 14:52:36

我希望对这个社区的四种偏差有更多的了解。

我所指的类型在http://www.inside-r.org/packages/cran/e1071/docs/skewness帮助页面中有所提及。

帮助页面中没有提到旧方法,但我仍然将其包含在内。

require(moments)
require(e1071)


x=rnorm(100)
n=length(x)
hist(x)


###############type=1
e1071::skewness(x,type=1)
sqrt(n) * sum((x-mean(x))^3)/(sum((x - mean(x))^2)^(3/2)) #from e1071::skewness source
m_r=function(x,r) {n=length(x); sum((x - mean(x))^r/n);} ##from e1071::skewness help
g_1=function(x) m_r(x,3)/m_r(x,2)^(3/2)
g_1(x) ##from e1071::skewness help
moments::skewness(x) ##from e1071::skewness help
(sum((x - mean(x))^3)/n)/(sum((x - mean(x))^2)/n)^(3/2) ##from moments::skewness code, exactly as skewness help page


###############type=2
e1071::skewness(x,type=2)
e1071::skewness(x,type=1) * sqrt(n * (n - 1))/(n - 2) #from e1071::skewness source
G_1=function(x) {n=length(x); g_1(x)*sqrt(n*(n-1))/(n-2);} #from e1071::help
G_1(x)
excel.skew=function(x) { n=length(x); return(n/((n-1)*(n-2))*sum(((x-mean(x))/sd(x))^3));}
excel.skew(x)


###############type=3
e1071::skewness(x,type=3)
e1071::skewness(x,type=1) * ((1 - 1/n))^(3/2) #from e1071::skewness source
b_1=function(x) {n=length(x); g_1(x)*((n-1)/n)^(3/2); }  #from e1071::skewness help page
b_1(x);
prof.skew=function(x) sum((x-mean(x))^3)/(length(x)*sd(x)^3);
prof.skew(x)

###############very old method that fails in weird cases
(3*mean(x)-median(x))/sd(x)
#I found this to fail on certain data sets as well...

这是 e1071 的作者参考的论文:http: //onlinelibrary.wiley.com/doi/10.1111/1467-9884.00122/pdf Joanes 和 CA Gill (1998),比较样本偏度和峰度的测量。

根据我对那篇论文的阅读,他们认为类型 #3 的错误最少。

以下是上述代码中偏度的示例:

e1071::skewness(x,type=1)
-0.1620332
e1071::skewness(x,type=2)
-0.1645113
e1071::skewness(x,type=3)
-0.1596088
#old type:
0.2694532

我也注意到e1071的作者写的skew函数和帮助页面的注释不同。注意 sqrt:

sqrt(n) * sum((x-mean(x))^3)/(sum((x - mean(x))^2)^(3/2)) #from e1071::skewness source

(sum((x - mean(x))^3)/n)/(sum((x - mean(x))^2)/n)^(3/2) #from moments and e1071 help page

任何想法为什么 sqrt(n) 在第一个等式中?哪个方程更好地处理上溢/下溢?任何其他想法为什么它们不同(但产生相同的结果)?

1个回答

让我们从您描述为“旧方法”的那个开始;这是第二个 Pearson 偏度或中值偏度事实上,矩偏度和那大致相同的年份(中值偏度实际上有点年轻,因为矩偏度先于 Pearson 的努力)。

可以在这里找到对一些历史的一些讨论;该帖子还可能对您的其他几个问题有所了解。

如果您使用第二个 Pearson 偏度搜索我们的网站,您会看到相当多的帖子,其中包含对该测量行为的一些讨论。

这并不比我脑海中的偏度测量值更奇怪。他们有时都会做一些奇怪的事情,这些事情与人们对偏度度量的期望不符。


通常的形式b1在此处的 Wikipedia 中进行了讨论正如它所说,它是一种矩估计方法,并且根据标准化的第三矩进行总体计算,使用它是一种自然的事情。

如果一个使用sn为了sn1(即没有贝塞尔校正)你得到g1你提到的类型;其中任何一个都是我所说的“时刻方法”。我不清楚尝试消除分母的偏差有多大意义,因为这不一定消除比率的偏差;这样做可能是有意义的,以便计算与人们可能期望手动执行的操作相匹配。

但是,还有第二种(等效)方法来定义人口偏度,根据累积量(参见上面的维基百科链接),如果对于样本偏度,您使用了这些的无偏估计,您会得到G1.

[进一步注意,将分子乘以b1经过n2(n1)(n2)消除偏见,因此这可能是人们看待这种形式的另一个原因。如果尝试对三阶矩和二阶矩的计算都进行去偏,则会得到一个稍微不同的因子n,(n1)(n2)从前面出来。]

所有这三个只是第三矩偏度的略微不同的变化。在非常大的样本中,您使用的确实没有区别。在较小的样本中,它们的偏差和方差都略有不同。


这里讨论的形式并没有穷尽偏度的定义(我认为我已经看到了大约十几个 -维基百科文章列出了很多,但即使这样也没有涵盖所有范围),甚至没有与第三个相关的定义-矩偏度,我看到的比你在这里提出的三个还要多。

为什么有很多偏度度量?

那么(暂时将所有这些第三时刻的偏度视为一个)为什么会有这么多不同的偏度?部分原因是偏度作为一个概念实际上很难确定。这是一件很棘手的事情,您无法真正确定一个数字。结果,所有定义在某种程度上都不够充分,但通常符合我们对偏度测量应该做什么的广义理解。人们不断尝试提出更好的定义,但旧的措施,如 QWERTY 键盘,并没有去任何地方。

为什么有几个基于第三时刻的偏度度量?

至于为什么会有如此多的三阶矩偏度,这仅仅是因为将总体测量值转换为样本测量值的方法不止一种。我们看到了两条基于矩的路线和一条基于累积量的路线。我们还可以建造更多;例如,我们可能会尝试在某些分布假设下获得(小样本)无偏测量,或最小均方误差测量或其他类似数量。

您可能会在网站上发现一些与偏度相关的帖子;有一些展示了非对称但三阶矩偏度为零的分布示例。有一些显示 Pearson 中值偏度和三阶矩偏度可能有相反的迹象。

以下是一些与偏度相关的帖子的链接:

均值 = 中位数是否意味着单峰分布是对称的?

在左偏数据中,均值和中位数之间的关系是什么?

如何从具有异常值的直方图中确定偏度?


关于你关于计算的最后一个问题b1

n(xx¯)3((xx¯)2)3/2#from e1071::skewness source

(xx¯)3/n((xx¯)2/n)3/2#from 时刻和 e1071 帮助页面

这两种形式在代数上是相同的;第二个清楚地写成“第三个时刻在第二个权力时刻”的形式32,而第一个只是抵消了n把剩菜放在前面。我不认为这样做是为了避免上溢/下溢;我想它已经完成了,因为它被认为要快一点。[如果溢出或下溢是一个问题,可能会以不同的方式安排计算。]