抱歉,这是一个愚蠢的问题,但是我在弄清楚如何在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”是什么意思,或者列出一个因子是什么意思,该顺序在括号内的意义是什么?
答案 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