python scipy.stats 正态分布_scipy.stats部分库函数java实现

本文详细介绍了Python统计库Scipy.stats中的熵、偏度、峰度和四分位距四个关键函数,包括它们的数学定义、意义以及Java实现。熵用于度量混乱程度,偏度衡量分布的不对称性,峰度则表示分布曲线的尖锐程度,而四分位距是衡量数据分散程度的一种方法。通过Java代码示例,读者可以更好地理解和应用这些统计概念。
摘要由CSDN通过智能技术生成

python统计函数库scipy.stats中entropy,skew,kurtosis,iqr四个函数的意义和java实现

1、entropy(pk, qk=None, base=None, axis=0)

熵的定义

熵是对混乱程度的度量,熵值越大,说明混乱程度越大。通常一个信源发送出什么信号是不确定的,衡量它可以根据其出现的概率来度量,概率大,出现机会多,不确定性小,反之不确定性就大。

不确定性函数f是概率P的减函数,两个独立符号所产生的不确定性应等于各自不确定性之和,这称为可加性,同时满足这两个条件的函数f是对数函数。

离散型随机变量的熵计算公式:

连续型随机变量的熵计算公式:

java实现

public double entropy() {

Array vec = new Array();

double sum = this.sum();

for (int i = 0; i < this.size(); i++) {

double pk = this.get(i)/sum;

pk = -pk * Math.log(pk);

vec.add(pk);

}

return vec.sum();

}

2、skew(a, axis=0, bias=True, nan_policy='propagate')

样本偏度

偏度衡量随机变量概率分布的不对称性,是相对于均值不对称程度的度量。若偏度为负,则均值左侧的离散度比右侧强;若偏度为正,则均值左侧的离散度比右侧弱。对于正态分布(或严格对称分布)偏度等于 0。计算公式如下:

java实现

public double skew() {

double mean = this.mean();

double std = this.std();

Array skewArray = new Array();

for (int i = 0; i < this.size(); i++) {

double x = (this.get(i) - mean)/std;

x = Math.pow(x, 3);

skewArray.add(x);

}

return skewArray.mean();

}

3、kurtosis(a, axis=0, fisher=True, bias=True, nan_policy='propagate')

样本峰度

峰度是表征概率密度分布曲线在平均值处峰值高低的特征数。直观看来,峰度反映了峰部的尖度。样本的峰度是和正态分布相比较而言统计量,如果峰度大于三,峰的形状比较尖,比正态分布峰要陡峭,反之亦然。计算公式如下:

java实现

public double kurtosis() {

double x = 0;

double y;

double mean = this.mean();

double var = this.var();

for (int i = 0; i < this.size(); i++) {

y = this.get(i) - mean;

y = Math.pow(y, 4);

x = x + y;

}

x = x/this.size();

return (x/Math.pow(var, 2))-3;

}

4、iqr,四分位距,表示第三四分位数和第一四分位数的差,代码如下:

public double iqr() {

Array sortArray = this.asarray();

sortArray.DicSort();

double position = (double)(sortArray.size()-1)/4.0;

int floor = (int) Math.floor(position);

int ceil = (int) Math.ceil(position);

double x = position - floor;

double y = ceil - position;

double q1 = sortArray.get(floor)*y+sortArray.get(ceil)*x;

position = position * 3;

floor = (int) Math.floor(position);

ceil = (int) Math.ceil(position);

x = position - floor;

y = ceil - position;

double q3 = sortArray.get(floor)*y+sortArray.get(ceil)*x;

return q3 - q1;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值