如何显示两个时间序列是否彼此“不同”?

机器算法验证 时间序列 数据可视化
2022-04-11 16:11:58

我有一个小数据集,显示疾病登记处的年轻患者数量随着时间的推移而增加。我怀疑这只是因为随着时间的推移,登记处变得更加成功,现在捕获的案件比例更大。

因此,我想绘制每年登记处中年轻患者的数量,例如在折线图上,以及每年登记处中包括的患者总数(即所有年龄),并证明是否

我在 Excel 中粗略地做到了这一点,趋势并不相同。因此,我想证明这些趋势在统计上/图形上是否相互一致。任何人都可以建议使用 Stata 或 Excel 的好方法吗?

数据样本

1个回答

因为计数或比例的方差往往与计数或比例本身成正比,所以理论(和大量经验)建议分析数据的平方根。

通过在平方根轴上绘制比例和总数来亲自查看。

数字

为了使每一列的视觉效果与其表示的计数成正比,列宽(以及它们的高度)也与计数的平方根成正比:这使得列的面积与计数成正比。正如标题所述,这些列只是轻微绘制,因为它们在这种比例可视化中是次要的。

点(表示比例)在其平滑(显示为蓝线)周围的明显随机变化,以及平滑周围该变化的近似对称性,证明了平方根尺度的适当性。他们还建议不需要对时间相关性进行更复杂的分析:您可以确信您在该图中看到的趋势是真实的。它们呈现出比问题中所暗示的更微妙的画面:比例确实增加了,但只是在前七年。

创建这样的组合图可以在 Excel 或 Stata 中完成,但在任何一个程序中都是困难、繁琐且耗时的。此示例是使用(版本 3.4.0)ggplot2中的包生成的。R


为了说明这个过程,这里是完整的R代码。

library(ggplot2)
X <- data.frame(Year=2003:2016,
                Young=c(17,23,22,35,46,71,80,68,76,84,74,88,62,60),
                All=c(3007,5200,6000,5900,6740,7070,7120,
                      7324,7620,8051,8437,9130,8930,9000)*10)
scale.dup <- 0.5e6 # Proportional to column heights in the plot
ggplot(X, aes(Year, 100 * scale.dup * Young/All)) +
  geom_col(aes(Year, All, width=2.25*sqrt(All/scale.dup)),
           fill="#ffffe0", alpha=0.75, color="Gray") +
  geom_smooth(size=1.25) +
  geom_point(size=2) +
  ylab("All") +
  scale_y_continuous(sec.axis=dup_axis(~. / scale.dup, "Young / All (%)"), trans="sqrt") +
  ggtitle("Disease Registry Patient Proportions", "2003 - 2016 (square root scales)")