简单随机抽样中七个非常实用的R函数
Seven Very Practical R Functions in Simple Random Sampling
DOI: 10.12677/SA.2022.111007, PDF, HTML, XML, 下载: 412  浏览: 2,971  国家自然科学基金支持
作者: 白 宸:重庆大学数学与统计学院统计与精算学系,重庆;张应应#:重庆大学数学与统计学院统计与精算学系,重庆;重庆大学分析数学与应用重庆市重点实验室,重庆
关键词: 简单随机抽样总体均值和总体总值点估计和区间估计样本量的确定R函数Simple Random Sampling Population Mean and Total Value Point Estimation and Interval Estimation The Determination of Sample Size R Function
摘要: 简单随机抽样是抽样技术中最基本、最成熟、最简单的抽样设计方式。本文利用R软件对简单随机抽样中的总体均值和总体总值的点估计和区间估计问题,样本量的确定问题,以及子总体总值均值的估计问题进行了程序实现。针对简单随机抽样,本文自编了七个非常实用的R函数(程序):compute_Y_bar_srs()、compute_Y_srs()、compute_P_N1_srs()、compute_n0_n_Y_bar_srs()、compute_n0_n_P_srs()、compute_Y_j_srs()及compute_Y_bar_j_srs(),它们将会为需要使用简单随机抽样进行实际问题分析的使用者提供极大的方便。
Abstract: Simple random sampling is the most basic, mature, and simple sampling design method in sampling technology. In this paper, R software is used to program the point estimation and interval estimation of population mean and total value, the determination of sample size, and the estimation of total and mean value of sub population in simple random sampling. For simple random sampling, we compile seven very practical R functions (programs): compute_Y_bar_srs(), compute_Y_srs(), compute_P_N1_srs(), compute_n0_n_Y_bar_srs(), compute_n0_n_P_srs(), compute_Y_j_srs(), and compute_Y_bar_j_srs(), which will provide great convenience for users who need to use simple random sampling to analyze practical problems.
文章引用:白宸, 张应应. 简单随机抽样中七个非常实用的R函数[J]. 统计学与应用, 2022, 11(1): 53-66. https://doi.org/10.12677/SA.2022.111007

1. 引言

简单随机抽样是抽样技术 [1] - [7] 中最基本、最成熟、最简单的抽样设计方式。同时R软件 [8] [9] 作为统计学的常用编程工具,它具有完全免费、简洁高效、运行方便等优点。本文利用R软件对简单随机抽样中的总体均值和总体总值的点估计和区间估计问题,样本量的确定问题,以及子总体总值均值的估计问题进行了程序实现。针对简单随机抽样,本文自编了七个非常实用的R函数:compute_Y_bar_srs() (用于放回和不放回简单随机抽样下总体均值的点估计和区间估计)、compute_Y_srs() (用于放回和不放回简单随机抽样下总体总值的点估计和区间估计)、compute_P_N1_srs() (用于不放回简单随机抽样下总体比例及总体中具有某种属性单位的总个数的点估计和区间估计)、compute_n0_n_Y_bar_srs() (用于放回和不放回简单随机抽样下估计总体均值的样本量确定)、compute_n0_n_P_srs() (用于放回和不放回简单随机抽样下估计总体比例的样本量确定)、compute_Y_j_srs() (用于不放回简单随机抽样下子总体总值的估计)及compute_Y_bar_j_srs() (用于不放回简单随机抽样下子总体均值的估计)。我们在对这七个R函数进行输入变量及输出变量的解释后给出了相应实际问题的R程序实现。这些内容构成了本文第一作者毕业论文的核心内容。我们相信,这七个R函数将会为需要使用简单随机抽样进行实际问题分析的使用者提供极大的方便。

2. 简单随机抽样中七个非常实用的R函数及应用举例

我们推荐简单随机抽样中七个非常实用的R函数。

R函数1:compute_Y_bar_srs()

对于放回和不放回简单随机抽样,给定样本数据y_vector及其它参数,得到计算总体均值的点估计和区间估计的R函数(程序)如下:

