|
引言
欧洲夏休是欧洲国家在夏季特有的传统长假制度。今年的夏休已经结束,欧洲又重新上线。
夏休刚开始时,我们提出基于R数据分析夏休的实际开始时间,利用基于Copula熵的变点检测分析copent算法包的下载数据,将下载量反映的R使用情况作为夏休前后工作情况进行对比分析。变点检测数据实验得出结论:夏休开始是在7月9日前后。
Copula熵变点检测算法分为单变点检测和多变点检测,前者假设只有一个变点,而后者假设有未知个数的多个变点,通过将单变点检测和二分割策略相结合的方式完成多个变点的检测,变点的个数无需指定,由算法自动检测得到。
copent算法包中实现了copula熵单变点和多变点检测算法,函数分别为cpd和mcpd。由于算法计算量较大,cpd函数实现采用了cpu并行计算技术,以提高算法时间效率。
前次检测夏休开始时间只需要单变点检测即可,而要同时检测开始和结束时间则需要利用多变点检测。
今天我们将利用基于Copula熵的多变点检测算法分析copent算法包的下载数据,希望同时得到夏休的开始和结束时间。
R数据实验
我们首先利用cranlogs算法包获得copent包从夏休开始前的6月1日到今天的下载量数据:
library(cranlogs)
dl2 = cran_downloads("copent", from = "2026-06-01", to = "2026-08-20")
然后,我们利用copent算法包中的Copula熵多变点检测算法mcpd函数分析下载量时间序列数据,由于算法是基于信息论的熵,因此算法的变点检测阈值参数thd无需调节,采用默认值即可:
library(copent)
mcpd1 = mcpd(dl2$count)
算法检测到的3个变点位置如下所示:
> mpos = mcpd1$pos
> mpos
[1] 9 38 67
最后,将变点位置结果在下载量时序数据上绘制出来:

根据上图所示结果,7、8月间有两个变点,分别对应夏休的开始和结束。欧洲夏休的开始时间在7月8日,与上次分析结果(7月9日)基本一致,夏休结束的时间在8月6日,夏休维持近1个月,与欧洲夏休的实际情况基本相符。从上图也可以看到,在变点给出夏休时段上,copent包的下载量明显低于夏休前后的时段,说明了变点检测结果的合理性。
结论
我们利用Copula熵多变点检测算法分析了copent包的下载量数据,得到了欧洲夏休的实际起止时间估计,与实际情况基本相符。
分析实验结果表明了Copula熵变点检测算法的有效性。
参考文献
Ma, Jian. Change Point Detection with Copula Entropy based Two-Sample Test. arXiv preprint arXiv:2403.07892, 2024.
Ma, Jian. copent: Estimating Copula Entropy and Transfer Entropy in R. arXiv preprint arXiv:2005.14025, 2020.
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2026-9-3 15:50
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社