如何解决创建循环以运行统计测试 数据
我需要运行统计测试并计算 p_hat_6,使用 N = 10 个样本,每个样本大小为 n = 10,来自 X ∼ uniform(0,14)。这是我在 mu=6 处计算 p_hat 的原始循环:
pvalue <- rep(0,10)
reject <- 0
alpha <- 0.05
N <- 10
for (n in seq_along(pvalue)){
pvalue[n] <- wilcox.test(runif(10,14),mu=6)$p.value
reject[n] <- ifelse(pvalue[n] > alpha,1)
}
p_hat_6 <- (sum(reject))/N
p_hat_6
使用相同的 N 和 n,我需要通过以下更改再重复 5 次:
(1) Data from X ∼ uniform(0,16) and compute p_hat_7 (mu=7)
(2) Data from X ∼ uniform(0,18) and compute p_hat_8 (mu=8)
(3) Data from X ∼ uniform(0,20) and compute p_hat_9 (mu=9)
(4) Data from X ∼ uniform(0,22) and compute p_hat_10 (mu=10)
(5) Data from X ∼ uniform(0,24) and compute p_hat_11 (mu=11)
解决方法
我们可以创建一个函数
move_forward
并在
fun1 <- function(N,pvalue,reject,max_val,mu_val) {
for (n in seq_along(pvalue)){
pvalue[n] <- wilcox.test(runif(N,max_val),mu=mu_val)$p.value
reject[n] <- ifelse(pvalue[n] > alpha,1)
}
p_hat_6 <- (sum(reject))/N
return(p_hat_6)
}
Map
-输出
Map(fun1,max_val = seq(14,24,by = 2),mu_val = 6:11,MoreArgs = list(N = 10,pvalue = pvalue,reject = reject))
或者在函数周围创建一个外循环
[[1]]
[1] 0
[[2]]
[1] 0.2
[[3]]
[1] 0.2
[[4]]
[1] 0
[[5]]
[1] 0.1
[[6]]
[1] 0.2
数据
mu_val <- 6:11
max_val <- seq(14,by = 2)
out <- numeric(length(mu_val))
for(i in seq_along(mu_val)) {
out[i] <- fun1(N = 10,reject = reject,max_val = max_val[i],mu_val = mu_val[i])
}
out
[1] 0.1 0.1 0.1 0.1 0.3 0.0
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。