分层随机抽样中九个非常实用的R函数
Nine Very Practical R Functions in Stratified Random Sampling
DOI: 10.12677/AAM.2022.111062, PDF, HTML, XML, 下载: 376  浏览: 679  国家自然科学基金支持
作者: 崔 娅*:重庆大学数学与统计学院统计与精算学系,重庆;张应应*#:重庆大学数学与统计学院统计与精算学系,重庆;重庆大学分析数学与应用重庆市重点实验室,重庆
关键词: 分层随机抽样总体均值和总体比例点估计和区间估计样本量的确定及分配R函数Stratified Random Sampling The Population Mean and Population Proportion Point Estimation and Interval Estimation Determination and Distribution of Sample Size R Function
摘要: 分层抽样技术是在实际工作中应用得非常广泛的抽样技术之一。但在文献中,还没有方便地可以用于在分层随机抽样中仅给定基本的样本数据时就能解决总体均值和总体比例的点估计和区间估计问题,计算总体均值时样本量的确定及分配问题,计算总体比例时样本量的确定及分配问题,事后分层抽样下总体均值和总体比例的点估计和区间估计等问题通用的R函数。本文自编了九个通用的R函数:Compute_Y_bar_st()、Compute_Y_bar_prop_from_y_bar_h_s_h_st()、Compute_Y_bar_srs_pst()、Compute_P_st()、Compute_P_from_a_h_st()、Compute_P_srs_pst()、Compute_nh_given_n_Y_bar_st()、Compute_n_nh_Y_bar_st()及Compute_n_nh_P_st(),它们将会为需要使用分层抽样技术以提高估计精度进行实际问题分析的使用者提供极大的方便。
Abstract: Stratified sampling technique is one of the sampling techniques widely used in practical work. But in the literature, there are no convenient generic R functions to solve the problem of point estimation and interval estimation of population mean and population proportion, the problem of total sample size and each layer sample size when calculating population mean, the problem of total sample size and each layer sample size when calculating population proportion, and the problem of point estimation and interval estimation of population mean and population proportion in post-stratification sampling, in stratified random sampling when only basic sample data are given. We compile nine generic R functions: Compute_Y_bar_st(), Compute_Y_bar_prop_from_y_bar_h_s_h_st(), Compute_Y_bar_srs_pst(), Compute_P_st(), Compute_P_from_a_h_st(), Compute_P_srs_pst(), Compute_nh_given_n_Y_bar_st(), Compute_n_nh_Y_bar_st(), and Compute_n_nh_P_st(), which will provide great convenience for users who need to use stratified sampling technology to improve the estimation accuracy for practical problem analysis.
文章引用:崔娅, 张应应. 分层随机抽样中九个非常实用的R函数[J]. 应用数学进展, 2022, 11(1): 546-565. https://doi.org/10.12677/AAM.2022.111062

1. 引言

分层抽样技术 [1] - [11] 是在实际工作中应用得非常广泛的抽样技术 [12] - [17] 之一。同时R软件 [18] [19] 作为统计学的常用编程工具,它具有完全免费、简洁高效、运行方便等优点。本文选取R软件对分层随机抽样中的总体均值和总体比例的点估计和区间估计问题,计算总体均值时样本量的确定及分配问题,计算总体比例时样本量的确定及分配问题,事后分层抽样下总体均值和总体比例的点估计和区间估计等问题进行了程序实现。针对分层随机抽样,本文自编了九个非常实用的R函数。我们在对这九个R函数进行输入变量及输出变量的解释后给出了相应实际问题的R程序实现。这些内容构成了本文第一作者毕业论文的核心内容 [20]。我们相信,这九个R函数将会为需要使用分层抽样技术以提高估计精度进行实际问题分析的使用者提供极大的方便。

2. 分层随机抽样中九个非常实用的R函数及应用举例

我们推荐分层随机抽样中九个非常实用的R函数。R函数1~3用于解决给定各种样本信息时分层随机抽样下总体均值的点估计和区间估计问题。R函数4~6用于解决给定各种样本信息时分层随机抽样下总体比例的点估计和区间估计问题。R函数7~9用于解决给定各种样本信息时分层随机抽样下总体均值和总体比例的样本量的确定及分配问题。

R函数1:Compute_Y_bar_st()

