什么是drc包中的pmodels

时间:2018-12-09 05:16:34

标签: drc

抱歉,这是一个愚蠢的问题,但是我在弄清楚如何在drc软件包中使用pmodel时遇到了麻烦。我在网上到处搜索,我所能找到的就是定义,即:“一个数据列,其中包含许多列,因为非线性函数中有参数。或者一个包含非线性函数中每个参数的公式的列表”。网上有例子,但我没有代表。例如,对于命令:

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”是什么意思,或者列出一个因子是什么意思,该顺序在括号内的意义是什么?

1 个答案:

答案 0 :(得分:0)

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

有两种资源可供drc参考: a)作家发表了有关drc的文章。参见正文和补充说明(在此示例中为S3)DOI:10.1371 / journal.pone.0146021 b)有关pmodel的信息,请参见drc.pdf和ctrl + f,以检查其各种用途。

data.frame vs. 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")

就像在第10页的drc.pdf中所做的那样,您会看到它设置了一个公共/共享的底部和顶部。

查看他们的补充文章的第9页,它表明对于LL.2,两参数对数拟合具有预设的top = 1和bottom = 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第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))

不幸的是,还不清楚对象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