📜  Python – Johnson SU 统计分布(1)

📅  最后修改于: 2023-12-03 15:19:03.269000             🧑  作者: Mango

Python - Johnson SU 统计分布

简介

Johnson SU 统计分布是一种连续的概率分布函数,根据它的公式可以将一组数据转化为正态分布,并且拥有更广泛的尾部,包含了更多的可能性。

使用方法
安装

可使用pip来安装SciPy库,该库中包含了该函数的实现。在命令行中输入以下命令:

pip install scipy
调用

在Python代码中,首先需要导入SciPy库:

import scipy.stats as ss

使用 ss.johnsonsu 来调用该函数,例如:

jsu = ss.johnsonsu.fit(data)

其中,data 是输入的一维数组,表示待转化的数据。

该函数会返回四个参数值,分别为 $\gamma , \delta , \lambda , \xi$ ,可以理解为拉平、缩放、形状以及位置因子。将原始数据放入计算中,即可通过以下公式计算出新的数据:

$$ y = \gamma + \delta \sinh^{-1}(\frac{x - \xi}{\lambda}) $$

示例代码

以下代码展示了如何使用 Johnson SU 统计分布函数将数据转化为正态分布:

import matplotlib.pyplot as plt
import numpy as np
import scipy.stats as ss

# 生成正态分布的随机数据
data = np.random.normal(loc=10, scale=2, size=1000)

# 用 Johnson SU 统计分布函数进行转化
jsu = ss.johnsonsu.fit(data)
new_data = jsu[0] + jsu[1] * np.arcsinh((data - jsu[3]) / jsu[2])

# 绘制转化后数据的直方图
plt.hist(new_data, bins=25, density=True, alpha=0.6, color='g')
plt.title('Johnson SU Distribution')
plt.show()

运行后可得到如下图形:

Johnson SU Distribution

总结

通过使用 Johnson SU 统计分布函数,可以将一组数据转化为正态分布,该函数可用于数据分析、构建模型以及拟合等方面。