小编Gra*_*ant的帖子

重新审视 data.table 与 dplyr 内存使用

我知道data.tabledplyr 的比较是 SO 上的常客。(完全披露:我喜欢并使用这两个包。)

但是,在尝试为我正在教授的课程提供一些比较时,我遇到了令人惊讶的 wrt 内存使用情况。我的期望是dplyr在需要(隐式)过滤或数据切片的操作中表现特别差。但这不是我要发现的。相比:

首先dplyr

library(bench)
library(dplyr, warn.conflicts = FALSE)
library(data.table, warn.conflicts = FALSE)
set.seed(123)

DF = tibble(x = rep(1:10, times = 1e5),
                y = sample(LETTERS[1:10], 10e5, replace = TRUE),
                z = rnorm(1e6))

DF %>% filter(x > 7) %>% group_by(y) %>% summarise(mean(z))
#> # A tibble: 10 x 2
#>    y     `mean(z)`
#>  * <chr>     <dbl>
#>  1 A     -0.00336 
#>  2 B     -0.00702 
#>  3 C …
Run Code Online (Sandbox Code Playgroud)

r dplyr data.table

10
推荐指数
1
解决办法
752
查看次数

R中的递归回归

假设我在R中有一个数据框,如下所示:

> set.seed(1)
> X <- runif(50, 0, 1)
> Y <- runif(50, 0, 1)
> df <- data.frame(X,Y)
> head(df)

          X          Y
1 0.2655087 0.47761962
2 0.3721239 0.86120948
3 0.5728534 0.43809711
4 0.9082078 0.24479728
5 0.2016819 0.07067905
6 0.8983897 0.09946616
Run Code Online (Sandbox Code Playgroud)

如何在X上执行Y的递归回归,从前20个观察开始,一次一个观察增加回归窗口,直到它覆盖整个样本?

关于如何执行固定窗口长度的滚动回归(例如rollapply,在zoo包中使用),有很多信息.然而,当我找到一个简单的递归选项时,我的搜索努力已经徒劳无功,其中起点被修复并且窗口大小增加.包中的lm.fit.recursive函数quantreg(此处)是一个例外.这非常有效......但是它没有记录任何有关标准错误的信息,这是构建递归置信区间所需要的.

我当然可以使用循环来实现这一目标.但是,我的实际数据框架非常大,并且还按id分组,这会导致复杂化.所以我希望找到一个更有效的选择.基本上,我正在寻找St等于"滚动[...],递归"命令的R等价物.

recursion regression r lm

5
推荐指数
2
解决办法
2803
查看次数

标签 统计

r ×2

data.table ×1

dplyr ×1

lm ×1

recursion ×1

regression ×1