我每周有3年的数据 . 现在我的目标是使用STL功能消除系列中的趋势和季节性效果 .

我可以使用stats包中的分解函数来分解时间序列组件 . 但我得到趋势和随机效应的第一个和最后52个值的NA值 .

在我的样本数据集中,存在完美的季节性,并且均值和变量随时间而变化 . 所以,我想 Build 乘法模型 . 在这里,我在stats包中使用了stl函数来分解趋势和季节性 . 我知道stl函数可以处理加法模型 . 但我们也可以通过使用对数转换来构建乘法模型 . 在这里,我尝试了两种模型 . 但我没有得到预期的结果 . 我确信我在这段代码中遗漏了一些东西 .

series<-ts(series,frequency=365.25/7,start(2013,9))

series<-structure(c(62L, 72L, 48L, 50L, 302L, 396L, 66L, 33L, 77L, 91L, 
38L, 38L, 43L, 45L, 134L, 754L, 1011L, 901L, 483L, 237L, 99L, 
59L, 92L, 65L, 120L, 214L, 329L, 387L, 276L, 307L, 395L, 372L, 
332L, 258L, 291L, 359L, 211L, 308L, 250L, 1374L, 1131L, 845L, 
588L, 770L, 499L, 532L, 491L, 359L, 318L, 219L, 153L, 138L, 156L, 
133L, 92L, 77L, 214L, 273L, 86L, 75L, 51L, 163L, 72L, 191L, 62L, 
49L, 79L, 573L, 569L, 444L, 410L, 404L, 345L, 141L, 146L, 179L, 
127L, 143L, 382L, 548L, 283L, 315L, 392L, 394L, 313L, 373L, 603L, 
429L, 384L, 419L, 449L, 1774L, 2025L, 1532L, 1252L, 857L, 790L, 
658L, 389L, 398L, 398L, 302L, 237L, 249L, 182L, 167L, 109L, 179L, 
377L, 288L, 146L, 126L, 449L, 138L, 580L, 130L, 94L, 150L, 173L, 
1246L, 1227L, 991L, 707L, 489L, 592L, 326L, 209L, 259L, 286L, 
243L, 344L, 335L, 368L, 397L, 349L, 313L, 1345L, 301L, 1111L, 
366L, 274L, 302L, 248L, 2518L, 2186L, 2094L, 2151L, 1847L, 1384L, 
666L, 455L, 415L, 302L, 277L, 172L, 186L), .Tsp = c(1, 3.97056810403833, 
52.1785714285714), class = "ts")


#Model 1

model1<-stl(series,"periodic",robust="TRUE")

op<-as.data.frame(model1$time.series)

head(op,25)

matplot(op,type="l")

#Model 2

model2<-stl(log(series),"periodic",robust="TRUE")

op<-exp(as.data.frame(model2$time.series))    

matplot(op,type="l")

如何改善模型性能?

如果有更好的方法可以解决这个问题,请建议我 .

提前致谢 .