克拉斯诺达尔边疆区的案例并不是唯一的。下面是来自 36 个区域的数据图(我从 84 个区域中选择了最好的示例),我们可以看到
- 类似的欠分散
- 或者至少这些数字似乎达到了一个“不错”数字附近的稳定期(我在 10、25、50 和 100 处画了线,其中几个地区找到了稳定期)
关于此图的比例:它看起来像 y 轴的对数比例,但事实并非如此。它是平方根刻度。我这样做是为了像泊松分布数据那样分散σ2=μ一切看起来都一样。另请参阅:为什么建议对计数数据使用平方根变换?
该数据寻找一些明显分散不足的情况,如果它是泊松分布的话。(Whuber 展示了如何得出显着性值,但我猜它已经通过了眼间创伤测试。我仍然分享了这个情节,因为我发现有些病例没有欠离散很有趣,但它们似乎仍然坚持高原。可能不仅仅是分散不足。或者有像图像左下角的 nr 15 和 nr 22 这样的情况,它们显示分散不足,但不是固定的高原值。)。
分散不足确实很奇怪。但是,我们不知道是什么过程产生了这些数字。这可能不是一个自然过程,并且涉及到人类。出于某种原因,似乎有一些平台或上限。我们只能猜测它可能是什么(这个数据告诉我们的不多,用它来猜测可能发生的事情是高度推测性的)。它可能是伪造的数据,但也可能是一些复杂的数据生成过程并具有一定的上限(例如,这些数据是报告/注册的案例,可能报告/注册仅限于某个固定数量)。
### using the following JSON file
### https://github.com/mediazona/data-corona-Russia/blob/master/data.json
library(rjson)
#data <- fromJSON(file = "~/Downloads/data.json")
data <- fromJSON(file = "https://raw.githubusercontent.com/mediazona/data-corona-Russia/master/data.json")
layout(matrix(1:36,4, byrow = TRUE))
par(mar = c(3,3,1,1), mgp = c(1.5,0.5,0))
## computing means and dispersion for last 9 days
means <- rep(0,84)
disp <- rep(0,84)
for (i in 1:84) {
x <- c(-4:4)
y <- data[[2]][[i]]$confirmed[73:81]
means[i] <- mean(y)
mod <- glm(y ~ x + I(x^2) + I(x^3), family = poisson(link = identity), start = c(2,0,0,0))
disp[i] <- mod$deviance/mod$df.residual
}
### choosing some interresting cases and ordering them
cases <- c(4,5,11,12,14,15,21,22,23,24,
26,29,30,31,34,35,37,41,
42,43,47,48,50,51,53,56,
58,67,68,71,72,75,77,79,82,83)
cases <- cases[order(means[cases])]
for (i in cases) {
col = 1
if (i == 24) {
col = 2
bg = "red"
}
plot(-100,-100, xlim = c(0,85), ylim = c(0,11), yaxt = "n", xaxt = "n",
xlab = "", ylab = "counts", col = col)
axis(2, at = c(1:10), labels = c(1:10)^2, las = 2)
axis(1, at = c(1:85), labels = rep("",85), tck = -0.04)
axis(1, at = c(1,1+31,1+31+30)-1, labels = c("Mar 1", "Apr 1", "May 1"), tck = -0.08)
for (lev in c(10,25,50,100)) {
#polygon(c(-10,200,200,-10), sqrt(c(lev-sqrt(lev),lev-sqrt(lev),lev+sqrt(lev),lev+sqrt(lev))),
# col = "gray")
lines(c(-10,200), sqrt(c(lev,lev)), lty = 2)
}
lines(sqrt(data[[2]][[i]]$confirmed), col = col)
points(sqrt(data[[2]][[i]]$confirmed), bg = "white", col = col, pch = 21, cex=0.7)
title(paste0(i,": ", data[[2]][[i]]$name), cex.main = 1, col.main = col)
}
### an interesting plot of under/overdispersion and mean of last 9 data points
### one might recognize a cluster with low deviance and mean just below 100
plot(means,disp, log= "xy",
yaxt = "n", xaxt = "n")
axis(1,las=1,tck=-0.01,cex.axis=1,
at=c(100*c(1:9),10*c(1:9),1*c(1:9)),labels=rep("",27))
axis(1,las=1,tck=-0.02,cex.axis=1,
labels=c(1,10,100,1000), at=c(1,10,100,1000))
axis(2,las=1,tck=-0.01,cex.axis=1,
at=c(10*c(1:9),1*c(1:9),0.1*c(1:9)),labels=rep("",27))
axis(2,las=1,tck=-0.02,cex.axis=1,
labels=c(1,10,100,1000)/10, at=c(1,10,100,1000)/10)
也许这有点过度解释数据,但无论如何这里是另一个有趣的图表(也在上面的代码中)。下图根据过去 13 天的平均值和基于具有 Poisson 族和三次拟合的 GLM 模型的分散因子比较了所有 84 个区域(除了不适合绘图的最大三个区域)。看起来分散不足的病例通常每天接近 100 例。
似乎无论是什么导致克拉斯诺达尔边疆区出现这些可疑的水平值,它都发生在多个地区,并且可能与每天 100 例的某些边界有关。在生成数据的过程中可能会发生一些审查,从而将值限制在某个上限。不管这个过程是什么导致了删失数据,它似乎以类似的方式发生在多个地区,并且可能有一些人为的(人为)原因(例如,在较小的地区进行实验室测试的某种限制)。