compute_Y_bar_srs = function(y_vector, n, N, alpha, replace = c(FALSE, TRUE)){

t = qnorm(1 - alpha / 2)

f = n / N

s2 = var(y_vector)

y_bar = mean(y_vector)

if (missing(replace)) replace = FALSE

if (replace == FALSE){

v_y_bar = (1 - f) * s2 / n

}

else{

v_y_bar = s2 / n

}

se_y_bar = sqrt(v_y_bar)

L = y_bar - t * se_y_bar

U = y_bar + t * se_y_bar

res = data.frame(t, f, s2, y_bar, v_y_bar, se_y_bar, L, U)

}

此R函数(程序)的输入变量有:y_vector是样本数据;n是样本容量;N是总体容量;alpha是显著性水平;replace是逻辑变量,取值为FALSE(默认值,表示不放回抽样)和TRUE(表示放回抽样)。

此R函数(程序)以数据框的形式作为输出变量:t是抽样概率度;f是抽样比;s2是样本方差;y_bar是样本均值;v_y_bar是y_bar方差的无偏估计;se_y_bar是y_bar标准误差的估计;L和U分别是总体均值的 1 α 置信区间的左右端点。

下面我们举一个例子来说明compute_Y_bar_srs()的使用方法。

例1 ( [6] 中例3.3)为调查某校大学生的电信消费水平,在全校 N = 15230 名学生中,用简单随机抽样的方法抽得一个 n = 36 的样本。对每个抽中的学生调查其上个月的电信支出金额 y i ,如表1所示。试以95%的置信度估计该校大学生该月电信消费的平均支出额。

Table 1. Sample data of telecom consumption of 36 college students in a month

表1. 36名大学生某月电信消费的样本数据

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

t = Z α / 2 1.959964 , f = n N 0.002363756 , s 2 1358.409

y ¯ = 1 n i = 1 n y i 53.63889 , v ( y ¯ ) = 1 f n s 2 37.64438 , s e ( y ¯ ) = v ( y ¯ ) 6.135502

L = y ¯ t s e ( y ¯ ) 41.61353 , U = y ¯ + t s e ( y ¯ ) 65.66425

代入数据计算如下:

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

> source(subfunctions.R)

>

>y_vector =

+ c(45, 36, 7, 13, 170, 89, 33, 75, 22, 56, 79, 5,

+ 48, 53, 24, 39, 41, 93, 19, 59, 111, 64, 35, 76,

+ 83, 51, 33, 25, 28, 90, 17, 57, 43, 146, 19, 47)

> n = 36

> N = 15230

> alpha = 0.05

>

> # 不放回

> # 默认replace = FALSE

>res_F = compute_Y_bar_srs(y_vector, n, N, alpha, replace = FALSE); res_F

t f s2 y_barv_y_barse_y_bar

1 1.959964 0.002363756 1358.409 53.63889 37.64438 6.135502

L U

1 41.61353 65.66425

> res_F_1 = compute_Y_bar_srs(y_vector, n, N, alpha); res_F_1

t f s2 y_barv_y_barse_y_bar

1 1.959964 0.002363756 1358.409 53.63889 37.64438 6.135502

L U

1 41.61353 65.66425

以上两种计算结果一致,说明对不放回简单随机抽样,参数replace = FALSE可以省略。

因此,对不放回简单随机抽样来说,该校大学生该月电信消费的平均支出额的估计为53.64元,可以以95%的把握说该校大学生该月电信消费的人均支出额大约在41.61~65.66元之间。

对于放回简单随机抽样,由理论公式,可以计算:

y ¯ = 1 n i = 1 n y i 53.63889 , v ( y ¯ ) = s 2 n 37.73358 , s e ( y ¯ ) = v ( y ¯ ) 6.142766

L = y ¯ t s e ( y ¯ ) 41.59929 , U = y ¯ + t s e ( y ¯ ) 65.67849

代入数据计算如下:

> # 放回

>res_T = compute_Y_bar_srs(y_vector, n, N, alpha, replace = TRUE); res_T

t f s2 y_barv_y_barse_y_bar

1 1.959964 0.002363756 1358.409 53.63889 37.73358 6.142766

L U

1 41.59929 65.67849

因此,对放回简单随机抽样来说,该校大学生该月电信消费的平均支出额的估计为53.64元,可以以95%的把握说该校大学生该月电信消费的人均支出额大约在41.60~65.68元之间。

