楼主: zjzjxtm
15457 9

[有偿编程] 求大神用R语言写一个模拟分层抽样的过程。要求如帖。 [推广有奖]

  • 0关注
  • 1粉丝

已卖:1份资源

初中生

90%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
184 点
帖子
21
精华
0
在线时间
13 小时
注册时间
2012-9-13
最后登录
2016-5-31

楼主
zjzjxtm 发表于 2012-11-7 18:21:47 |AI写论文
100论坛币

实验名称:分层抽样

目的:

    1.编写R程序解决分层抽样中的统计问题;

    2.比较分层抽样简单估计与简单随机抽样简单估计的效果。

要求: 设计抽样方法,求参数估计.

  1.设计分层随机抽样;

  2.求参数的简单随机抽样简单估计;

  3.求参数的分层抽样简单估计;

  4.比较上述两种估计方法的效果。

最好模拟下不同层权的情况。

最佳答案

zjzjxhz 查看完整内容

#建立一个数据集T,从T中随机抽取数字作为每层的个体总数 #建立四个层,每层抽取n个样本(本次方案中去n=20) #假定第1层为均值11,方差为1的正态分布 #假定第2层为均值12,方差为2的正态分布 #假定第3层为均值13,方差为3的正态分布 #假定第4层为均值14,方差为4的正态分布 T
关键词:分层抽样 R语言 随机抽样 抽样方法 参数估计 语言

本帖被以下文库推荐

沙发
zjzjxhz 发表于 2012-11-7 18:21:48
#建立一个数据集T,从T中随机抽取数字作为每层的个体总数
#建立四个层,每层抽取n个样本(本次方案中去n=20)
#假定第1层为均值11,方差为1的正态分布
#假定第2层为均值12,方差为2的正态分布
#假定第3层为均值13,方差为3的正态分布
#假定第4层为均值14,方差为4的正态分布
T<-c(517,814,925,1728,405,512,139,126)
#确定每层样本总量
N1<-sample(T,1)
N2<-sample(T,1)
N3<-sample(T,1)
N4<-sample(T,1)
#确定层权
N<-N1+N2+N3+N4
w1<-N1/N
w2<-N2/N
w3<-N3/N
w4<-N4/N
#确定每层样本数量
n<-20
#开始抽样
y1<-sample(rnorm(N1,11,1),n)
y2<-sample(rnorm(N2,12,2),n)
y3<-sample(rnorm(N3,13,3),n)
y4<-sample(rnorm(N4,14,4),n)
#计算每层平均值
y1bar<-mean(y1)
y2bar<-mean(y2)
y3bar<-mean(y3)
y4bar<-mean(y4)
#——————参数的分层抽样估计
Y1bar<-w1*y1bar+w2*y2bar+w3*y3bar+w4*y4bar;Y1bar
a<-N*N
varY1<-(N1*(N1-n)*var(y1)/n+N2*(N2-n)*var(y2)/n+N3*(N3-n)*var(y3)/n+N4*(N4-n)*var(y4)/n)/a;varY1
#——————参数的简单随机抽样估计
Y2<-c(y1,y2,y3,y4)
f<-(4*n)/N
Y2bar<-mean(Y2);Y2bar
varY2<-(1-f)*var(Y2)/(4*n);varY2

藤椅
shaoshoutian 发表于 2012-11-7 21:30:28
好问题啊

板凳
zjzjxtm 发表于 2012-11-18 18:28:00
明天我把自己的程序贴出来吧

报纸
dxystata 发表于 2012-11-19 12:16:53
zjzjxtm 发表于 2012-11-18 18:28
明天我把自己的程序贴出来吧
期待中!

