我正在寻找一种方法来绘制一系列分布的偏度峰度图:皮尔逊系统、对数正态、伽马、广义伽马、帕累托 1、2、3、4 等。
我只找到了其中一些分布图。甚至可以为所有理论分布绘制一个偏度峰度图吗?如何为我需要的人做这件事?
我正在寻找一种方法来绘制一系列分布的偏度峰度图:皮尔逊系统、对数正态、伽马、广义伽马、帕累托 1、2、3、4 等。
我只找到了其中一些分布图。甚至可以为所有理论分布绘制一个偏度峰度图吗?如何为我需要的人做这件事?
让:
其中通常用作 skewness 的量度,而经常用作峰度的量度。
Pearson 绘图图根据偏度 (轴) 和峰度 (轴) 来描述属于 Pearson 家族成员的分布:
(0,3) 处的点表示正态分布。
Gamma 分布定义了绿色的 III 型线。指数分布只是 III 型线上的一个点。
逆伽玛分布定义了蓝色的 V 型线。
幂函数 [Beta(a,1)] 定义 I(J) 型线。类型 I 嵌套了 Beta 分布。
类型 VII(对称:当时)嵌套学生的 t 分布等
OP 询问如何将其他分布(甚至可能不是 Pearson 家族的成员)添加到 Pearson 绘图图上。这是我们 Springer 文本的第 5 章中的练习:Rose 和 Smith,Mathematica 的数学统计。本章的免费副本可在此处下载:
http://www.mathstatica.com/book/bookcontents.html
为了说明,假设我们想在 Pearson 图上添加一个偏态正态分布。让与 pdf:
平均值是:
...而第二、第三和第四个中心矩是:
那么,和由下式给出:
由于和都由参数确定,因此和是相关的。消除参数看起来很棘手,所以我们将使用数值方法。例如,我们可以参数化地绘制和的函数,因为从 0 增加到 300:
这条线将位于皮尔逊图上的什么位置?为了准确地看到答案,我们需要将图 P1 叠加到标准皮尔逊图上。由于皮尔逊图的纵轴是倒置的,所以我们仍然需要倒置 P1 的纵轴。这可以通过将 P1 中的所有点 {x,y} 转换为 {x,9-y} 来完成,然后将 P1 和 Pearson 图一起显示。这样做会产生:
总之,图中的黑线描述了分布可以表现出 )的可能值。时的正态分布,然后随着向无穷大增加,沿着黑线移动。
任何分布在概念上都可以采用相同的方法:在某些情况下,分布将由单个点捕获;在其他情况下,例如这里的情况,作为一条线;在其他情况下,更一般的东西。
笔记
Expect并且PearsonPlot是MathStatica附加到Mathematica的函数;Erf表示误差函数,并且ParametricPlot是Mathematica函数。
在极限中,随着向无穷大增加,在上极值处,和取以下值,这里用数字表示:{0.990566, 3.86918}
偏度峰度图有两种主要类型;一种是针对峰度绘制偏度(其中不可能的边界是一条抛物线),另一种是针对峰度(它变成一条线)绘制平方偏度。
有些图不只是绘制单个样本的样本值 - 有些使用引导程序生成应该反映采样可变性的值的分布(因此您可以看到哪些分布是合理的,哪些分布“太远了” )。[然而,通过尝试一些示例人口分布,似乎常常低估了一个方向的变异性,而略微高估了另一个方向的变异性(重新采样的值通常倾向于聚集在一条线上,而不是它们确实表明了采样变异性)。 ]
但无论如何,绘制分布的方法是查看其偏度和峰度并绘制它们。
如果偏度和峰度是固定的,只需绘制该点(并标记它)。但是,请注意,某些分布可能不会同时具有偏度和峰度是有限的(如果峰度是有限的,那么偏度也必须是有限的,如果偏度不是有限的,那么峰度也不会是有限的)。
如果分布是一个族,其偏度和峰度取决于一个参数,如果您不能直接写出偏度和峰度之间的关系,您可以使用该参数来参数化它所在的曲线。
如果偏度和/或峰度取决于它们之间的几个参数(或者可能超过两个),您可能有一个区域而不是曲线,在这种情况下,您需要尝试从关系中找出边界参数的可能值和偏度/峰度。
这是一个基本的图表(基于我去年写的关于 Pearson 家族的一些笔记):
请注意,我有(峰度)在 x 轴上和(平方偏度)在 y 轴上。这是因为绘图在这个方向上工作得更好,因为您需要更多的峰度空间。
Pearson 分布类型在括号中标有罗马数字。请注意,命名分布(如“(III)”行上的“伽马”)包含这些系列的缩放和移位版本(包括负比例)。
[我的图表没有拆分测试版(类型) 区域分为“U”形/“J”形/山形子区域,但有些图表会这样做]
以下是添加一些不是 Pearson 系列的分布的示例:
案例1(位置/尺度变换前的单一分布):逻辑分布
Wikipedia 将偏度设为 0,将 Excess kurtosis 设为 1.2,因此0 和4.2. 所以我们想在 (4.2,0) 处绘制一个点(标有“L”)
案例 2(位置尺度之前的 1 个参数族):对数正态分布
维基百科给出偏度为
和过度峰度为
写作为了, 这意味着
这两者之间的直接关系并不是很明显,所以让我们使用参数化它。作为,请注意,这接近正常。在我们到达图表的右边缘,所以我们应该有在这些值之间变化。如果我们选择了足够多的值(10 可能就足够了,因为它不是强烈弯曲的)我们会得到一条看起来很平滑的曲线。
逻辑点位于法线点右侧的底部。
对数正态曲线用黑色虚线表示,在类型区域(但它不是 VI 型)。
descdist在 R 中,可以使用包中的函数最容易地生成这样的图fitdistrplus:
这里的蓝点是一个特定的样本(碰巧来自ExGaussian)。请注意,此显示的轴从我之前的图表中翻转过来。(向它添加额外的分发点和行更难,但如果你看看代码做了什么descdist,特别是它如何使用kurtmax变量,它仍然是可能的。)
由于人们肯定会要求它,这里是第一个情节的 R 代码:
plot(c(0,25),c(0,14),type="n", frame=FALSE,
ylab=expression(beta[1]),
xlab=expression(beta[2]) )
#region 0
polygon(c(0,0,1,15),c(14,0,0,14),col=rgb(.8,0.8,.85,.5),border=FALSE)
lines(c(1,15),c(0,14),lwd=2,col="grey")
# region I
polygon(c(15,1,3,3+21),c(14,0,0,14),col=rgb(.99,0.5,.8,.5),border=FALSE)
lines(c(3,3+21),c(0,14),lwd=2,col=rgb(.99,0.5,.8,1))
# region VI
a=rev(exp(seq(log(5.759),log(1000),.2)))
polygon(c(25,3+21,3,3*(a+5)*(a-2)/(a-3)/(a-4)),
c(14,14,0,16*(a-2)/(a-3)^2),
col=rgb(.95,0.8,.3,.4),border=FALSE)
lines(c(3,3*(a+5)*(a-2)/(a-3)/(a-4)),
c(0,16*(a-2)/(a-3)^2),lwd=2,col=rgb(0.95,.8,.3,.9))
# region IV
a=rev(a)
polygon(c(3*(a+5)*(a-2)/(a-3)/(a-4),3,25),
c(16*(a-2)/(a-3)^2,0,0),
col=rgb(.5,0.95,.6,.4),border=FALSE)
points(1.8,0,pch="U")
points(3,0,pch="N")
points(9,4,pch="E")
text(0.5,13,labels="U - uniform",pos=4)
text(0.5,12,labels="N - normal",pos=4)
text(0.5,11,labels="E - exponential",pos=4)
text(1,8,labels="impossible",pos=4)
text(9,7,labels="beta",pos=4)
text(16,7.75,labels="beta prime, F",pos=4)
text(9.2,6.25,labels="(I)",pos=4,family="serif")
text(1.8,0,labels="(II)",pos=4,cex=0.8,family="serif")
text(16.2,7,labels="(VI)",pos=4,family="serif")
text(15,2,labels="(IV)",pos=4,family="serif")
text(13,7.1,labels="(III)",pos=4,cex=0.8,family="serif")
text(17,5.7,labels="(V)",pos=4,cex=0.8,family="serif")
text(12.5,0,labels="(VII)",pos=4,cex=0.8,family="serif")
text(12.2,0,labels="t",pos=4)
text(11.25,5.8,labels="gamma",srt=25,pos=4)
text(15.3,5,labels="inverse",srt=14,pos=2)
text(14.9,5.15,labels="gamma",srt=11,pos=4)
(有必要将绘图区域大致拉伸为我在上面制作的形状,否则倾斜的文本将不在正确的位置。)
放置逻辑点和对数正态曲线的代码是:
points(4.2,0,pch="L")
a=c((10:17)/10,1.724)
lines(a^4 + 2*a^3 + 3*a^2 - 3,(a+2)^2*(a-1),lty=2)