R语言多臂试验-我们应该考虑多重性吗?
我们应该担心多重性吗?
事实证明(或许不足为奇)在多臂试验的设定中,某种多样性调整是否合适的问题一直备受争议 。一种观点认为,如果不同的假设代表不同的研究问题,那么不允许进行多重比较是合理的。
模拟研究
为了进行实证研究,我根据Parmar等人的假设进行了一项非常小的模拟研究(在R中)。
运行模拟
< - c(0,0)\ntausq < - 0"}"> mu < - c(0,0) tausq < - 0
need-to-insert-img
在顶部,这将所有真正的治疗效果设置为零。这使我们能够检查类型1错误。
贝叶斯方法
遵循安德鲁·格尔曼与之前相关的论文,似乎处理前面问题的方法是贝叶斯分析。在这种情况下,每个治疗效果的后验平均值将朝着估计的总体平均治疗效果缩小,取决于真实治疗效果的估计方差和每个估计效果的精确度。
用于仿真
如果有人发现错误,请在评论中告诉我。
< - 1000\n\n#specify真实效果的均值和方差\nmu < - c(-1,-1)\ntausq < - 2\n#mu < - c(0,0)\n#tausq < - 0\n\n#specify真正治疗之间的相关性rho\nrho < - 0\ntrueCov < - c(tausq,rho * tausq,rho * tausq,tausq),nrow = 2)\n\n#由于共同的控制臂,误差相关性为0.5\nerrorRho < - 0.5\nerrorVariance < - 1\nerrorCov < matrix(c(errorVariance,errorRho * errorVariance,errorRho * errorVariance,errorVariance),nrow = 2)\n\nsigResult < - array(0,dim = c(nSims,2))\ntrueEffects < array(0,dim = c(nSims,2))\nestEffects < - array(0,dim = c(nSims,2))\n\nfor(i in 1:nSims){\n #generate真正的治疗效果\n trueEffects [i,] < mvrnorm(n = 1,mu = mu,Sigma = trueCov)\n\n estEffects [i,] < - trueEffects [i,] + mvrnorm(n = 1,mu = c(0,0),Sigma = errorCov)\n\n testStat < - estEffects [i,] /(errorVariance ^ 0.5)\n p_value < - 2 * pnorm(abs(testStat),lower.tail = FALSE)\n sigResult [i,] < 1 *(p_value <0.05)\n}\n\n\n#proportions of trials中找到每个治疗组\ncolMeans(sigResult)\n\n\n\n#beneficial effect与对照相比\n#is假设两个治疗组相同(对照组)\nbestTrt < - array(0,dim = c(nSims,1))\nbestEstEff < - array(0,dim = c(nSims,1))\nbestEstMinusTrue < - array(0,dim = c(nSims,1))\n\nfor(i in 1:nSims){\n bestTrt [i] < - which.min(estEffects [i,])\n #find对应的真实效果\n bestTrtTrueEff [i] < - trueEffects [i,bestTrt [i]]\n bestEstEff [i] < - estEffects [i,bestTrt [i]]\n ciCov [i] < - 1 *(((bestEstEff [i] -1.96 * errorVariance ^ 0.5) bestTrtTrueEff [i]))\n}\n\n\n"}"> 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])) }
need-to-insert-img