#r
#r
Вопрос:
Итак, я использую пакет ‘babynames’ в rstudio и пытаюсь получить 35 наиболее распространенных унисекс-имен. Я пытаюсь ранжировать имена на основе среднеквадратичной ошибки из строки 50 на 50 (однако я не уверен, как это сделать). Любая помощь была бы с благодарностью принята! (Также под своим кодом я помещу ‘справочный код’, который нам дали, который включает в себя 35 лучших имен для мужчин)
Ссылочный код:
actual_names <- c("Jessie", "Marion", "Jackie", "Alva", "Ollie",
"Jody", "Cleo", "Kerry", "Frankie", "Guadalupe",
"Carey", "Tommie", "Angel", "Hollis", "Sammie",
"Jamie", "Kris", "Robbie", "Tracy", "Merrill",
"Noel", "Rene", "Johnnie", "Ariel", "Jan",
"Devon", "Cruz", "Michel", "Gale", "Robin",
"Dorian", "Casey", "Dana", "Kim", "Shannon")
Комментарии:
1. Я бы предложил объединить общее количество мужчин и женщин по каждому имени, что-то вроде
babynames %>% filter(year >= 1930, year <= 2012) %>% count(name, sex, wt = n) %>% spread(sex, n)
. Затем вы могли быmutate
из двух результирующих столбцов получить процентное разделение и связанную с ним среднеквадратичную ошибку 50/50.
Ответ №1:
Я думаю, есть несколько способов ответить на поставленный вопрос, поскольку существует компромисс между «наиболее популярным» и «наиболее унисексным».
Вот способ подготовить данные для сбора некоторой статистики для каждого имени.
library(babynames)
library(tidyverse)
babynames_share <-
babynames %>%
filter(year >= 1930, year <= 2012) %>%
count(name, sex, wt = n) %>%
spread(sex, n, fill = 0) %>%
mutate(Total = F M,
F_share = F / Total,
MS_50 = ((F_share-0.5)^2
(0.5-F_share)^2) / 2)
Похоже, что около 100 имен имеют идеальное соотношение полов — но все они довольно необычны:
babynames_share %>%
filter(F == M) %>%
arrange(-Total)
# A tibble: 100 x 6
name F M Total F_share RMS_50
<chr> <dbl> <dbl> <dbl> <dbl> <dbl>
1 Tyjae 157 157 314 0.5 0
2 Callaway 128 128 256 0.5 0
3 Avyn 100 100 200 0.5 0
4 Zarin 92 92 184 0.5 0
5 Tkai 72 72 144 0.5 0
6 Rayen 57 57 114 0.5 0
7 Meco 43 43 86 0.5 0
8 Pele 40 40 80 0.5 0
9 Nijay 35 35 70 0.5 0
10 Mako 27 27 54 0.5 0
# … with 90 more rows
Или мы могли бы выбрать некоторый произвольный порог для того, что считается унисекс. В приведенном выше примере я рассчитал среднеквадратичную ошибку для процентных долей женщин и мужчин. Мы можем построить график так, чтобы в верхней части отображались имена с разбивкой по полу (по этому показателю MS_50 превышает 0,25), а в нижней части — имена с разделением на мужчин и женщин. Но для меня не очевидно, как далеко мы должны зайти, чтобы считать имя унисекс. Является ли Кейси, который на 58,9% мужчина, следовательно, с ошибкой в квадрате 8,9% ^ 2 = 0,79%, однополым? Или нам нужно перейти к Джесси, которая на 50,8% состоит из мужчин?
babynames_share %>%
ggplot(data = .,
aes(Total, MS_50, label = name))
geom_point(size = 0.2, alpha = 0.1, color = "gray30")
geom_text(data = . %>% filter(Total > 10000),
check_overlap = TRUE, size = 3)
scale_x_log10(breaks = c(10^(1:7)),
labels = scales::comma)
На уровне гендерного равенства «Кейси», вот 35 лучших:
unisex_names <- babynames_share %>%
filter(MS_50 <= 0.00796) %>%
arrange(-Total) %>%
top_n(35, wt = Total)
Также интересно увидеть весь спектр имен, большинство из которых мужские внизу, женские вверху и унисекс в середине:
babynames_share %>%
ggplot(data = .,
aes(Total, F_share, label = name))
geom_point(size = 0.2, alpha = 0.1, color = "gray30")
geom_text(data = . %>% filter(Total > 10000),
check_overlap = TRUE, size = 2)
scale_x_log10(breaks = c(10^(1:7)),
labels = scales::comma)
Комментарии:
1. Большое спасибо за вашу помощь! Насколько я понимаю, нет определенного места для «end», чтобы считать имя унисекс. Тем не менее, я просмотрел все имена в списке по отдельности, и все имена содержат в общей сложности как минимум 9000 дочерних элементов за период 1930-2012 годов с таким именем.
2. Я отредактировал выше, чтобы было понятнее, что вы могли бы использовать определение «такой же унисекс, как Кейси», чтобы получить список самых популярных мужских имен. Однако это всего лишь одно определение / пороговое значение — если вы имеете в виду что-то конкретное, пожалуйста, включите это в вопрос.