我观察到两种方法的结果是不同的。为什么会这样呢?我知道lm上发生了什么,但我不知道tslm背后发生了什么。
> library(forecast)
> set.seed(2)
> tts <- ts(100*runif(1200)+seq(1:1200)*0.1, frequency=12, start=c(2000,1))
> lm(tts~time(tts))
Call:
lm(formula = tts ~ time(tts))
Coefficients:
(Intercept) time(tts)
-2400.365 1.225
> tslm(tts~trend)
Call:
tslm(formula = tts ~ trend)
Coefficients:
(Intercept) trend
48.9350 0.1021 发布于 2018-01-02 11:12:49
运行以下三个命令:
predict(lm(tts~time(tts)))
predict(tslm(tts~time(tts)))
all.equal(predict(lm(tts~time(tts))), predict(tslm(tts~trend)))你会说服自己它们是一样的。如果输出相同,则lm回归的X变量,即
time(tts) 必须是的线性变换
trend最简单的猜测是:
tmp <- time(tts)*12
lm(tts~tmp)具有与tslm系数相同的系数。所以趋势就是
12*time(tts)例如,趋势是自0年以来经过的时间(以月为单位)的(整数)计数。时间(Tts)是从第0年开始经过的时间计数(以年为单位)。
https://stackoverflow.com/questions/48054150
复制相似问题