Echarts 基础数据分析api
主要包含以下函数:
平均值、标准误差、中位数、众数、方差、标准差、偏度、峰度、泊松分布、正态分布、指数分布、二项分布、线性分布、t分布、F分布等。
(以下方法实现均为python语言脚本,使用numpy类库辅助计算)
1、 平均值
定义:平均值包含算数平均值、几何平均值、平方平均值,这里以算数平均值为准,取所需数组的均值。
公式
实现方法:
Mean():
参数:nums
Import numpy as np
np.mean(nums) //nums为数组,np为numpy包,mean为方法名,求均值。
2、 标准误差
定义:标准误差一般用来判定该组测量数据的可靠性,在数学上它的值等于测量值误差的平方和的平均值的平方根。
公式:
实现方法:
Dnumpy库统计函数raw_aver(list):
参数:list
Import math
//求均值,计算对应list_aver值
def draw_aver(list):
list_aver = round(sum(list) / len(list),6)
    return list_aver
//求标准误差(对应参数为二维数组)
def draw_pc(list, list_aver):
sum = 0/0
n = len(list)
for I in range(n):
        sum+=(list[i] list_aver) ** 2
    res = math.sqrt(sum/n)
    return res
3、 众数
定义:是一组数据中出现次数最多的数值,叫众数
实现方法:
Get_bigcount():
参数:list
Import numpy as np
def get_bigcount(list):
    a = np.array(list)
counts = np.bincount(a)
return counts
4、 方差
定义:应用数学里的专有名词。在概率论和统计学中,一个随机变量的方差描述的是它的离散程度,也就是该变量离其期望值的距离
公式:
实现方法:
Get_var():
参数nlist
Import numpy as np
//偏样本方差 nlist为样本数据
Def get_var(nlist):
    Narray=numpy.array(nlist)
Sum1=narray.sum()
Narray2=narray*narray
Sum2=narray2.sum()
Mean=sum1/N
Var=sum2/N-mean**2
Return var
5、 标准差
定义: 在概率统计中最常使用作为统计分布程度(statistical dispersion)上的测量。标准差定义为方差的算术平方根,反映组内个体间的离散程度。测量到分布程度的结果,原则上具有两种性质:一个总量的标准差或一个随机变量的标准差,及一个子集合样品数的标准差之间,有所差别。其公式如下所列。标准差的观念是由卡尔·皮尔逊(Karl Pearson)引入到统计中.
公式:
实现方法:
Get_std():
参数:list
Import numpy as np
Def get_std(list):
    Np.std(list)
//调用np的std方法传入list即可。
6、 偏度
定义:统计数据分布偏斜方向和程度的度量,是统计数据分布非对称程度的数字特征
公式
实现方法:
//传入数据data
def calc_stat(data):
    [niu, sigma, niu3]=calc(data)
    n=len(data)
    niu4=0.0 # niu4计算峰度计算公式的分子
    for a in data:
        a -= niu
        niu4 += a**4
    niu4 /= n
    skew =(niu3 -3*niu*sigma**2-niu**3)/(sigma**3) # 偏度计算公式
 
return skew
//return 偏度值
7、 峰度
定义:峰度(peakedness;kurtosis)又称峰态系数。表征概率密度分布曲线在平均值处峰值高低的特征数。直观看来,峰度反映了峰部的尖度。
公式:
实现方法:
//传入数据data
def calc_stat(data):
    [niu, sigma, niu3]=calc(data)
    n=len(data)
    niu4=0.0 # niu4计算峰度计算公式的分子
    for a in data:
        a -= niu
        niu4 += a**4
    niu4 /= n
    skew =(niu3 -3*niu*sigma**2-niu**3)/(sigma**3) # 偏度计算公式
    kurt=niu4/(sigma**4) # 峰度计算公式:下方为方差的平方即为标准差的四次方
return kurt
//return 峰度值
8、 泊松分布
定义:泊松分布是一种统计与概率学里常见到的离散概率分布,由法国数学家西莫恩·德尼·泊松(Siméon-Denis Poisson)在1838年时发表
公式:
实现方法:
Import numpy as np
def poisson(L):
    //泊松分布
    p = 1.0
    k = 0
    e = p(-L)//调用p函数
    while p >= e:
        u = random.random() 
        p *= u
        k += 1
    return k-1
//返回泊松分布结果
9、 正态分布
定义:若随机变量服从一个位置参数、尺度参数为的概率分布,记为:则其概率密度函数为正态分布的数学期望值或期望值等于位置参数,决定了分布的位置;其方差的开平方或标准差等于尺度参数,决定了分布的幅度。正态分布的概率密度函数曲线呈钟形,因此人们又经常称之为钟形曲线
公式:
实现方法:
//正态分布函数,传入参数
/
/normfun正态分布函数,mu: 均值,sigma:标准差,pdf:概率密度函数,np.exp():概率密度函数公式
def normfun(x,mu, sigma):
    pdf = np.exp(-((x - mu)**2) / (2* sigma**2)) / (sigma * np.sqrt(2*np.pi))
    return pdf
10、指数分布
定义:在概率理论和统计学中,指数分布(也称为负指数分布)是描述泊松过程中的事件之间的时间的概率分布,即事件以恒定平均速率连续且独立地发生的过程。 这是伽马分布的一个特殊情况。 它是几何分布的连续模拟,它具有无记忆的关键性质。 除了用于分析泊松过程外,还可以在其他各种环境中到。
公式:
实现方法:
//L为数据集
使用random库函数
和map的log库函数进行分布计算
Import random
Import math
def expntl(L):
    u = random.random()
return -L * math.log(u)
11、二项分布
定义:二项分布就是重复n次独立的伯努利试验。在每次试验中只有两种可能的结果,而且两种结果发生与否互相对立,并且相互独立,与其它各次试验结果无关,事件发生与否的概率在每一次独立试验中都保持不变,则这一系列试验总称为n重伯努利实验,当试验次数为1时,二项分布服从0-1分布。
公式:
实现方法:
模拟二项分布
import pylab as pl
import numpy as np
from scipy import stats
n=10
k=np.arange(n+1) //得到数组
pcoin=stats.binom.pmf(k,n,0.5)
//使用stats.binom.pmf方法得到分布,其中k为数据,n数据总数
pl.stem(k,pcoin,basefmt="k-")//将数据使用pylab呈现
pl.margins(0.1)
12、线性回归
定义:线性回归是利用数理统计中回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法,运用十分广泛。其表达形式为y = w'x+e,e为误差服从均值为0的正态分布
公式:
实现方法:
模拟线性回归
//利用公式求出系数
def standRegres(xArr,yArr): 
    xMat = mat(xArr); yMat = mat(yArr).T 
    xTx = xMat.T*xMat 
    ws = xTx.I * (xMat.T*yMat)      #求 w=(x.T*x).I*x.T*y 
return ws
//提取数据以y=kx+b中的b,x,y为目标
def loadDataSet(fileName): 
numFeat = len(open(fileName).readline().split('\t')) - 1     
#得到特征值的个数 
    dataMat = []; labelMat = [] 
fr = open(fileName)                   
#打开文件 
for line adlines():             
#读取整行 
        lineArr =[] 
        curLine = line.strip().split('\t')         
#将一行的不同特征分开 
        for i in range(numFeat): 
            lineArr.append(float(curLine[i])) 
        dataMat.append(lineArr) 
        labelMat.append(float(curLine[-1])) 
return dataMat,labelMat