【问题标题】:R's curve function, but in Python, for plotting a continuous distributionR 的曲线函数,但在 Python 中,用于绘制连续分布
【发布时间】:2021-04-13 15:19:58
【问题描述】:

R 中curve function 的以下example

curve(dgamma(x, 3, .1), add=T, lwd=2, col="orange"),

绘制dgamma 连续分布的概率密度函数曲线。 Python 中的dgamma 等价于scipy.stats.dgamma

如何在 Python 中为相同的分布绘制相同的曲线?我想要的不仅仅是拟合一个往往不准确的内核密度估计器 (KDE)。

【问题讨论】:

  • 首先选择一个可视化库。 Matplotlib 是使用最广泛的,但根据您的环境,其他一些可能更合适或提供更好的外观和感觉。
  • matplotlibscipy 中是否有等效的curve
  • scipy是计算用,matplotlib是绘图用,绝对能画出曲线。您应该阅读他们提供的示例和教程。
  • Python 中是否有与curve 等效的函数?这不仅仅是我们在这里绘制的任何曲线。这是一条连续分布函数的曲线。 curve 在区间 [from, to] rdocumentation.org/packages/graphics/versions/3.6.2/topics/… 上绘制对应于 函数 的曲线
  • 绘制时,曲线只是一组像素。它通常被绘制为一组有限且相当小的线,连接同样小的一组点。数据来自连续分布函数的事实一旦转换为像素就完全丢失了。老实说,我不记得 matplotlib 是否有一些实用函数可以采用相同的参数和 R,但是使用 numpy 在给定范围内生成一组点然后绘制它们应该相当容易。

标签: python r statistics curve-fitting curve


【解决方案1】:

我认为您在 matplotlibseaborn 中没有等效的 curve 。您必须定义一组点并在同一设备上对其进行绘图。在这种情况下,由于您正在制作直方图,因此它会在 min 和 max 之间获得一些均匀分布的点:

from scipy import stats
import numpy as np
import matplotlib.pyplot as plt

x = stats.gamma.rvs(a=3,scale=1/0.1,size=1000)
plt.hist(x,density=True)
xl = np.linspace(x.min(),x.max(),1000)
plt.plot(xl,stats.gamma.pdf(xl,a=3,scale=1/0.1))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-05
    • 2012-02-21
    • 2014-03-19
    • 2012-02-08
    相关资源
    最近更新 更多