# Filter for children under 18 in 2023
children_23 <- data |>
filter( AGE < 18, YEAR== 2023)
# Filter to retain only rows where the ASECWT variable is not missing so the weight variable has a valid (non-missing) value
children_23 <- children_23|>
filter(!is.na(ASECWT)) # ASECWT is a person-level weight that should be used in analyses of individual-level CPS supplement data. Since the CPS relies on a complex stratified sampling scheme, it is essential to use one of the provided weighting variables.
# Next, create the necessary variables.
# Create a binary indicator for being in kinship care
kin_children_23 <- children_23 |>
mutate(
kinship_care = ifelse(MOMLOC == 0 & POPLOC == 0 &
RELATE %in% c(0901, 0701, 1001, 1260), 1, 0),
# Create race/eth categories
race_eth = case_when(
HISPAN != 0 ~ "Hispanic",
RACE == 100 & HISPAN == 0 ~ "White, non-Hispanic",
RACE == 200 & HISPAN == 0 ~ "Black, non-Hispanic",
RACE != 100 & RACE != 200 & HISPAN == 0 ~ "Other, non-Hispanic"
),
# Create binary poverty indicator for being below 150% poverty
pov_below150 = ifelse(POVERTY %in% c(10, 21, 22), 1, 0),
# Create a variable for the type of relative
relative_type = case_when(
RELATE == 0901 ~ "Grandchild",
RELATE == 0701 ~ "Sibling",
RELATE == 1001 ~ "Other relative",
RELATE == 1260 ~ "Non-relative"
)
)
#create survey design
des <- svydesign(
ids = ~1,
weights = ~ASECWT,
data = kin_children_23
)Texas Children in Kinship Care 2023
This is a data check to validate Coda’s kinship estimates. See Coda’s code here. The purpose of this analysis is to update this data brief Rachel Cooper published in 2016.
Analysis Completed 10/7/24
About the Data
Source: Data for this analysis are from the 2023 Annual Social and Economic Supplement (ASEC) of the Current Population Survey (CPS) via IPUMS CPS.
Here are the variables I included (not including pre-selected variables):
Importing the Data
I filtered for TX (fips 48) before downloading the data.
Defining Kinship
I am using the definition Coda used. Here is the description of the RELATE variable.
Given the description of the RELATE variable and the definition from AECF, I included the following in my classification of kinship:
grandchild (0901)
sibling (0701)
other relatives, n.s. (1001)
other nonrelatives (1260) <—- Coda mentioned she was unsure about this one. After reading AECF’s definition for the PRB analysis here, I agree that this should be included. Presumably, by not including the other non-relative options (partners / spouses, roommates, boarders, foster care, etc.) that should leave the relevant non-relative options the survey data does not specify (i.e., family friends).
Clean Data and Create Variables and Survey Design
Calculations
Race/Ethnicity Counts
# Calculate total number of children in kinship care in 2023 by race/eth
kin_race_23 <- svyby(
~kinship_care,
~race_eth,
des,
svytotal,
na.rm = TRUE
)
# Show results
print(kin_race_23) race_eth kinship_care se
Black, non-Hispanic Black, non-Hispanic 46678.65 13459.365
Hispanic Hispanic 115611.74 18227.020
Other, non-Hispanic Other, non-Hispanic 11729.48 8989.217
White, non-Hispanic White, non-Hispanic 88993.49 17630.631
# Results match Coda's!Relative Type Counts
# Calculate total number of children in kinship care in 2023 by relative type
kin_relative_23 <- svyby(
~kinship_care,
~relative_type,
des,
svytotal,
na.rm = TRUE
)
# Show results
print(kin_relative_23) relative_type kinship_care se
Grandchild Grandchild 103832.48 19118.27
Non-relative Non-relative 66954.71 15255.21
Other relative Other relative 64647.28 13795.05
Sibling Sibling 27578.89 10859.05
# Results match Coda's!Poverty Counts
# Filter for children in kinship care below 150% of the poverty line
kin_pov_children_23 <- kin_children_23 |>
filter(pov_below150 == 1)
# Create a survey design for children in poverty
des_pov <- svydesign(
ids = ~1,
weights = ~ASECWT,
data = kin_pov_children_23
)
# Calculate total number of children in kinship care below 150% poverty by relative type
kin_pov_relative_23 <- svyby(
~kinship_care,
~relative_type,
des_pov,
svytotal,
na.rm = TRUE
)
# Show results
print(kin_pov_relative_23) relative_type kinship_care se
Grandchild Grandchild 26498.61 8429.136
Non-relative Non-relative 15905.09 8665.328
Other relative Other relative 14509.59 6664.240
Sibling Sibling 20577.18 9653.519
# Results match Coda's!Counts by Year
# Filter for children under 18 (without filtering for just 2023)
children_all_years <- data |>
filter(AGE < 18)
# Create a binary indicator for being in kinship care
kin_children_all_years <- children_all_years |>
filter(!is.na(ASECWT)) |>
mutate(
kinship_care = ifelse(MOMLOC == 0 & POPLOC == 0 &
RELATE %in% c(0901, 0701, 1001, 1260), 1, 0)
)
# Create survey design for all years
des_all_years <- svydesign(
ids = ~1,
weights = ~ASECWT,
data = kin_children_all_years
)
# Calculate total number of children in kinship care by year
kin_yearly_totals <- svyby(
~kinship_care,
~YEAR,
des_all_years,
svytotal,
na.rm = TRUE
)
# Show results
print(kin_yearly_totals) YEAR kinship_care se
2009 2009 291087.7 23754.67
2010 2010 219779.1 20735.91
2011 2011 193667.9 19269.89
2012 2012 197378.2 21117.30
2013 2013 181774.7 19345.30
2014 2014 451162.7 47901.57
2015 2015 199937.3 21509.39
2016 2016 205168.8 21588.35
2017 2017 207121.5 22296.45
2018 2018 253879.4 26343.82
2019 2019 188189.1 21755.15
2020 2020 287488.1 30602.04
2021 2021 258891.4 28414.08
2022 2022 211050.8 27868.69
2023 2023 263013.4 30219.98
2024 2024 225909.1 28239.13
View(kin_yearly_totals)
# Results match Coda's!