我正在使用名为“changepoint”的非常好的R包来检测系列中方差的变化。
目前我正在使用 cpt.var 功能,检测更改非常强大但我希望有一个更多容差方法。
cpt.var(mod$residuals)
其中 mod 是线性回归:
mod <- lm(priceA ~ priceB)
答案 0 :(得分:1)
如果您查看?cpt.var
的帮助文件,可以将惩罚参数从默认SIC
更改为Manual
。使用Manual
时,可以通过value
参数指定类型I错误值。
以下是基于帮助文件的示例:
# Example of multiple changes in variance at 50,100,150 in simulated data
set.seed(1)
x = c(rnorm(50,0,1), rnorm(50,0,10), rnorm(50,0,5), rnorm(50,0,1))
##Key arguments Manual and value
##Returns 4 changes points
cpt.var(x, penalty="Manual", value="log(2*log(n))", method="BinSeg",
dist="CSS", Q=5, class=FALSE)
##Returns 5 changes points - a false positive
cpt.var(x, penalty="Manual", value="0.5*log(2*log(n))", method="BinSeg",
dist="CSS", Q=5, class=FALSE)