抽样技术(第五版)企业案例数据实践题

目录

一、题目 

二、Rstudio代码

 载入外部安装包

导入数据,设置随机数种子

1、srswor函数抽取2000个样本估计企业收入(income)

2、srswor函数估计企业雇佣人数(employees)

3、比例估计——城市"A"的占比

4、选择辅助变量对企业收入进行比估计和回归估计

(1)抽样设计函数 

(2)利用抽样设计函数进行比估计

(3)利用抽样设计函数进行回归估计

5、代码汇总

一、题目 

二、Rstudio代码

 载入外部安装包

library(sampling)
library(grid)
library(survey)
library(readxl)

导入数据,设置随机数种子

data=read_xlsx('D:/sample_survey/qiye.xlsx')
set.seed(618)#设置随机数种子
summary(data) 

1、srswor函数抽取2000个样本估计企业收入(income)

#(1)简单估计:用2000样本估计该省份所有企业收入均值、标准误和置信区间
N=nrow(data)
n=2000
s=srswor(n,N)#srswor函数,不放回简单随机抽样
s#1代表抽中的样本的位置次序,0代表未抽中的样本的位置次序
data.srs=getdata(data,s)#提取抽到样本函数
data.srs#抽取出来的2000个数据位置对应的数据值
income_mean=mean(data.srs$income)
income_mean #收入均值,样本均值是总体均值的无偏估计
income_var=(1-n/N)/n*var(data.srs$income)#总体收入方差
income_sd=sqrt(income_var)
income_sd  #标准误
d1=income_mean-1.96*income_sd;d1 #置信上限
d2=income_mean+1.96*income_sd;d2 #置信下限(估计值,t*se估计)
da=c(data.srs$income)
t.test(da)  #t检验也可以得到置信区间

2、srswor函数估计企业雇佣人数(employees)

#(2)简单估计——该省份的雇员人数总量、标准误、置信区间
employees_total=N*mean(data.srs$employees)
employees_total #估计总量
employees_var=(1-n/N)/n*var(data.srs$employees)*N^2 #估计总体方差
employees_sd=sqrt(employees_var)
employees_sd #标准误
d3=employees_total-1.96*employees_sd;d3 #置信上限
d4=employees_total+1.96*employees_sd;d4 #置信下限

3、比例估计——城市"A"的占比

#(3)比例估计——A city的企业数量占比、标准误、置信区间
A_ratio=sum(data.srs$city=="A")/n #样本占比
A_ratio
A_var=(1-n/N)/(n-1)*A_ratio*(1-A_ratio)
A_std=sqrt(A_var)
A_std #标准误差
d5=A_ratio-1.96*A_std;d5 #置信上限
d6=A_ratio+1.96*A_std;d6 #置信下限
dc=c(data.srs$city=="A")
t.test(dc)

4、选择辅助变量对企业收入进行比估计和回归估计

(1)抽样设计函数 

#(4)选择企业雇佣人数(employees)作为辅助变量进行比估计
pw=rep(N/n,n)#定义样本权重为概率的倒数
pw
fpc=rep(N,n)#fpc变量为“svydisign”函数的参数,此处为总体容量N
fpc #设置一列2000个总体容量的数值。
agsrs=as.data.frame(cbind(data.srs,pw,fpc))#将权重变量和fpc变量加入抽到的样本单元的数据集中
agsrs #最后两列为新加入的两个变量
dsrswor=svydesign(id=~1,weights = ~pw,data=agsrs,fpc=~fpc)
#估计,调用svydesign函数定义该抽样设计及抽样结果.其中,id参数定义群变量,没有使用群变量则用“0”或“1”表示;weights参数定义权重变量;data参数定义抽到的样本单元的数据集;fpc参数定义fpc变量
summary(dsrswor)查看抽样设计及抽样结果。其中Probability是样本单元的入样概率

(2)利用抽样设计函数进行比估计

#比估计
ratio=svyratio(~income,~employees,dsrswor) #调用svyratio函数估计比率,
ratio #第一个参数定义目标变量,第二个参数定义辅助变量,第三个参数定义抽样设计和抽样结果
employees_data=data.frame(employees=mean(data$employees)) 
employees_data #计算辅助变量的总体均值,并将其设为数据框格式
P_ratio=predict(ratio,employees_data$employees)  #调用predict函数,比估计income的均值和标准差
P_ratio #第一个参数定义比率的估计值,第二个参数定义辅助变量的总体均值
d7=P_ratio$total-1.96*P_ratio$se;d7
d8=P_ratio$total+1.96*P_ratio$se;d8

(3)利用抽样设计函数进行回归估计

