如何修复statsmodels.nonparametric.kde.kdensity或seaborn.kdeplot中的错误带宽?

2024-05-12 22:52:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在将一些R文件翻译成Python,在用Python中的Epanechnikov内核设置KDE绘图中的带宽时遇到了一些问题。你知道吗

我试过使用这个函数seaborn.kdeplot公司(),以及统计模型.非参数.kde.kdensity(),但从未得到正确的结果。你知道吗

直到现在,我还没有发现Python中的带宽是如何缩放或标准化的。 此外,如果我使用高斯核,R和Python的曲线图是相同的。所以也许Epanechnikov核的计算方式不同?你知道吗

我使用以下代码在Python中创建KDE绘图:

import seaborn as sns
sns.kdeplot(y,kernel = 'epa', bw = 0.1)

以及

from statsmodels.nonparametric.kde import kdensity
density = kdensity(y, kernel='epa', bw=0.1)
plt.plot(density[1],density[0], color = 'red')

两者的输出都不是很平滑:https://user-images.githubusercontent.com/48911472/55010186-1382fc80-4fe4-11e9-999f-263ea9bf62c9.png

但是,它应该看起来像R中的输出(或STATA中的输出,因为它们是相同的),这是更平滑的:

plot(density(y,bw=0.1, kernel ="epanechnikov"), col="red")

https://user-images.githubusercontent.com/48911472/55010088-e3d3f480-4fe3-11e9-8d84-ebd54c5b8bc9.png


Tags: import绘图plotredseaborndensitykernelbw