我想知道线性回归函数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系列的斜率吗?
答案 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
您的第二个示例有效,因为您创建了足够的变体。