对于分层随机抽样,给定样本单位的观察值组成的矩阵y_matrix等信息,得到计算总体均值的分层随机抽样的点估计和区间估计的R函数(程序) Compute_Y_bar_st()。由于正文版面的限制,该R函数的内容及输入输出的解释放在了补充材料中(下载链接:https://pan.baidu.com/s/1y0UvE24vfVm8dTVAUYnskg,提取码:1234)。

下面我们举一个例子来说明该R函数的使用方法。

例1 ( [16] 中例4.1)为调查某地区住户的平均家庭成员数,将该地区分成城市和乡村2层,每层按简单随机抽样抽取10户,调查所获得的数据见表1所示。请估计该地区住户的平均家庭成员数及其95%的置信区间。

Table 1. Household membership survey data

表1. 家庭成员数调查数据

解:对于分层随机抽样,由理论公式,可以计算:

t = Z α / 2 1.959964 , N = h = 1 2 N h = 750

y ¯ s t = h = 1 2 W h y ¯ h 3 .733333 , v ( y ¯ s t ) = h = 1 2 W h 2 ( 1 f h ) s h 2 n h 0 .06708148

s e ( y ¯ s t ) = v ( y ¯ s t ) 0 .2590009 , Δ = t s e ( y ¯ s t ) 0 .5076325 , γ = Δ y ¯ s t 0 .135973

L Y ¯ = y ¯ s t Δ 3 .225701, U Y ¯ = y ¯ s t + Δ 4 .240966

代入数据,调用R函数Compute_Y_bar_st()进行计算,详细的R程序输入及输出结果请见附录A.1。

因此,估计得该地区住户的平均家庭成员数为3.733人,抽样标准误为0.259人,平均家庭成员数的95%置信区间为(3.226,4.241)人。

R函数2:Compute_Y_bar_prop_from_y_bar_h_s_h_st()

对于按比例分配的分层随机抽样,给定各层的样本均值y_bar_h和各层的样本标准差s_h等信息,得到计算总体均值的分层随机抽样的点估计和区间估计的R函数(程序) Compute_Y_bar_prop_from_y_bar_ h_s_h_st()。由于正文版面的限制,该R函数的内容及输入输出的解释放在了补充材料中。

下面我们举一个例子来说明该R函数的使用方法。

例2 ( [16] 中练习4.5)某开发区利用电话调查对区内居民消费冷冻食品情况进行调查,将电话号码(6位数字)的前2位作为一部分,后4位作为一部分,前2位代表局号,局号及每个局号中拥有的电话数可以找到,按局号分层,按每个局号(去掉商户后)拥有的电话数比例分配样本量(各层抽样比可以忽略)。调查后各层样本户购买冷冻食品支出的中间结果见表2所示。试估计该开发区居民户购买冷冻食品的平均支出及估计的95%置信区间。

Table 2. Sample households purchase frozen food expenditure

表2. 样本户购买冷冻食品支出

解:对于按比例分配的分层随机抽样,由理论公式,可以计算:

t = Z α / 2 1 .959964 , n = h = 1 10 n h = 200, y ¯ s t = h = 1 10 W h y ¯ h 75.792

v ( y ¯ s t ) = 1 f n h = 1 10 W h s h 2 59.46035 , s e ( y ¯ s t ) = v ( y ¯ s t ) 7.711054

L Y ¯ = y ¯ s t t s e ( y ¯ s t ) 60 .67861, U Y ¯ = y ¯ s t + t s e ( y ¯ s t ) 90 .90539

代入数据,调用R函数Compute_Y_bar_prop_from_y_bar_h_s_h_st()进行计算,详细的R程序输入及输出结果请见附录A.2。

故该开发区居民户购买冷冻食品的平均支出为75.792元,标准误差为7.711元,其95%置信区间为(60.679,90.905)元。

R函数3:Compute_Y_bar_srs_pst()

对于事后分层抽样,给定各层的样本均值y_bar_h和各层的样本标准差s_h等信息,得到计算总体均值的事后分层抽样和简单随机抽样的点估计和区间估计的R函数(程序) Compute_Y_bar_srs_pst()。由于正文版面的限制,该R函数的内容及输入输出的解释放在了补充材料中。

下面我们举一个例子来说明该R函数的使用方法。

例3 ( [16] 中例4.6)某高校欲了解在校学生用于课外进修(如各种考证辅导班、外语辅导班等)的开支,在全校8000名学生中抽出了一个200人的简单随机样本。根据学生科的统计,本科生人数为全校学生的70%,调查最近一个学期课外进修支出的结果见表3所示,试估计全校学生用于课外进修的平均开支。

Table 3. Results of the survey on expenditure on after-school education of current students

表3. 在校学生课外进修开支调查结果

解:由理论公式,可以计算:

t = Z α / 2 1 .959964 , n = h = 1 2 n h = 200 , f = n N = 0.025 , y ¯ = 1 n h = 1 2 n h y ¯ h = 283.8

s 2 = h = 1 2 n h 1 n 1 s h 2 + h = 1 2 n h n 1 ( y ¯ h y ¯ ) 2 86772.05 , s = s 2 294.571

采用事后分层估计,则

v ( y ¯ p s t ) = 1 f n h = 1 2 W h s h 2 + 1 n 2 h = 1 2 ( 1 W h ) s h 2 381.8343

y ¯ p s t = h = 1 2 W h y ¯ h = 276.2 , s e ( y ¯ p s t ) = v ( y ¯ p s t ) 19.54058

L Y ¯ p s t = y ¯ p s t t s e ( y ¯ p s t ) 237 .9012, U Y ¯ p s t = y ¯ p s t + t s e ( y ¯ p s t ) 314 .4988

采用简单随机估计,则

v ( y ¯ ) = 1 f n s 2 423 .0137, s e ( y ¯ ) = v ( y ¯ ) 20 .5673

L Y ¯ s r s = y ¯ t s e ( y ¯ ) 243 .4888, U Y ¯ s r s = y ¯ + t s e ( y ¯ ) 324 .1112

代入数据,调用R函数Compute_Y_bar_srs_pst()进行计算,详细的R程序输入及输出结果请见附录A.3。

因此,采用事后分层估计的平均开支为276.2元,其抽样标准误为19.541元,总体均值的事后分层抽样的95%置信区间为(237.901,314.499)元。而采用简单随机估计的平均开支为283.8元,其抽样标准误为20.567元,总体均值的简单随机抽样的95%置信区间为(243.489,324.111)元。事后分层估计的抽样标准误比简单随机估计的抽样标准误要小。

R函数4:Compute_P_st()

对于分层随机抽样,给定样本单位的观察值组成的矩阵y_matrix等信息,得到计算总体比例的分层随机抽样的点估计和区间估计的R函数(程序) Compute_P_st()。由于正文版面的限制,该R函数的内容及输入输出的解释放在了补充材料中。

下面我们举一个例子来说明该R函数的使用方法。

例4 ( [16] 中例4.2)对某地区的居民拥有家庭电脑的情况进行调查,以居民户为抽样单位,根据收人水平将居民户划分为4层,每层按简单随机抽样抽取10户,调查获得数据见表4所示。估计该地区居民拥有家庭电脑的比例及抽样标准误。

Table 4. The sample households have a home computer

表4. 样本户拥有家庭电脑情况

解:对于分层随机抽样,由理论公式,可以计算:

t = Z α / 2 1 .959964 , N = h = 1 4 N h = 2850, p s t = h = 1 4 W h p h = 0.2

v ( p s t ) = h = 1 4 W h 2 v ( p h ) 0 .004998324 , s e ( p s t ) = v ( p s t ) 0 .07069883

Δ = t s e ( p s t ) 0 .1385672 , γ = Δ p s t 0 .6928358

L P = p s t Δ 0 .06143284, U P = p s t + Δ 0 .3385672

代入数据,调用R函数Compute_P_st()进行计算,详细的R程序输入及输出结果请见附录A.4。

因此,估计得该地区居民拥有家庭电脑的比例为0.2,抽样标准误为0.071,总体比例的分层估计的95%置信区间为(0.061,0.339)。

R函数5:Compute_P_from_a_h_st()

对于分层随机抽样,给定各层样本中具有所考虑特征的单位数a_h等信息,得到计算总体比例的分层随机抽样的点估计和区间估计的R函数(程序)Compute_P_from_a_h_st()。由于正文版面的限制,该R函数的内容及输入输出的解释放在了补充材料中。

下面我们举一个例子来说明该R函数的使用方法。

例5 ( [16] 中练习4.4)随着经济发展,某市居民正在悄悄改变过年的习惯,虽然仍有大多数居民除夕夜在家吃年夜饭、看电视节目,但也有些家庭到饭店吃年夜饭,或逛夜市,或利用过年的假期到外地旅游。为研究这种现象,某研究机构以市中心165万居民户作为研究对象,将居民户按6个行政区分层,在每个行政区随机抽出30户进行了调查(各层抽样比可以忽略)。每个行政区的情况以及在家吃年夜饭、看电视节目的居民户比例见表5。试估计该市居民在家吃年夜饭的比例,并给出抽样标准误。

Table 5. Proportion of households and number of households

表5. 居民户比例及在家居民户数

解:对于分层随机抽样,由理论公式,可以计算:

t = Z α / 2 1 .959964 , p s t = h = 1 6 W h p h 0.924

v ( p s t ) = h = 1 6 W h 2 ( 1 f h ) p h q h n h 1 0 .0003969808 , s e ( p s t ) = v ( p s t ) 0 .01992438

L P = p s t t s e ( p s t ) 0 .8849489, U P = p s t + t s e ( p s t ) 0 .9630511

p h = a h n h , p 1 = 0.900 , p 2 0.933 , p 3 = 0.900 , p 4 0.867 , p 5 0.933 , p 6 0.967

q h = 1 p h , q 1 = 0.100 , q 2 0.067 , q 3 = 0.100 , q 4 0.133 , q 5 0.067 , q 6 0.033

W 1 p 1 0.162 , W 2 p 2 0.196 , W 3 p 3 0.126 , W 4 p 4 0.078 , W 5 p 5 0.149 , W 6 p 6 0.213

代入数据,调用R函数Compute_P_from_a_h_st()进行计算,详细的R程序输入及输出结果请见附录A.5。

故该市居民在家吃年夜饭的比例为0.924,抽样标准误为0.020,95%置信区间为(0.885,0.963)。

R函数6:Compute_P_srs_pst()

对于事后分层抽样,给定各层样本中具有所考虑特征的单位数a_h等信息,得到计算总体比例的简单随机抽样和事后分层抽样的点估计和区间估计的R函数(程序) Compute_P_srs_pst()。由于正文版面的限制,该R函数的内容及输入输出的解释放在了补充材料中。

下面我们举一个例子来说明该R函数的使用方法。

例6 ( [16] 中练习4.9)某公司进行财务审计,需要对原始凭证进行审核,该公司先后有两名出纳,由A出纳登记的原始凭证占70%,B出纳登记的原始凭证占30%。审计人员从原始凭证中随机抽出100份,结果发现,由A、B出纳登记的原始凭证分别为43份和57份,差错分别为1份和2份。

1) 用简单随机抽样的公式估计登记原始凭证的差错率,并估计抽样标准误;

