R - 使用 data.table 或 dplyr 为每个主题拟合模型

R - Fitting a model per subject using data.table or dplyr

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

我正在使用包 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 returns 一个 fitdist 对象是不可能存储在 datatable/dataframe.[=20= 中的]

有什么直观的方法可以使用 data.tabledplyr 来做到这一点?

编辑: 提供了一个 dplyr 答案,但我也希望能有一个 data.table 答案,我将尝试 运行 一些基准两人

这可以通过 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"))