在 R 中,如何并行计算汇总函数?

In R, how can I compute the summary function in parallel?

我有一个庞大的数据集。我在 nnet 包中通过 multinom 计算了多项式回归。

mylogit<- multinom(to ~ RealAge, mydata)

需要 10 分钟。但是当我使用汇总函数来计算系数时 需要超过1天!!! 这是我使用的代码:

output <- summary(mylogit) 

Coef<-t(as.matrix(output$coefficients))

我想知道是否有人知道如何在 R 中通过并行处理来计算这部分代码?

这是一小部分数据样本:

mydata:
to  RealAge
513 59.608
513 84.18
0   85.23
119 74.764
116 65.356
0   89.03
513 92.117
69  70.243
253 88.482
88  64.23
513 64
4   84.03
65  65.246
69  81.235
513 87.663
513 81.21
17  75.235
117 49.112
69  59.019
20  90.03

如果您只想要系数,请仅使用计算较少的 coef() 方法。

示例:

mydata <- readr::read_table("to  RealAge
513 59.608
513 84.18
0   85.23
119 74.764
116 65.356
0   89.03
513 92.117
69  70.243
253 88.482
88  64.23
513 64
4   84.03
65  65.246
69  81.235
513 87.663
513 81.21
17  75.235
117 49.112
69  59.019
20  90.03")[rep(1:20, 3000), ]

mylogit <- nnet::multinom(to ~ RealAge, mydata)
system.time(output <- summary(mylogit))          # 6 sec
all.equal(output$coefficients, coef(mylogit))    # TRUE & super fast

如果分析 summary() 函数,您会发现大部分时间都花在了 crossprod() 函数上。 所以,如果你真的想要 summary() 函数的输出,你可以使用优化的数学库,例如 Microsoft R Open.

提供的 MKL