【发布时间】:2013-06-07 13:22:37
【问题描述】:
这是我运行临床试验的代码,以显示试验成功的可能性。我的问题是我需要通过引入第二组样本(n.2)来证明,需要多少样本才能产生高于 90% 阈值的值。请提供任何帮助,我知道我需要循环我拥有的代码,但在这样做时遇到了麻烦。
calc.quant = function( n, X.1, a, b, n.2, nsim, thr, p1=0.025, p2=0.975 )
{
a.star = a + n
b.star = b + n - X.1
theta = rbeta( nsim, a.star, b.star
X.2 = rbinom( nsim, n.2, theta )
theta.p1p2 = matrix( 0, nrow=nsim, ncol=2 )
for( j in 1:nsim ) {
theta.p1p2[j,] = qbeta( c( p1, p2 ), a.star + X.2[j], b.star + n.2 - X.2[j] )
}
return( theta.p1p2 )
}
n = 117
X.1 = 110
a = 1
b = 1
n.2 = 50
nsim = 1000
thr = .90
res = calc.quant( n, X.1, a, b, n.2, nsim, thr )
sum( res[,1] > thr ) / nsim
【问题讨论】:
-
不清楚你在这里要求什么。此外,这读起来有点像家庭作业问题。
-
我需要创建一个循环,让程序一直运行,直到获得足够高的 n.2 样本值超过阈值,然后结束程序。这也不是一个家庭作业问题,它是我正在从事的项目的一部分。我曾尝试使用重复命令,但无济于事。我需要运行循环,但每次不满足条件时将其加一。
-
很高兴知道。但是,还不清楚为什么需要循环,因为循环只是存储信息,实际上并没有动态计算任何东西。如果您有输入和公式,则该函数可以只是公式,您可以使用
*apply系列函数中的某些内容在一系列输入上生成输出。如果您的目标是做一些实际运行直到达到阈值的事情,您可以尝试while循环或继续使用for但包含break语句。 -
感谢您的回复,已经尝试了“while”但仍然没有快乐,无论如何感谢您的帮助。
-
我刚刚用我描述的两种基本策略添加了一个(不完整的)答案。他们中的任何一个似乎都是你想要的吗?