由上述计算结果可得,不放回简单随机抽样的置信区间比放回简单随机抽样的置信区间略小一点。因为总体容量较大而样本容量较小,所以在这个例子中两者之间相差很小。

R函数2:compute_Y_srs()

对于放回和不放回简单随机抽样,给定样本数据y_vector及其它参数,得到计算总体总值的点估计和区间估计的R函数(程序)如下:

compute_Y_srs = function(y_vector, n, N, alpha, replace = c(FALSE, TRUE)){

t = qnorm(1 - alpha / 2)

f = n / N

s2 = var(y_vector)

y_bar = mean(y_vector)

Y_hat = N * y_bar

if (missing(replace)) replace = FALSE

if (replace == FALSE){

v_y_bar = (1 - f) * s2 / n

}

else{

v_y_bar = s2 / n

}

v_Y_hat = N^2 * v_y_bar

se_Y_hat = sqrt(v_Y_hat)

L = Y_hat - t * se_Y_hat

U = Y_hat + t * se_Y_hat

res = data.frame(t, f, s2, y_bar, v_y_bar, Y_hat, v_Y_hat, se_Y_hat, L, U)

}

此R函数(程序)的输入变量有:y_vector是样本数据;n是样本容量;N是总体容量;alpha是显著性水平;replace是逻辑变量,取值为FALSE (默认值,表示不放回抽样)和TRUE (表示放回抽样)。

此R函数(程序)以数据框的形式作为输出变量:t是抽样概率度;f是抽样比;s2是样本方差;y_bar是样本均值;v_y_bar是y_bar方差的无偏估计;Y_hat是样本总值;v_Y_hat是Y_hat方差的无偏估计;se_Y_hat是Y_hat标准误差的估计;L和U分别是总体总值的 1 α 置信区间的左右端点。

下面我们举一个例子来说明compute_Y_srs()的使用方法。

例2 ( [6] 中例3.4)试以95%的置信度估计例1中该校大学生该月电信消费的总支出额。

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

t = Z α / 2 1.959964 , f = n N 0.002363756 , s 2 1358.409

y ¯ = 1 n i = 1 n y i 53.63889 , v ( y ¯ ) = 1 f n s 2 37.64438

Y ^ 816920.3 , v ( Y ^ ) = N 2 v ( y ¯ ) 8731723778 , s e ( Y ^ ) = v ( Y ^ ) 93443.69

L = Y ^ t s e ( Y ^ ) 633774 , U = Y ^ + t s e ( Y ^ ) 1000067

代入数据计算如下:

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

> source(subfunctions.R)

>

>y_vector =

+ c(45, 36, 7, 13, 170, 89, 33, 75, 22, 56, 79, 5,

+ 48, 53, 24, 39, 41, 93, 19, 59, 111, 64, 35, 76,

+ 83, 51, 33, 25, 28, 90, 17, 57, 43, 146, 19, 47)

> n = 36

> N = 15230

> alpha = 0.05

>

> # 不放回

> # 默认replace = FALSE

>res_F = compute_Y_srs(y_vector, n, N, alpha, replace = FALSE); res_F

t f s2 y_barv_y_barY_hat

1 1.959964 0.002363756 1358.409 53.63889 37.64438 816920.3

v_Y_hatse_Y_hat L U

1 8731723778 93443.69 633774 1000067

> res_F_1 = compute_Y_srs(y_vector, n, N, alpha); res_F_1

t f s2 y_barv_y_barY_hat

1 1.959964 0.002363756 1358.409 53.63889 37.64438 816920.3

v_Y_hatse_Y_hat L U

1 8731723778 93443.69 633774 1000067

以上两种计算结果一致,说明对不放回简单随机抽样,参数replace = FALSE可以省略。

因此,对不放回简单随机抽样来说,该校大学生该月电信消费的总支出额的估计为816,920.3元,可以以95%的把握说该校大学生该月电信消费的总支出额大约在633,774~1,000,067元之间。

对于放回简单随机抽样,由理论公式,可以计算:

y ¯ = 1 n i = 1 n y i 53.63889 , v ( y ¯ ) = s 2 n 37.73358

