R语言从正态分布抽样、用自定义估计器计算均值并循环执行的方法
R语言实现自定义估计量模拟的方法
注意事项
- R内置正态抽样函数
rnorm()的第三个入参为标准差,题目要求的N(4,10)是均值为4、方差为10的正态分布,因此调用时需要传入标准差sqrt(10) - 本次抽样样本量固定为20,自定义估计量的分母为
20-4=16,计算时直接使用即可
显式循环实现代码
# 1. 定义模拟参数 n <- 20 # 单次抽样的样本量 pop_mean <- 4 # 总体正态分布的均值 pop_var <- 10 # 总体正态分布的方差 k <- 5000 # 模拟重复的次数,可按需修改 # 2. 初始化存储结果的k行1列矩阵 result_mat <- matrix(NA, nrow = k, ncol = 1) colnames(result_mat) <- "Yhat估计值" # 自定义列名提升可读性 # 3. 循环执行k次抽样与估计 for (i in 1:k) { # 抽取20个服从N(4,10)的观测值 sample_y <- rnorm(n, mean = pop_mean, sd = sqrt(pop_var)) # 计算自定义估计量Yhat Yhat <- sum(sample_y) / (n - 4) # 将结果写入对应位置 result_mat[i, 1] <- Yhat } # 可选:查看前6条结果验证正确性 head(result_mat)
高效向量化实现(无需显式循环)
如果k的数值很大,向量化写法的运行效率远高于显式循环:
# 向量化实现等价逻辑,结果格式同样为k行1列的矩阵 result_mat_vec <- matrix( replicate(k, sum(rnorm(20, 4, sqrt(10)))/16), ncol = 1, dimnames = list(NULL, "Yhat估计值") )
内容的提问来源于stack exchange,提问作者jfkfc
相关产品推荐
相关产品推荐

