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

时间:2022-07-22
本文章向大家介绍R语言多臂试验 - 我们应该考虑多重性吗?,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

原文链接:http://tecdat.cn/?p=6408

我们应该担心多重性吗?

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

模拟研究

为了进行实证研究,我根据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]))
}