2) 用事后分层的公式估计登记原始凭证的差错率,并估计抽样标准误(有限总体校正系数 1 f 1 )。

解:1) 对于简单随机抽样,由理论公式,可以计算:

t = Z α / 2 1 .959964 , a = h = 1 2 a h = 3 , n = h = 1 2 n h = 100

p = a n = 0.03 , q = 1 p = 0.97

v ( p ) = 1 f n 1 p q p q n 1 0 .0002939394 , s e ( p ) = v ( p ) 0 .01714466

L P s r s = p t s e ( p ) 0.003602918 , U P s r s = p + t s e ( p ) 0 .06360292

2) 对于事后分层抽样,由理论公式,可以计算:

p p s t = h W h p h 0 .02680539

v 1 ( p p s t ) 1 f n h W h s h 2 + 1 n 2 h ( 1 W h ) s h 2 0 .0002692841 , s e 1 ( p p s t ) = v 1 ( p p s t ) 0 .01640988

L P p s t , 1 = p p s t t s e 1 ( p p s t ) 0 .005357385, U P p s t , 1 = p p s t + t s e 1 ( p p s t ) 0 .05896816

v 2 ( p p s t ) = h W h 2 ( 1 f h ) p h q h n h 1 0 .0003194205 , s e 2 ( p p s t ) = v 2 ( p p s t ) 0 .01787234

