问题
我一直在使用包的tidy
包装器—— drc
<code>tidydrc——来构建生成tidy
正常输出版本的增长曲线(最适合ggplot
)。但是,由于模型的继承嵌套,我无法运行简单drc
的函数,因为模型嵌套在数据框内。我在下面附上了镜像drc
和tidydrc
打包的代码。
目标
tidydrc
使用该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)