0

对不起,如果这是一个愚蠢的问题,但我无法弄清楚如何在 drc 包中使用 pmodels。我在网上到处搜索,我能找到的只是定义,即:“一个具有许多列的数据框,因为非线性函数中有参数。或者一个包含非线性函数中每个参数的公式的列表。” 网上有例子,但我不知道它代表什么。例如,对于命令:

sel.m2 <- drm(dead/total~conc, type, weights=total, data=selenium, fct=LL.2(),
    type="binomial", pmodels=list(~1, ~factor(type)-1))

met.as.m1<-drm(gain ~ dose, product, data = methionine, fct = AR.3(),
    pmodels = list(~1, ~factor(product), ~factor(product)))
    plot(met.as.m1, log = "", ylim = c(1450, 1800))

auxins.m1 <- boxcox(drm(y ~ dose, h, pmodels = data.frame(h, h, 1, h), fct = LL.4(), data = auxins), method = "anova")

我将 pmodels 视为列表和数据框,但是“-1”与“~1”是什么意思,或者列出一个因素是什么意思,括号内的顺序有什么意义?

4

1 回答 1

2

我同意这对新人来说没有很好的解释。不幸的是,我只能部分回答你。迟到的回应,但对其他人来说:

有两个资源可供 drc 参考: a) 作者发表了关于 drc 的文章。见正文和补充(本例中为 S3)DOI:10.1371/journal.pone.0146021 b) 见 pmodel 的 drc.pdf 和 ctrl+f 以检查各种用途。

data.frame 与 list 取决于我相信的分组级别。

在玩弄了我的数据(子集)之后,我发现 pmodels() = 参数/池模型也就是你如何将这些参数设置为相等(即,全局/共享与否)。在您使用生长素 df 的最后一个示例中

library(drc)
auxins.m1 <- boxcox(drm(y ~ dose, h, pmodels = data.frame(h, h, 1, h), 
fct = LL.4(), data = auxins), method = "anova")

## changed names to familiar terms by a non-statistician 
auxins.m1 <- boxcox(drm(y ~ dose, h, pmodels = data.frame(h, h, 1, h), 
fct = LL.4(names=c("hill.slope","bot","top","ed50"), data = auxins), method = "anova")

显示置顶为1。顺序同LL.4(names...)

所以如果你设置

pmodels = data.frame(h, 1, 1, h)     ## ("hill.slope","bot","top","ed50")

正如他们在 pg.10 的 drc.pdf 中所做的那样,您会看到它是设置一个公共/共享的底部和顶部。

查看他们补充文章的第 9 页,它表明对于 LL.2,两参数逻辑拟合具有预设的顶部 = 1 和底部 = 0。

selenium.LL.2.2 <- drm(dead/total~conc, type, weights = total,
data = selenium, fct = LL.2(), type="binomial",
pmodels = list(~factor(type)-1, ~1))       ## ("hill-slope", "ed50")

表明 ed50 假定为常数。或者来自 drc.pdf 的 pg.91:

## Fitting the model with freely varying ED50 values
mecter.free <- drm(rgr ~ dose, pct, data = mecter,
fct = LL.4(), pmodels = list(~1, ~1, ~1, ~factor(pct) - 1))

不幸的是,目前还不清楚 object-1 的含义与对象的含义。更好的方法可能是使用基础 drm() 而没有 LL.#() 的特殊情况

查看

getMeanFunctions()

查看所有可用功能

如果您尝试将某个值固定为某个值,则可以

fct = LL.4(fixed = c(NA,0,1,NA)) 
## effectively becomes the standard LL.2()

## or
fct = LL.4(fixed = c(1,0,NA,NA)) 
## common hill slope = 1; assumes baseline correction hence = 0

部分相关;看到很多drm功能布局: https ://stackoverflow.com/a/39257095

于 2019-11-18T06:42:47.373 回答