Анализ президентских выборов в России (2018)

Материал из Поле цифровой дидактики

Анализ президентских выборов в России (2018)

Общая информация

  • Авторы: Студентки группы - PolezhaevaMA, Самира Мохаммад
  • Дата исследования: 13 апреля 2026
  • Источник: Russian Presidential Elections 2018 Voting Data
  • Платформа: Kaggle
  • Дата публикации: 30 апреля 2018 г.

Исходные данные

Описание исследования

Цель

Проанализировать результаты президентских выборов в России 2018 года на уровне избирательных участков и регионов.

Задачи

  1. Выявить распределение голосов между кандидатами
  2. Сравнить явку избирателей по регионам
  3. Определить регионы-лидеры по количеству голосов за Путина
  4. Найти связь между явкой и поддержкой основного кандидата

Гипотеза

На участках с более высокой явкой доля голосов за основного кандидата выше, чем на участках с низкой явкой.

Используемые технологии

Технология Назначение
R 4.5.3 Язык программирования
RStudio Среда разработки
dplyr Обработка и агрегация данных
ggplot2 Визуализация (создание графика)
tidyr Преобразование форматов данных
scales Форматирование процентов

Программный код

# АНАЛИЗ ПРЕЗИДЕНТСКИХ ВЫБОРОВ В РОССИИ 2018

library(dplyr)
library(ggplot2)
library(readr)
library(tidyr)
library(scales)

# 1. ЗАГРУЗКА ДАННЫХ
votes <- read_csv("voting_data_eng.csv")

# 2. ПРЕДОБРАБОТКА
votes_clean <- votes %>%
  mutate(
    total_voters = `Number of voters enlisted`,
    Putin_votes = `Putin Vladimir Vladimirovich`,
    Putin_share = Putin_votes / total_voters,
    Grudinin_share = `Grudinin Pavel Nikolaevich` / total_voters,
    Zhirinovskiy_share = `Zhirinovskiy Vladimir Volfovich` / total_voters,
    Sobchak_share = `Sobchak Ksenia Anatolyevna` / total_voters,
    Yavlinskiy_share = `Yavlinskiy Gregory Alekseivich` / total_voters,
    turnout = `Number of valid ballot papers` / total_voters
  ) %>%
  filter(total_voters >= 10, Putin_share <= 1, Putin_share >= 0)

# 3. ГРАФИК 1: КРУГОВАЯ ДИАГРАММА
pie_data <- votes_clean %>%
  summarise(
    Путин = sum(Putin_votes),
    Грудинин = sum(`Grudinin Pavel Nikolaevich`),
    Жириновский = sum(`Zhirinovskiy Vladimir Volfovich`),
    Собчак = sum(`Sobchak Ksenia Anatolyevna`),
    Явлинский = sum(`Yavlinskiy Gregory Alekseivich`)
  ) %>%
  pivot_longer(everything(), names_to = "candidate", values_to = "votes") %>%
  mutate(percentage = votes / sum(votes) * 100)

p1 <- ggplot(pie_data, aes(x = "", y = percentage, fill = candidate)) +
  geom_bar(stat = "identity", width = 1) +
  coord_polar(theta = "y", start = 0) +
  geom_text(aes(label = paste0(round(percentage, 1), "%")), 
            position = position_stack(vjust = 0.5), size = 5) +
  scale_fill_manual(values = c("#1E88E5", "#E53935", "#FFC107", "#8E24AA", "#43A047")) +
  labs(title = "Распределение голосов по кандидатам") +
  theme_void() +
  theme(plot.title = element_text(hjust = 0.5, size = 14, face = "bold"))

ggsave("graph1_pie.png", p1, width = 8, height = 8, dpi = 300)

# 4. ГРАФИК 2: ЯВКА ПО РЕГИОНАМ
turnout_by_region <- votes_clean %>%
  group_by(region_name) %>%
  summarise(turnout = mean(turnout) * 100) %>%
  arrange(desc(turnout)) %>% head(20)

p2 <- ggplot(turnout_by_region, aes(x = reorder(region_name, turnout), y = turnout, fill = turnout)) +
  geom_bar(stat = "identity") +
  scale_fill_gradient(low = "lightblue", high = "darkblue") +
  coord_flip() +
  labs(title = "Топ-20 регионов по явке", x = "", y = "Явка (%)") +
  theme_minimal()

ggsave("graph2_turnout.png", p2, width = 10, height = 8, dpi = 300)

# 5. ГРАФИК 3: ПУТИН vs ЯВКА
p3 <- ggplot(votes_clean, aes(x = turnout * 100, y = Putin_share * 100)) +
  geom_point(alpha = 0.1, size = 0.5, color = "steelblue") +
  geom_smooth(method = "lm", color = "red", se = TRUE) +
  labs(title = "Зависимость доли Путина от явки",
       x = "Явка (%)", y = "Доля Путина (%)") +
  theme_minimal()

ggsave("graph3_putin_turnout.png", p3, width = 10, height = 6, dpi = 300)

# 6. ГРАФИК 4: ГОЛОСА ЗА ПУТИНА ПО ГОРОДАМ
cities_data <- votes_clean %>%
  group_by(region_name) %>%
  summarise(votes = sum(Putin_votes) / 1000) %>%
  arrange(desc(votes)) %>% head(20)

p4 <- ggplot(cities_data, aes(x = reorder(region_name, votes), y = votes, fill = votes)) +
  geom_bar(stat = "identity") +
  scale_fill_gradient(low = "lightcoral", high = "darkred") +
  coord_flip() +
  labs(title = "Голоса за Путина по городам (тыс.)", x = "", y = "Тысяч голосов") +
  theme_minimal()

ggsave("graph4_cities.png", p4, width = 12, height = 8, dpi = 300)

# 7. СТАТИСТИКА
total_stats <- votes_clean %>%
  summarise(
    Путин = round(mean(Putin_share) * 100, 1),
    Грудинин = round(mean(Grudinin_share) * 100, 1),
    Жириновский = round(mean(Zhirinovskiy_share) * 100, 1),
    Явка = round(mean(turnout) * 100, 1)
  )

cor_putin_turnout <- cor(votes_clean$Putin_share, votes_clean$turnout)

print(total_stats)
print(paste("Корреляция Путин ↔ Явка:", round(cor_putin_turnout, 3)))

Результаты

График 1. Распределение голосов по кандидатам

Круговая диаграмма распределения голосов по кандидатам

Анализ:

  • Путин — 79.2% голосов
  • Грудинин — 12.1%
  • Жириновский — 5.9%
  • Собчак — 1.7%
  • Явлинский — 1.1%

График 2. Явка по регионам

Топ-20 регионов по явке избирателей

Анализ:

  • Самые высокие показатели явки: Чеченская Республика (95%), Дагестан (92%), Тыва (90%)
  • Самые низкие: крупные города (Москва — 65%, Санкт-Петербург — 68%)

График 3. Зависимость доли голосов за Путина от явки

Корреляция явки и доли голосов за Путина

Анализ:

  • Корреляция: +0.929 (очень сильная положительная)
  • На участках с высокой явкой доля Путина значительно выше

График 4. Количество голосов за Путина по городам

Топ-20 регионов по числу голосов за Путина

Выводы

Подтверждение гипотезы

Гипотеза о положительной связи между явкой и поддержкой основного кандидата подтвердилась. Коэффициент корреляции 0.929 указывает на очень сильную зависимость.

Практическая значимость

  • Разработан воспроизводимый R-рецепт для анализа выборов
  • Создана методика визуализации электоральной статистики
  • Результаты могут использоваться для политологических исследований

Используемые источники