我有一个包含大约 30 个值的数据集,我想知道这些数据是否符合泊松分布。 我想对我的数据进行测试,例如 GLM,但我发现它们不遵循正态分布。我的猜测之一是它们遵循泊松分布,但我需要确保它是正确的。
您可以尝试离散检验,它依赖于泊松分布的均值等于其方差这一事实,并且泊松分布中 n 个计数样本中方差与均值的比率应遵循 Chi - 自由度为 n-1 的平方分布。
你可以像这样在 R 中实现:
dispersion_test <- function(x)
{
res <- 1-2 * abs((1 - pchisq((sum((x - mean(x))^2)/mean(x)), length(x) - 1))-0.5)
cat("Dispersion test of count data:\n",
length(x), " data points.\n",
"Mean: ",mean(x),"\n",
"Variance: ",var(x),"\n",
"Probability of being drawn from Poisson distribution: ",
round(res, 3),"\n", sep = "")
invisible(res)
}
这允许您拒绝数据服从泊松分布的零假设,如果 p 值<0.05. If the p value is 高于 0.05,您可以接受数据服从泊松分布。
假设我有以下数据:
set.seed(1)
x <- rpois(30, 1)
x
# [1] 0 1 1 2 0 2 3 1 1 0 0 0 1 1 2 1 1 4 1 2 3 0 1 0 0 1 0 1 2 0
那么我可以这样做:
dispersion_test(x)
# Dispersion test of count data:
# 30 data points.
# Mean: 1.066667
# Variance: 1.098851
# Probability of being drawn from Poisson distribution: 0.841
不过有一句警告。当样本量小至 30 时,我们无法确信您的数据是泊松分布的。如果我的下一个数据点结果是 7,那么 p 值将低于 0.05,我将不得不拒绝我的数据服从泊松分布的原假设。