L P p s t , 2 = p p s t t s e 2 ( p p s t ) 0 .008223753, U P p s t , 2 = p p s t + t s e 2 ( p p s t ) 0 .06183452

代入数据,调用R函数Compute_P_srs_pst()进行计算,详细的R程序输入及输出结果请见附录A.6。

故用简单随机抽样估计的差错率为0.030,抽样标准误为0.0171,95%置信区间为(−0.004,0.064)。用事后分层估计的差错率为0.027,抽样标准误的第一种估计为0.0164 < 0.0171,95%置信区间的第一种估计为(−0.005,0.059),抽样标准误的第二种估计为0.0179 > 0.0171,95%置信区间的第二种估计为(−0.008,0.062)。

R函数7:Compute_nh_given_n_Y_bar_st()

对于按比例分配和尼曼分配的分层随机抽样,给定样本单位的观察值组成的矩阵y_matrix和样本量n等信息,得到计算总体均值时所需的各层样本量的R函数(程序) Compute_nh_given_n_Y_bar_st()。由于正文版面的限制,该R函数的内容及输入输出的解释放在了补充材料中。

下面我们举一个例子来说明该R函数的使用方法。

例7 ( [16] 中例4.3)对某地区的2850户居民豆制品年消费支出进行调查,以居民户为抽样单位,根据收人水平将居民户划分为4层,每层按简单随机抽样抽取10户,调查获得以下数据,见表6所示。样本量为 n = 40 ,按比例分配和尼曼分配时,各层的样本量分别应为多少?

Table 6. Annual consumption expenditure table of sample household soybean products

表6. 样本户豆制品年消费支出表

解:对于分层随机抽样,由理论公式,可以计算:

L = 4 , N = h = 1 4 N h = 2850 , y ¯ s t = h = 1 4 W h y ¯ h 78 .77193 , h = 1 4 W h s h 40 .61926

W h = N h N , W 1 0.07018 , W 2 0.14035 , W 3 0.26316 , W 4 0.52632

y ¯ h = 1 n h i = 1 n h y h i , y ¯ 1 = 43.5 , y ¯ 2 = 112.0 , y ¯ 3 = 180.0 , y ¯ 4 = 24.0

s h 2 = 1 n h 1 i = 1 n h ( y h i y ¯ h ) 2 , s 1 2 1433.61 , s 2 2 1956.6 7 , s 3 2 8622.22 , s 4 2 193.33

W 1 s 1 2.6571 , W 2 s 2 6.2083 , W 3 s 3 24.4358 , W 4 s 4 7.3181

按比例分配的样本量为 n h = n W h ,即

n 1 2.81 , n 2 5.61 , n 3 10.53 , n 4 21.05

按尼曼分配的样本量为

n h = n W h s h h = 1 4 W h s h

n 1 2.62 , n 2 6.11 , n 3 24.06 , n 4 7.21

代入数据,调用R函数Compute_nh_given_n_Y_bar_st()进行计算,详细的R程序输入及输出结果请见附录A.7。

因此,按比例分配确定的各层样本量为3,6,10,21;按尼曼分配确定的各层样本量为3,6,24,7。

R函数8:Compute_n_nh_Y_bar_st()

对于按比例分配和尼曼分配的分层随机抽样,给定样本单位的观察值组成的矩阵y_matrix及相应的精度要求,得到计算总体均值时所需的总样本量及各层样本量的R函数(程序) Compute_n_nh_Y_bar_st()。由于正文版面的限制,该R函数的内容及输入输出的解释放在了补充材料中。

下面我们举一个例子来说明该R函数的使用方法。

例8 ( [16] 中例4.4和例4.3)在例7中,如果要求在95%置信度下,相对允许误差不超过10%,则按比例分配和尼曼分配时,总样本量及各层样本量分别为多少?

解:对于分层随机抽样,由理论公式,可以计算:

t = Z α / 2 1 .959964 , L = 4 , N = h = 1 4 N h = 2850 , y ¯ s t = h = 1 4 W h y ¯ h 78 .77193

