当计数数据不符合泊松分布时该怎么办

机器算法验证 r 分布 造型 泊松分布
2022-03-13 22:05:48

我是一名统计学博士生。我正在使用一组计数数据。它是参与 n 向实时聊天对话的用户的数量。用户数量从 1 到 6 不等,集合中大约有 300 条数据。

我最初的动机是了解数据是否符合泊松分布,我的想法是如果找到合适的分布,我可以使用此结果进行进一步推断。

长话短说,我尝试拟合数据,但拟合失败的显着性水平为 0.05。因此我可以拒绝我的假设(泊松分布可用于近似数据集)。

当我查看密度图时,我认为拟合效果如此差的原因是“2 个用户的记录值太多。泊松分布在这个 bin 中的值越少越好。但是当我编译我自己的数据我没有理由相信存在异常值(即与 2 个用户的对话将被分配到更高或更低的 bin)

users <- c(1, 2, 2, 1, 1, 1, 1, 2, 2, 3, 2, 2, 2, 1, 1, 1, 2, 2, 1, 1, 4, 3, 3, 3, 1,
        2, 1, 1, 2, 4, 3, 2, 2, 1, 2, 3, 2, 2, 1, 1, 1, 2, 2, 1, 1, 1, 2, 2, 1, 3,
        2, 1, 2, 3, 2, 1, 2, 1, 2, 1, 1, 3, 1, 1, 1, 2, 2, 2, 3, 1, 2, 1, 2, 4, 4,
        3, 2, 2, 3, 4, 3, 3, 3, 1, 2, 4, 2, 3, 3, 2, 4, 3, 1, 2, 4, 1, 2, 2, 2, 1,
        1, 1, 2, 3, 2, 4, 5, 2, 2, 4, 2, 2, 3, 3, 3, 2, 2, 3, 1, 3, 1, 1, 1, 2, 3,
        6, 3, 3, 4, 2, 2, 2, 3, 1, 1, 1, 2, 2, 3, 2, 2, 2, 1, 1, 1, 1, 2, 2, 2, 2,
        3, 3, 3, 1, 1, 2, 1, 2, 2, 2, 2, 2, 2, 4, 3, 3, 2, 1, 2, 4, 1, 2, 1, 2, 2,
        2, 3, 2, 2, 2, 2, 2, 3, 2, 2, 1, 1, 3, 1, 2, 1, 2, 3, 4, 2, 4, 3, 2, 2, 1,
        4, 2, 2, 1, 1, 2, 2, 2, 1, 1, 1, 2, 2, 3, 3, 1, 1, 2, 1, 2, 1, 3, 3, 3, 3,
        4, 6, 6, 5, 5, 2, 2, 3, 3, 3, 2, 3, 3, 4, 2, 3, 1, 3, 3, 1, 3, 2, 1, 3, 3,
        2, 1, 3, 1, 3, 2, 1, 1, 1, 1, 3, 1, 3, 4, 1, 4, 1, 3, 2, 3, 6, 2, 2, 3, 2,
        1, 2, 2, 2, 2, 2, 1, 2, 3, 2, 2, 4, 2, 2, 2, 3, 2, 2, 5, 3, 2, 2, 3, 2, 2,
        2, 5, 2, 1, 4, 1, 2, 2, 6, 1, 3, 2)


tu.fit <- goodfit(users,type="poisson", method = "MinChisq")
summary(tu.fit)
 Goodness-of-fit test for poisson distribution

             X^2 df     P(> X^2)
Pearson 69.37891  5 1.379945e-13

在本科阶段的统计学中,我被告知计数数据可以通过泊松分布建模,但他们从未教过当计数数据不适合时该怎么做。

我不拘泥于我的计数数据应该适合泊松(或任何其他分布)的前提。但是,我想探索是否应该转换我的数据集并适应另一个离散分布或尝试其他方法 (KDE) 的效果。或者我应该简单地得出结论,我的数据不适合 Poisson(或任何其他分布)并保留它吗?

1个回答

让我们稍微简单地考虑一下对话的自然历史:

  1. 一个人通过向以太发送消息来发起对话。

  2. 人们回应。每个新的(唯一的)受访者都会在计数中增加一个。

  3. 对任何消息的响应都是随机的:个人是否响应取决于是否

    • 他们知道消息
    • 目前有机会回应
    • 有兴趣回复。
  4. 与可以接收消息的人数相比,发起的消息数量相对较少。因此

    • 几乎所有人都会在任何时候回复一条或少量可管理的消息。

特征 (3) 和 (4) 表明,泊松分布可能是一个很好的模型,用于衡量在任何时候响应任何消息的人数:即计数减一。我们不知道并且可能不安全的假设是所有消息是否具有大致相同的泊松参数,或者这些参数是否有明显变化。

因此,一个好的起点是测试计数减一是否符合泊松分布。 或者,它们可能适合一些由泊松混合物组成的过度分散分布。

的最大似然估计是计数的平均值(减一),等于(重要的是使用 ML 估计进行此计算,而不是通过以下方式计算的“MinChisq”估计:请参阅https://stats.stackexchange.com/a/17148/919。)将泊松概率乘以用户总数给出预期的用户计数。在这里将它们与实际计数进行比较:λ1.20vcd::goodfit

          0   1  2  3 4 5
Expected 94 113 68 27 8 2
Actual   85 127 68 22 5 5

合身看起来很接近。它可以用卡方统计量来衡量,

χ2=(8594)294+(127113)2113++(52)22=9.61.

该总和中的六个项衡量了单个计数差异。他们是

     0    1    2    3    4    5 
  0.88 1.79 0.00 0.93 1.18 4.82  

接近的值表示良好的一致性。只有最后一个值很大。这是由于计数的期望值很小的期望值被认为会导致传统检验中的一些不可靠性:在这里,我们应该将统计量视为可能由于六向的期望数量较少而被夸大了对话。 14.82255χ2χ2

然而,这个统计量并不是非常高:在假设不变的泊松分布下,这个统计量将近似遵循分布。该分布告诉我们,这个高值几乎有 9% 的时间出现。 我们得出结论,几乎没有证据表明偏离恒定泊松分布。χ2χ2(5)

顺便说一句,按照给定顺序绘制的数据图确实暗示了计数的变化。平均而言,它们从头到尾略有增加,正如该图上的 Lowess 平滑所示:

阴谋

因此,泊松分布的卡方检验不应该是硬道理:它只应该被视为更详细分析的开始。


这是R用于执行计算和创建图形的代码。

counts <- table(users-1)
mu <- mean(users-1)
expected <- dpois(as.numeric(names(counts)), mu) * length(users)
x <- (counts - expected)^2 / expected
print(round(x, 2)) # Terms in the chi-squared statistic
print(rbind(Expected = round(expected, 0), Actual=counts)) # Compare expected to actual

library(ggplot2)
X <- data.frame(Index=1:length(users), Count=users)
g <- ggplot(X, aes(Index, Count)) + geom_smooth(size=2) + geom_point(size=2, alpha=1/2)
print(g)