试着找出"目标剂量"来自DoseFinding包

时间:2014-09-08 02:18:53

标签: r package

我尝试运行代码以最佳地计算目标剂量和D. 但它总是说我的长度错了。我不明白如何编码“权重” 和三角洲。有人可以帮帮我吗? 这是我的代码:

library(DoseFinding)
doses <- c(0,5, 25, 125, 200)
fmodels <- Mods(linear = NULL, emax = 14,
            doses = doses, placEff=-0.17, maxEff=-1.4)



weights <- rep(1/5, 5)

desTD <- optDesign(fmodels, probs=1, designCrit="TD&Dopt",Delta=0.5)
plot(fmodels, plotTD = TRUE, Delta = 0.2)

当我使用这个例子时,它显示了所有剂量的所有概率:


data(IBScovars)

doses <- c(0, 10, 25, 50, 100, 150)
fmodels <- Mods(linear = NULL, emax = 25, exponential = 85,
            logistic = c(50, 10.8811),
            doses = doses, placEff=0, maxEff=0.4)
plot(fmodels, plotTD = TRUE, Delta = 0.2)
weights <- rep(1/4, 4)
desTD <- optDesign(fmodels, weights, Delta=0.2, designCrit="TD")

Calculated TD - optimal design:
      0      10      25      50     100     150 
0.34960 0.09252 0.00366 0.26760 0.13342 0.15319

但对我来说,只有三剂显示......这是不是意味着 其他剂量不重要?

1 个答案:

答案 0 :(得分:0)

嗯,在帮助页面中,您需要具有与剂量相同的权重数量。模型保留有关所用剂量的信息。你有什么看起来很好,但你也可以做

ds <- attr(fmodels, "doses")
weights <- rep.int(1, length(ds))/length(ds)

fmodel对象中提取信息。

此外,在运行optDesign功能时,我对您指定的probsdsignCrit参数有疑问。 probs长度应与fmodels的长度相对应。内部计算这样做可以找到总长度

Reduce("+",lapply(fmodels, function(x) {
    if (is.vector(x)) 
        return(1)
    if (is.matrix(x)) 
        return(nrow(x))
}))
# [1] 2

所以应该有两个概率。另外我认为designCrit="TD&Dopt"应为designCrit="Dopt&TD",因此以下内容似乎无错误地运行

desTD <- optDesign(fmodels, probs=c(.5,.5), 
    weights=weights, designCrit="Dopt&TD",Delta=0.5)

目前还不清楚您对Delta的确切问题。根据帮助页面,这只是您估计的效果大小。