如何使用fitdist函数(负二项式)?

时间:2018-10-09 21:21:27

标签: r dplyr distribution fitdistrplus

我有以下数据集

aa <- data.frame("set_up" = c(1,1,1,1,1,1,2,2,2,3,3,3), set = c(1,1,1,2,2,2,1,1,1,3,3,3), mass = c(45,12,34,7,1,433,56,12,54,6,7,8))

我想找到按set和set_up分组的负二项式函数的参数k。

fitdist(data = aa$mass, distr = "nbinom", method = "mle")$estimate[[1]]给出k参数的值。我想估计每组set_up和set的k。

这是它的dplyr代码

library(fitdistrplus)
aak <- aa %>% 
  group_by(set_up, set)%>% 
  summarise(ktotalinf = fitdist(data = aa$mass, distr = "nbinom", method = "mle")$estimate[[1]])%>%
  as.data.frame()

我得到一个输出,但是每行重复的值相同。  估计[[1]]的此值与汇总所有质量数据(而不是将其分组)相同。有关如何解决此问题的任何建议?

1 个答案:

答案 0 :(得分:1)

您得到了答案,但没有背后的原因。 magrittr / dplyr机制是为沿%>%段落链的每个连续函数的应用创建局部环境。

当为fitdistrplus::fitdist函数提供aa$mass的数据参数时,实际上您已经离开了将"set"变量分别分组的本地环境。在本地环境中没有aa命名的实体。有一个名为.(一个句点)的实体,每个实体在函数之间传递,并在每个步骤中以某种方式更改。并非apply将函数分配给每个组,fitdist始终得到相同的参数,即整个数据帧。当将data参数更改为mass时,R解释器首先在本地环境中查找并在每个组中找到一个命名实体。