Как изучить данные PISA learningtower package: различия между версиями
Материал из Поле цифровой дидактики
Patarakin (обсуждение | вклад) |
Patarakin (обсуждение | вклад) |
||
| (не показаны 3 промежуточные версии этого же участника) | |||
| Строка 3: | Строка 3: | ||
|Field_of_knowledge=Информатика, Образование | |Field_of_knowledge=Информатика, Образование | ||
|Возрастная категория=15 | |Возрастная категория=15 | ||
|similar_concepts=PISA | |||
|Environment=R | |Environment=R | ||
}} | }} | ||
<syntaxhighlight lang="R" line> | <syntaxhighlight lang="R" line> | ||
| Строка 15: | Строка 17: | ||
student_data_2015 <- load_student(2015) | student_data_2015 <- load_student(2015) | ||
student_data_2012 <- load_student(2012) | |||
str(student_data_2015) | str(student_data_2015) | ||
| Строка 43: | Строка 46: | ||
theme_minimal() + | theme_minimal() + | ||
theme(legend.position = "bottom") | theme(legend.position = "bottom") | ||
#---- | |||
ggplot(student_data_2012 %>% filter(country %in% c("RUS", "USA", "SGP")), | |||
aes(x = country, y = math, fill = gender)) + | |||
geom_boxplot(alpha = 0.7) + | |||
labs(title = "Распределение баллов по математике (PISA 2012)", | |||
x = "Страна", y = "Баллы по математике", fill = "Пол") + | |||
theme_minimal() + | |||
theme(legend.position = "bottom") | |||
##--- | |||
data_long <- data_proc %>% | data_long <- data_proc %>% | ||
| Строка 58: | Строка 72: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== Изображение == | == Изображение 2015 == | ||
[[Файл:Pisa learningtower.png]] | [[Файл:Pisa learningtower.png]] | ||
== 2012 == | |||
[[Файл:Pisa2012.png|600px]] | |||
== Основные глаголы преобразования данных == | == Основные глаголы преобразования данных == | ||
{{Шаблон:TidyR}} | {{Шаблон:TidyR}} | ||
[[Категория:Lesson]] | |||
Текущая версия от 14:33, 3 марта 2026
| Описание | Некоторые данные PISA доступны в сети и в среде пакетов R. Например, можно использовать learningtower package |
|---|---|
| Область знаний | Информатика, Образование |
| Область использования (ISTE) | |
| Возрастная категория | 15
|
| Поясняющее видео | |
| Близкие рецепту понятия | PISA |
| Среды и средства для приготовления рецепта: | R |
getwd()
#------------
library(learningtower);
library(dplyr)
library(ggplot2)
#----
student_data_2015 <- load_student(2015)
student_data_2012 <- load_student(2012)
str(student_data_2015)
glimpse(student_data_2015)
summary(student_data_2015)
glimpse(student_data_2015)
data_proc <- student_data_2015 %>%
filter(country %in% c("RUS", "USA", "SGP")) %>%
group_by(country, gender) %>%
summarise(
mean_math = weighted.mean(math, stu_wgt, na.rm = TRUE),
mean_science = weighted.mean(science, stu_wgt, na.rm = TRUE),
n = n(),
.groups = "drop"
) %>%
na.omit()
print(data_proc)
ggplot(student_data_2015 %>% filter(country %in% c("RUS", "USA", "SGP")),
aes(x = country, y = math, fill = gender)) +
geom_boxplot(alpha = 0.7) +
labs(title = "Распределение баллов по математике (PISA 2015)",
x = "Страна", y = "Баллы по математике", fill = "Пол") +
theme_minimal() +
theme(legend.position = "bottom")
#----
ggplot(student_data_2012 %>% filter(country %in% c("RUS", "USA", "SGP")),
aes(x = country, y = math, fill = gender)) +
geom_boxplot(alpha = 0.7) +
labs(title = "Распределение баллов по математике (PISA 2012)",
x = "Страна", y = "Баллы по математике", fill = "Пол") +
theme_minimal() +
theme(legend.position = "bottom")
##---
data_long <- data_proc %>%
tidyr::pivot_longer(cols = starts_with("mean_"), names_to = "subject", values_to = "score") %>%
mutate(subject = recode(subject, "mean_math" = "Математика", "mean_science" = "Наука"))
ggplot(data_long, aes(x = country, y = score, fill = gender)) +
geom_col(position = "dodge") +
facet_wrap(~ subject) +
labs(title = "Средние взвешенные баллы PISA 2015",
x = "Страна", y = "Средний балл", fill = "Пол") +
theme_minimal() +
theme(legend.position = "bottom")
Изображение 2015
2012
Основные глаголы преобразования данных
| Функция | Что делает | С чем работает | Простой пример (R) |
|---|---|---|---|
select()
|
Выбирает (оставляет) нужные столбцы датафрейма; остальные отбрасывает. | Столбцы (переменные) | students |>
select(username, n_total_edits, discipline)
|
filter()
|
Оставляет строки, которые удовлетворяют логическому условию (фильтрация наблюдений). | Строки (наблюдения) | students |>
filter(n_total_edits > 50, discipline == "Филология")
|
mutate()
|
Добавляет новые столбцы или изменяет существующие, вычисляя их из других переменных. | Столбцы (новые или изменённые переменные) | students |>
mutate(
edit_per_day = n_total_edits / days_active,
pct_articles = edits_articles / n_total_edits * 100
)
|
group_by()
|
Задаёт группировку по одной или нескольким переменным; изменяет "структуру вычислений", но не сами данные. | Группы строк (по категориям) | students |>
group_by(discipline)
|
summarise()
|
Строит сводку по группам: сворачивает много строк в одну строку на группу (средние, суммы и т.п.). | Группы (после group_by())
|
students |>
group_by(discipline) |>
summarise(
mean_edits = mean(n_total_edits, na.rm = TRUE),
n_students = n()
)
|

