计算变化数据的斜率

时间:2018-01-04 08:14:47

标签: r subset linear-regression

在R中,我有一个(x,y)点的数据集,不断通过模拟更新(值附加到数据集的末尾)。

我想计算仅使用最后10个列出的数据点的数据创建的线的斜率(通过线性模型)。

这里的混乱源于数据正在发生变化,因此我怀疑可能需要循环来迭代数据点的索引。

在R中,人们通常会做类似

的事情
linreg <- lm(y ~ x, data = d) # set up linear model
summary.linreg <- summary(linreg) # output summary of model
beta1 <- coef(summary.linreg)[2] # extract slope

我的案例中需要的更改是在linreg中,特别是

linreg <- lm(y[?] ~ x[?], data = d) # subset response and predictor

对于10 x-y点的非变化数据集,只需执行[?] = [1:10]即可解决问题。在我的情况下,我对于有效进行的最佳方式处于停滞状态。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

不,不要在公式内部进行子集化。子集data.frame。在循环内部,每次数据库更新后,执行以下操作:

linreg <- lm(y ~ x, data = tail(d, 10))

如果要循环遍历data.frame行,请执行以下操作:

linreg <- lm(y ~ x, data = d[i:(i+9),])

如果您的data.frame很大并且您只需要斜率,则应使用更低级别的函数lm.fit以获得更好的性能。可能还有包提供滚动回归功能的包。