R语言多臂试验 – 我们应该考虑多重性吗?

我们应该担心多重性吗?


事实证明(或许不足为奇)在多臂试验的设定中,某种多样性调整是否合适的问题一直备受争议 。一种观点认为,如果不同的假设代表不同的研究问题,那么不允许进行多重比较是合理的。 

模拟研究


为了进行实证研究,我根据Parmar 等人的假设进行了一项非常小的模拟研究(在R中)。

运行模拟

mu < -  c(0,0)
tausq < -  0

在顶部,这将所有真正的治疗效果设置为零。这使我们能够检查类型1错误。

贝叶斯方法


遵循安德鲁·格尔曼与之前相关的论文,似乎处理前面问题的方法是贝叶斯分析。在这种情况下,每个治疗效果的后验平均值将朝着估计的总体平均治疗效果缩小,取决于真实治疗效果的估计方差和每个估计效果的精确度。

用于仿真


如果有人发现错误,请在评论中告诉我。

nSims < -  1000

#specify真实效果的均值和方差
mu < -  c(-1,-1)
tausq < -  2
#mu < -  c(0,0)
#tausq < -  0

#specify真正治疗之间的相关性rho
rho < -  0
trueCov < - c(tausq,rho * tausq,rho * tausq,tausq),nrow = 2)

#由于共同的控制臂,误差相关性为0.5
errorRho < -  0.5
errorVariance < -  1
errorCov <   matrix(c(errorVariance,errorRho * errorVariance,errorRho * errorVariance,errorVariance),nrow = 2)

sigResult < -  array(0,dim = c(nSims,2))
trueEffects <   array(0,dim = c(nSims,2))
estEffects < -  array(0,dim = c(nSims,2))

for(i in 1:nSims){
  #generate真正的治疗效果
  trueEffects [i,] <   mvrnorm(n = 1,mu = mu,Sigma = trueCov)

  estEffects [i,] < -  trueEffects [i,] + mvrnorm(n = 1,mu = c(0,0),Sigma = errorCov)

  testStat < -  estEffects [i,] /(errorVariance ^ 0.5)
  p_value < -  2 * pnorm(abs(testStat),lower.tail = FALSE)
  sigResult [i,] <   1 *(p_value <0.05)
}


#proportions of trials中找到每个治疗组
colMeans(sigResult)



#beneficial effect与对照相比
#is假设两个治疗组相同(对照组)
bestTrt < -  array(0,dim = c(nSims,1))
bestEstEff < -  array(0,dim = c(nSims,1))
bestEstMinusTrue < -  array(0,dim = c(nSims,1))

for(i in 1:nSims){
  bestTrt [i] < -  which.min(estEffects [i,])
  #find对应的真实效果
  bestTrtTrueEff [i] < -  trueEffects [i,bestTrt [i]]
  bestEstEff [i] < -  estEffects [i,bestTrt [i]]
  ciCov [i] < -  1 *(((bestEstEff [i] -1.96 * errorVariance ^ 0.5)<bestTrtTrueEff [i])&((bestEstEff [i] + 1.96 * errorVariance ^ 0.5)> bestTrtTrueEff [i]))
}





​非常感谢您阅读本文,有任何问题请在下面留言!

点击这里给我发消息

1

1


关于作者

Kaizong Ye是拓端研究室(TRL)的研究员。



 
QQ在线咨询
售前咨询热线
15121130882
售后咨询热线
0571-63341498