地板
zjzjxtm 发表于 2012-11-20 17:32:51
#建立一个数据集T,从T中随机抽取数字作为每层的个体总数
#建立四个层,每层抽取n个样本(本次方案中去n=20)
#假定第1层为均值11,方差为1的正态分布
#假定第2层为均值12,方差为2的正态分布
#假定第3层为均值13,方差为3的正态分布
#假定第4层为均值14,方差为4的正态分布
T<-c(517,814,925,1728,405,512,139,126)
#确定每层样本总量
N1<-sample(T,1)
N2<-sample(T,1)
N3<-sample(T,1)
N4<-sample(T,1)
#确定层权
N<-N1+N2+N3+N4
w1<-N1/N
w2<-N2/N
w3<-N3/N
w4<-N4/N
#确定每层样本数量
n<-20
#开始抽样
y1<-sample(rnorm(N1,11,1),n)
y2<-sample(rnorm(N2,12,2),n)
y3<-sample(rnorm(N3,13,3),n)
y4<-sample(rnorm(N4,14,4),n)
#计算每层平均值
y1bar<-mean(y1)
y2bar<-mean(y2)
y3bar<-mean(y3)
y4bar<-mean(y4)
#——————参数的分层抽样估计
Y1bar<-w1*y1bar+w2*y2bar+w3*y3bar+w4*y4bar;Y1bar
a<-N*N
varY1<-(N1*(N1-n)*var(y1)/n+N2*(N2-n)*var(y2)/n+N3*(N3-n)*var(y3)/n+N4*(N4-n)*var(y4)/n)/a;varY1
#——————参数的简单随机抽样估计
Y2<-c(y1,y2,y3,y4)
f<-(4*n)/N
Y2bar<-mean(Y2);Y2bar
varY2<-(1-f)*var(Y2)/(4*n);varY2

7
jmpamao 发表于 2012-11-21 03:22:35
#分层简单随机抽样
#总体均值、总体总值及总体比率的各种总体参数的估计
#商务与统计 by 安德森 -第22章,例题见附件 第8页
#某大学商学院想对今年的毕业生进行一次调查,目的是了解起始年薪
#5个专业:会计、金融、信息系统、市场营销、经营管理
#总毕业生人数N=1500,会计N1=500,金融N2=350,信息N3=200,市场N4=300,经营N5=150
#抽取人数n=180,会计n1=45,金融n2=40,信息n3=30,市场n4=35,经营n5=30
######模拟年收入 均值和标准差由例题知
#会计 acc=rnorm(500,35000,2000)
#金融 eco=rnorm(350,33500,1700)
#信息 inf=rnorm(200,41500,2300)
#市场 mar=rnorm(300,32000,1600)
#经营 man=rnorm(150,36000,2250)
#起薪不低于36000的总体比率
options(digits=3)
N <- 1500
N.major <- data.frame(N1=500,N2=350,N3=200,N4=300,N5=150)
n <-180
n.major <-data.frame(n1=45,n2=40,n3=30,n4=35,n5=30)

#抽样
acc=sample(rnorm(500,35000,2000),45)
eco=sample(rnorm(350,33500,1700),40)
inf=sample(rnorm(200,41500,2300),30)
mar=sample(rnorm(300,32000,1600),35)
man=sample(rnorm(150,36000,2250),30)

#x: 总体均值的点估计
x <-sum(c(mean(acc),mean(eco),mean(inf),mean(mar),mean(man))*N.major[1:5]/N);x
#s: 估计值得标准误差
s.s <-c((sd(acc))^2/n.major[1],
        (sd(eco))^2/n.major[2],
        (sd(inf))^2/n.major[3],
        (sd(mar))^2/n.major[4],
        (sd(man))^2/n.major[5])
s <-sqrt(sum(s.s*N.major[1:5]*(N.major[1:5]-n.major[1:5])))/N
#总体均值95%的置信区间      
c(x-qnorm(.975)*s,x+qnorm(.975)*s)         
         
#Nx 总体总值的点估计
X <-N*x;X
#S 总体标准误差:Ns
S <- N*s;S
#总体总量的95%置信区间
c(X-qnorm(.975)*S,X+qnorm(.975)*S)     
         
         
#起薪不低于36000的比率
#各专业年薪不低于36000的数量
acc.q <- length(acc[acc >=36000])
eco.q <- length(eco[eco >=36000])
inf.q <- length(inf[inf >=36000])
mar.q <- length(mar[mar >=36000])
man.q <- length(man[man >=36000])

#总体比率的点估计:P
P <- sum(N.major[1:5]/N*c(acc.q,eco.q,inf.q,mar.q,man.q)/n.major[1:5]);P

#P的标准误差:s.p

