📅  最后修改于: 2023-12-03 15:19:03.269000             🧑  作者: Mango
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 统计分布函数,可以将一组数据转化为正态分布,该函数可用于数据分析、构建模型以及拟合等方面。