R - 使用 data.table 或 dplyr 为每个主题拟合模型
R - Fitting a model per subject using data.table or dplyr
我对许多科目都有一组观察结果,我想为每个科目拟合一个模型。
我正在使用包 data.table
和 fitdistrplus
,但也可以尝试使用 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.table
或 dplyr
来做到这一点?
编辑: 提供了一个 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"))
我对许多科目都有一组观察结果,我想为每个科目拟合一个模型。
我正在使用包 data.table
和 fitdistrplus
,但也可以尝试使用 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.table
或 dplyr
来做到这一点?
编辑: 提供了一个 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"))