用 svyfgt (R) 计算标准偏差

Calculating standard deviation in with svyfgt (R)

我正在使用 R 中的 t 检验来测试在使用 FGT 贫困度量时(分别)向调查设计添加权重、分层和聚类时出现的均值差异的显着性,我计算使用 convey 包中的 svyfgt 函数。我 运行 通过为每个调查设计创建向量来进行 t 检验,其中包括均值、标准差和样本量,因此,我需要获得 svyfgt 均值的标准差。

调查包中有一个svysd函数,用于在应用复杂调查设计时计算标准差。这个值和简单的SE乘以sqrt(n)得到的值有很大的不同,如下图:

library(survey)

wel <- c(68008.19, 128504.61,  21347.69,
             33272.95,  61828.96,  32764.44,
             92545.62,  58431.89,  95596.82,
             117734.27)
rmul <- c(16, 16, 16, 16, 16, 16, 16,
              20, 20, 20)
splin <- c(23149.64, 23149.64, 23149.64, 23149.64, 23149.64,
            21322.23, 21322.23, 21322.23, 21322.23, 21322.23)

survey.data <- data.frame(wel, rmul, splin)

survey_weighted <- svydesign(data = survey.data,
                             ids = ~wel, 
                             weights = ~rmul, 
                             nest = TRUE)

svymean(~wel, survey_weighted)

svysd(~wel, survey_weighted)
11498*sqrt(10)

在 convey 包中,没有等效的“svyfgtsd”函数,简单地将 SE 乘以 sqrt(n) 似乎会产生错误的答案(基于先前显示的 svysd 和该表达式之间的结果差异).因此,我不确定如何获得 FGT_0_weighted 的标准差。有没有我不知道的功能,或者可能对我有帮助的统计概念?

library(convey)

fgtsurvey_weighted <- convey_prep(survey_weighted) 

FGT_0_weighted <- svyfgt(~wel, 
                         fgtsurvey_weighted,  
                         g=0, 
                         abs_thresh = survey.data$splin)
FGT_0_weighted

作为参考,我将像这样在 t 检验中使用 sd 值(忽略 sd 值):

FGT_0_unweighted_vector <- c(rnorm(9710, mean = 0.28919, sd = sd_FGT_0))
FGT_0_cluster_vector <- c(rnorm(9710, mean = 0.33259, sd = sd_FGT_0_cluster))
t.test(FGT_0_cluster_vector, FGT_0_unweighted_vector, var.equal = FALSE)

当贫困线为绝对值时,FGT为二元变量的均值(poor/non-poor);即,一个比例。二元变量的标准差sqrt( p*(1-p) ).

但是,您可能正在寻找 标准误差(FGT 估计的抽样误差的度量),只需 SE( FGT_0_weighted )。这就是 t 检验中使用的内容。

考虑分层和聚类会改变标准误差估计值,而加权也会影响平均值(以及所有点估计值,如 FGT)。使用 t 检验来检验均值估计值的变化对于比较加权和未加权估计值是否有意义。

使用 sqrt(n) 在复杂抽样下会产生误导。通常的n就是所谓的名义样本量,但是有效样本量通常小于那个(因为整群抽样.).

与您要绑定的内容相关的一个概念是设计效果,但尚未针对 svyfgt 实现(尽管对于绝对阈值,您仍然可以使用 svymean 获得它).