0

问题

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


目标

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

0 回答 0