【问题标题】:R - Fitting a model per subject using data.table or dplyrR - 使用 data.table 或 dplyr 为每个主题拟合模型
【发布时间】:2016-11-08 21:58:09
【问题描述】:

我对许多科目都有一组观察结果,我想为每个科目拟合一个模型。

我正在使用包data.tablefitdistrplus,但也可以尝试使用dlpyr

假设我的数据是这种形式:

#subject_id #observation
1           35
1           38
2           44
2           49

这是我迄今为止尝试过的:

 subject_models <- dt[,fitdist(observation, "norm", method = "mme"), by=subject_id]

我认为这会导致错误,因为对fitdist 的调用返回了一个无法存储在数据表/数据帧中的fitdist 对象。

有没有使用data.tabledplyr 的直观方法来做到这一点?

编辑:提供了一个 dplyr 答案,但我也希望有一个 data.table 答案,我会尝试针对这两者运行一些基准测试。

【问题讨论】:

标签: r data.table dplyr model-fitting


【解决方案1】:

这可以通过purrr 包轻松实现

我认为它与@alistaire 建议的相同

library(purrr)
library(dplyr)
library(fitdistrplus)
dt %>% split(dt$subject_id) %>%  map( ~ fitdist(.$observation, "norm", method = "mme"))

或者,没有purrr

dt %>% split(dt$subject_id) %>%  lapply(., function(x) fitdist(x$observation, "norm", method = "mme"))

【讨论】:

  • 感谢@Sumedh 的回答。有没有一种简单的方法可以在 R/dplyr 中并行化 map 调用?
  • @Bar,我对 R 中的并行化还不够回应
  • @Bar 根据您关于如何并行化的评论 - 您可能想打开一个新问题,展示这种技术,然后展示您尝试并行化的尝试。
  • @JasonAizkalns 当然,我现在就打开一个。
猜你喜欢
  • 2014-05-07
  • 1970-01-01
  • 2016-06-03
  • 1970-01-01
  • 2015-05-22
  • 1970-01-01
  • 2012-05-16
  • 1970-01-01
  • 2017-02-22
相关资源
最近更新 更多