为什么在底部的while循环中我需要放入整个s变量而不是只输入s i。即为什么n变量需要在循环中显示
rm(list=ls())
nm <- c(585,578,568)
nf <- c(632,510,589)
ym <- c(543,522,510)
yf <- c(560,466,536)
y.barm <- ym/nm
y.barf <- yf/nf
#a)
s <- sqrt(y.barm[2]*(1-y.barm[2])/nm[2] + y.barm[3]*(1-y.barm[3])/nm[3])
y.barm[2]-y.barm[3]+qnorm(0.005)*s
y.barm[2]-y.barm[3]-qnorm(0.005)*s
#Så konfindensintervallet er givet ved (-0.04,0.05)
#b)
s2 <- sqrt(y.barm[2]*(1-y.barm[2])/nm[2] + y.barf[2]*(1-y.barf[2])/nm[2])
y.barm[2]-y.barf[2]+qnorm(0.005)*s2
y.barm[2]-y.barf[2]-qnorm(0.005)*s2
#Så konfindensintervallet er (-0.054,0.033)
#Opg. 8.107
p2 <- ym[2]/nm[2]
p3 <- ym[3]/nm[2]
n <- 522
s <- sqrt((p2*(1-p2) + p3*(1-p3))/n)
x <- -qnorm(0.025)*s #(0.015 på hver side. Derfor skal der ikke ganges med 2)
while(x > 0.031){
n <- n + 1
x <- -qnorm(0.025)*sqrt((p2*(1-p2) + p3*(1-p3))/n) #DOESN'T WORK WHEN I TYPE IN THE s VARIABLE. I NEED TO WRITE OUT THE WHOLE THING. HOW COME??
}
n
答案 0 :(得分:1)
s
是一个固定值,用于保留在n
循环中开始更改while
之前分配的值。要获得动态值,您应该使用函数来获取标准错误并在循环中使用它,例如此组合
s_fun <- function(p1, p2, p3, n){
sqrt((p2*(1-p2) + p3*(1-p3))/n)
}
while(x > 0.031){
n <- n + 1
x <- -qnorm(0.025) * s_fun(p1, p2, p3, n)
}