繁体   English   中英

Kurtosis,条形图的偏斜? - Python

[英]Kurtosis,Skewness of a bar graph? - Python

什么是确定python中条形图的偏斜/峰度的有效方法? 考虑到条形图没有分箱(与直方图不同),这个问题没有多大意义,但我想要做的是确定图形高度与距离的对称性(而不是频率与分档)。 换句话说,给定沿距离(x)测量的高度(y)值,即

y = [6.18, 10.23, 33.15, 55.25, 84.19, 91.09, 106.6, 105.63, 114.26, 134.24, 137.44, 144.61, 143.14, 150.73, 156.44, 155.71, 145.88, 120.77, 99.81, 85.81, 55.81, 49.81, 37.81, 25.81, 5.81]
x = [0.03, 0.08, 0.14, 0.2, 0.25, 0.31, 0.36, 0.42, 0.48, 0.53, 0.59, 0.64, 0.7, 0.76, 0.81, 0.87, 0.92, 0.98, 1.04, 1.09, 1.15, 1.2, 1.26, 1.32, 1.37]

在距离(x)上测量的高度(y)分布(偏度)和峰值(峰度)的对称性是多少? 偏度/峰度是否适合用于确定实际值的正态分布? 或者scipy / numpy是否为这种类型的测量提供类似的东西?

我可以通过以下方式实现沿距离(x)分箱的高度(y)频率值的偏斜/峰度估计

freq=list(chain(*[[x_v]*int(round(y_v)) for x_v,y_v in zip(x,y)]))
x.extend([x[-1:][0]+x[0]])          #add one extra bin edge 
hist(freq,bins=x)
ylabel("Height Frequency")
xlabel("Distance(km) Bins")
print "Skewness,","Kurtosis:",stats.describe(freq)[4:]

Skewness, Kurtosis: (-0.019354300509997705, -0.7447085398785758)

直方图

在这种情况下,高度分布在中点距离附近是对称的(偏斜0.02)并且以扁平(-0.74峰度,即宽)分布为特征。

考虑到我将x值的每次出现乘以它们的高度y来创建频率,结果列表的大小有时会变得非常大。 我想知道是否有更好的方法来解决这个问题? 我想我总是可以尝试将数据集y标准化到0到100的范围,而不会丢失关于数据集偏斜/峰度的太多信息。

这不是一个蟒蛇问题,也不是一个真正的编程问题,但答案很简单。 我们首先考虑基于较低时刻, 平均值标准差的更容易的值,而不是倾斜和峰度。 为了使其具体,并适合您的问题,让我们假设您的数据如下:

X = 3, 3, 5, 5, 5, 7 = x1, x2, x3 ....

这将给出一个看起来像“条形图”:

{3:2, 5:3, 7:1} = {k1:p1, k2:p2, k3:p3}

平均值u由下式给出

E[X] = (1/N) * (x1 + x2 + x3 + ...) = (1/N) * (3 + 3 + 5 + ...)

但是,我们的数据具有重复值,因此可以将其重写为

E[X] = (1/N) * (p1*k1 + p2*k2 + ...) = (1/N) * (3*2 + 5*3 + 7*1)

下一个术语,标准开发,s,简单

sqrt(E[(X-u)^2]) = sqrt((1/N)*( (x1-u)^2 + (x2-u)^3 + ...))

但我们可以将相同的缩减应用于E[(Xu)^2]项并将其写为

E[(X-u)^2] = (1/N)*( p1*(k1-u)^2 + p2*(k2-u)^2 + ... )
           = (1/6)*( 2*(3-u)^2 + 3*(5-u)^2 + 1*(7-u)^2 )

这意味着我们不必像您在问题中所指示的那样拥有每个数据项的多个副本来完成总和

这一点, 歪斜峰度非常简单:

skew     = E[(x-u)^3] / (E[(x-u)^2])^(3/2)
kurtosis = ( E[(x-u)^4] / (E[(x-u)^2])^2 ) - 3

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM