真是幼稚的问题。我有一个时间序列。我知道如何执行分割(如二进制分割算法)。目标是找到从不同概率模型生成的区间。
但我有关于可能模型的所有信息(分布形状、方差、均值)。因此,对于每个时间点,我都有每个模型及其先验的可能性。=> 我可以计算每个时间点、任何模型和任何间隔的后验。
问题:如果我只是使用最大后验概率来分割时间序列,我会有太多的变化点。HMM 可以是一个解决方案,但它也只考虑一个点,而不是“查看”整个区间。也很难将 HMM 应用于非正态数据。
可以用滑动窗口来解决,但不清楚如何选择滑动窗口的大小。
是否有这种类型的贝叶斯变化点检测算法(当您知道可能的模型时)?像 HMM,但考虑了区间并且可以使用任何参数分布?启发式算法也很好。
我如何为这个问题应用最大似然聚类?
UPD:问题的模拟:
variances <- runif(1000,0.01,0.5)
coverages <- c()
for (i in seq(1:100)) {
coverages <- c(coverages, rnorm(1, mean=0, sd=variances[i]))
}
for (i in seq(101:200)) {
coverages <- c(coverages, rnorm(1, mean=-log(2), sd=variances[i] / 0.75))
}
for (i in seq(201:300)) {
coverages <- c(coverages, rnorm(1, mean=log(3/2), sd=variances[i] * 0.75))
}
for (i in seq(301:1000)) {
coverages <- c(coverages, rnorm(1, mean=0, sd=variances[i]))
}
plot(coverages)
在现实生活中,我知道每个时间点可能的差异和均值。我需要推断该细分市场中一种模型的流行程度。