如何提取bfast对象的斜率

时间:2016-01-25 10:14:28

标签: r time-series decomposition trend

我对R中bfast函数的结果有疑问。假设我有一个没有检测到中断的时间序列。

library(bfast)
library(zoo)

NDVI   <- as.ts(zoo(som$NDVI.b,som$Time))
NDVI_w <- window(NDVI, c(2001, 4) , c(2008, 13))
fit    <- bfast(NDVI_w, h=1/2, season="dummy", max.iter=1)
plot(fit)

如何从bfast(fit)对象中提取趋势分量的斜率值? ANOVA = TRUE的选项'plot'不起作用。

plot(fit, ANOVA=TRUE)$slope

一个选项可能是,根据提供的趋势组件计算它,但有没有办法直接从'fit'对象获取它?

out   <- fit$output[[1]]
plot(out$Tt)
lm(out$Tt ~ time(out$Tt))$coefficients[2]

任何提示都非常受欢迎。

1 个答案:

答案 0 :(得分:1)

您已经想出(可能来自帮助文件)趋势组件由fit$output[[1]]$Tt给出。

你说你想要“趋势分量的斜率值”。因此,只需从前两个趋势值中获取斜率: diff(fit$output[[1]]$Tt[1:2])/diff(time(fit$output[[1]]$Tt)[1:2])