lm功能1分xts时间序列

时间:2016-08-31 15:32:43

标签: r xts lm

我想知道线性回归函数Session { cookie: { path: '/', _expires: null, originalMaxAge: null, httpOnly: true }, passport: {} } 是否应该完全适用于1分钟间隔的时间序列。我希望是的,但在这种情况下似乎不是。我有以下xts时间序列lm

z

应用 mean 2016-03-11 08:37:00 10 2016-03-11 08:38:00 11 2016-03-11 08:39:00 12 会给出

lm( z ~ index(z) )

因此回归的斜率是NA。我想知道为什么?我没有看到任何数学原因导致无法计算出来。

如果我将第一行的时间更改为间隔为5分钟,那么Coefficients: (Intercept) index(z) 11 NA 等于

z

然后 mean 2016-03-11 08:33:00 10 2016-03-11 08:38:00 11 2016-03-11 08:39:00 12 按预期工作并返回4.839e-3

的斜率
lm( z ~ index(z) )

我是否误解了Coefficients: (Intercept) index(z) -7.053e+06 4.839e-03 函数应如何工作?或者有人可以评论这种行为吗?还有其他功能可以计算1min系列的斜率吗?

1 个答案:

答案 0 :(得分:3)

这不是特定于xts或lm函数。一般来说,估计线性回归系数是一个问题。您无法使用有效不变的数据(在浮点算术精度内)估算数据序列中的变化。

你可以看到你的第一个例子是计算奇异的:

lm(z ~ index(z), singular.ok=FALSE)
Error in lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) : 
  singular fit encountered

但它会"工作"如果你降低公差,但这会牺牲数值稳定性。

lm(z ~ index(z), singular.ok=FALSE, tol=1e-8)

Call:
lm(formula = z ~ index(z), singular.ok = FALSE, tol = 1e-08)

Coefficients:
(Intercept)     index(z)  
 -2.430e+07    1.667e-02

您的第二个示例有效,因为您创建了足够的变体。