R-скрипт анализа Конухова Анастасия: различия между версиями

Материал из Поле цифровой дидактики
Нет описания правки
Нет описания правки
 
(не показана 1 промежуточная версия этого же участника)
Строка 246: Строка 246:
| moreira salles || 4
| moreira salles || 4
|}
|}
=== Топ слов по странам ===
=== Топ-5 слов по странам ===
[[Файл:Код R 1.png|300px|thumb|right|Топ слов по странам]]
[[Файл:Код R 1.png|300px|thumb|right|Топ-5 слов по странам]]
{| class="wikitable"
{| class="wikitable"
! Страна !! Слово !! Частота
! Страна !! Слово !! Частота
Строка 260: Строка 260:
|-
|-
| China || chen || 7
| China || chen || 7
|-
| China || wei || 7
|-
|-
| Germany || family || 15
| Germany || family || 15
Строка 269: Строка 271:
| Germany || oetker || 8
| Germany || oetker || 8
|}
|}
 
Там таблица еще строки есть дополнительные, но очень длинная получится, поэтому выше только ее часть.
=== Распределение количества слов в имени ===
=== Распределение количества слов в имени ===
[[Файл:Код R 2.png|300px|thumb|right|Распределение количества слов в имени]]
[[Файл:Код R 2.png|300px|thumb|right|Распределение количества слов в имени]]

Текущая версия от 16:41, 10 июня 2026

Страница создана Конуховой Анастасией, ИНФА-221.

Описание датасета

Датасет Billionaires содержит информацию о миллиардерах мира:https://corgis-edu.github.io/corgis/datasets/csv/billionaires/billionaires.csv

Датасет был взят с Категория:Dataset

Код R-скрипта

Код R-скрипта в RStudio
library(tidyverse)

data <- read_csv("https://corgis-edu.github.io/corgis/datasets/csv/billionaires/billionaires.csv")

glimpse(data)

total_records <- nrow(data)
print(paste("Всего миллиардеров в датасете:", total_records))

total_words_names <- sum(str_count(data$name, "\\S+"))
print(paste("Всего слов в именах миллиардеров:", total_words_names))

top10_names <- data %>%
  separate_rows(name, sep = " ") %>%
  count(word = name, sort = TRUE) %>%
  head(10)

print("10 самых частых слов в именах миллиардеров:")
print(top10_names)

top_countries <- data %>%
  count(country = `location.citizenship`, sort = TRUE) %>%
  head(10)
print("Топ-10 стран по числу миллиардеров:")
print(top_countries)


Результаты анализа

Показатель Значение
Общее количество миллиардеров 2614
Общее количество слов в именах 5908

10 самых частых слов в именах

Результаты в консоли R
Слово Частота
John 65
David 41
Robert 40
Michael 39
Richard 36
James 31
de 31
Jr. 28
and 28
Lee 27


Топ-10 стран по числу миллиардеров

Топ-10 стран по числу миллиардеров
Страна Количество миллиардеров
United States 903
Germany 160
China 153
Russia 119
Japan 96
Brazil 81
Hong Kong 77
France 72
United Kingdom 65
India 63

Расширенный анализ

Простой подсчет частоты слов не дает полной картины. В расширенном анализе я добавила биграммы для составных имен, TTR для оценки разнообразия, а также графики, чтобы сравнить распределение состояния и частотность слов по странам.

Код расширенного анализа

library(tidyverse)
library(tidytext)
library(ggplot2)

data <- read_csv("https://corgis-edu.github.io/corgis/datasets/csv/billionaires/billionaires.csv")

total_records <- nrow(data)
print(paste("Всего миллиардеров в датасете:", total_records))

total_words_names <- sum(str_count(data$name, "\\S+"))
print(paste("Всего слов в именах миллиардеров:", total_words_names))

top10_names <- data %>% 
  separate_rows(name, sep = " ") %>% 
  count(word = name, sort = TRUE) %>% 
  head(10)

print("10 самых частых слов в именах миллиардеров:")
print(top10_names)

top_countries <- data %>% 
  count(country = location.citizenship, sort = TRUE) %>% 
  head(10)

print("Топ-10 стран по числу миллиардеров:")
print(top_countries)

words <- data %>%
  unnest_tokens(word, name) %>%
  count(word, sort = TRUE)

print("Топ-20 самых частых слов:")
print(head(words, 20))

bigrams <- data %>%
  unnest_tokens(bigram, name, token = "ngrams", n = 2) %>%
  count(bigram, sort = TRUE)

print("Топ-10 биграмм:")
print(head(bigrams, 10))

total_tokens <- sum(words$n)
total_types <- nrow(words)
ttr <- total_types / total_tokens

print(paste("Всего слов (токенов):", total_tokens))
print(paste("Уникальных слов (типов):", total_types))
print(paste("TTR:", round(ttr, 4)))

