问题描述
背景
我有兴趣使用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的命名参数被忽略
问题
如何使用sparklyr
和sparkly.nested
从Spark的RDD上的本地数据帧复制方法?
1。此方法在R for Data Science的Many Models章中进行了描述。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)