Как использовать функцию фитдиста (отрицательный бином)? - PullRequest
0 голосов
/ 10 октября 2018

У меня есть следующий набор данных

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))

Я хочу найти параметр k отрицательной биномиальной функции, сгруппированный по set и set_up.

fitdist(data = aa$mass, distr = "nbinom", method = "mle")$estimate[[1]] дает значение параметра k.Я хочу оценить k для каждой группы set_up и set.

Вот код 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 голосов
/ 10 октября 2018

Вы получили ответ, но не обоснование этого.Механизм magrittr / dplyr предназначен для создания локальной среды для применения каждой последующей функции в цепочке %>% пассажей.

Когда вы дали функции fitdistrplus::fitdist аргумент данных aa$mass, вы фактически вышли за пределы локальной среды, где значения были отдельно сгруппированы по вашей переменной "set".Не является aa -именованным объектом в локальной среде.Там есть сущность с именем . (точка), которая передается от функции к функции, изменяясь тем или иным способом на каждом шаге.Вместо apply -направление функции для каждой группы, fitdist всегда получает один и тот же аргумент, который представляет собой весь фрейм данных.Когда вы изменяете аргумент данных на mass, интерпретатор R сначала просматривает локальную среду и находит именованную сущность в каждой группе.

...