我有一个大数据集,我想根据特定变量的值(在我的生命周期中)进行分区,然后对每个分区运行逻辑回归.根据@tchakravarty在使用dplyr拟合几个回归模型的答案后,我编写了以下代码:
lifetimemodels = data %>% group_by(lifetime) %>% sample_frac(0.7)%>% do(lifeModel = glm(churn ~., x= TRUE, family=binomial(link='logit'), data = .))
我现在的问题是如何使用最终的逻辑模型来计算其余数据(未选择的0.3分数)的AUC,这应该再次按寿命分组?
非常感谢提前!
您可以调整您的dplyr
方法来使用tidyr
和purrr
框架.你看看分组/嵌套,以及mutate
和map
函数来创建列表框来存储您的工作流程的碎片.
您正在寻找的测试/培训拆分是为modelr
帮助在purrr
框架内进行建模而构建的软件包的一部分.具体是cross_vmc
和cross_vkfold
功能.
使用的玩具示例mtcars
(仅用于说明框架).
library(dplyr) library(tidyr) library(purrr) library(modelr) analysis <- mtcars %>% nest(-cyl) %>% unnest(map(data, ~crossv_mc(.x, 1, test = 0.3))) %>% mutate(model = map(train, ~lm(mpg ~ wt, data = .x))) %>% mutate(pred = map2(model, train, predict)) %>% mutate(error = map2_dbl(model, test, rmse))
这个:
需要mtcars
窝成称为列表框data
通过cyl
分隔每个data
到由映射设定的训练crossv_mc
到每个元素,然后使用unnest
以使test
和train
列表列.
将lm
模型映射到每个train
,存储在中model
地图的predict
功能,model
并train
与存储在pred
将rmse
函数映射到model
并test
设置并存储错误.
可能有些用户比我更熟悉工作流程,所以请更正/详细说明.