数据可视化之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)
相关推荐
qiaochuanbiao4 小时前
宁波教师巧用3D技术,打造互动几何课堂:动态观察正方体组合,让空间想象触手可及
3d·信息可视化·webos·文汇百川
科研 E 助手1 天前
学术数据可视化:高效图表工具助力科研数据精准呈现
信息可视化
qq_436962181 天前
数据中台:打破企业数据孤岛,实现全域资产化的关键一步
数据库·人工智能·信息可视化·数据挖掘·数据分析
蚁巡信息巡查系统2 天前
自媒体内容安全审核指引怎么写,有哪些内容?
安全·信息可视化·媒体·内容运营
PPT百科2 天前
PPT插入的图片太大了,怎么缩小一点?
信息可视化·数据分析·powerpoint·wps·ppt模板
陈辛chenxin2 天前
【大数据技术04】数据可视化
大数据·python·信息可视化
java1234_小锋3 天前
[免费]基于Python的深度学习豆瓣电影数据可视化+情感分析推荐系统(Flask+Vue+LSTM+scrapy)【论文+源码+SQL脚本】
python·信息可视化·flask·电影数据可视化
xinyu_Jina3 天前
FIRE之旅 财务计算器:金融独立模型中的复利可视化与敏感性分析
人工智能·程序人生·信息可视化·金融·程序员创富
Highcharts.js3 天前
可视化图标开发“懂一点”|数据可视化术语表
信息可视化·可视化开发·数据术语
鸢_3 天前
TpriDatavue 软件架构与功能文档
信息可视化·datavue