3.4分层抽样法

在这里插入图片描述在这里插入图片描述

> rm(list = ls())
> set.seed(1)
> n <- 1000
> U <- runif(n)
> h <- function(U){exp(-U)/(1+U^2)}
> theta.e <- mean(h(U))  #积分估计值
> sigma2.e <- sum((h(U)-theta.e)^2)/(n*(n-1))  #积分估计量方差
> theta.e
[1] 0.5251122
> sigma2.e
[1] 5.929583e-05
采用分层等比例抽样方法,模拟量n = 1000,分四层,即k = 4,按照等比例方式,传媒曾抽取样本250个,每层的概率Pi = 0.25.这意味着分层变量Y的分布为:

在这里插入图片描述

> k <- 4  #层数
> p <- 1/k  #每层概率
> ni <- n/k  #每层抽取样本量
> theta.i <- c()  #每层样本均值
> sigma2.i <- c()  #每层样本方差
> for(j in 1:k){
+   U <- (j-1)/k + runif(ni)/k  # 产生第j层的ni = 250个均匀分布随机数
+   theta.i[j] <- mean(h(U))  #计算第j层样本均值
+   sigma2.i[j] <- sum((h(U) - theta.i[j])^2)/(ni - 1)  #计算第j层样本方差
+ }
> theta.ss <- sum(theta.i * p)  #分层抽样估计值
> sigma2.ss <- sum(sigma2.i * p)/n  #分层抽样估计量方差
> theta.ss
[1] 0.5272925
> sigma2.ss
[1] 4.043758e-06
> (sigma2.e-sigma2.ss)/sigma2.e
[1] 0.9318037

在这里插入图片描述
在这里插入图片描述

> n <- 1000
> h <- function(U){exp(U)}
> k <- 4  #层数
> p <- 1/k  #每层概率
> nk <- c(165,212,273,350)  #每层抽取样本量
> theta.i <- c()  #每层样本均值
> sigma2.i <- c()  #每层样本方差
> for(j in 1:k){
+   U <- (j-1)/k + runif(nk[j])/k  #产生第j层的ni个均匀分布随机数
+   theta.i[j] <- mean(h(U))  #计算第j层样本均值
+   sigma2.i[j] <- sum((h(U) - theta.i[j])^2)/(nk[j]-1)  #计算第j层样本方差
+ }
> theta.ss <- sum(theta.i * p)  #分层抽样估计值
> sigma2.ss <- sum(sqrt(sigma2.i) * p)^2/n  #分层抽样估计量方差
> theta.ss
[1] 1.714351
> sigma2.ss
[1] 1.616866e-05
> 
> set.seed(1)
> U <- runif(n)
> theta.e <- mean(h(U))  #积分估计值
> sigma2.e <- sum((h(U) - theta.e)^2)/(n*(n-1))  #积分估计量方差
> theta.e
[1] 1.717807
> sigma2.e
[1] 0.0002441946
> (sigma2.e - sigma2.ss)/sigma2.e  #方差缩减率
[1] 0.9337878
> alpha <- 0.05
> CLL.e <- theta.e - qnorm(1 - alpha/2) * sqrt(sigma2.e)  #一般方法置信下限
> CUL.e <- theta.e + qnorm(1 - alpha/2) * sqrt(sigma2.e)  #一般方法置信上线
> CLL.ss <- theta.ss - qnorm(1 - alpha/2) * sqrt(sigma2.ss)  #分层抽样法置信下限
> CUL.ss <- theta.ss + qnorm(1 - alpha/2) * sqrt(sigma2.ss)  #分层抽样法置信上限
> UL <- CUL.e - CLL.e  #一般方法置信区间宽度
> UL.ss <- CUL.ss - CLL.ss  #条件期望法置信区间宽度
> Re <- data.frame('置信下限' = c(CLL.e,CLL.ss),'置信上限' = c(CUL.e,CUL.ss),'区间宽度' = c(UL,UL.ss))
> rownames(Re) = c('一般方法','分层抽样法')
> Re
           置信下限 置信上限   区间宽度
一般方法   1.687179 1.748435 0.06125564
分层抽样法 1.706470 1.722232 0.01576213

在这里插入图片描述

转载自 https://blog.csdn.net/weixin_46319319/article/details/106534373