我有以下数据集
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]]的此值与汇总所有质量数据(而不是将其分组)相同。有关如何解决此问题的任何建议?
答案 0 :(得分:1)
您得到了答案,但没有背后的原因。 magrittr / dplyr机制是为沿%>%
段落链的每个连续函数的应用创建局部环境。
当为fitdistrplus::fitdist
函数提供aa$mass
的数据参数时,实际上您已经离开了将"set"
变量分别分组的本地环境。在本地环境中没有aa
命名的实体。有一个名为.
(一个句点)的实体,每个实体在函数之间传递,并在每个步骤中以某种方式更改。并非apply
将函数分配给每个组,fitdist
始终得到相同的参数,即整个数据帧。当将data参数更改为mass
时,R解释器首先在本地环境中查找并在每个组中找到一个命名实体。