Гнездовые вложенные модели tidydr c - PullRequest
0 голосов
/ 14 февраля 2020

Проблема

Я использовал оболочку tidy для пакета drc - tidydrc - для построения кривых роста, которые дают версию tidy нормальный выход (лучше всего для ggplot). Однако из-за наследования вложенности моделей я не могу запустить простые функции drc, поскольку модели вложены в фрейм данных. Я приложил код, который отражает drc и tidydrc пакет ниже.


Цель

Чтобы сравнить критерии информации из нескольких моделей, подходит для * Вывод 1020 * с использованием функции drc mselect() - для эффективного выбора наиболее подходящей модели.


Идеальный результат (работает с drc)

library(tidydrc) # To load the Puromycin data
library(drc)

model_1 <- drm(rate ~ conc, state, data = Puromycin, fct = MM.3())

mselect(model_1, list(LL.3(), LL.5(), W1.3(), W1.4(), W2.4(), baro5()))


# DESIRED OUTPUT SIMILAR TO THIS
         logLik       IC Lack of fit  Res var
MM.3  -78.10685 170.2137   0.9779485 70.54874 # Best fitting model
LL.3  -78.52648 171.0530   0.9491058 73.17059
W1.3  -79.22592 172.4518   0.8763679 77.75903
W2.4  -77.87330 173.7466   0.9315559 78.34783
W1.4  -78.16193 174.3239   0.8862192 80.33907
LL.5  -77.53835 177.0767   0.7936113 87.80627
baro5 -78.00206 178.0041   0.6357592 91.41919

Пример не работает с tidydrc

library(tidyverse) # tidydrc utilizes tidyverse functions

model_2 <- tidydrc_model(data = Puromycin, conc, rate, state, model = MM.3())
summary(model_2)

Ошибка: summary.vctrs_list_of() не реализовано.

Теперь я могу вручную разделить список моделей в кадре данных model_2, но не могу понять, правильные операторы apply (это беспорядок), чтобы заставить это работать.


Достигнут прогресс

Обе они приводят к одной и той же ошибке, поэтому, по крайней мере, я снизил уровень, но теперь я застрял и уверен, что это не идеальное решение.

mselect(model_2$drmod, list(LL.3(), LL.5(), W1.3(), W1.4(), W2.4(), baro5()))

model_2_sub <- model_2$drmod # Manually subset the drmod column

apply(model_2_sub, 2, mselect(list(LL.3(), LL.5(), W1.3(), W1.4(), W2.4(), baro5()))) 

Ошибка в UseMethod ("logLik"): нет применимого метода для 'logLik', примененного к объекту класса "list"

Я даже попробовал функцию tidyverse unnest() безрезультатно

model_2_unnest <- model_2 %>% unnest_longer(drmod, indices_include = FALSE)
...