使用sparkly.nested中的sdf_nested来按组拟合多个回归模型 问题

问题描述

背景

我有兴趣使用sdf_nested包中的sparkly.nested来独立拟合每个组的多个回归模型 1

数据和设置

离群值元素与此reprex不相关,但我将其保留用于进一步的示例。

# Settings ----------------------------------------------------------------

library("tidyverse")
library("sparklyr")
library("sparklyr.nested")

set.seed(123)

# Con + Data --------------------------------------------------------------

# Establish connection
sc <- spark_connect(master = "local")

# Create basic data frame
dta_ts <-
  tibble(category = sample(LETTERS[1:4],replace = TRUE,size = 1e5)) %>% 
  group_by(category) %>%
  mutate(ref_dte = sample(
    x = seq(as.Date('2010-01-01'),as.Date('2016-12-30'),by = "1 day"),size = n(),replace = TRUE
  )) %>%
  ungroup() %>% 
  mutate(rand_val = rpois(n(),lambda = 10),rand_val = replace(rand_val,sample(n(),50),sample(1e4:1e6,50)))

# copy to spark
tbl_ts <- sdf_copy_to(sc,dta_ts,name = "sprk_tbl_ts",overwrite = TRUE) %>% 
  arrange(category,ref_dte)

# Analysis ----------------------------------------------------------------

# Create outlier flag
tbl_ts <- tbl_ts %>%
  group_by(category) %>%
  mutate(is_out = !between(
    rand_val,mean(rand_val,na.rm = TRUE) - 3 * sd(rand_val,na.rm = TRUE),na.rm = TRUE) + 3 * sd(rand_val,na.rm = TRUE)
  )) %>%
  ungroup()

tbl_ts_agg <- group_by(tbl_ts,category,ref_dte) %>%
  summarise(tot_rand_val = sum(rand_val),num_obs = n()) %>% 
  ungroup()

问题

鉴于tbl_ts_agg,我想基于每个组拟合多个回归模型。

期望结果

将对象填充到本地内存中我可以简单地做到:

dta_ts_agg <- collect(tbl_ts_agg)
dta_ts_agg %>% 
  nest(data = c(ref_dte,tot_rand_val,num_obs)) %>% 
  mutate(mdl_rnd_val = map(data,~ lm(tot_rand_val ~ ref_dte,data = .)),mld_num_obs = map(data,~ lm(num_obs ~ ref_dte,data = .))) %>% 
  mutate(preds_rnd_val = map(mdl_rnd_val,predict.lm),preds_num_obs = map(mld_num_obs,predict.lm)) %>% 
  unnest(data,preds_rnd_val,preds_num_obs)

问题

我希望使用闪亮但代码相同的结果:

fit_grps <- tbl_ts_agg %>% 
  sdf_nest(ref_dte,num_obs) %>% 
  group_by(category) %>% 
  mutate(mld_tot_rand = ml_linear_regression(x = data,formula = tot_rand_val ~ ref_dte))

产生以下错误

UseMethod("escape")中的错误:没有适用的“转义”方法 应用于“配方”类的对象另外:警告消息: sql ml_linear_regression的命名参数被忽略

问题

如何使用sparklyrsparkly.nested从Spark的RDD上的本地数据帧复制方法


1。方法在R for Data Science的Many Models章中进行了描述。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...