Y ^ 816920.3 , v ( Y ^ ) = N 2 v ( y ¯ ) 8752412343 , s e ( Y ^ ) = v ( Y ^ ) 93554.33

L = Y ^ t s e ( Y ^ ) 633557.2 , U = Y ^ + t s e ( Y ^ ) 1000283

代入数据计算如下:

> # 放回

>res_T = compute_Y_srs(y_vector, n, N, alpha, replace = TRUE); res_T

t f s2 y_barv_y_barY_hat

1 1.959964 0.002363756 1358.409 53.63889 37.73358 816920.3

v_Y_hatse_Y_hat L U

1 8752412343 93554.33 633557.2 1000283

因此,对放回简单随机抽样来说,该校大学生该月电信消费的总支出额的估计为816,920.3元,可以以95%的把握说该校大学生该月电信消费的总支出额大约在633,557~1,000,283元之间。

值得一提的是,我们的计算结果与 [6] 中例3.4的计算结果稍有不同,原因是我们的中间结果使用的是变量(比如 y ¯ )的精确值,而 [6] 中例3.4的中间结果使用的是变量的四舍五入之后的值。以后的类似情况不再赘述。

R函数3:compute_P_N1_srs()

对于不放回简单随机抽样,得到计算总体比例及总体中具有某种属性单位的总个数的点估计和区间估计的R函数(程序)如下:

compute_P_N1_srs = function(n1, n, N, correct, alpha){

t = qnorm(1 - alpha / 2)

p = n1 / n

f = n / N

v_p = (1 - f) / (n - 1) * p * (1 - p)

se_p = sqrt(v_p)

N1_hat = N * p

v_N1_hat = N * (N - n) / (n - 1) * p * (1 - p)

se_N1_hat = sqrt(v_N1_hat)

if (correct == TRUE){

L_P = p - (t * se_p + 1 / (2 * n))

U_P = p + (t * se_p + 1 / (2 * n))

L_N1 = N * L_P

U_N1 = N * U_P

res = data.frame(p, v_p, se_p, N1_hat, v_N1_hat, se_N1_hat, L_P, U_P, L_N1, U_N1)

}

else{

L_P = p - (t * se_p)

U_P = p + (t * se_p)

L_N1 = N * L_P

U_N1 = N * U_P

res = data.frame(p, v_p, se_p, N1_hat, v_N1_hat, se_N1_hat, L_P, U_P, L_N1, U_N1)

}

}

此R函数(程序)的输入变量有:n1是样本中具有某种属性的个数;n是样本容量;N是总体容量;correct是逻辑变量,用于判断是否对近似置信区间进行连续性修正,取值为FALSE (表示不进行连续性修正)和TRUE (表示进行连续性修正);alpha是显著性水平。

此R函数(程序)以数据框的形式作为输出变量:p是样本比例;v_p是p方差的无偏估计;se_p是p标准误差的估计;N1_hat是总体中具有某种属性单位的总个数的简单估计量 N 1 ^ ;v_N1_hat是 N 1 ^ 方差的无偏估计;se_N1_hat是 N 1 ^ 标准误差的估计;L_P和U_P是总体比例的 1 α 置信区间的左右端点;L_N1和U_N1是总体中具有某种属性单位的总个数的 1 α 置信区间的左右端点。

下面我们举一个例子来说明compute_P_N1_srs()的使用方法。

例3 ( [6] 中例3.5)试以95%的置信度估计例1中该校大学生该月电信消费支出超出80元的人数及其比例。

解:对于不放回简单随机抽样,若进行连续性修正,由理论公式,可以计算:

p = n 1 n 0.1944444 , v ( p ) = 1 f n 1 p q 0.00446473 , s e ( p ) = v ( p ) 0.06681864

N 1 ^ = N p 2961.389 , v ( N 1 ^ ) = N ( N n ) n 1 p q 1035607 , s e ( N 1 ^ ) = v ( N 1 ^ ) 1017.648

L P = p ( t s e ( p ) + 1 2 n ) 0.04959344 , U P = p + ( t s e ( p ) + 1 2 n ) 0.3392955

