以下代码计算三个因变量中的每一个的一组回归系数,这些因变量在两组中的每一个的六个自变量的集合上回归,并且工作正常。
library(tidyverse)
library(broom)
n <- 20
df4 <- data.frame(groupingvar= sample(1:2, size = n, replace = TRUE),
y1 = rnorm(n,10,1), y2=rnorm(n,100,10), y3=rnorm(n,1000,100),
x1= rnorm(n,10,1), x2=rnorm(n,10,1), x3=rnorm(n,10,1),
x4=rnorm(n,10,1), x5=rnorm(n,10,1), x6=rnorm(n,10,1))
df4 <- arrange(df4,groupingvar)
regs <- df4 %>% group_by(groupingvar) %>%
do(fit = lm(cbind(y1,y2,y3) ~ . -groupingvar, data = .))
coeffs <- tidy(regs, fit)
我想使用 spark 数据框而不是 R 数据框来复制相同的逻辑。例如,类似于以下内容:
library(sparklyr)
sc <- spark_connect(master = "local", version = "2.0.0")
sparkdf4ref <- sdf_copy_to(sc, df4, "sparkdf4", overwrite=T)
sparkdf4refregs <- sparkdf4ref %>% group_by(groupingvar) %>%
do(sparkfit = lm(cbind(y1,y2,y3) ~ . -groupingvar, data = .))
coeffs <- tidy(sparkdf4refregs, sparkfit)
此代码失败主要是因为我需要使用“ml_linear_regression”而不是“lm”,但即使进行替换它也会失败。如果我保留“ml_linear_regression”,但删除 cbind() 并仅保留一个因变量,则计算一些系数,尽管 broom::tidy 无法获取系数。
有没有办法在 sparklyr 框架中产生这个结果,或者如果需要的话,用另一种方法?