将负二项分布拟合到大计数数据

机器算法验证 r 统计学意义 拟合优度 负二项分布
2022-03-21 17:11:01

我有大约 100 万个数据点。这是文件data.txt的链接,它们每个都可以取 0 到 145 之间的值。这是一个离散数据集。下面是数据集的直方图。x 轴上是计数 (0-145),y 轴上是密度。

数据来源:我在空间中有大约 20 个参考对象和 100 万个随机对象。对于这 100 万个随机对象中的每一个,我计算了相对于这 20 个参考对象的曼哈顿距离。但是我只考虑了这 20 个参考对象中的最短距离。所以我有 100 万个曼哈顿距离(您可以在帖子中给出的文件链接中找到)

我尝试使用 R 将泊松和负二项式分布拟合到该数据集。我发现负二项式分布产生的拟合似乎是合理的。下面是拟合曲线(蓝色)。

最终目标:一旦我适当地拟合了这个分布,我想将此分布视为距离的随机分布。下次当我计算任何对象到这 20 个参考对象的距离 (d) 时,我应该能够知道 (d) 是显着的还是只是随机分布的一部分。

在此处输入图像描述

为了评估拟合优度,我使用 R 和从负二项拟合中得到的观察频率和概率计算了卡方检验。尽管蓝色曲线非常适合分布,但从卡方检验返回的 P 值极低。

这让我有点困惑。我有两个相关的问题:

  1. 为这个数据集选择负二项分布是否合适?

  2. 如果卡方检验 P 值如此之低,我应该考虑另一种分布吗?

以下是我使用的完整代码:

# read the file containing count data
data <- read.csv("data.txt", header=FALSE)

# plot the histogram
hist(data[[1]], prob=TRUE, breaks=145)

# load library
library(fitdistrplus)

# fit the negative binomial distribution
fit <- fitdist(data[[1]], "nbinom")

# get the fitted densities. mu and size from fit.
fitD <- dnbinom(0:145, size=25.05688, mu=31.56127)

# add fitted line (blue) to histogram
lines(fitD, lwd="3", col="blue")

# Goodness of fit with the chi squared test  
# get the frequency table
t <- table(data[[1]])   

# convert to dataframe
df <- as.data.frame(t)

# get frequencies
observed_freq <- df$Freq

# perform the chi-squared test
chisq.test(observed_freq, p=fitD)
1个回答

首先,在样本量足够大的情况下,适合度测试或特定分布测试的优度通常会拒绝原假设,因为我们几乎不会遇到这样的情况,即数据完全来自特定分布,而且我们也确实考虑了所有相关的(可能未测量的)协变量,解释了主题/单位之间的进一步差异。然而,在实践中,这种偏差可能是无关紧要的,众所周知,可以使用许多模型,即使它们与分布假设有一些偏差(最著名的是关于具有正态误差项的回归模型中残差的正态性)。

其次,负二项式模型是计数数据的一个相对合乎逻辑的默认选择(只能是0)。虽然我们没有那么多细节,而且数据可能有明显的特征(例如关于它是如何产生的),这表明一些更复杂的东西。例如,可以考虑使用负二项式回归计算关键协变量。