L N 1 = N L P 755.308 , U N 1 = N U P 5167.47

代入数据计算如下:

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

> source(subfunctions.R)

>

> # 修正后

> res = compute_P_N1_srs(n1 = 7, n = 36, N = 15230, correct = TRUE, alpha = 0.05); res

p v_pse_p N1_hat v_N1_hat se_N1_hat

1 0.1944444 0.00446473 0.06681864 2961.38910356071017.648

L_P U_P L_N1 U_N1

1 0.04959344 0.3392955 755.308 5167.47

若不进行连续性修正,由理论公式,可以计算:

L P = p t s e ( p ) 0.06348232 , U P = p + t s e ( p ) 0.3254066

L N 1 = N L P 966.8358 , U N 1 = N U P 4955.942

代入数据计算如下:

> #修正前

> res = compute_P_N1_srs(n1 = 7, n = 36, N = 15230, correct = FALSE, alpha = 0.05); res

p v_pse_p N1_hat v_N1_hat se_N1_hat

1 0.1944444 0.00446473 0.06681864 2961.389 10356071017.648

L_P U_P L_N1 U_N1

1 0.06348232 0.3254066 966.8358 4955.942

因此,对该校大学生该月电信消费支出超出80元的人数的估计为2961人,修正前可以以95%的把握说该校大学生该月电信消费支出超出80元的人数大约为967~4956人,修正后可以以95%的把握说该校大学生该月电信消费支出超出80元的人数大约为755~5167人。对该校大学生该月电信消费支出超出80元的人数比例的估计为19.44%,修正前可以以95%的把握说该校大学生该月电信消费支出超出80元的人数比例大约为6.35%~32.54%,修正后可以以95%的把握说该校大学生该月电信消费支出超出80元的人数比例大约为4.96%~33.93%。

R函数4:compute_n0_n_Y_bar_srs()

对于总体均值,可以从给定方差V出发,得到计算样本量的R函数(程序)如下:

compute_n0_n_Y_bar_srs_from_V = function(V, S2, N){

n0 = S2 / V

n = n0 / (1 + n0 / N)

res = data.frame(n0, n)

}

此R函数(程序)的输入变量有:V是方差;S2是总体方差的估计;N是总体容量。

此R函数(程序)以数据框的形式作为输出变量:n0是无限总体或放回简单随机抽样情形下所需要的样本量;n是不放回简单随机抽样所需要的样本量。

基于

V = ( Δ t ) 2 = ( γ Y ¯ t ) 2 = ( C V Y ¯ ) 2 = S E 2

和compute_n0_n_Y_bar_srs_from_V(),利用switch语句,对于总体均值,得到计算样本量的R综合函数(程序)如下:

compute_n0_n_Y_bar_srs = function(

Given = c(V, Delta, gamma, CV, SE),

input, alpha, Y_bar, S2, N){

t = qnorm(1 - alpha/2)

V = switch(Given,

V = input,

Delta = (input / t)^2,

gamma = (input * Y_bar / t)^2,

CV = (input * Y_bar)^2,

SE = input^2

)

res = compute_n0_n_Y_bar_srs_from_V(V, S2, N)

}

此R函数(程序)的输入变量有:Given是一个取值为字符串的表达式,可以是“V”,“Delta”,“gamma”,“CV”,“SE”中的一个;input是给定的精度,Given = “input”,比如Given = “V”,input = V;alpha是显著性水平;Y_bar是总体均值,当其未知时可由其估计值来代替;S2是总体方差的估计;N是总体容量。

此R函数(程序)以数据框的形式作为输出变量:n0是无限总体或放回简单随机抽样情形下所需要的样本量;n是不放回简单随机抽样所需要的样本量。

下面我们举一个例子来说明compute_n0_n_Y_bar_srs()的使用方法。

例4 ( [6] 中例3.6)在例1中,如果要求以95%的置信度估计该校大学生该月人均电信消费支出的绝对允许误差不超过5元,样本量应确定为多少?

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

n 0 = t 2 S 2 Δ 2 208.731 , n = n 0 1 + n 0 N 205.909

代入数据计算如下:

> ## 给定绝对允许误差 Delta

> Delta = 5

> alpha = 0.05

