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(其中包含一个孤立的PSU)进行方差估计感到困惑,但在估计平均值时却不这样做感到困惑。
svyby
不是理解adjust
选项的最佳方法。尽管如此,我编辑了我的问题,以显示分层方差之和(其中第2层有一个孤立的PSU)等于总体方差。如果进行了相对于总平均值的居中处理,它们似乎不应该是等价的。此外,当使用svyby
时,我很困惑为什么第2层均值没有方差,但总体有方差。 - Bryansvytotal()
函数中的"adjust"
选项存在一个错误,但是svymean()
函数没有。我在这里尝试解释一下:https://dev59.com/5o_ea4cB1Zd3GeqPIwjA#73588156 - bschneidr