r语言 - lm(data~time)和tslm(data~trend)有什么区别



我观察到两种方法的结果不同。这是为什么呢?我知道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  

运行以下三个命令:

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 年以来经过的时间

的(整数(计数,以月为单位。 time(tts( 是自第 0 年以来经过的时间计数,以年为单位。

最新更新