Проблема
Я использовал оболочку 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)