【问题标题】:Plotting probability density function with frequency counts用频率计数绘制概率密度函数
【发布时间】:2019-07-19 13:04:44
【问题描述】:

我想将拟合分布转换为频率。

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

# sample data generation
np.random.seed(42)
data = sorted(stats.lognorm.rvs(s=0.5, loc=1, scale=1000, size=1000))

# fit lognormal distribution
shape, loc, scale = stats.lognorm.fit(data, loc=0)
pdf_lognorm = stats.lognorm.pdf(data, shape, loc, scale)

fig, ax = plt.subplots(figsize=(8, 4))

ax.hist(data, bins='auto', density=True)
ax.plot(data, pdf_lognorm)
ax.set_ylabel('probability')
ax.set_title('Linear Scale')

上面的代码sn-p会生成如下图:

如您所见,y 轴表示概率。但我希望它是在频率方面。

fig, ax = plt.subplots(figsize=(8, 4))
ax.hist(data, bins='auto')
ax.set_ylabel('probability')
ax.set_title('Linear Scale')

通过取消设置density=True,直方图以频率显示。但我不知道如何以与直方图中相同的方式拟合分布 - 请注意我如何无法在此直方图中绘制橙色拟合线。

我该怎么做?我认为我应该将拟合分布乘以直方图曲线下的面积,但我不知道如何。

【问题讨论】:

    标签: python matplotlib statistics distribution probability-density


    【解决方案1】:

    我遇到了同样的问题,发现我需要将拟合分布乘以您提到的新直方图的面积。假设所有 bin 具有相同的宽度,则直方图的面积将为 = bin 宽度(一个 bin)* 样本数(len(data))

    【讨论】:

      【解决方案2】:

      从科学上讲,确实可以预期,因为您决定还绘制密度,y 轴将是概率,而不是计数...

      不过,您可以同时使用双轴和twinx

      fig, ax = plt.subplots(figsize=(8, 4))
      ax2 = ax.twinx()
      
      ax.hist(data, bins='auto', density=True)
      ax2.hist(data, bins='auto')
      ax.plot(data, pdf_lognorm)
      ax2.set_ylabel('frequency')
      ax.set_ylabel('probability')
      ax.set_title('Linear Scale')][1]][1]
      

      我还使用了更合适的术语“频率”来表示计数。

      稍微试验一下,你甚至可以把密度曲线放在前面,或者互换轴:

      fig, ax = plt.subplots(figsize=(8, 4))
      ax2 = ax.twinx()
      
      ax2.hist(data, bins='auto', density=True)
      ax.hist(data, bins='auto')
      ax2.plot(data, pdf_lognorm)
      ax2.set_ylabel('probability')
      ax.set_ylabel('frequency')
      ax.set_title('Linear Scale')
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-09-20
        • 2012-11-21
        • 1970-01-01
        相关资源
        最近更新 更多