h = 1 4 W h s h 2 2745 .984, h = 1 4 W h s h 40 .61926, V = ( γ y ¯ s t t ) 2 16 .15276

W h = N h N , W 1 0.07018 , W 2 0.14035 , W 3 0.26316 , W 4 0.52632

y ¯ h = 1 n h i = 1 n h y h i , y ¯ 1 = 43.5 , y ¯ 2 = 112.0 , y ¯ 3 = 180.0 , y ¯ 4 = 24.0

s h 2 = 1 n h 1 i = 1 n h ( y h i y ¯ h ) 2 , s 1 2 1433.61 , s 2 2 1956.67 , s 3 2 8622.22 , s 4 2 193.33

W 1 s 1 2 100.604 , W 2 s 2 2 274.620 , W 3 s 3 2 2269.006 , W 4 s 4 2 101.754

W 1 s 1 2.657 , W 2 s 2 6.208 , W 3 s 3 24.436 , W 4 s 4 7.318

按比例分配确定的

n 0 = W h s h 2 V 170 .00

n 0 进行修正,得到修正后的样本量为

n = n 0 1 + n 0 N 160.43

且各层应分配的样本量为 n h = n W h ,即

n 1 11.30 , n 2 22.60 , n 3 42.37 , n 4 84.74

按尼曼分配确定的总样本量为

n = ( W h s h ) 2 V + W h s h 2 N 96.40

且各层样本量为

n h = n W h s h h = 1 4 W h s h

n 1 6.35 , n 2 14.83 , n 3 58.35 , n 4 17.48

代入数据,调用R函数Compute_n_nh_Y_bar_st()进行计算,详细的R程序输入及输出结果请见附录A.8。

因此,按比例分配确定的总样本量为161,各层样本量为11,23,42,85;按尼曼分配确定的总样本量为97,各层样本量为6,15,58,18 (程序结果为17,但由于总样本量需达到97,故该层样本量需加1成18)。

R函数9:Compute_n_nh_P_st()

对于按比例分配和尼曼分配的分层随机抽样,给定各层的总体单位数N_h,各层的样本比例p_h及相应的精度要求,得到计算总体比例时所需的总样本量及各层样本量的R函数(程序) Compute_n_nh_P_st()。由于正文版面的限制,该R函数的内容及输入输出的解释放在了补充材料中。

下面我们举一个例子来说明该R函数的使用方法。

例9 ( [16] 中例4.5和例4.3)在例4中,如果要求在95%的置信度下,绝对误差不超过5%,则按比例分配和尼曼分配时,总样本量及各层样本量分别为多少?

解:对于分层随机抽样,由理论公式,可以计算:

t = Z α / 2 1.959964 , L = 4 , N = h = 1 4 N h = 2850 , p s t = h = 1 4 W h p h = 0.2

V = ( Δ t ) 2 0.0006507944 , h = 1 4 W h p h q h 0.1442105 , h = 1 4 W h p h q h 0.3710258

W h = N h N , W 1 0.07018 , W 2 0.14035 , W 3 0.26316 , W 4 0.52632

q h = 1 p h , q 1 = 0.8 , q 2 = 0.8 , q 3 = 0.6 , q 4 = 0.9

W 1 p 1 0.014 , W 2 p 2 0.028 , W 3 p 3 0.105 , W 4 p 4 0.053

W 1 p 1 q 1 0.011 , W 2 p 2 q 2 0.022 , W 3 p 3 q 3 0.063 , W 4 p 4 q 4 0.047

W 1 p 1 q 1 0.028 , W 2 p 2 q 2 0.056 , W 3 p 3 q 3 0.129 , W 4 p 4 q 4 0.158

按比例分配确定的

n 0 = h = 1 4 W h p h q h V 221.59

n 0 进行修正,得到修正后的样本量为

n = n 0 1 + n 0 N 205.61

且各层样本量为 n h = n W h ,即

n 1 14.46 , n 2 28.91 , n 3 54.21 , n 4 108.42

按尼曼分配确定的总样本量为

n = ( h = 1 4 W h p h q h ) 2 V + h = 1 4 W h p h q h N 196.27

且各层样本量为

n h = n W h p h q h h = 1 4 W h p h q h

n 1 14.90 , n 2 29.81 , n 3 68.45 , n 4 83.84

代入数据,调用R函数Compute_n_nh_P_st()进行计算,详细的R程序输入及输出结果请见附录A.9。

因此,按比例分配所需的总样本量为206,各层样本量为15 (程序结果为14,但由于总样本量需达到206,故该层样本量需加1成15),29,54,108;按尼曼分配所需的总样本量为197,各层样本量为15,30,68,84。

3. 总结