p.p <-c(acc.q/n.major[1]*(1-acc.q/n.major[1])/(n.major[1]-1),
          eco.q/n.major[2]*(1-eco.q/n.major[2])/(n.major[1]-1),
          inf.q/n.major[3]*(1-inf.q/n.major[3])/(n.major[3]-1),
          mar.q/n.major[4]*(1-mar.q/n.major[4])/(n.major[4]-1),
          man.q/n.major[5]*(1-man.q/n.major[5])/(n.major[5]-1))
s.p <-sqrt(sum(N.major[1:5]*(N.major[1:5]-n.major[1:5])*p.p))/N;s.p

#年薪不低于36000的比例 95%的置信区间为
c(P-qnorm(0.975)*s.p,P+qnorm(0.975)*s.p)

8
jmpamao 发表于 2012-11-21 22:18:14
jmpamao 发表于 2012-11-21 03:22
#分层简单随机抽样
#总体均值、总体总值及总体比率的各种总体参数的估计
#商务与统计 by 安德森 -第22章, ...
qoiqpwqr
帮忙看下程序,向量化是否ok?    谢谢
总体比率估计.jpg

总体均值1.jpg


#分层简单随机抽样
#总体均值、总体总值及总体比率的各种总体参数的估计
#商务与统计 by 安德森 -第22章,例题见附件 第8页
#某大学商学院想对今年的毕业生进行一次调查,目的是了解起始年薪
#5个专业:会计、金融、信息系统、市场营销、经营管理
#总毕业生人数N=1500,会计N1=500,金融N2=350,信息N3=200,市场N4=300,经营N5=150
#抽取人数n=180,会计n1=45,金融n2=40,信息n3=30,市场n4=35,经营n5=30
######模拟年收入 均值和标准差由例题知
#会计 acc=rnorm(500,35000,2000)
#金融 eco=rnorm(350,33500,1700)
#信息 inf=rnorm(200,41500,2300)
#市场 mar=rnorm(300,32000,1600)
#经营 man=rnorm(150,36000,2250)
#起薪不低于36000的总体比率
options(digits=4)
N <- 1500
N.major <- data.frame(N1=500,N2=350,N3=200,N4=300,N5=150)
n <-180
n.major <-data.frame(n1=45,n2=40,n3=30,n4=35,n5=30)

#抽样
acc=sample(rnorm(500,35000,2000),45)
eco=sample(rnorm(350,33500,1700),40)
inf=sample(rnorm(200,41500,2300),30)
mar=sample(rnorm(300,32000,1600),35)
man=sample(rnorm(150,36000,2250),30)

#x: 总体均值的点估计
x <-sum(c(mean(acc),mean(eco),mean(inf),mean(mar),mean(man))*N.major/N);x
#s: 估计值得标准误差

s.s <-c(var(acc),var(eco),var(inf),var(mar),var(man))/n.major
s <-sqrt(sum(s.s*N.major*(N.major-n.major)))/N

#总体均值95%的置信区间      
c(x-qnorm(.975)*s,x+qnorm(.975)*s)         

#Nx 总体总值的点估计
X <-N*x;X
#S 总体标准误差:Ns
S <- N*s;S
#总体总量的95%置信区间
c(X-qnorm(.975)*S,X+qnorm(.975)*S)     


#起薪不低于36000的比率
#各专业年薪不低于36000的数量
acc.q <- length(acc[acc >=36000])
eco.q <- length(eco[eco >=36000])
inf.q <- length(inf[inf >=36000])
mar.q <- length(mar[mar >=36000])
man.q <- length(man[man >=36000])

#总体比率的点估计:P
P <- sum(N.major/N*c(acc.q,eco.q,inf.q,mar.q,man.q)/n.major);P
#P的标准误差:s.p
p.p <-c(acc.q,eco.q,inf.q,mar.q,man.q)/n.major*(1-c(acc.q,eco.q,inf.q,mar.q,man.q)/n.major)/(n.major-1)
s.p <-sqrt(sum(N.major*(N.major-n.major)*p.p))/N;s.p

#年薪不低于36000的比例 95%的置信区间为
c(P-qnorm(0.975)*s.p,P+qnorm(0.975)*s.p)

9
zjzjxhz 发表于 2012-12-8 11:42:43
这个问题该怎么说呢?

10
goldyuaa 发表于 2013-4-15 12:49:17
有所启发,不知道有没有什么包好用点

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-31 23:46