Я пытаюсь подогнать модели роста к продольным данным, используя функцию Гомпертца в пакете dr c. Чтобы сгенерировать модели для нескольких стран одновременно, я вложил данные и использовал функцию map из tidyverse. Шаг моделирования с использованием purrr :: map выполняется нормально, но когда я пытаюсь получить сводные данные модели с помощью параметра glance в broom, я получаю сообщение об ошибке, для которого не существует метода glance. объекты класса dr c. Однако, похоже, что glance работает с объектами dr c, согласно этой веб-странице: https://rdrr.io/github/tidyverse/broom/man/glance.drc.html
Ниже приведен пример, включающий набор данных игрушек, включающий 2 страны и 6 временных точек для каждый.
# Набор данных протестирован
iso_code total_cases num_days
IND 1 1
IND 3 10
IND 3 20
IND 3 30
IND 165 50
IND 979 60
SGP 3 1
SGP 18 10
SGP 47 20
SGP 86 30
SGP 187 50
SGP 455 60
# установка пакетов tidyverse и dr c
> library(tidyverse)
> library(drc)
> data = read.delim("test_data.txt", sep='\t', header=T)
> dim(data)
[1] 12 3
> str(data)
'data.frame': 12 obs. of 3 variables:
$ iso_code : chr "IND" "IND" "IND" "IND" ...
$ total_cases: int 1 3 3 3 165 979 3 18 47 86 ...
$ num_days : int 1 10 20 30 50 60 1 10 20 30 ...
# размещение данных по странам
> by_country = data %>% group_by(iso_code)%>% nest()
# запуск модели dr c gompertz на вложенных данных
> by_country_g = by_country %>% mutate(model= purrr::map(data,~ drm((total_cases)/max(total_cases) ~ num_days, fct=G.4(), data=.)))
# проверка содержимого модели
> by_country_g$model
[[1]]
A 'drc' model.
Call:
drm(formula = (total_cases)/max(total_cases) ~ num_days, data = ., fct = G.4())
Coefficients:
b:(Intercept) c:(Intercept) d:(Intercept) e:(Intercept)
-0.164861 0.002555 1.531310 54.838386
[[2]]
A 'drc' model.
Call:
drm(formula = (total_cases)/max(total_cases) ~ num_days, data = ., fct = G.4())
Coefficients:
b:(Intercept) c:(Intercept) d:(Intercept) e:(Intercept)
-0.1257 0.0845 1.4638 52.9056
# извлечение сводки моделей с помощью взгляда
> summary_g = by_country_g %>% mutate(glance = purrr::map(model, broom::glance))%>% unnest(glance)
Error: Problem with mutate() input glance.
x No glance method for objects of class drc
ℹ Input glance is purrr::map(model, broom::glance).
ℹ The error occured in group 1: iso_code = "IND".
Run rlang::last_error() to see where the error occurred.