From c6450cec25a5e2cf8f836c85630a0cf35b70a49f Mon Sep 17 00:00:00 2001 From: kkprinceton Date: Mon, 13 Feb 2017 02:38:08 -0500 Subject: [PATCH 01/19] Replaced name.clean() with census.surname() and modified other scripts --- R/census.helper.api.R | 42 +++++------ R/census.surname.R | 137 +++++++++++++++++++++++++++++++++ R/getCensusData.R | 42 ----------- R/name.clean.R | 94 ----------------------- R/race.pred.R | 163 ++++++++++++++++------------------------ data/names.all.RData | Bin 2705482 -> 0 bytes data/surnames2000.RData | Bin 0 -> 2705486 bytes data/surnames2010.RData | Bin 0 -> 3203641 bytes 8 files changed, 221 insertions(+), 257 deletions(-) create mode 100644 R/census.surname.R delete mode 100644 R/name.clean.R delete mode 100644 data/names.all.RData create mode 100644 data/surnames2000.RData create mode 100644 data/surnames2010.RData diff --git a/R/census.helper.api.R b/R/census.helper.api.R index 6e18eae..28a0986 100644 --- a/R/census.helper.api.R +++ b/R/census.helper.api.R @@ -9,7 +9,7 @@ #' #' @param key A required character object. Must contain user's Census API #' key, which can be requested \href{http://api.census.gov/data/key_signup.html}{here}. -#' @param voters An object of class \code{data.frame}. Must contain field(s) +#' @param voter.file An object of class \code{data.frame}. Must contain field(s) #' named \code{\var{county}}, \code{\var{tract}}, and/or \code{\var{block}} #' specifying geolocation. These should be character variables that match up with #' U.S. Census categories. County should be three characters (e.g., "031" not "31"), @@ -30,8 +30,8 @@ #' #' @examples #' \dontshow{data(voters)} -#' \dontrun{census.helper.api(key = "...", voters = voters, states = "nj", geo = "block")} -#' \dontrun{census.helper.api(key = "...", voters = voters, states = "all", geo = "tract", +#' \dontrun{census.helper.api(key = "...", voter.file = voters, states = "nj", geo = "block")} +#' \dontrun{census.helper.api(key = "...", voter.file = voters, states = "all", geo = "tract", #' demo = TRUE)} #' #' @references @@ -39,7 +39,7 @@ #' available \href{http://rstudio-pubs-static.s3.amazonaws.com/19337_2e7f827190514c569ea136db788ce850.html}{here}. #' #' @export -census.helper.api.online <- function(key, voters, states = "all", geo = "tract", demo = FALSE) { +census.helper.api.online <- function(key, voter.file, states = "all", geo = "tract", demo = FALSE) { if (missing(key)) { stop('Must enter U.S. Census API key, which can be requested at http://api.census.gov/data/key_signup.html.') @@ -47,7 +47,7 @@ census.helper.api.online <- function(key, voters, states = "all", geo = "tract", states <- toupper(states) if (states == "ALL") { - states <- toupper(as.character(unique(voters$state))) + states <- toupper(as.character(unique(voter.file$state))) } df.out <- NULL @@ -142,7 +142,7 @@ census.helper.api.online <- function(key, voters, states = "all", geo = "tract", census$r_oth <- (census$P0050005 + census$P0050008 + census$P0050009) / (sum(census$P0050005) + sum(census$P0050008) + sum(census$P0050009)) #Pr(Tract | AI/AN, Other, or Mixed) drop <- grep("P005", names(census)) - voters.census <- merge(voters[toupper(voters$state) == toupper(states[s]), ], census[, -drop], by = geo.merge, all.x = T) + voters.census <- merge(voter.file[toupper(voter.file$state) == toupper(states[s]), ], census[, -drop], by = geo.merge, all.x = T) } @@ -179,7 +179,7 @@ census.helper.api.online <- function(key, voters, states = "all", geo = "tract", } drop <- grep("P012", names(census)) - voters.census <- merge(voters[toupper(voters$state) == toupper(states[s]), ], census[, -drop], by = geo.merge, all.x = T) + voters.census <- merge(voter.file[toupper(voter.file$state) == toupper(states[s]), ], census[, -drop], by = geo.merge, all.x = T) ## Add Census Age Categories voters.census$agecat <- NA @@ -233,7 +233,7 @@ census.helper.api.online <- function(key, voters, states = "all", geo = "tract", #' at the tract or block level using the 'UScensus2010' package. Census data #' calculated are Pr(Geolocation | Race) where geolocation is tract or block. #' -#' @param voters An object of class \code{data.frame}. Must contain field(s) +#' @param voter.file An object of class \code{data.frame}. Must contain field(s) #' named \code{\var{county}}, \code{\var{tract}}, and/or \code{\var{block}} #' specifying geolocation. These should be character variables that match up with #' U.S. Census categories. County should be three characters (e.g., "031" not "31"), @@ -255,15 +255,15 @@ census.helper.api.online <- function(key, voters, states = "all", geo = "tract", #' #' @examples #' \dontshow{data(voters)} -#' \dontrun{census.helper.api.local(voters = voters, states = "nj", geo = "block", census.data = x)} -#' \dontrun{census.helper.api.local(voters = voters, states = "all", geo = "tract", demo = TRUE, census.data = x)} +#' \dontrun{census.helper.api.local(voter.file = voters, states = "nj", geo = "block", census.data = x)} +#' \dontrun{census.helper.api.local(voter.file = voters, states = "all", geo = "tract", demo = TRUE, census.data = x)} #' #' @references #' Relies on getCensusApi, getCensusApi2, and vecToChunk functions authored by Nicholas Nagle, #' available \href{http://rstudio-pubs-static.s3.amazonaws.com/19337_2e7f827190514c569ea136db788ce850.html}{here}. #' #' @export -census.helper.api.local <- function(voters, states = "all", geo = "tract", demo = FALSE, census.data = NA) { +census.helper.api.local <- function(voter.file, states = "all", geo = "tract", demo = FALSE, census.data = NA) { if (is.na(census.data)) { stop('Without pre-downloaded census data, please use census.helper.api to access http://api.census.gov/data/key_signup.html.') @@ -271,7 +271,7 @@ census.helper.api.local <- function(voters, states = "all", geo = "tract", demo states <- toupper(states) if (states == "ALL") { - states <- toupper(as.character(unique(voters$state))) + states <- toupper(as.character(unique(voter.file$state))) } df.out <- NULL @@ -313,7 +313,7 @@ census.helper.api.local <- function(voters, states = "all", geo = "tract", demo census$r_oth <- (census$P0050005 + census$P0050008 + census$P0050009) / (sum(census$P0050005) + sum(census$P0050008) + sum(census$P0050009)) #Pr(Tract | AI/AN, Other, or Mixed) drop <- grep("P005", names(census)) - voters.census <- merge(voters[toupper(voters$state) == toupper(state), ], census[, -drop], by = geo.merge, all.x = T) + voters.census <- merge(voter.file[toupper(voter.file$state) == toupper(state), ], census[, -drop], by = geo.merge, all.x = T) } @@ -350,7 +350,7 @@ census.helper.api.local <- function(voters, states = "all", geo = "tract", demo } drop <- grep("P012", names(census)) - voters.census <- merge(voters[toupper(voters$state) == toupper(state), ], census[, -drop], by = geo.merge, all.x = T) + voters.census <- merge(voter.file[toupper(voter.file$state) == toupper(state), ], census[, -drop], by = geo.merge, all.x = T) ## Add Census Age Categories voters.census$agecat <- NA @@ -406,7 +406,7 @@ census.helper.api.local <- function(voters, states = "all", geo = "tract", demo #' #' @param key A required character object. Must contain user's Census API #' key, which can be requested \href{http://api.census.gov/data/key_signup.html}{here}. -#' @param voters An object of class \code{data.frame}. Must contain field(s) +#' @param voter.file An object of class \code{data.frame}. Must contain field(s) #' named \code{\var{county}}, \code{\var{tract}}, and/or \code{\var{block}} #' specifying geolocation. These should be character variables that match up with #' U.S. Census categories. County should be three characters (e.g., "031" not "31"), @@ -429,8 +429,8 @@ census.helper.api.local <- function(voters, states = "all", geo = "tract", demo #' #' @examples #' \dontshow{data(voters)} -#' \dontrun{census.helper.api(key = "...", voters = voters, states = "nj", geo = "block")} -#' \dontrun{census.helper.api(key = "...", voters = voters, states = "all", geo = "tract", +#' \dontrun{census.helper.api(key = "...", voter.file = voters, states = "nj", geo = "block")} +#' \dontrun{census.helper.api(key = "...", voter.file = voters, states = "all", geo = "tract", #' demo = TRUE)} #' #' @references @@ -438,7 +438,7 @@ census.helper.api.local <- function(voters, states = "all", geo = "tract", demo #' available \href{http://rstudio-pubs-static.s3.amazonaws.com/19337_2e7f827190514c569ea136db788ce850.html}{here}. #' #' @export -census.helper.api <- function(key, voters, states = "all", geo = "tract", demo = FALSE, census.data = NA) { +census.helper.api <- function(key, voter.file, states = "all", geo = "tract", demo = FALSE, census.data = NA) { if (is.na(census.data) || (typeof(census.data) != "list")) { toDownload = TRUE @@ -454,7 +454,7 @@ census.helper.api <- function(key, voters, states = "all", geo = "tract", demo = states <- toupper(states) if (states == "ALL") { - states <- toupper(as.character(unique(voters$state))) + states <- toupper(as.character(unique(voter.file$state))) } df.out <- NULL @@ -502,7 +502,7 @@ census.helper.api <- function(key, voters, states = "all", geo = "tract", demo = census$r_oth <- (census$P0050005 + census$P0050008 + census$P0050009) / (sum(census$P0050005) + sum(census$P0050008) + sum(census$P0050009)) #Pr(Tract | AI/AN, Other, or Mixed) drop <- grep("P005", names(census)) - voters.census <- merge(voters[toupper(voters$state) == toupper(states[s]), ], census[, -drop], by = geo.merge, all.x = T) + voters.census <- merge(voter.file[toupper(voter.file$state) == toupper(states[s]), ], census[, -drop], by = geo.merge, all.x = T) } @@ -539,7 +539,7 @@ census.helper.api <- function(key, voters, states = "all", geo = "tract", demo = } drop <- grep("P012", names(census)) - voters.census <- merge(voters[toupper(voters$state) == toupper(states[s]), ], census[, -drop], by = geo.merge, all.x = T) + voters.census <- merge(voter.file[toupper(voter.file$state) == toupper(states[s]), ], census[, -drop], by = geo.merge, all.x = T) ## Add Census Age Categories voters.census$agecat <- NA diff --git a/R/census.surname.R b/R/census.surname.R new file mode 100644 index 0000000..affedb6 --- /dev/null +++ b/R/census.surname.R @@ -0,0 +1,137 @@ +#' Name matching function. +#' +#' \code{census.surname} merges surnames in user-input dataset with corresponding +#' race/ethnicity probabilities from U.S. Census Surname List and Spanish Surname List. +#' +#' This function allows users to match surnames in their dataset with the U.S. +#' Census Surname List (from 2000 or 2010) and Spanish Surname List to obtain +#' Pr(Race | Surname) for each of the five major racial groups. +#' +#' By default, the function matches surnames to the Census list as follows +#' (each step only applies to surnames not matched in previous steps): +#' 1) Match raw surnames with Census data; +#' 2) Remove any spaces and search again; +#' 3) Remove any apostrophes and search again; +#' 4) Split double-barreled surnames into two names and match on first; +#' 5) Split double-barreled surnames into two names and match on second; +#' 6) For any remaining names, impute probabilities using distribution +#' for all names not appearing on Census list. +#' +#' Note: Any name appearing only on the Spanish Surname List is assigned a +#' probability of 1 for Hispanics/Latinos and 0 for all other racial groups. +#' +#' @param voter.file An object of class \code{data.frame}. Must contain a field +#' named 'surname' containing list of surnames to be merged with Census lists. +#' @param census.year An object of class \code{numeric} indicating which year +#' Census Surname List is from. Accepted values are \code{2010} and \code{2000}. +#' Default is \code{2010}. +#' @param clean.surname A \code{TRUE}/\code{FALSE} object. If \code{TRUE}, +#' \code{clean.surname} function will be run to clean raw surnames in +#' \code{\var{voter.file}} before matching them with Census lists, +#' in order to increase the chance of finding a match. +#' See \code{clean.surname} documentation for details. +#' Default is \code{TRUE}. +#' @param impute.missing A \code{TRUE}/\code{FALSE} object. If \code{TRUE}, +#' race/ethnicity probabilities will be imputed for unmatched names using +#' race/ethnicity distribution for all other names (i.e., not on Census List). +#' Default is \code{TRUE}. +#' @return Output will be an object of class \code{data.frame}. It will +#' consist of the original user-input data with additional columns that +#' specify the part of the name matched with Census data (\code{\var{surname.match}}), +#' and the probabilities Pr(Race | Surname) for each racial group +#' (\code{\var{p_whi}} for White, \code{\var{p_bla}} for Black, +#' \code{\var{p_his}} for Hispanic/Latino, +#' \code{\var{p_asi}} for Asian and Pacific Islander, and +#' \code{\var{p_oth}} for Other/Mixed). +#' +#' @import devtools +#' +#' @examples +#' data(voter.file) +#' census.surname(voter.file) +#' +#' @export +census.surname <- function(voter.file, census.year = 2010, clean.surname = T, impute.missing = T) { + + if ("surname" %in% names(voter.file) == F) { + stop('Data does not contain surname field.') + } + + ## Census Surname List + if (census.year == 2000) { + surnames <- surnames2000 + } + surnames$surname <- as.character(surnames$surname) + + p_eth <- c("p_whi", "p_bla", "p_his", "p_asi", "p_oth") + + ## Convert Surnames in Voter File to Upper Case + df <- voter.file + df$caseid <- 1:nrow(df) + df$surname.match <- df$surname.upper <- toupper(as.character(df$surname)) + + ## Merge Surnames with Census List (No Cleaning Yet) + df <- merge(df[names(df) %in% p_eth == F], surnames[c("surname", p_eth)], by.x = "surname.match", by.y = "surname", all.x = TRUE) + df[df$surname.upper %in% surnames$surname == F, ]$surname.match <- "" + + df1 <- df[df$surname.upper %in% surnames$surname, ] #Matched surnames + df2 <- df[df$surname.upper %in% surnames$surname == F, ] #Unmatched surnames + + ## Clean Surnames (if Specified by User) + if (clean.surname) { + + ## Remove Spaces and Try Merge Again + df2$surname.match <- gsub(" ","", df2$surname.upper) + df2 <- merge(df2[names(df2) %in% p_eth == F], surnames[c("surname", p_eth)], by.x = "surname.match", by.y = "surname", all.x = TRUE) + if (nrow(df2[df2$surname.match %in% surnames$surname, ]) > 0) { + df1 <- rbind(df1, df2[df2$surname.match %in% surnames$surname, ]) + df2 <- df2[df2$surname.match %in% surnames$surname == F, ] + df2$surname.match <- "" + } + + ## Remove Apostrophes and Try Merge Again + df2$surname.match <- gsub("'","", df2$surname.upper) + df2 <- merge(df2[names(df2) %in% p_eth == F], surnames[c("surname", p_eth)], by.x = "surname.match", by.y = "surname", all.x = TRUE) + if (nrow(df2[df2$surname.match %in% surnames$surname, ]) > 0) { + df1 <- rbind(df1, df2[df2$surname.match %in% surnames$surname, ]) + df2 <- df2[df2$surname.match %in% surnames$surname == F, ] + df2$surname.match <- "" + } + + ## Names with Hyphens or Spaces, e.g. Double-Barreled Names + df2$surname2 <- df2$surname1 <- NA + df2$surname1[grep("-", df2$surname.upper)] <- sapply(strsplit(grep("-", df2$surname.upper, value = T), "-"), "[", 1) + df2$surname2[grep("-", df2$surname.upper)] <- sapply(strsplit(grep("-", df2$surname.upper, value = T), "-"), "[", 2) + df2$surname1[grep(" ", df2$surname.upper)] <- sapply(strsplit(grep(" ", df2$surname.upper, value = T), " "), "[", 1) + df2$surname2[grep(" ", df2$surname.upper)] <- sapply(strsplit(grep(" ", df2$surname.upper, value = T), " "), "[", 2) + + ## Use first half of name to merge in priors + df2$surname.match <- as.character(df2$surname1) + df2 <- merge(df2[names(df2) %in% c(p_eth) == F], surnames[c("surname", p_eth)], by.x = "surname.match", by.y = "surname", all.x = TRUE)[names(df2)] + if (nrow(df2[df2$surname.match %in% surnames$surname, ]) > 0) { + df1 <- rbind(df1, df2[df2$surname.match %in% surnames$surname, names(df2) %in% names(df1)]) + df2 <- df2[df2$surname.match %in% surnames$surname == F, ] + df2$surname.match <- "" + } + + ## Use second half of name to merge in priors for rest + df2$surname.match <- as.character(df2$surname2) + df2 <- merge(df2[names(df2) %in% c(p_eth, "surname1", "surname2") == F], surnames[c("surname", p_eth)], by.x = "surname.match", by.y = "surname", all.x = TRUE)[names(df2) %in% c("surname1", "surname2") == F] + if (nrow(df2[df2$surname.match %in% surnames$surname, ]) > 0) { + df1 <- rbind(df1, df2[df2$surname.match %in% surnames$surname, names(df2) %in% names(df1)]) + df2 <- df2[df2$surname.match %in% surnames$surname == F, ] + df2$surname.match <- "" + } + } + + ## Impute priors for names not on Census lists + if (impute.missing) { + if (nrow(df2) > 0) { + df2$p_whi <- .6665; df2$p_bla <- .0853; df2$p_his <- .1367; df2$p_asi <- .0797; df2$p_oth <- .0318 + } + warning(paste("Probabilities were imputed for", nrow(df2), ifelse(nrow(df2) == 1, "surname.", "surnames."))) + } else warning(paste(nrow(df2), ifelse(nrow(df2) == 1, "surname was", "surnames were"), "not matched.")) + + df <- rbind(df1, df2) + return(df[order(df$caseid), c(names(voter.file), "surname.match", p_eth)]) +} diff --git a/R/getCensusData.R b/R/getCensusData.R index 795d009..6626160 100644 --- a/R/getCensusData.R +++ b/R/getCensusData.R @@ -128,9 +128,6 @@ censusData <- function(key, state, geo = "tract", demo = FALSE) { census$r_asi <- (census$P0050006 + census$P0050007) / (sum(census$P0050006) + sum(census$P0050007)) #Pr(Tract | Asian or NH/PI) census$r_oth <- (census$P0050005 + census$P0050008 + census$P0050009) / (sum(census$P0050005) + sum(census$P0050008) + sum(census$P0050009)) #Pr(Tract | AI/AN, Other, or Mixed) - # drop <- grep("P005", names(census)) - # voters.census <- merge(voters[toupper(voters$state) == toupper(state), ], census[, -drop], by = geo.merge, all.x = T) - } if (demo == T) { @@ -165,49 +162,10 @@ censusData <- function(key, state, geo = "tract", demo = FALSE) { } } - # drop <- grep("P012", names(census)) - # voters.census <- merge(voters[toupper(voters$state) == toupper(state), ], census[, -drop], by = geo.merge, all.x = T) - - ## Add Census Age Categories - # voters.census$agecat <- NA - # voters.census$agecat <- ifelse(voters.census$age >= 18 & voters.census$age <= 19, 5, voters.census$agecat) - # voters.census$agecat <- ifelse(voters.census$age == 20, 6, voters.census$agecat) - # voters.census$agecat <- ifelse(voters.census$age == 21, 7, voters.census$agecat) - # voters.census$agecat <- ifelse(voters.census$age >= 22 & voters.census$age <= 24, 8, voters.census$agecat) - # voters.census$agecat <- ifelse(voters.census$age >= 25 & voters.census$age <= 29, 9, voters.census$agecat) - # voters.census$agecat <- ifelse(voters.census$age >= 30 & voters.census$age <= 34, 10, voters.census$agecat) - # voters.census$agecat <- ifelse(voters.census$age >= 35 & voters.census$age <= 39, 11, voters.census$agecat) - # voters.census$agecat <- ifelse(voters.census$age >= 40 & voters.census$age <= 44, 12, voters.census$agecat) - # voters.census$agecat <- ifelse(voters.census$age >= 45 & voters.census$age <= 49, 13, voters.census$agecat) - # voters.census$agecat <- ifelse(voters.census$age >= 50 & voters.census$age <= 54, 14, voters.census$agecat) - # voters.census$agecat <- ifelse(voters.census$age >= 55 & voters.census$age <= 59, 15, voters.census$agecat) - # voters.census$agecat <- ifelse(voters.census$age >= 60 & voters.census$age <= 61, 16, voters.census$agecat) - # voters.census$agecat <- ifelse(voters.census$age >= 62 & voters.census$age <= 64, 17, voters.census$agecat) - # voters.census$agecat <- ifelse(voters.census$age >= 65 & voters.census$age <= 66, 18, voters.census$agecat) - # voters.census$agecat <- ifelse(voters.census$age >= 67 & voters.census$age <= 69, 19, voters.census$agecat) - # voters.census$agecat <- ifelse(voters.census$age >= 70 & voters.census$age <= 74, 20, voters.census$agecat) - # voters.census$agecat <- ifelse(voters.census$age >= 75 & voters.census$age <= 79, 21, voters.census$agecat) - # voters.census$agecat <- ifelse(voters.census$age >= 80 & voters.census$age <= 84, 22, voters.census$agecat) - # voters.census$agecat <- ifelse(voters.census$age >= 85, 23, voters.census$agecat) - - # for (i in 1:length(eth.cen)) { - # for (j in 5:23) { - # voters.census[voters.census$sex == 0 & voters.census$agecat == j, - # paste("r", eth.cen[i], sep = "_")] <- voters.census[paste("r_mal", j, eth.cen[i], sep = "_")] - # voters.census[voters.census$sex == 1 & voters.census$agecat == j, - # paste("r", eth.cen[i], sep = "_")] <- voters.census[paste("r_fem", j, eth.cen[i], sep = "_")] - # } - # } - - # drop <- c(grep("_mal_", names(voters.census)), grep("_fem_", names(voters.census))) - # voters.census <- voters.census[, -drop] } - # df.out <- as.data.frame(rbind(df.out, voters.census[names(voters.census) != "agecat"])) - } - # return(df.out) return(census) } diff --git a/R/name.clean.R b/R/name.clean.R deleted file mode 100644 index 9289dfc..0000000 --- a/R/name.clean.R +++ /dev/null @@ -1,94 +0,0 @@ -#' Name cleaning and matching function. -#' -#' \code{name.clean} cleans surnames in user-input dataset and merges in racial -#' distributions from the Census Surname List and Census Spanish Surname List. -#' -#' This function allows users to match surnames in their dataset with the U.S. -#' Census 2000 Surname List to obtain Pr(Race | Surname) for each of the -#' five major racial groups. The function matches user-input surnames with -#' Census surnames as follows (each step only applies to surnames not matched -#' in previous steps): -#' 1) match raw surnames with Census data; -#' 2) remove any spaces and search again; -#' 3) split apart double-barreled surnames into two names and match on first; -#' 4) split apart double-barreled surnames into two names and match on second; -#' 5) for any remaining names, impute probabilities from overall U.S. population. -#' Note: Any name appearing only on the Spanish Surname List is assigned a -#' probability of 1 for Hispanics/Latinos and 0 for all other racial groups. -#' -#' @param voters An object of class \code{data.frame}. Must contain a field -#' named 'surname'. -#' @return Output will be an object of class \code{data.frame}. It will -#' consist of the original user-input data with additional columns that -#' specify the part of the name matched with Census data (\code{\var{surname.match}}), -#' and the probabilities Pr(Race | Surname) for each racial group -#' (\code{\var{p_whi}} for Whites, \code{\var{p_bla}} for Blacks, -#' \code{\var{p_his}} for Hispanics/Latinos, \code{\var{p_asi}} for Asians, and -#' \code{\var{p_oth}} for Others). -#' -#' @import devtools -#' -#' @examples -#' data(voters) -#' name.clean(voters) -#' -#' @export -name.clean <- function(voters) { - - if ("surname" %in% names(voters) == F) { - stop('Data does not contain surname field.') - } - names.all$surname <- as.character(names.all$surname) - - p_eth <- c("p_whi", "p_bla", "p_his", "p_asi", "p_oth") - - ## Convert Surnames to Upper Case - df1 <- voters - df1$surname.upper <- df1$surname.match <- toupper(as.character(df1$surname)) - - ## Merge Surname Priors (No Cleaning Yet) - df2 <- merge(df1[names(df1) %in% p_eth == F], names.all[c("surname", p_eth)], by.x = "surname.match", by.y = "surname", all.x = TRUE) - - ## Remove Spaces and Merge Again - df2$surname.match <- gsub(" ","", df2$surname.upper) - df3 <- merge(df2[names(df2) %in% p_eth == F], names.all[c("surname", p_eth)], by.x = "surname.match", by.y = "surname", all.x = TRUE) - - ## Names with Hyphens or Spaces, e.g. Double-Barreled Names - df3$nomatch <- 0 - if (nrow(df3[df3$surname.upper %in% names.all$surname == F, ]) > 0) { - df3[df3$surname.upper %in% names.all$surname == F, ]$nomatch <- 1 - } - df3$surname1 <- NA - df3$surname2 <- NA - df3[df3$nomatch == 1, ]$surname1[grep("-", df3[df3$nomatch == 1, ]$surname.upper)] <- sapply(strsplit(grep("-", df3$surname.upper, value = T), "-"), "[", 1) - df3[df3$nomatch == 1, ]$surname2[grep("-", df3[df3$nomatch == 1, ]$surname.upper)] <- sapply(strsplit(grep("-", df3$surname.upper, value = T), "-"), "[", 2) - df3[df3$nomatch == 1, ]$surname1[grep(" ", df3[df3$nomatch == 1, ]$surname.upper)] <- sapply(strsplit(grep(" ", df3$surname.upper, value = T), " "), "[", 1) - df3[df3$nomatch == 1, ]$surname2[grep(" ", df3[df3$nomatch == 1, ]$surname.upper)] <- sapply(strsplit(grep(" ", df3$surname.upper, value = T), " "), "[", 2) - - ## Use first half of name to merge in priors - df3[df3$nomatch == 1, ]$surname.match <- as.character(df3[df3$nomatch == 1 , ]$surname1) - df3[df3$nomatch == 1, ] <- merge(df3[df3$nomatch == 1, names(df3) %in% p_eth == F], names.all[c("surname", p_eth)], by.x = "surname.match", by.y = "surname", all.x = TRUE)[names(df3)] - df3$nomatch <- 0 - if (nrow(df3[df3$surname.match %in% names.all$surname == F, ]) > 0) { - df3[df3$surname.match %in% names.all$surname == F, ]$nomatch <- 1 - } - - ## Use second half of name to merge in priors for rest - df3[df3$nomatch == 1, ]$surname.match <- as.character(df3[df3$nomatch == 1 , ]$surname2) - df3[df3$nomatch == 1, ] <- merge(df3[df3$nomatch == 1, names(df3) %in% p_eth == F], names.all[c("surname", p_eth)], by.x = "surname.match", by.y = "surname", all.x = TRUE)[names(df3)] - df3$nomatch <- 0 - if (nrow(df3[df3$surname.match %in% names.all$surname == F, ]) > 0) { - df3[df3$surname.match %in% names.all$surname == F, ]$nomatch <- 1 - } - - ## Impute priors for names not on Census 2000 surname list or Spanish surname list - if (nrow(df3[df3$nomatch == 1, ]) > 0) { - df3[df3$nomatch == 1, ]$p_whi <- .621 #.705 - df3[df3$nomatch == 1, ]$p_bla <- .132 #.113 - df3[df3$nomatch == 1, ]$p_his <- .174 #.111 - df3[df3$nomatch == 1, ]$p_asi <- .054 #.070 - df3[df3$nomatch == 1, ]$p_oth <- .019 #(neg) - } - - return(df3[c(names(voters), "surname.match", p_eth)]) -} diff --git a/R/race.pred.R b/R/race.pred.R index ce7590e..d323cec 100644 --- a/R/race.pred.R +++ b/R/race.pred.R @@ -5,11 +5,11 @@ #' This function implements the Bayesian race prediction methods outlined in #' Imai and Khanna (2015). The function produces probabilistic estimates of #' individual-level race/ethnicity, based on surname, geolocation, and party. -#' @param voters An object of class \code{data.frame}. Must contain a row for each individual being +#' @param voter.file An object of class \code{data.frame}. Must contain a row for each individual being #' predicted, as well as a field named \code{\var{surname}} containing each individual's surname. -#' If using geolocation in predictions, \code{\var{voters}} must contain a field named \code{\var{state}}, +#' If using geolocation in predictions, \code{\var{voter.file}} must contain a field named \code{\var{state}}, #' which contains the two-character abbreviation for each individual's state of residence (e.g., "nj" for New Jersey). -#' If using geolocation, \code{\var{voters}} must also contain at least one of the following fields: +#' If using geolocation, \code{\var{voter.file}} must also contain at least one of the following fields: #' \code{\var{county}}, \code{\var{tract}}, and/or \code{\var{block}}. #' These fields should contain character strings matching U.S. Census categories. #' County is three characters (e.g., "031" not "31"), tract is six characters, and block is four characters. @@ -17,18 +17,19 @@ #' @param races A character vector specifying which racial groups to generate #' predicted probabilities for. Can include any subset of the default vector, #' which is \code{c("white", "black", "latino", "asian", "other")}. -#' @param name.clean A \code{TRUE}/\code{FALSE} object. If \code{TRUE}, function will call -#' \code{name.clean} to merge in data from U.S. Census 2000 Surname List -#' and Spanish Surname List. If \code{FALSE}, voters object must contain additional fields -#' specifying Pr(Race | Surname), named as follows: -#' \code{\var{p_whi}} for Whites, \code{\var{p_bla}} for Blacks, -#' \code{\var{p_his}} for Hispanics/Latinos, \code{\var{p_asi}} for Asians, -#' and/or \code{\var{p_oth}} for Other. Default is \code{TRUE}. -#' @param census An optional character vector specifying what level of +#' @param census.surname A \code{TRUE}/\code{FALSE} object. If \code{TRUE}, +#' function will call \code{census.surname} to merge in Pr(Race | Surname) +#' from U.S. Census Surname List (2000 or 2010) and Spanish Surname List. +#' If \code{FALSE}, \code{voter.file} object must contain additional fields specifying +#' Pr(Race | Surname), named as follows: \code{\var{p_whi}} for Whites, +#' \code{\var{p_bla}} for Blacks, \code{\var{p_his}} for Hispanics/Latinos, +#' \code{\var{p_asi}} for Asians, and/or \code{\var{p_oth}} for Other. +#' Default is \code{TRUE}. +#' @param census.geo An optional character vector specifying what level of #' geography to use to merge in U.S. Census 2010 data. Can be one of #' \code{"county"}, \code{"tract"}, or \code{"block"}. #' Function calls \code{census.helper.api} to merge in Census data at specified level. -#' If left unspecified, \code{voters} must contain additional fields +#' If left unspecified, \code{voter.file} must contain additional fields #' specifying Pr(Geolocation | Race), including any of the following: #' \code{\var{r_whi}}, \code{\var{r_bla}}, \code{\var{r_his}}, #' \code{\var{r_asi}}, and/or \code{\var{r_oth}}. @@ -39,13 +40,13 @@ #' condition race predictions on individual age and sex (in addition to geolocation). #' Default is \code{FALSE}. #' May only be set to \code{TRUE} if \code{census} option is specified. -#' If \code{TRUE}, \code{voters} should include numerical variables +#' If \code{TRUE}, \code{voter.file} should include numerical variables #' \code{\var{age}} and \code{\var{sex}}, where \code{\var{sex}} coded as 0 for #' males and 1 for females. -#' @param party An optional character object specifying party registration field in \code{\var{voters}}, +#' @param party An optional character object specifying party registration field in \code{\var{voter.file}}, #' e.g., \code{\var{party} = "PartyReg"}. If specified, race/ethnicity predictions will be conditioned #' on individual's party registration (in addition to geolocation). -#' Whatever the name of the party registration field in \code{\var{voters}}, +#' Whatever the name of the party registration field in \code{\var{voter.file}}, #' it should be coded as 1 for Democrat, 2 for Republican, and 0 for Other. #' @param census.data A census data object, a list indexed by state names, #' which contains census data on demo, county, tract and block. @@ -57,107 +58,85 @@ #' #' @examples #' data(voters) -#' race.pred(voters = voters, races = c("asian"), surname.only = TRUE) -#' \dontrun{race.pred(voters = voters, races = c("white", "black", "latino"), +#' race.pred(voter.file = voters, races = c("asian"), surname.only = TRUE) +#' \dontrun{race.pred(voter.file = voters, races = c("white", "black", "latino"), #' census = "tract", census.key = "...", demo = TRUE)} -#' \dontrun{race.pred(voters = voters, races = c("white", "black", "latino", "asian", "other"), +#' \dontrun{race.pred(voter.file = voters, races = c("white", "black", "latino", "asian", "other"), #' census = "tract", census.key = "...", party = "PID")} -#' \dontrun{race.pred(voters = voters, races = c("white", "black", "latino", "asian", "other"), +#' \dontrun{race.pred(voter.file = voters, races = c("white", "black", "latino", "asian", "other"), #' census = "tract", census.data = censusObjs, party = "PID")} #' @export ## Race Prediction Function -race.pred <- function(voters, races = c("white", "black", "latino", "asian", "other"), - name.clean = TRUE, surname.only = FALSE, - census = "", census.key = "", demo = FALSE, party, census.data = NA) { +race.pred <- function(voter.file, races = c("white", "black", "latino", "asian", "other"), + census.surname = TRUE, surname.only = FALSE, + census.geo, census.key, demo = FALSE, census.data = NA, party) { - vars.orig <- names(voters) + vars.orig <- names(voter.file) ## Subset user-specified races (maximum of five) eth <- c("whi", "bla", "his", "asi", "oth")[c("white", "black", "latino", "asian", "other") %in% races] - if (census == "" & demo == TRUE) { + if (surname.only == F & census.geo %in% c("county", "tract", "block") == F) { + surname.only <- T + warning("Proceeding with surname-only predictions because census.geo is improperly specified") + } + + if (surname.only == F & missing(census.key)) { + surname.only <- T + warning("Proceeding with surname-only predictions because census.key is missing") + } + + if (census.geo %in% c("county", "tract", "block") == F & demo == TRUE) { stop('Cannot set demo to TRUE without specifying census option.') } ## Merge in Pr(Race | Surname) if necessary - if (name.clean == TRUE) { - voters <- name.clean(voters) + if (census.surname == TRUE) { + voter.file <- census.surname(voter.file) } ## Surname-Only Predictions if (surname.only == TRUE) { for (k in 1:length(eth)) { - voters[paste("pred", eth[k], sep = ".")] <- voters[paste("p", eth[k], sep = "_")] + voter.file[paste("pred", eth[k], sep = ".")] <- voter.file[paste("p", eth[k], sep = "_")] } pred <- paste("pred", eth, sep = ".") - return(voters[c(vars.orig, pred)]) + return(voter.file[c(vars.orig, pred)]) } ## Merge in Pr(Party | Race) if necessary if (missing(party) == F) { - voters$PID <- voters[, party] - voters <- merge(voters, get("pid")[names(get("pid")) %in% "party" == F], by = "PID", all.x = T) + voter.file$PID <- voter.file[, party] + voter.file <- merge(voter.file, get("pid")[names(get("pid")) %in% "party" == F], by = "PID", all.x = T) } - if (census == "block") { + if (census.geo == "block") { oldw <- getOption("warn") options(warn = -1) warning("Extracting U.S. Census 2010 block-level data -- may take a long time!") - # - # if (is.na(census.data)) { - # voters <- census.helper.api.online(key = census.key, - # voters = voters, - # states = "all", - # geo = "block", - # demo = demo) - # } else { - # voters <- census.helper.api.local(voters = voters, - # state = toupper(unique(voters$state)[1]), - # geo = "block", - # demo = demo, - # census.data = census.data) - # } - # - - voters <- census.helper.api(key = census.key, - voters = voters, - states = "all", - geo = "block", - demo = demo, - census.data = census.data) + voter.file <- census.helper.api(key = census.key, + voter.file = voter.file, + states = "all", + geo = "block", + demo = demo, + census.data = census.data) options(warn = oldw) } - if (census == "precinct") { + if (census.geo == "precinct") { geo <- "precinct" stop('Error: census.helper function does not currently support merging precinct-level data.') } - if (census == "tract") { + if (census.geo == "tract") { oldw <- getOption("warn") options(warn = -1) warning("Extracting U.S. Census 2010 tract-level data -- may take a long time!") - # - # if (is.na(census.data)) { - # voters <- census.helper.api.online(key = census.key, - # voters = voters, - # states = "all", - # geo = "tract", - # demo = demo) - # } else { - # voters <- census.helper.api.local(voters = voters, - # state = toupper(unique(voters$state)[1]), - # geo = "tract", - # demo = demo, - # census.data = census.data) - # } - # - - voters <- census.helper.api(key = census.key, - voters = voters, + voter.file <- census.helper.api(key = census.key, + voter.file = voter.file, states = "all", geo = "tract", demo = demo, @@ -165,29 +144,13 @@ race.pred <- function(voters, races = c("white", "black", "latino", "asian", "ot options(warn = oldw) } - if (census == "county") { + if (census.geo == "county") { oldw <- getOption("warn") options(warn = -1) warning("Extracting U.S. Census 2010 county-level data -- may take a long time!") - # - # if (is.na(census.data)) { - # voters <- census.helper.api.online(key = census.key, - # voters = voters, - # states = "all", - # geo = "county", - # demo = demo) - # } else { - # voters <- census.helper.api.local(voters = voters, - # state = toupper(unique(voters$state)[1]), - # geo = "county", - # demo = demo, - # census.data = census.data) - # } - # - - voters <- census.helper.api(key = census.key, - voters = voters, + voter.file <- census.helper.api(key = census.key, + voter.file = voter.file, states = "all", geo = "county", demo = demo, @@ -198,29 +161,29 @@ race.pred <- function(voters, races = c("white", "black", "latino", "asian", "ot ## Pr(Race | Surname, Geolocation) if (missing(party)) { for (k in 1:length(eth)) { - voters[paste("u", eth[k], sep = "_")] <- voters[paste("p", eth[k], sep = "_")] * voters[paste("r", eth[k], sep = "_")] + voter.file[paste("u", eth[k], sep = "_")] <- voter.file[paste("p", eth[k], sep = "_")] * voter.file[paste("r", eth[k], sep = "_")] } - voters$u_tot <- apply(voters[paste("u", eth, sep = "_")], 1, sum, na.rm = T) + voter.file$u_tot <- apply(voter.file[paste("u", eth, sep = "_")], 1, sum, na.rm = T) for (k in 1:length(eth)) { - voters[paste("q", eth[k], sep = "_")] <- voters[paste("u", eth[k], sep = "_")] / voters$u_tot + voter.file[paste("q", eth[k], sep = "_")] <- voter.file[paste("u", eth[k], sep = "_")] / voter.file$u_tot } } ## Pr(Race | Surname, Geolocation, Party) if (missing(party) == F) { for (k in 1:length(eth)) { - voters[paste("u", eth[k], sep = "_")] <- voters[paste("p", eth[k], sep = "_")] * voters[paste("r", eth[k], sep = "_")] * voters[paste("r_pid", eth[k], sep = "_")] + voter.file[paste("u", eth[k], sep = "_")] <- voter.file[paste("p", eth[k], sep = "_")] * voter.file[paste("r", eth[k], sep = "_")] * voter.file[paste("r_pid", eth[k], sep = "_")] } - voters$u_tot <- apply(voters[paste("u", eth, sep = "_")], 1, sum, na.rm = T) + voter.file$u_tot <- apply(voter.file[paste("u", eth, sep = "_")], 1, sum, na.rm = T) for (k in 1:length(eth)) { - voters[paste("q", eth[k], sep = "_")] <- voters[paste("u", eth[k], sep = "_")] / voters$u_tot + voter.file[paste("q", eth[k], sep = "_")] <- voter.file[paste("u", eth[k], sep = "_")] / voter.file$u_tot } } for (k in 1:length(eth)) { - voters[paste("pred", eth[k], sep = ".")] <- voters[paste("q", eth[k], sep = "_")] + voter.file[paste("pred", eth[k], sep = ".")] <- voter.file[paste("q", eth[k], sep = "_")] } pred <- paste("pred", eth, sep = ".") - return(voters[c(vars.orig, pred)]) + return(voter.file[c(vars.orig, pred)]) } diff --git a/data/names.all.RData b/data/names.all.RData deleted file mode 100644 index 604bf8c3dcbaa3f4aa4ebf51ea48bda895b23a41..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2705482 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