Карен Аванесян
Октябрь 2018, Ростов-на-Дону
Академия Психологии и Педагогики ЮФУ
Визуализацию данных мы начнем с гистограммы - графика, показывающего распределение в количественных переменных.
library(haven)
library(ggplot2)
essru <- read_sav("ESS8RU.sav")
essru$edlvdru <- factor(essru$edlvdru, ordered = T, levels = c(1:11), labels = c("Не учился", "Начальное", "Неполное среднее","Среднее", "Начальное Проф1", "Начальное проф2", "Среднее Проф", "Бакалавр", "Магистр", "Специалист", "Ученая степень" ))
library(scales)
ggplot(data=essru, aes(x=edlvdru, fill = edlvdru)) +
geom_bar(aes(y = (..count..)/sum(..count..)), show.legend = F)+
scale_y_continuous(labels = percent)+
xlab("Уровень образования")+
ylab("Percentage")
ggplot2 - один из наиболее популярных пакетов по визуализации данных. Мы преимущественно будем использовать его и попробуем построить гистограмму
library(ggplot2)
# Basic histogram
ggplot(essru, aes(x=agea))+
geom_histogram(binwidth=2, color="black", fill="cyan")+
xlab("Возраст")+
ggtitle("Гистограмма")+
theme(plot.title = element_text(hjust = 0.5))
Добавим к графику линию, указывающую на среднее
library(ggplot2)
# Basic histogram
ggplot(essru, aes(x=agea))+
geom_histogram(binwidth=2, color="black", fill="steelblue3")+
xlab("Возраст")+
ggtitle("Гистограмма")+
theme(plot.title = element_text(hjust = 0.5))+
geom_vline(aes(xintercept=mean(agea)),
color="blue", linetype="dashed", size=1)
ggplot(essru, aes(x=agea))+
geom_histogram(aes(y=..density..), colour="black", fill="white", binwidth=2)+
geom_density(alpha=.2, fill="#FF6666")
Подсчитать среднее для каждой группы
library(plyr)
mu <- ddply(essru, "gndr", summarise, grp.mean=mean(agea))
head(mu)
gndr grp.mean
1 1 42.87753
2 2 49.59584
ggplot(essru, aes(x=agea, fill=gndr)) + #разница между color и fill
geom_density(alpha = 0.4, size = 0.4)+
geom_vline(data=mu, aes(xintercept=grp.mean, color=gndr))+
scale_color_brewer(palette="Dark2")
Pisa_Russia_2015 <- read_sav("Pisa Russia 2015.sav")
Pisa_Russia_2015$add_learn_math <- Pisa_Russia_2015$ST071Q02NA
Pisa_Russia_2015$gender <- Pisa_Russia_2015$ST004D01T
Pisa_Russia_2015$gender <- factor(Pisa_Russia_2015$ST004D01T, labels = c("female", "male"), levels = c(1,2))
library(ggpubr)
library(gridExtra)
# Создать Density plot
density.p <- ggdensity(Pisa_Russia_2015, x = "add_learn_math",
fill = "gender")
# Произвести расчет дескриптивной статистики по группам
stable <- desc_statby(Pisa_Russia_2015, measure.var = "add_learn_math",
grps = "gender")
stable <- stable[, c("gender", "length","min", "mean", "max", "sd")] #извлекаем необходимые элементы дескриптивной статистики из полученного ряда данных
# Summary table plot, medium orange theme
stable.p <- ggtexttable(stable, rows = NULL,
theme = ttheme("mOrange"))
# Написать текст
text <- paste("Данные лонгитюдного исследования PISA",
"относительно внеаудиторных дополнительных",
"занятий по математике выявили,",
"что в России школьники старших классов",
"мужского пола в среднем тратят на данный вид активности больше",
"чем студенты женского пола", sep = " ")
text.p <- ggparagraph(text = text, face = "italic", size = 11, color = "black")
# Расположить график, таблицу и текст на одной странице
grid.arrange(density.p, stable.p, text.p, ncol = 1, nrow = 3, heights = c(1, 0.5, 0.3))
ggplot(data = essru, aes(x = edlvdru,y = agea, fill = edlvdru))+
geom_boxplot()+
theme(axis.text.x=element_blank(),plot.title = element_text(hjust = 0.5))+
xlab("Уровень Образования")+
ylab("Возраст")+
ggtitle("Ящиковая Диаграмма")
ggplot(data = Pisa_Russia_2015, aes(x = gender, y = add_learn_math))+
geom_violin(trim = FALSE, fill = "red", col = "blue", alpha = 0.5, size = 0.5)
Задание: добавьте к данному графику названия для осей х, у и дайте ему название.