一、题目
二、Rstudio代码
载入外部安装包
导入数据,设置随机数种子
1、srswor函数抽取2000个样本估计企业收入(income)
2、srswor函数估计企业雇佣人数(employees)
3、比例估计——城市"A"的占比
4、选择辅助变量对企业收入进行比估计和回归估计
(1)抽样设计函数
(2)利用抽样设计函数进行比估计
(3)利用抽样设计函数进行回归估计
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 #置信下限
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 #置信下限