我有分层简单随机抽样设计的调查数据,其中某些层仅包含一个采样单位(即使层人口总数可能大于1)。在R调查包(http://r-survey.r-forge.r-project.org/survey/exmample-lonely.html)中将它们称为“孤独的PSU”。有几种处理这种情况的选项,而我感兴趣的是“调整”选项。options(survey.lonely.psu="adjust")
的文档指出
“单个PSU层的数据以样本总体为中心
的意思,而不是阶层的意思。”
在尝试此选项时,我曾期望如果我更改另一个层中的数据,则单PSU层的方差会改变,但事实并非如此。这是一个小例子:
library(survey)
options(survey.lonely.psu="adjust")
# sample 1
dat1 <- data.frame(N = c(3, 3, 2), h = c(1, 1, 2), y = c(2, 6, 15))
survey1 <- svydesign(~1, fpc = ~N, strata = ~h, data = dat1)
svyby(~y, by = ~h, design = survey1, FUN = svytotal)
在结果中,请注意层2的标准误差,即单PSU层:
h y se
1 1 12 3.464102
2 2 30 21.213203
现在,如果我像这样更改层1中的数据
# sample 2
(dat2 <- data.frame(N = c(3, 3, 2), h = c(1, 1, 2), y = c(200, 600, 15)))
(survey2 <- svydesign(~1, fpc = ~N, strata = ~h, data = dat2))
svyby(~y, by = ~h, design = survey2, FUN = svytotal)
结果将按预期对第1层进行更改,但第2层的标准误差仍然相同
h y se
1 1 1200 346.4102
2 2 30 21.2132
我是在误解文档的含义,还是可能是错误?
仅供参考,这是我的sessionInfo:
R version 3.1.3 (2015-03-09)
Platform: i386-w64-mingw32/i386 (32-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1
other attached packages:
[1] survey_3.30-3
编辑
我对收到的初始答案的解释是,当使用
svyby
函数将数据作为子集时,方差调整不会生效。但是,当我比较分层总体的总体方差和总体总体的方差时,似乎就像没有孤独的PSU一样,总体方差就是独立采样的层级方差:> vcov(svyby(~y, by = ~h, design = survey1, FUN = svytotal))
1 2
1 12 0
2 0 450
> vcov(svytotal(~y, survey1))
y
y 462
如果在合并所有数据时以总体均值进行某种居中,则似乎后一种方差应该有所不同。
作为一个相关问题,这是估算均值与总计时的
svyby
的比较:> svyby(~y, by = ~h, design = survey1, FUN = svymean)
h y se
1 1 4 1.155
2 2 15 0.000
> svyby(~y, by = ~h, design = survey1, FUN = svytotal)
h y se
1 1 12 3.464
2 2 30 21.213
我对为什么在估算总数时而不是在估算平均值时为何对第2层(包含lonley PSU)估算出方差感到困惑。
最佳答案
对复杂设计子集的分析基本上等同于将子集外观察值的采样权重设置为零的分析。这意味着这些观察结果不会进入“均值”。
关于r - 对R调查数据包中的孤独PSU使用“调整”选项:当其他层中的数据发生变化时,为什么单个PSU层差异不发生变化?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32533677/