本文就分层随机抽样的R软件实现方面自编了九个非常实用的R函数,分别是Compute_Y_bar_st() (用于分层随机抽样下总体均值的点估计和区间估计)、Compute_Y_bar_prop_from_y_bar_h_s_h_st() (用于给定各层的样本均值和各层的样本标准差等信息的按比例分配的分层随机抽样下总体均值的点估计和区间估计)、Compute_Y_bar_srs_pst() (用于事后分层抽样和简单随机抽样下总体均值的点估计和区间估计)、Compute_P_st() (用于分层随机抽样下总体比例的点估计和区间估计)、Compute_P_from_a_h_st() (用于给定各层样本中具有所考虑特征的单位数等信息的分层随机抽样下总体比例的点估计和区间估计)、Compute_P_srs_pst() (用于事后分层抽样和简单随机抽样下总体比例的点估计和区间估计)、Compute_ nh_given_n_Y_bar_st() (用于给定总样本量等信息的按比例分配和尼曼分配的分层随机抽样下计算总体均值时所需的各层样本量)、Compute_n_nh_Y_bar_st() (用于按比例分配和尼曼分配的分层随机抽样下计算总体均值时所需的总样本量及各层样本量)及Compute_n_nh_P_st() (用于按比例分配和尼曼分配的分层随机抽样下计算总体比例时所需的总样本量及各层样本量)。我们相信,这九个R函数一定可以给利用分层随机抽样以提高估计精度进行实际问题分析的使用者提供极大的方便。

基金项目

教育部人文社会科学研究西部和边疆地区项目:基于临床试验大数据的条件势的贝叶斯无效分析的基础研究(20XJC910001),2020.1~2022.12。国家社科基金西部项目:基于贝叶斯的八种预测势在临床试验中用于节约新药研发成本的评价研究(21XTJ001),2021.9~2024.12。国家自然科学基金面上项目:大数据驱动的中小微企业全息风险评估与介观调控机制研究(72071019),2021.1~2024.12。

附录

本附录给出了九个例子的详细的R程序输入及输出的结果。

A.1. 例1的详细的R程序输入及输出的结果

>rm(list = ls(all = TRUE))

> source(subfunctions.R)

>n_h = c(10, 10)

>N_h = c(250, 500)

> alpha = 0.05

> y1 = c(3, 2, 3, 4, 3, 3, 4, 5, 2, 3); y1

> y2 = c(3, 4, 5, 5, 4, 3, 6, 2, 4, 4); y2

>y_matrix = rbind(y1, y2); y_matrix

y1 3 2 3 4 3 3 4 5 2 3

y2 3 4 5 5 4 3 6 2 4 4

>

> result = Compute_Y_bar_st(y_matrix, n_h, N_h, alpha); result

$df_0

tN y_bar_stv_y_bar_stse_y_bar_st Deltagamma

1 1.959964 750 3.733333 0.06708148 0.2590009 0.5076325 0.135973

L_Y_barU_Y_bar

1 3.225701 4.240966

$W_h

$f_h

$y_bar_h

$s_2_h

$W_h_y_bar_h

A.2. 例2的详细的R程序输入及输出的结果

>rm(list = ls(all = TRUE))

> source(subfunctions.R)

>W_h = c(0.082, 0.065, 0.137, 0.056, 0.118, 0.116, 0.17, 0.098, 0.088, 0.07)

>n_h = c(16, 13, 27, 11, 24, 23, 34, 20, 18, 14)

>y_bar_h = c(89, 56, 102, 76, 97, 79, 83, 52, 36, 52)

>s_h = c(105, 74, 186, 97, 106, 89, 112, 73, 44, 65)

> f = 0 # 各层抽样比可以忽略

> alpha = 0.05

>

> result = Compute_Y_bar_prop_from_y_bar_h_s_h_st(W_h, n_h, y_bar_h, s_h, f, alpha); result

t n y_bar_st v_y_bar_st se_y_bar_st L_Y_barU_Y_bar

1 1.959964 200 75.792 59.46035 7.711054 60.67861 90.90539

A.3. 例3的详细的R程序输入及输出的结果

>rm(list = ls(all = TRUE))

> source(subfunctions.R)

>W_h = c(0.7, 0.3)

>n_h = c(120, 80)

>y_bar_h = c(253.4, 329.4)

>s_h = c(231, 367)

> N = 8000

> alpha = 0.05

>

> result = Compute_Y_bar_srs_pst(W_h, n_h, y_bar_h, s_h, N, alpha); result

t n f s2 s y_bar_pst v_y_bar_pst

1 1.959964 200 0.025 86772.05 294.571 276.2 381.8343

se_y_bar_pst L_Y_bar_pst U_Y_bar_pst y_barv_y_bar

1 19.54058 237.9012 314.4988 283.8 423.0137

se_y_bar L_Y_bar_srs U_Y_bar_srs

120.5673 243.4888 324.1112

A.4. 例4的详细的R程序输入及输出的结果

>rm(list = ls(all = TRUE))

> source(subfunctions.R)

>n_h = c(10, 10, 10, 10)

>N_h = c(200, 400, 750, 1500)

> alpha = 0.05

> y1 = c(0, 0, 0, 1, 0, 0, 0, 1, 0, 0); y1

> y2 = c(0, 1, 0, 0, 0, 0, 0, 0, 1, 0); y2

> y3 = c(1, 1, 0, 0, 0, 0, 1, 0, 1, 0); y3

> y4 = c(1, 0, 0, 0, 0, 0, 0, 0, 0, 0); y4

>y_matrix = rbind(y1, y2, y3, y4); y_matrix

y1 0 0 0 1 0 0 0 1 0 0

y2 0 1 0 0 0 0 0 0 1 0

y3 1 1 0 0 0 0 1 0 1 0

y4 1 0 0 0 0 0 0 0 0 0

>

