簡體   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