衆數是統計學名詞,在統計分佈上具備明顯集中趨勢點的數值,表明數據的通常水平(衆數能夠不存在或多於一個)。簡單來講就是指一組數據中出現次數最多的數據值。php
import collections
def Mode(L):
if L:
result = []
counter = collections.Counter(L)
most = max(counter.values())
for i in counter:
if counter[i] == most:
result += [i]
return result
else:
return 'L 不能爲空'
複製代碼
運行結果:ios
>>> Mode([1,2,3,3,3,44,4,4,4,5,5])
[3,4]
複製代碼
中位數是統計學中的專有名詞,表明一個樣本、種羣或機率分佈中的一個數值,其可將數值集合劃分爲相等的上下兩部分。數組
對於有限的數集,能夠經過把全部觀察值高低排序後找出正中間的一個做爲中位數。若是觀察值有偶數個,則中位數不惟一,一般取最中間的兩個數值的平均數做爲中位數。微信
一個數集中最多有一半的數值小於中位數,也最多有一半的數值大於中位數。若是大於和小於中位數的數值個數均少於一半,那麼數集中必有若干值等同於中位數。yii
def Median(L):
N = len(L)
if N:
L.sort()
if N%2 == 0:
return (L[int(N/2)-1]+L[int(N/2)])/2
else:
return L[int(N/2)]
else:
return 'L 不能爲空'
複製代碼
運行結果:svg
>>> Median([1,4,3,5,6])
4
複製代碼
平均數是統計中的一個重要概念。爲集中趨勢的最經常使用測度值,目的是肯定一組數據的均衡點。ui
def Mean(L):
N = len(L)
if N:
return sum(L)/N
else:
return 'L 不能爲空'
複製代碼
運行結果:es5
>>> Mean([1,4,3,5,6])
3.8
複製代碼
分位點是指用分割點(cut point)將一個隨機變量的機率分佈範圍分爲幾個具備相同機率的連續區間。spa
分割點的數量比劃分出的區間少1,例如3個分割點能分出4個區間。經常使用的有中位數(即二分位數)、四分位數(quartile)等。3d
四分位數是統計學中分位數的一種,即把全部數值由小到大排列並分紅四等份,處於三個分割點位置的數值就是四分位數。
def Quartile(L):
N = len(L)
if N:
L.sort()
if N%2:
return [Median(L[:int(N/2)]), Median(L), Median(L[int(N/2)+1:])] # 直接調用上面寫好的方法
else:
return [Median(L[:int(N/2)]), Median(L), Median(L[int(N/2):])]
else:
return 'L 不能爲空'
複製代碼
運行結果:
>>>Quartile([7,15,36,39,40,41])
[15, 37.5, 40]
複製代碼
極差又稱全距,用來表示統計資料中的變異量數(英語:measures of variation),爲最大值與最小值之間的差額,即最大值減最小值後所得數值。
def R(L):
N = len(L)
if N:
return max(L)-min(L)
else:
return 'L 不能爲空'
複製代碼
運行結果:
>>> R([2,3,5,6,7])
5
複製代碼
加權平均數與算術平均數相似,不一樣點在於,數據中的每一個點對於平均數的貢獻並非相等的,有些點要比其餘的點更加劇要。 加權平均數的概念在描述統計學中具備重要的意義,而且在其餘數學領域產生了更通常的形式。 若是全部的權重相同且等於一,那麼加權平均數與算術平均數相同。 若是全部的權值皆等於1,此時加權平均數便等於算術平均數。
def WeightedAverage(L,W):
N = len(L)
M = len(W)
if N and M:
if M == N:
return sum([L[i]*W[i] for i in range(N)])/sum(W)
else:
return 'L 和 W 的長度必須是相同的'
else:
return 'N 或 M 不能爲空'
複製代碼
運行結果:
>>> WeightedAverage([1,2,3],[1,2,3])
2.3333333333333335
複製代碼
幾何平均數是一種均值,它經過使用它們的值的乘積來指示一組數字的集中趨勢或典型值,經過 n 個數據相乘後開 n 次方獲得。
from functools import reduce
def GeometricMean(L):
N = len(L)
if N:
product = reduce(lambda x,y:x*y, L)
return pow(product, 1/N)
else:
return 'L 不能爲空'
複製代碼
運行結果:
>>> GeometricMean([1,1,1,16])
2.0
複製代碼
方差是應用數學裏的專有名詞。在機率論和統計學中,一個隨機變量的方差描述的是它的離散程度,也就是該變量離其指望值的距離。
將各個偏差將之平方(而非取絕對值,使之確定爲正數),相加以後再除以總數,透過這樣的方式來算出各個數據分佈、零散(相對中心點)的程度。
統計中的方差(樣本方差)是每一個樣本值與全體樣本值的平均數之差的平方值的平均數。
def Variance(L):
N = len(L)
if N:
return sum(map(lambda x:(x-Mean(L))**2, L))/N
else:
return 'L 不能爲空'
>>> Variance([1,2,3,4,5,6,7])
4.0
複製代碼
標準差是數學符號σ(sigma),在機率統計中最常使用做爲測量一組數值的離散程度之用。
標準差定義:爲方差開算術平方根,反映組內個體間的離散程度。
def Standard_Deviation(L):
N = len(L)
if N:
return pow(Variance(L), 1/2)
else:
return 'L 不能爲空'
複製代碼
運行結果:
>>> Standard_Deviation([1,0,1,2])
0.7071067811865476
複製代碼
平均差是表示各個變量值之間差別程度的數值之一。指各個變量值同平均數的離差絕對值的算術平均數。
def Mean_Deviation(L):
N = len(L)
if N:
return sum(map(lambda x:abs(x-Mean(L)), L))/N
else:
return 'L 不能爲空'
複製代碼
運行結果:
>>> Mean_Deviation([1,2])
0.5
複製代碼
異衆比率是統計學名詞,是統計學當中研究現象離中趨勢的指標之一。
異衆比率指的是整體中非衆數次數與整體所有次數之比。換句話說,異衆比率指非衆數組的頻數佔總頻數的比例。
def Variation_Ratio(L):
N = len(L)
count = 0
if N:
mode = Mode(L)
for i in L:
if i not in mode:
count+=1
return count/N
else:
return 'L 不能爲空'
複製代碼
運行結果:
>>> Variation_Ratio([1,2,3,3,4,4])
0.3333333333333333
複製代碼
離散係數是機率分佈離散程度的一個歸一化量度,其定義爲標準差與平均值之比。
def Coefficient_Of_Variation(L):
N = len(L)
if N:
mean = Mean(L)
return Standard_Deviation(L)/mean
else:
return 'L 不能爲空'
複製代碼
運行結果:
>>> Coefficient_Of_Variation([1,2])
0.3333333333333333
複製代碼
偏態係數以平均值與中位數之差對標準差之比率來衡量偏斜的程度,用SK表示偏斜係數:偏態係數小於0,由於平均數在衆數之左,是一種左偏的分佈,又稱爲負偏。偏態係數大於0,由於均值在衆數之右,是一種右偏的分佈,又稱爲正偏。
def Skew_Coefficient(L):
N = len(L)
if N:
mean = Mean(L)
median = Median(L)
sd = Standard_Deviation(L)
return (mean-median)/sd
return 'L 不能爲空'
複製代碼
運行結果:
>>> Skew_Coefficient([1,0,1,2,2,3,4,2,5,2,1])
0.06593804733957866
複製代碼
表徵機率密度分佈曲線在平均值處峯值高低的特徵數。直觀看來,峯度反映了峯部的尖度。樣本的峯度是和正態分佈相比較而言統計量,若是峯度大於三,峯的形狀比較尖,比正態分佈峯要陡峭。反之亦然。
在統計學中,峯度(Kurtosis)衡量實數隨機變量機率分佈的峯態。峯度高就意味着方差增大是由低頻度的大於或小於平均值的極端差值引發的。