> t = qnorm(1 - alpha / 2); t

[1] 1.959964

> V = (Delta / t)^2; V

[1] 6.507944

>

>res_Delta = compute_n0_n_Y_bar_srs_from_V(V, S2 = 1358.41, N = 15230); res_Delta

n0 n

1 208.731 205.909

此外,我们也可以用综合函数compute_n0_n_Y_bar_srs()来计算:

> Delta = 5

> res_Delta_1 = compute_n0_n_Y_bar_srs(Given = Delta, input = Delta, alpha = 0.05, Y_bar = 53.64, S2 = 1358.41, N = 15230); res_Delta_1

n0 n

1 208.731 205.909

因此,以95%的置信度估计该校大学生该月人均电信消费支出的绝对允许误差不超过5元,在无限总体或放回简单随机抽样情形下,所需要的样本量为209人;在不放回简单随机抽样情形下,所需要的样本量为206人。

R函数5:compute_n0_n_P_srs()

对于总体比例,可以从给定方差V出发,得到计算样本量的R函数(程序)如下:

compute_n0_n_P_srs_from_V = function(V, P, N){

n0 = P * (1 - P) / V

n = n0 / (1 + (n0 - 1) / N)

res = data.frame(n0, n)

}

此R函数(程序)的输入变量有:V是方差;P是总体比例;N是总体容量。

此R函数(程序)以数据框的形式作为输出变量:n0是无限总体或放回简单随机抽样情形下所需要的样本量;n是不放回简单随机抽样所需要的样本量。

基于

V = ( Δ t ) 2 = ( γ P t ) 2 = ( C V P ) 2 = S E 2

和compute_n0_n_P_srs_from_V(),利用switch语句,对于总体比例,得到计算样本量的R综合函数(程序)如下:

compute_n0_n_P_srs = function(

Given = c(V, Delta, gamma, CV, SE),

input, alpha, P, N){

t = qnorm(1 - alpha/2)

V = switch(Given,

V = input,

Delta = (input / t)^2,

gamma = (input * P / t)^2,

CV = (input * P)^2,

SE = input^2

)

res = compute_n0_n_P_srs_from_V(V, P, N)

}

此R函数(程序)的输入变量有:Given是一个取值为字符串的表达式,可以是“V”,“Delta”,“gamma”,“CV”,“SE”中的一个;input是给定的精度,Given = “input”,比如Given = “V”,input = V;alpha是显著性水平;P是总体比例,当其未知时可由其估计值来代替;N是总体容量。

此R函数(程序)以数据框的形式作为输出变量:n0是无限总体或放回简单随机抽样情形下所需要的样本量;n是不放回简单随机抽样所需要的样本量。

下面我们举一个例子来说明compute_n0_n_P_srs()的使用方法。

例5 ( [6] 中例3.7)在例1中,如果要求以95%的置信度估计该校大学生该月电信消费支出超出80元的人数比例的相对允许误差不超过10%,样本量至少应为多少?

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

n 0 = t 2 q γ 2 p 1591.913 , n = n 0 1 + n 0 1 N 1441.351

代入数据计算如下:

> gamma = 0.1

> p = 0.1944

> alpha = 0.05

> t = qnorm(1 - alpha / 2); t

[1] 1.959964

> V = (gamma * p / t)^2; V

[1] 9.837763e-05

>

>res_gamma = compute_n0_n_P_srs_from_V(V, P = p, N = 15230); res_gamma

n0 n

1 1591.913 1441.351

此外,我们也可以用综合函数compute_n0_n_P_srs()来计算:

> gamma = 0.1

> p = 0.1944

> res_gamma_1 = compute_n0_n_P_srs(Given = gamma, input = gamma, alpha = 0.05, P = p, N = 15230); res_gamma_1

n0 n

1 1591.913 1441.351

因此,以95%的置信度估计该校大学生该月电信消费支出超出80元的人数比例的相对允许误差不超过10%,在无限总体或放回简单随机抽样情形下,所需要的样本量为1592;在不放回简单随机抽样情形下,所需要的样本量为1442。

R函数6:compute_Y_j_srs()

对于简单随机抽样的子总体,当属于第j个子总体的单位数Nj未知时,得到计算子总体总值的R函数(程序)如下:

