histplot与plt.plot绘制的正态分布曲线差异原因及含义咨询
直方图KDE与理论正态PDF曲线的差异分析
问题背景
有一个名为Price的CSV文件,仅包含一列phil,共7412行。使用以下代码绘制相关曲线:
df4 = pd.read_csv(r'C:\Users\ThuyNT13\Desktop\price.csv') sns.histplot(df4['phil'], color='red',kde= True, stat = 'density') mean4 = statistics.mean(df4['phil']) sd4 = statistics.stdev(df4['phil']) pdf4 = norm.pdf(df4['phil'].sort_values(), mean4, sd4) plt.plot(df4['phil'].sort_values(), pdf4, label = 'Philippines', color = 'blue') plt.ticklabel_format(style= 'plain') plt.show()
运行后发现两条曲线形态存在差异,疑问点:
- 两条曲线分别代表什么含义?
- 差异产生的原因是什么?
曲线含义说明
- 红色KDE曲线(来自
sns.histplot的kde=True):这是基于phil列真实数据生成的核密度估计曲线,属于非参数拟合结果,完全贴合你数据的实际分布特征,不会预设数据服从某类理论分布。 - 蓝色曲线(手动绘制的
norm.pdf):这是用你数据的均值、标准差作为参数生成的理论正态分布概率密度函数(PDF),它是假设数据严格服从正态分布时的理想形态,仅反映数据的整体均值和离散程度,和真实数据的分布细节无关。
差异产生的原因
- 拟合逻辑本质不同:KDE曲线是对每个数据点施加核函数后叠加得到的结果,完全依赖真实数据的分布情况;蓝色曲线是直接套用正态分布公式生成的理论曲线,不会考虑数据实际的偏态、多峰等特征。
- 数据本身不服从正态分布:如果你的
phil列数据本身就不是正态分布(比如左偏/右偏、多峰分布),那基于真实数据的KDE曲线自然会和理论正态PDF曲线出现明显差异——后者是理想的正态形态,前者是真实数据的“写实画像”。 - KDE带宽参数的影响:
sns.histplot的KDE曲线默认会自动选择带宽参数,这个参数决定了曲线的平滑程度。如果带宽和正态分布的标准差不匹配,也会导致两条曲线形态出现偏差。
内容的提问来源于stack exchange,提问作者Thuy Nguyen
相关产品推荐
相关产品推荐

