微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

创建循环以运行统计测试 数据

如何解决创建循环以运行统计测试 数据

我需要运行统计测试并计算 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)

当间隔每次增加2,mu每次增加1时,我如何循环?

解决方法

我们可以创建一个函数

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 举报,一经查实,本站将立刻删除。