0

我有以下数据集

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]] 与所有大量数据都被汇集(而不是分组)相同。关于如何解决这个问题的任何建议?

4

1 回答 1

1

你得到了答案,但不是背后的原因。magrittr/dplyr 机制是为沿%>%通道链的每个连续函数的应用创建本地环境。

当您为fitdistrplus::fitdist函数提供 的数据参数时aa$mass,您实际上已经超出了本地环境,其中值已按"set"变量单独分组。本地环境中的 is no aa-named 实体。有一个名为(句点)的实体.,它从一个函数传递到另一个函数,在每一步都以某种方式进行更改。而不是 -apply将函数添加到每个组,fitdist总是得到相同的参数,即整个数据框。当您将 data 参数更改为 时mass,R 解释器首先查看本地环境,并在每个组中找到一个命名实体。

于 2018-10-10T00:02:30.030 回答