r - 用于称重的变量集改变了结果估计
问题描述
在比较传递给svyby
函数的一组变量对结果估计值和标准误差的影响时,我发现权衡单个变量和两个变量会产生相同的估计值,但权衡多个变量会产生明显低于另一个的估计值两种方法。
这是什么原因,我怎样才能避免这种情况发生?
数据集链接:https ://drive.google.com/open?id=1xqFxUBLZifaz57yvoNFOcvhBDGuHuSMq
这是我的代码:
library(tidyverse)
library(survey)
load("des2004small.RData")
weighUp <- function(variables) {
svyby(formula = make.formula(variables), by = ~statefip,
design = des2004small,
FUN = svytotal, na.rm = TRUE)
}
# Weigh up a single variable:
dfstate2004_singleVariable = weighUp(c("race_acs"))
# Weigh up two variables:
dfstate2004_twoVariables = weighUp(c("race_acs", "cvap_acs"))
# Weigh up multiple variables:
dfstate2004_multipleVariables = weighUp(c("race_acs", "cit_acs",
"educ_acs", "unemployed_acs", "labforce_acs", "poverty_acs", "cvap_acs"))
# Compare the three diffent methods:
comparison2004 = dfstate2004_singleVariable %>%
inner_join(dfstate2004_twoVariables, by = "statefip", suffix = c(".single", ".two")) %>%
inner_join(dfstate2004_multipleVariables, by = "statefip", suffix = c("", ".multiple"))
race_acswhite2004 = comparison2004 %>%
select(statefip,
single = race_acswhite.single,
two = race_acswhite.two,
multiple = race_acswhite)
race_acswhite2004
以下是由此产生的不同估计:
+-------------------------------------+
| statefip single two multiple |
+-------------------------------------+
| 1 1 3084123 3084123 2128346 |
| 2 2 427008 427008 277075 |
+-------------------------------------+
解决方案
'multiple' 表中的变量有缺失值,并丢弃它正在分析的任何svytotal
变量上的任何缺失值的观察值。好吧,默认情况下它会给出结果,但如果你要求它丢弃缺失值,它会丢弃它们和整个观察结果。NA
na.rm=TRUE
推荐阅读
- node.js - Google My Business:如何在没有用户交互的情况下生成访问令牌
- c# - toString 如果条件为真添加一些东西
- azure-devops - 如何在管道 Azure Devops 中获取项目路径?
- sql - 从 SQL Oracle 中删除 Null 值
- python - Python 格式 UDP 消息格式 十六进制
- markdown - 11 个降价链接中相对路径的路径前缀
- asp.net-mvc - 我只想看到域名,如果在 url 中输入任何内容,我想在 url 中看到那个词,它必须使用 asp.net mvc 重定向到另一个页面
- excel - 仅将 Excel 中的可见行复制并粘贴到新文件中
- python - 我可以在 Python 中抑制 protobuf 反序列化错误消息吗
- javascript - 如何发送数据从 html 到烧瓶