繁体   English   中英

在 R 中创建 m 个大小为 n 正态分布的样本

[英]Create m samples with size n Normal Distribution in R

我必须创建 m=1450 个大小为 n 的样本,其中 n{100,200,300...5000} 的 X 总体的正态分布为均值 9,22,方差 = 1.62^2。 对于每个样本,我需要在方差未知(显着性水平 = 0.98)的假设下为平均值创建置信区间。 然后对于每个 ni 必须计算置信区间的幅度平均值。

对于第一部分(创建 m 个大小为 n 的样本),我尝试了以下操作,但没有成功:

sizes <- seq(100,5000,by=100)
m<-1450
normal=for (i in sizes){
replicate(1450, rnorm(i,9.22,sqrt(1.62^2), simplify=FALSE)
}

对于置信区间,我可以使用以下内容吗?:

get.conf.int = function(x) t.test(x, conf.level = 0.98)$conf.int
conf.int = apply(normal, 2, get.conf.int)

谢谢

在 R 术语中分配 for 循环没有意义,相反,您可以使用lapply整个 output 作为列表返回,或者sapply如果可能,它将尝试转换为数组。 这里返回一个列表更有意义。 注意下面我使用 lambda function \(x) = function(x)这是在 R 4.1.0 中引入的

m <- 1450
sizes <- 1:50
size_factor <- 100
alpha <- 0.02
# Simulate outcomes
sims <- lapply(sizes * size_factor, \(x){
  replicate(m, rnorm(x, 9.22, 1.62))
})
# Find 1 - alpha confidence intervals
lapply(sims, \(x){
  # Find simulated means
  mus <- colMeans(x)
  # Find S.E of the simulated means (assuming same variance)
  s <- sd(mus)
  # Make confidence interval
  mean(mus) + c(-1, 1) * s * qnorm(1 - alpha/2)
})

这种策略应该可以解决问题(简化示例以更好地显示)。

sizes <- seq(5, 7, by=1)
samples <- lapply(sizes, \(n) replicate(10, rnorm(n, 9.22, sqrt(1.62^2)), 
                                        simplify=FALSE)) |>
  setNames(paste0('N', sizes))

结果

str(samples)
# List of 3
# $ N5:List of 10
# ..$ : num [1:5] 7.6 8.12 9.14 8.59 7.82
# ..$ : num [1:5] 9.76 7.07 8.02 9.14 9.53
# ..$ : num [1:5] 11.95 9.42 10.03 6.64 7.56
# ..$ : num [1:5] 8.03 7.98 10.19 11.83 7.42
# ..$ : num [1:5] 8.95 8.07 11.49 11.58 9.19
# ..$ : num [1:5] 8.26 8.7 11.18 6.11 7.67
# ..$ : num [1:5] 13.4 8.9 10.21 10.16 5.88
# ..$ : num [1:5] 10.75 8.47 4.86 9.44 8.05
# ..$ : num [1:5] 8.45 7.03 7.92 7.85 8.01
# ..$ : num [1:5] 10.93 10.33 10.34 8.18 6.62
# $ N6:List of 10
# ..$ : num [1:6] 7.52 9.3 8.18 7.14 8.86 ...
# ..$ : num [1:6] 6.92 11.06 7.51 8.98 9.37 ...
# ..$ : num [1:6] 10.28 10.14 7.43 11.91 11.92 ...
# ..$ : num [1:6] 9.5 8.62 9.62 7.71 9.73 ...
# ..$ : num [1:6] 10.12 10.05 10.8 9.38 7.75 ...
# ..$ : num [1:6] 10.07 9.97 10.58 8.52 9.67 ...
# ..$ : num [1:6] 5 8.59 9.74 8.86 8.05 ...
# ..$ : num [1:6] 10.04 9.8 10.33 8.36 6.83 ...
# ..$ : num [1:6] 8.37 6.94 10.02 8.78 8.85 ...
# ..$ : num [1:6] 11.52 9.14 9.96 10.61 10.54 ...
# $ N7:List of 10
# ..$ : num [1:7] 5.61 12.26 9 8.73 9.86 ...
# ..$ : num [1:7] 12.36 6.24 9.42 11.76 8.12 ...
# ..$ : num [1:7] 7.23 9.22 9.53 8.95 10.08 ...
# ..$ : num [1:7] 7.96 9.21 7.32 10.54 10.66 ...
# ..$ : num [1:7] 8.14 11.38 7.75 7.98 9.88 ...
# ..$ : num [1:7] 11.81 9.53 10.21 8.02 9.79 ...
# ..$ : num [1:7] 10.59 9.15 9.96 9.7 8.63 ...
# ..$ : num [1:7] 6.54 9.06 9.44 11.61 11.63 ...
# ..$ : num [1:7] 9.87 9.46 9.52 7.65 9.54 ...
# ..$ : num [1:7] 9.3 9.32 7.09 9.25 12.52 ...

笔记:

>  R.version.string
[1] "R version 4.1.2 (2021-11-01)"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM