数据可视化之his图和Q-Q图

PDF:概率密度函数(probability density function), 在数学中,连续型随机变量的概率密度函数(在不至于混淆时可以简称为密度函数)是一个描述这个随机变量的输出值,在某个确定的取值点附近的可能性的函数。

PMF : 概率质量函数(probability mass function), 在概率论中,概率质量函数是离散随机变量在各特定取值上的概率。

CDF : 累积分布函数 (cumulative distribution function),又叫分布函数,是概率密度函数的积分,能完整描述一个实随机变量X的概率分布。

**z分数(z-score),也叫标准分数(standard score)是一个数与平均数的差再除以标准差的过程。**z=(x-μ)/σ。

1.Q-Q图,反应数据是否呈正态分布

Q-Q图(Quantile-Quantile Plot,样本分位数-总体分位数)是一种散点图,它描述了样本分位数与观测值确实服从正态分布时所观察到的分位数之间的关系,可用来检验正态性假定是否成立。当各点近似分布在一条直线附近时,可认为正态性假设成立;反之,则不成立。

QQ图反应的是样本数据的分位数和指定分布的分位数的关系,用于比较两个数据的分布情况

使用scipy.stats.probplot进行绘制:

复制代码
qq=probplot(probplot_data, fit=True)
复制代码
使用`probplot_data`数据集绘制概率图或Q-Q图,并在图形中拟合一个理论分布(默认为正态分布)
复制代码
返回一个元组(tuple),其中包含两个数组。第一个数组是样本数据的分位数(quantiles),第二个数组是对应的理论分位数(theoretical quantiles)。如果参数fit为True,则还会返回一个斜率和截距,用于拟合理论分位数和样本分位数之间的线性关系,斜率表示该线性关系的斜率,即理论分位数对样本分位数的影响程度。截距表示该线性关系的截距,即当样本分位数为0时,理论分位数的取值。

通过 plt.plot(qq[0][1], qq[0][0])用来画图,其中纵坐标是标准化的理论分位数,也就是z-score,如果想用cumulative_probabilities来表示Q-Q图的纵坐标,那么就进行如下转换:

#定义你想展示的cumulative_probabilities数值:

cumulative_probabilities = [0.0001, 0.001, 0.01, 0.05, 0.1, 0.25, 0.5, 0.75, 0.95, 0.99, 0.999, 0.9999]

计算对应的Z分数:

z_scores = [stats.norm.ppf(prob) for prob in cumulative_probabilities]

#PS:`stats.norm.ppf`是SciPy库中的一个函数,用于计算正态分布的百分位点(也称为分位数)`stats.norm.ppf(q, loc=0, scale=1)`用于计算给定累积概率`q`下的正态分布的百分位点。 `q`:累积概率,取值范围为0到1。 `loc`:正态分布的均值,默认值为0。 `scale`:正态分布的标准差,默认值为1。 函数返回的结果是给定累积概率下的对应百分位点的数值。

#将纵坐标对应的z-score改为 cumulative_probabilities数值:

plt.yticks(z_scores, cumulative_probabilities)

2.hist图 可以查看数据分布情况

fig, axs = plt.subplots(3, 2, figsize=(10, 10))

for i, column in enumerate(columns):

title = column

bin_range = bin_ranges.get(column, (0.2, 1.5))

hist_data = data[column][(data[column] > bin_range[0]) & (data[column] < bin_range[1])]

axs[i // 2, i % 2].hist(hist_data, bins=30, range=bin_range, density=True, alpha=0.7)

#`hist_data`:要绘制直方图的数据。`bins`:指定直方图的箱子数量。默认值为30,表示将数据分成30个等宽的区间。`range`:指定直方图的数据范围。 `density`:指定是否将直方图的纵轴标准化为概率密度。默认值为False,表示纵轴表示直方图的计数。如果设置为True,纵轴将表示概率密度。

plt.tight_layout()

其中如果density=True,那么纵轴是概率密度,而概率密度函数的取值可以大于1,这是因为概率密度函数并不是概率。概率密度函数的主要目的是描述随机变量在不同取值处的概率密度大小,而不是直接表示概率。因此,概率密度函数的取值大小并没有严格的上限。 概率密度函数的面积才表示概率。对于连续随机变量,概率密度函数的面积在整个定义域上积分等于1。

如果想让纵轴代表概率值,可以做以下改变:

weights = np.ones_like(hist_data)/float(len(hist_data))
plt.hist(hist_data, weights=weights)
相关推荐
布说在见16 小时前
魅力标签云,奇幻词云图 —— 数据可视化新境界
信息可视化·数据挖掘·数据分析
千汇数据的老司机17 小时前
webGIS在可视化大屏中的应用场景有哪些,有哪些类库
信息可视化·webgis·#web
小华同学ai18 小时前
AJ-Report:一款开源且非常强大的数据可视化大屏和报表工具
数据库·信息可视化·开源
布说在见1 天前
层次与网络的视觉对话:树图与力引导布局的双剑合璧
信息可视化·数据挖掘·数据分析
有梦想的Frank博士2 天前
R语言*号标识显著性差异判断组间差异是否具有统计意义
开发语言·信息可视化·r语言
emperinter2 天前
WordCloudStudio:AI生成模版为您的文字云创意赋能 !
图像处理·人工智能·macos·ios·信息可视化·iphone
希艾席蒂恩3 天前
探索四款强大的免费报表工具,提升数据可视化能力
前端·数据库·信息可视化·统计·报表·数据可视化
"wink3 天前
Python实现全国岗位招聘信息可视化分析(源码+论文+部署讲解)
开发语言·python·信息可视化
isNotNullX3 天前
数据中台一键大解析!
大数据·数据库·数据仓库·信息可视化·数据中台
孤客网络科技工作室5 天前
数据可视化工具深入学习:Seaborn 与 Plotly 的详细教程
学习·信息可视化·plotly