>result_P = Compute_P_st(y_matrix, n_h, N_h, alpha); result_P

$df_0

t N p_st v_p_st se_p_st Delta

1 1.959964 28500.2 0.004998324 0.07069883 0.1385672

gamma L_P U_P

1 0.6928358 0.06143284 0.3385672

$a_h

y1 y2 y3 y4

2241

$W_h

$f_h

$p_h

y1y2y3y4

0.2 0.2 0.4 0.1

$q_h

y1y2y3y4

0.8 0.8 0.6 0.9

$v_p_h

y1 y2 y3 y4

0.016888889 0.017333333 0.026311111 0.009933333

此外,我们也可以利用总体均值的分层随机抽样的点估计和区间估计的R函数(程序)Compute_Y_bar_st()来进行计算。

>result_Y_bar = Compute_Y_bar_st(y_matrix, n_h, N_h, alpha); result_Y_bar

$df_0

t N y_bar_stv_y_bar_st se_y_bar_st Delta

1 1.959964 2850 0.2 0.0049983240.07069883 0.1385672

gamma L_Y_bar U_Y_bar

1 0.6928358 0.06143284 0.3385672

$W_h

$f_h

$y_bar_h

$s2_h

$W_h_y_bar_h

A.5. 例5的详细的R程序输入及输出的结果

>rm(list = ls(all = TRUE))

> source(subfunctions.R)

>W_h = c(0.18, 0.21, 0.14, 0.09, 0.16, 0.22)

>n_h = c(30, 30, 30, 30, 30, 30)

>a_h = c(27, 28, 27, 26, 28, 29)

> N = 1650000

>N_h = N * W_h; N_h

>f_h = n_h / N_h; f_h

>f_h = c(0, 0, 0, 0, 0, 0); f_h # 各层抽样比可以忽略

> alpha = 0.05

> result = Compute_P_from_a_h_st(W_h, n_h, a_h, f_h, alpha); result

$df_0

tp_st v_p_st se_p_st L_P U_P

1 1.959964 0.924 0.0003969808 0.01992438 0.8849489 0.9630511

$p_h

$q_h

$W_h_p_h

A.6. 例6的详细的R程序输入及输出的结果

>rm(list = ls(all = TRUE))

> source(subfunctions.R)

>W_h = c(0.7, 0.3)

>a_h = c(1, 2)

>n_h = c(43, 57)

>f_h = c(0, 0) # 各层抽样比可以忽略

> f = 0 # 抽样比可以忽略

> alpha = 0.05

>

> result = Compute_P_srs_pst(W_h, a_h, n_h, f_h, f, alpha); result

$df_srs

t a n p q v_p se_p L_P_srs

1 1.959964 3 100 0.03 0.97 0.0002939394 0.01714466 -0.003602918

U_P_srs

1 0.06360292

$df_pst

p_pst v_p_pst_1 se_p_pst_1 L_P_pst_1U_P_pst_1

1 0.02680539 0.0002692841 0.01640988 -0.005357385 0.05896816

v_p_pst_2 se_p_pst_2 L_P_pst_2U_P_pst_2

1 0.0003194205 0.01787234 -0.008223753 0.06183452

$p_h

$q_h

$s2_h

A.7. 例7的详细的R程序输入及输出的结果

>rm(list = ls(all = TRUE))

> source(subfunctions.R)

> n = 40

>N_h = c(200, 400, 750, 1500)

> y1 = c(10, 40, 40, 110, 15, 10, 40, 80, 90, 0); y1

> y2 = c(50, 130, 130, 80, 100, 55, 160, 85, 160, 170); y2

> y3 = c(180, 260, 260, 0, 140, 60, 200, 180, 300, 220); y3

> y4 = c(50, 35, 15, 0, 20, 30, 25, 10, 30, 25); y4

>y_matrix = rbind(y1, y2, y3, y4); y_matrix

y1 10 40 40110 15 10 40 80 90 0

y2 50130130 80100 55160 85160 170

y3180260260 0140 60200180300 220

y4 50 35 15 0 20 30 25 10 30 25

>

> result = Compute_nh_given_n_Y_bar_st(y_matrix, n, N_h); result

$df_0

L N y_bar_st sum_W_h_s_h

1 4 2850 78.77193 40.61926

$n_h_prop

n1 n2 n3 n4

2.8070185.614035 10.526316 21.052632

$n_h_Neyman

n1 n2 n3 n4

2.6165486.113663 24.0632337.206555

$W_h

$y_bar_h

y1 y2 y3 y4

43.5 112.0 180.024.0

$s2_h

y1 y2 y3 y4

1433.6111 1956.6667 8622.2222193.3333

$W_h_s_h

y1 y2 y3 y4

2.6570576.208312 24.4357697.318124

A.8. 例8的详细的R程序输入及输出的结果

>rm(list = ls(all = TRUE))

> source(subfunctions.R)

>N_h = c(200, 400, 750, 1500)

> alpha = 0.05

> gamma = 0.1

> y1 = c(10, 40, 40, 110, 15, 10, 40, 80, 90, 0); y1

> y2 = c(50, 130, 130, 80, 100, 55, 160, 85, 160, 170); y2

> y3 = c(180, 260, 260, 0, 140, 60, 200, 180, 300, 220); y3

