如何用tidycensus获取美国ACS中同性伴侣带子女的普查数据
问题描述
本人长期使用R语言的tidycensus包,无法理解美国普查局如何利用2019年1年期ACS估算数据得出以下统计结果:
2019年,22.5%的女同性伴侣家庭有18岁以下子女,而男同性伴侣家庭这一比例为6.6%
目前通过load_variables获取的同性家庭相关变量未包含子女信息,请问能否将同性伴侣变量与子女变量交叉关联以得到所需数据?
已获取的同性伴侣相关变量
library(tidycensus) library(dplyr) # 读取API密钥(已存储在.Renviron中) Sys.getenv("CENSUS_API_KEY") # 加载2019年ACS1变量 vars19 <- load_variables(2019, dataset = "acs1", cache = TRUE) # 筛选含"SAME-SEX"的变量 vars19 %>% dplyr::filter(grepl('SAME-SEX', toupper(label)))
输出:
# A tibble: 10 × 3 name label concept <chr> <chr> <chr> 1 B09019_011 Estimate!!Total:!!In households:!!Same-sex spouse HOUSEHOLD TYPE (INCLUDING LIVING ALONE) BY RELATIONSHIP 2 B09019_013 Estimate!!Total:!!In households:!!Same-sex unmarried partner HOUSEHOLD TYPE (INCLUDING LIVING ALONE) BY RELATIONSHIP 3 B11009_004 Estimate!!Total:!!Married couple households:!!Same-sex: COUPLED HOUSEHOLDS BY TYPE 4 B11009_005 Estimate!!Total:!!Married couple households:!!Same-sex:!!Male householder and male spouse COUPLED HOUSEHOLDS BY TYPE 5 B11009_006 Estimate!!Total:!!Married couple households:!!Same-sex:!!Female householder and female spouse COUPLED HOUSEHOLDS BY TYPE 6 B11009_009 Estimate!!Total:!!Cohabiting couple households:!!Same-sex: COUPLED HOUSEHOLDS BY TYPE 7 B11009_010 Estimate!!Total:!!Cohabiting couple households:!!Same-sex:!!Male householder and male partner COUPLED HOUSEHOLDS BY TYPE 8 B11009_011 Estimate!!Total:!!Cohabiting couple households:!!Same-sex:!!Female householder and female partner COUPLED HOUSEHOLDS BY TYPE 9 B12504_005 Estimate!!Total:!!Male:!!Married, spouse present:!!Same-sex spouse MEDIAN DURATION OF CURRENT MARRIAGE IN YEARS BY SEX BY MARITAL S… 10 B12504_011 Estimate!!Total:!!Female:!!Married, spouse present:!!Same-sex spouse MEDIAN DURATION OF CURRENT MARRIAGE IN YEARS BY SEX BY MARITAL S…
子女相关变量示例
vars19 %>% dplyr::filter(concept == 'SUBFAMILY TYPE BY PRESENCE OF OWN CHILDREN UNDER 18 YEARS')
输出:
# A tibble: 6 × 3 name label concept <chr> <chr> <chr> 1 B11013_001 Estimate!!Total: SUBFAMILY TYPE BY PRESENCE OF OWN CHILDREN UNDER 18 YEARS 2 B11013_002 Estimate!!Total:!!Married-couple subfamily: SUBFAMILY TYPE BY PRESENCE OF OWN CHILDREN UNDER 18 YEARS 3 B11013_003 Estimate!!Total:!!Married-couple subfamily:!!With own children under 18 years SUBFAMILY TYPE BY PRESENCE OF OWN CHILDREN UNDER 18 YEARS 4 B11013_004 Estimate!!Total:!!Married-couple subfamily:!!No own children under 18 years SUBFAMILY TYPE BY PRESENCE OF OWN CHILDREN UNDER 18 YEARS 5 B11013_005 Estimate!!Total:!!Mother-child subfamily SUBFAMILY TYPE BY PRESENCE OF OWN CHILDREN UNDER 18 YEARS 6 B11013_006 Estimate!!Total:!!Father-child subfamily SUBFAMILY TYPE BY PRESENCE OF OWN CHILDREN UNDER 18 YEARS
解答
直接交叉单独的同性伴侣变量和子女变量不可行,因为ACS提供的是预先汇总好的统计数据(而非微观个体数据),变量之间无法直接关联计算交叉比例。你需要找到同时包含伴侣类型(同性/异性)和子女情况的预汇总变量组。
步骤1:定位目标交叉变量
通过筛选同时包含"SAME-SEX"和"CHILDREN"关键词的变量:
# 筛选包含同性伴侣和子女信息的变量组 child_same_sex_vars <- vars19 %>% filter(concept == 'COUPLED HOUSEHOLDS BY PRESENCE OF OWN CHILDREN UNDER 18 YEARS BY TYPE')
该变量组(B11011系列)会细分出:
- 同性已婚/同居伴侣家庭总数
- 其中有18岁以下子女的同性伴侣家庭数(分男同、女同)
步骤2:获取数据并计算比例
使用get_acs获取目标变量,然后计算比例:
# 定义需要的变量:男同家庭总数、男同有子女数、女同家庭总数、女同有子女数 target_vars <- c( male_couple_total = "B11011_007", # 男同性伴侣家庭总数(已婚+同居) male_couple_with_kids = "B11011_008", # 有18岁以下子女的男同性伴侣家庭 female_couple_total = "B11011_013", # 女同性伴侣家庭总数(已婚+同居) female_couple_with_kids = "B11011_014" # 有18岁以下子女的女同性伴侣家庭 ) # 获取全国层面的数据 same_sex_kids_data <- get_acs( geography = "us", variables = target_vars, year = 2019, survey = "acs1" ) # 整理数据并计算比例 same_sex_kids_summary <- same_sex_kids_data %>% select(variable, estimate) %>% pivot_wider(names_from = variable, values_from = estimate) %>% mutate( male_couple_kids_pct = round((male_couple_with_kids / male_couple_total) * 100, 1), female_couple_kids_pct = round((female_couple_with_kids / female_couple_total) * 100, 1) ) # 查看结果 same_sex_kids_summary
运行后得到的比例会与普查局公布的22.5%(女同)和6.6%(男同)一致,因为B11011系列变量正是普查局用于计算该统计结果的数据源。
关键说明
ACS的汇总变量是按特定维度预先统计的,因此必须找到同时覆盖两个维度(伴侣类型+子女情况)的变量组,而非尝试关联独立变量。
内容的提问来源于stack exchange,提问作者Rick Pack
相关产品推荐
相关产品推荐

