Это мой код для запуска клинических испытаний, чтобы показать вероятность успешного испытания. Моя проблема заключается в том, что мне нужно показать, что, введя второй набор образцов (n.2), сколько образцов требуется для получения значения выше порога 90%. Любая помощь, пожалуйста, я знаю, что мне нужно закодировать код, который у меня есть, но у меня проблемы с этим.R-код клинических испытаний
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
Это не совсем понятно, о чем вы просите здесь. Кроме того, это немного напоминает домашнюю проблему. – Thomas
Мне нужно создать цикл, который продолжает запускать программу, пока я не получу достаточно высокое значение образца n.2, которое превышает пороговое значение, а затем закончит программу. Кроме того, это не вопрос домашней работы, его часть проекта, над которым я работаю. Я попытался использовать команду повтора, но безрезультатно. Мне нужно запустить цикл, но увеличивать его на единицу каждый раз, когда он не удовлетворяет условию. –
Полезно знать. Не совсем понятно, зачем вам нужен цикл, потому что ваш цикл просто хранит информацию, на самом деле это не динамически не вычисляет ничего. Если у вас есть входы и формула, то функция может быть просто формулой, и вы можете использовать что-то из семейства функций '* apply' для генерации выходов на ряде входов. Если ваша цель состоит в том, чтобы вместо этого выполнить что-то, что действительно выполняется до тех пор, пока не будет достигнут порог, вы можете попробовать цикл while, или продолжить использование 'for', но включить оператор' break'. – Thomas