#回归估计
reg=svyglm(income~employees,design = dsrswor) #估计回归系数
reg
employees_data1=data.frame(employees=mean(data$employees))
employees_data1 #计算辅助变量的总体均值,并将其设为数据框格式
P_reg=predict(reg,newdata=employees_data1,total=N) #回归估计income的均值及标准误差
P_reg=as.data.frame(P_reg);P_reg
d9=P_reg[,1]-1.96*P_reg[,2]; d9#置信上限
d10=P_reg[,1]+1.96*P_reg[,2];d10 #置信下限

5、代码汇总

library(sampling)
library(grid)
library(survey)
library(readxl)
data=read_xlsx('D:/sample_survey/qiye.xlsx')
set.seed(618)
summary(data) 

#(1)简单估计:用2000样本估计该省份所有企业收入均值、标准误和置信区间
N=nrow(data)
n=2000
s=srswor(n,N)#srswor函数,不放回简单随机抽样
s#1代表抽中的样本的位置次序,0代表未抽中的样本的位置次序
data.srs=getdata(data,s)#提取抽到样本函数
data.srs#抽取出来的2000个数据位置对应的数据值
income_mean=mean(data.srs$income)
income_mean #收入均值,样本均值是总体均值的无偏估计
income_var=(1-n/N)/n*var(data.srs$income)#总体收入方差
income_sd=sqrt(income_var)
income_sd  #标准误
d1=income_mean-1.96*income_sd;d1 #置信上限
d2=income_mean+1.96*income_sd;d2 #置信下限(估计值,t*se估计)
da=c(data.srs$income)
t.test(da)  #t检验也可以得到置信区间


#(2)简单估计——该省份的雇员人数总量、标准误、置信区间
employees_total=N*mean(data.srs$employees)
employees_total #估计总量
employees_var=(1-n/N)/n*var(data.srs$employees)*N^2 #估计总体方差
employees_sd=sqrt(employees_var)
employees_sd #标准误
d3=employees_total-1.96*employees_sd;d3 #置信上限
d4=employees_total+1.96*employees_sd;d4 #置信下限


#(3)比例估计——A city的企业数量占比、标准误、置信区间
A_ratio=sum(data.srs$city=="A")/n #样本占比
A_ratio
A_var=(1-n/N)/(n-1)*A_ratio*(1-A_ratio)
A_std=sqrt(A_var)
A_std #标准误差
d5=A_ratio-1.96*A_std;d5 #置信上限
d6=A_ratio+1.96*A_std;d6 #置信下限
dc=c(data.srs$city=="A")
t.test(dc)

#(4)选择企业雇佣人数(employees)作为辅助变量进行比估计
pw=rep(N/n,n)#定义样本权重为概率的倒数
pw
fpc=rep(N,n)#fpc变量为“svydisign”函数的参数,此处为总体容量N
fpc #设置一列2000个总体容量的数值。
agsrs=as.data.frame(cbind(data.srs,pw,fpc))#将权重变量和fpc变量加入抽到的样本单元的数据集中
agsrs #最后两列为新加入的两个变量
dsrswor=svydesign(id=~1,weights = ~pw,data=agsrs,fpc=~fpc)
#估计,调用svydesign函数定义该抽样设计及抽样结果.
#其中,id参数定义群变量,没有使用群变量则用“0”或“1”表示;
#weights参数定义权重变量;data参数定义抽到的样本单元的数据集;fpc参数定义fpc变量
summary(dsrswor)
#查看抽样设计及抽样结果。其中Probability是样本单元的入样概率

#比估计
ratio=svyratio(~income,~employees,dsrswor) #调用svyratio函数估计比率,
ratio #第一个参数定义目标变量,第二个参数定义辅助变量,第三个参数定义抽样设计和抽样结果
employees_data=data.frame(employees=mean(data$employees)) 
employees_data #计算辅助变量的总体均值,并将其设为数据框格式
P_ratio=predict(ratio,employees_data$employees)  #调用predict函数,比估计income的均值和标准差
P_ratio #第一个参数定义比率的估计值,第二个参数定义辅助变量的总体均值
d7=P_ratio$total-1.96*P_ratio$se;d7
d8=P_ratio$total+1.96*P_ratio$se;d8

#回归估计
reg=svyglm(income~employees,design = dsrswor) #估计回归系数
reg
employees_data1=data.frame(employees=mean(data$employees))
employees_data1 #计算辅助变量的总体均值,并将其设为数据框格式
P_reg=predict(reg,newdata=employees_data1,total=N) #回归估计income的均值及标准误差
P_reg=as.data.frame(P_reg);P_reg
d9=P_reg[,1]-1.96*P_reg[,2]; d9#置信上限
d10=P_reg[,1]+1.96*P_reg[,2];d10 #置信下限

你可能感兴趣的:(r语言,数据分析)