compute_Y_j_srs = function(N, n, n_j, y_bar_j, s_j, alpha){

t = qnorm(1 - alpha / 2)

p_j = n_j / n

q_j = 1 - p_j

Y_hat_j = N / n * n_j * y_bar_j

f = n / N

se_Y_hat_j = N * sqrt((1 - f) / n) * sqrt((n_j - 1) / (n - 1) * s_j^2 + n * p_j * q_j * y_bar_j^2 / (n - 1))

CV_hat_Y_hat_j = se_Y_hat_j / Y_hat_j

L_Y_j = Y_hat_j - t * se_Y_hat_j

U_Y_j = Y_hat_j + t * se_Y_hat_j

res = data.frame(Y_hat_j, se_Y_hat_j, CV_hat_Y_hat_j, L_Y_j, U_Y_j)

}

此R函数(程序)的输入变量有:N是总体容量;n是样本容量;n_j是样本中属于第j个子总体的单位数;y_bar_j是第j个子总体的样本均值;s_j是第j个子总体的样本标准差;alpha是显著性水平。

此R函数(程序)以数据框的形式作为输出变量:Y_hat_j是第j个子总体总值的估计;se_Y_hat_j是Y_hat_j标准误差的估计;CV_hat_Y_hat_j是Y_hat_j变异系数的估计;L_Y_j和U_Y_j分别是第j个子总体总值的 1 α 置信区间的左右端点。

下面我们举一个例子来说明compute_Y_j_srs()的使用方法。

例6 ( [6] 中例3.8)某市地税局为估计餐饮业个体经营户的纳税情况,采用简单随机抽样的方法,以 N = 15800 户个体经营户为总体,从中随机抽取了 n = 800 户作为样本,其中 n j = 375 户属于餐饮行业,户均年纳税额 y ¯ ( j ) 为4376元,年纳税额标准差 s j 为755元,试估计本市个体经营户中来自于餐饮业的全年纳税额 Y ^ ( j ) ,并估计其标准误差 s e ( Y ^ ( j ) ) 和变异系数 C V ^ ( Y ^ ( j ) )

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

s e ( Y ^ ( j ) ) = N 1 f n n j 1 n 1 s j 2 + n n 1 p j q j [ y ¯ ( j ) ] 2 1222098

Y ^ ( j ) = N n n j y ¯ ( j ) 32409750 , C V ^ ( Y ^ ( j ) ) = s e ( Y ^ ( j ) ) Y ^ ( j ) 3.77 %

L Y ( j ) = Y ^ ( j ) t s e ( Y ^ ( j ) ) 30014481 , U Y ( j ) = Y ^ ( j ) + t s e ( Y ^ ( j ) ) 34805019

代入数据计算如下:

> res = compute_Y_j_srs(N = 15800, n = 800, n_j = 375, y_bar_j = 4376, s_j = 755, alpha = 0.05); res

Y_hat_jse_Y_hat_jCV_hat_Y_hat_jL_Y_jU_Y_j

1 32409750 1222098 0.03770774 30014481 34805019

因此,全部餐饮业个体经营户的全年纳税额为32,409,750元,其标准误差为1,222,098元,变异系数为3.77%,并可以以95%的把握说全部餐饮业个体经营户的全年纳税额大约为30,014,481~34,805,019元。

R函数7:compute_Y_bar_j_srs()

对于简单随机抽样的子总体,当属于第j个子总体的单位数Nj未知时,得到计算子总体均值的R函数(程序)如下:

compute_Y_bar_j_srs = function(N, n, n_j, y_bar_j, s_j, alpha){

t = qnorm(1 - alpha / 2)

f = n / N

v_y_bar_j = (1 - f) / n_j * s_j^2

se_y_bar_j = sqrt(v_y_bar_j)

L_Y_bar_j = y_bar_j - t * se_y_bar_j

U_Y_bar_j = y_bar_j + t * se_y_bar_j

res = data.frame(t, f, v_y_bar_j, se_y_bar_j, L_Y_bar_j, U_Y_bar_j)

}