> y4 = c(50, 35, 15, 0, 20, 30, 25, 10, 30, 25); y4

>y_matrix = rbind(y1, y2, y3, y4); y_matrix

y1 10 40 40110 15 10 40 80 90 0

y2 50130130 80100 55160 85160 170

y3180260260 0140 60200180300 220

y4 50 35 15 0 20 30 25 10 30 25

>

> result = Compute_n_nh_Y_bar_st(y_matrix, N_h, alpha, Given = gamma, input = gamma); result

$df_0

t L N y_bar_st sum_W_h_s2_h sum_W_h_s_h V

1 1.959964 4 2850 78.77193 2745.984 40.61926 16.15276

n0_prop n_prop n_Neyman

1 170.0009 160.4313 96.39512

$n_h_prop

n1 n2 n3 n4

11.29825 22.59649 42.36842 84.73684

$n_h_Neyman

n1 n2 n3 n4

6.34513 14.82563 58.35334 17.47590

$W_h

$y_bar_h

y1 y2 y3 y4

43.5 112.0 180.024.0

$s2_h

y1 y2 y3 y4

1433.6111 1956.6667 8622.2222193.3333

$W_h_s2_h

y1 y2 y3 y4

100.6043274.6199 2269.0058101.7544

$W_h_s_h

y1 y2 y3 y4

2.6570576.208312 24.4357697.318124

A.9. 例9的详细的R程序输入及输出的结果

>rm(list = ls(all = TRUE))

> source(subfunctions.R)

>n_h = c(10, 10, 10, 10)

>N_h = c(200, 400, 750, 1500)

>p_h = c(0.2, 0.2, 0.4, 0.1)

> alpha = 0.05

> Delta = 0.05

>

> result = Compute_n_nh_P_st(N_h, p_h, alpha, Given = Delta, input = Delta); result

$df_0

t L N p_st V sum_W_h_p_h_q_h

1 1.959964 4 28500.2 0.0006507944 0.1442105

sum_W_h_sqrt_p_h_q_h n0_prop n_prop n_Neyman

1 0.3710258 221.5915 205.6054 196.2663

$n_h_prop

n1 n2 n3 n4

14.4561428.9122854.21053 108.42105

$n_h_Neyman

n1 n2 n3 n4

14.90415 29.80830 68.45169 83.83586

$W_h

$q_h

$W_h_p_h

$W_h_p_h_q_h

$W_h_sqrt_p_h_q_h

NOTES

*第一作者。

#通讯作者。

参考文献

[1] 金勇进, 石可. 极小信息量下分层抽样的样本分配的一个案例[J]. 统计研究, 2000, 17(2): 56-60.
[2] 闫在在, 马俊玲. 分层抽样下的分别乘积估计和联合乘积估计(英文) [J]. 工程数学学报, 2001(3): 133-135+109.
[3] 苟鹏凰. 关于分层抽样的一点思考[J]. 统计研究, 2005(11): 16-17.
[4] 黄莺, 李金昌. 双重分层抽样中的校正估计[J]. 统计研究, 2008(7): 66-69.
[5] 张宁. 分层抽样下的样本轮换理论研究[J]. 统计与信息论坛, 2008, 23(4): 33-36.
[6] 王克林. 存在测量误差时分层抽样层均值方差的估计[J]. 统计与信息论坛, 2011, 26(3): 16-20.
[7] 张建军, 乔松珊. 辅以排序集样本的分层抽样方法研究[J]. 统计与信息论坛, 2012, 27(5): 14-18.
[8] 陈兵, 吕恕. 有辅助信息可利用时的分层抽样下样本轮换研究[J]. 统计与决策, 2014(15): 13-15.
[9] 李林蔓. 分层抽样下样本量的分配方法研究[J]. 统计与决策, 2015(19): 18-20.
[10] 梁敏, 刘建平. 敏感问题的分层抽样方法探讨[J]. 统计与决策, 2017(5): 12-15.
[11] 李广丽, 朱涛, 袁天, 滑瑾, 张红斌. 混合分层抽样与协同过滤的旅游景点推荐模型研究[J]. 数据采集与处理, 2019, 34(3): 566-576.
[12] 金勇进, 蒋妍, 李序颖. 抽样技术[M]. 北京: 中国人民大学出版社, 2002.
[13] 孙山泽. 抽样调查[M]. 北京: 北京大学出版社, 2004.
[14] 杜子芳. 抽样技术及其应用[M]. 北京: 清华大学出版社, 2005.
[15] 杜智敏. 抽样调查与MATLAB和SPSS应用[M]. 北京: 电子工业出版社, 2010.
[16] 李金昌. 应用抽样技术[M]. 第三版. 北京: 科学出版社, 2015.
[17] 杨贵军, 尹剑, 孟杰, 王维真. 应用抽样技术[M]. 第二版. 北京: 中国统计出版社, 2020.
[18] R Core Team (2022) R: A Language and Environment for Statistical Computing. R Foundation for Statistical Computing, Vienna.
https://www.R-project.org
[19] 薛毅, 陈丽萍. 统计建模与R软件[M]. 北京: 清华大学出版社, 2007.
[20] 崔娅. 分层抽样的R软件实现[D]: [学士学位论文]. 重庆: 重庆大学, 2021.