top5_countries <- data %>%
  count(country = location.citizenship, sort = TRUE) %>%
  head(5) %>%
  pull(country)

country_comparison <- data %>%
  filter(location.citizenship %in% top5_countries) %>%
  unnest_tokens(word, name) %>%
  count(country = location.citizenship, word, sort = TRUE) %>%
  group_by(country) %>%
  slice_max(n, n = 5)

print("Топ-5 слов по странам:")
print(country_comparison)

name_lengths <- data %>%
  mutate(word_count = str_count(name, "\\S+")) %>%
  count(word_count)

print("Распределение количества слов в именах:")
print(name_lengths)

# столбчатая диаграмма топ 15 слов
plot1 <- words %>%
  slice_max(n, n = 15) %>%
  ggplot(aes(x = reorder(word, n), y = n)) +
  geom_col(fill = "steelblue") +
  coord_flip() +
  labs(title = "15 самых частых слов в именах миллиардеров", 
       x = "Слово", y = "Частота") +
  theme_minimal() +
  theme(plot.title = element_text(hjust = 0.5, face = "bold"))
print(plot1)

# тепловая карта
heatmap_data <- data %>%
  filter(location.citizenship %in% top5_countries) %>%
  unnest_tokens(word, name) %>%
  count(country = location.citizenship, word) %>%
  group_by(country) %>%
  slice_max(n, n = 10) %>%
  ungroup()

plot3 <- heatmap_data %>%
  ggplot(aes(x = word, y = country, fill = n)) +
  geom_tile(color = "white", linewidth = 0.5) +
  scale_fill_gradient(low = "white", high = "steelblue", name = "Частота") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1, size = 10),
        axis.text.y = element_text(size = 11),
        plot.title = element_text(hjust = 0.5, face = "bold")) +
  labs(title = "Тепловая карта: частотность слов по странам",
       x = "Слово", y = "Страна")

print(plot3)

Числовые результаты

В данном датасете общее количество слов (токенов) в именах миллиардеров составляет 6034, а уникальных слов 2870. Type-Token Ratio (TTR) равен 0.4756, что говорит о среднем лексическом разнообразии: имена миллиардеров не слишком однообразны, но и не сильно разнообразны. TTR близкий к 1 означал бы, что почти все имена уникальны, а близкий к 0 что имена постоянно повторяются.

Числовые результаты
Показатель Значение
Всего слов (токенов) 6034
Уникальных слов (типов) 2870
Type-Token Ratio (TTR) 0.4756

Топ-10 биграмм

Биграмма - это последовательность из двух слов, которые идут подряд в тексте.

Топ биграмм
Биграмма Частота
de moraes 7
al kharafi 5
al rajhi 5
dos santos 5
ermirio de 5
roberto marinho 5
del pino 4
forrest mars 4
louis dreyfus 4
moreira salles 4

Топ-5 слов по странам

Топ-5 слов по странам
Страна Слово Частота
China wang 16
China li 11
China liu 10
China zhang 9
China chen 7
China wei 7
Germany family 15
Germany von 12
Germany michael 9
Germany oetker 8

Там таблица еще строки есть дополнительные, но очень длинная получится, поэтому выше только ее часть.

Распределение количества слов в имени

Распределение количества слов в имени
Количество слов Количество имён
1 2
2 2099
3 387
4 92
5 27
6 6
8 1

Визуализация

На столбчатой диаграмме видно, что самые частые слова в именах: John, David и Robert. На тепловой карте цветом выделена частотность слов: самые темные клетки (Wang в Китае, John в США) соответствуют максимальной частоте.

График частоты
График частоты
Тепловая карта
Тепловая карта

Комментарий

В итоге получилось, что в датасете 2614 миллиардеров, а общее количество слов в их именах 5908. При этом уникальных слов (типов) 2870, а Type-Token Ratio (TTR) = 0.4756. Это значит, что почти половина всех слов в именах уникальна, остальные повторяются. Самые частые слова ожидаемо оказались простыми английскими именами: John, David, Robert.

Что касается стран, то США сильно лидируют 903 миллиардера. Германия на втором месте (160), а Китай только третий (153). При этом в Китае в топе частотности стоят именно китайские фамилии (Wang, Li, Zhang), а в Германии интересно, что часто встречаются слова family и von, это говорит о семейных династиях и дворянском происхождении.

Самым сложным в этой работе было не столько написание кода, сколько его отладка. Постоянно вылезали ошибки :( то пакет не устанавливался, то графики не строились, то таблицы в вики съезжали. Особенно долго возилась с тепловой картой. Еще неожиданностью стали биграммы, например, de moraes, al kharafi, dos santos. Оказалось, что многие миллиардеры имеют составные португальские или арабские фамилии, про которые я раньше не задумывалась.

В целом работа получилась объемной, но полезной. Теперь я лучше понимаю, как работать с текстовыми данными в R, строить графики и оформлять результаты на вики-странице.