此R函数(程序)的输入变量有:N是总体容量;n是样本容量;n_j是样本中属于第j个子总体的单位数;y_bar_j是第j个子总体的样本均值;s_j是第j个子总体的样本标准差;alpha是显著性水平。

此R函数(程序)以数据框的形式作为输出变量:t是抽样概率度;f是抽样比;v_y_bar_j是y_bar_j方差的估计;se_y_bar_j是y_bar_j标准误差的估计;L_Y_bar_j和U_Y_bar_j分别是第j个子总体均值的 1 α 置信区间的左右端点。

下面我们举一个例子来说明compute_Y_bar_j_srs()的使用方法。

例7 (参考 [6] 中例3.8)试以95%的置信度估计例6中该市个体经营户中来自于餐饮业的平均纳税额。

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

t = Z α / 2 1.959964 , f = n N 0.05063291

v ( y ¯ ( j ) ) = 1 f n j s j 2 1443.101 , s e ( y ¯ ( j ) ) = v ( y ¯ ( j ) ) 37.98817

L Y ¯ ( j ) = y ¯ ( j ) t s e ( y ¯ ( j ) ) 4301.545 , U Y ¯ ( j ) = y ¯ ( j ) + t s e ( y ¯ ( j ) ) 4450.455

代入数据计算如下:

> res = compute_Y_bar_j_srs(N = 15800, n = 800, n_j = 375, y_bar_j = 4376, s_j = 755, alpha = 0.05); res

t f v_y_bar_jse_y_bar_jL_Y_bar_jU_Y_bar_j

1 1.959964 0.050632911443.101 37.988174301.5454450.455

因此,餐饮业个体经营户的平均纳税额为4376元,其方差的估计为1443.10元2,标准误差的估计为37.99元,并可以以95%的把握说该市个体经营户中来自于餐饮业的平均纳税额大约为4301.55~4450.46元。

3. 总结

本文就简单随机抽样的R软件实现方面自编了七个非常实用的R函数,分别是compute_Y_bar_srs() (用于放回和不放回简单随机抽样下总体均值的点估计和区间估计)、compute_Y_srs() (用于放回和不放回简单随机抽样下总体总值的点估计和区间估计)、compute_P_N1_srs() (用于不放回简单随机抽样下总体比例及总体中具有某种属性单位的总个数的点估计和区间估计)、compute_n0_n_Y_bar_srs() (用于放回和不放回简单随机抽样下估计总体均值的样本量确定)、compute_n0_n_P_srs() (用于放回和不放回简单随机抽样下估计总体比例的样本量确定)、compute_Y_j_srs() (用于不放回简单随机抽样下子总体总值的估计)及compute_Y_bar_j_srs() (用于不放回简单随机抽样下子总体均值的估计)。我们相信,这七个R函数一定可以给利用简单随机抽样进行实际问题分析的使用者提供极大的方便。

基金项目

本研究受教育部人文社会科学研究西部和边疆地区项目(20XJC910001),国家社科基金西部项目(21XTJ001)和国家自然科学基金面上项目(72071019)支持。

参考文献

NOTES

*共同第一作者。

参考文献

[1] 金勇进, 蒋妍, 李序颖. 抽样技术[M]. 北京: 中国人民大学出版社, 2002.
[2] [美] G.卡尔顿, 著. 抽样调查导论[M]. 郝虹生, 译. 北京: 中国统计出版社, 2003.
[3] 孙山泽. 抽样调查[M]. 北京: 北京大学出版社, 2004.
[4] 杜子芳. 抽样技术及其应用[M]. 北京: 清华大学出版社, 2005.
[5] 杜智敏. 抽样调查与MATLAB和SPSS应用[M]. 北京: 电子工业出版社, 2010.
[6] 李金昌. 应用抽样技术[M]. 第3版. 北京: 科学出版社, 2015.
[7] 杨贵军, 尹剑, 孟杰, 王维真. 应用抽样技术[M]. 第2版. 北京: 中国统计出版社, 2020.
[8] R Core Team (2022) R: A Language and Environment for Statistical Computing. R Foundation for Statistical Computing, Vienna, Austria. http://www.R-project.org/
[9] 薛毅, 陈丽萍. 统计建模与R软件[M]. 北京: 清华大学出版社, 2007.