计算变化数据的斜率

问题描述 投票:0回答:1

在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],问题就解决了。在我的情况下,我处于停滞状态,以便有效地进行。

有什么想法吗?

r subset linear-regression
1个回答
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以获得更好的性能。可能还有包提供滚动回归功能的包。

© www.soinside.com 2019 - 2024. All rights reserved.