Как изучить данные PISA learningtower package: различия между версиями

Материал из Поле цифровой дидактики
Нет описания правки
 
(не показаны 4 промежуточные версии этого же участника)
Строка 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]]


== 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()
  )