如何在Python中将数据帧的列拟合到泊松分布中

时间:2017-02-26 06:15:28

标签: python dataframe scipy scikit-learn poisson

我一直在尝试找到一种方法来将我的一些列(包含用户点击数据)与python中的 poisson 分布相匹配。这些列(例如,click_website_1,click_website_2)可以包含1到数千的值。我试图这样做,因为有些人resources建议:

  

我们建议不要分析计数数据   对其进行对数转换,而是基于泊松和负的模型   应使用二项分布。

我在scipynumpy中找到了一些方法,但这些方法似乎生成了一些具有泊松分布的随机数。但是,我感兴趣的是将自己的数据与泊松分布相匹配。任何库建议在Python中执行此操作?

1 个答案:

答案 0 :(得分:4)

以下是检查数据是否遵循泊松分布的快速方法。您在假设下绘制了一个poisson分布,其中包含费率参数lambda = data.mean()

import numpy as np
from scipy.misc import factorial


def poisson(k, lamb):
    """poisson pdf, parameter lamb is the fit parameter"""
    return (lamb**k/factorial(k)) * np.exp(-lamb)

# lets collect clicks since we are going to need it later
clicks = df["clicks_website_1"] 

这里我们使用pmf作为possion distribution

现在让我们从数据中做一些建模(click_website_one) 我们使用MLE估计泊松参数, 结果只是平均值

lamb = clicks.mean()

# plot the pmf using lamb as as an estimate for `lambda`. 
# let sort the counts in the columns first.

clicks.sort().apply(poisson, lamb).plot()