Source: Olga Lyashevskaya, George Moroz, Alla Tambovtseva, and Ilya Schurov. Linguistic Data: Quantitative Analysis and Visualisation. The HSE course taught in MA programs in linguistics since 2015.
Домашнее задание сдается на почту в виде двух файлов, Rmd и html (или в виде тетрадки, если вы выполняли задание в колабе). Чтобы облегчить проверку домашнего задания, мы просим вас писать код в блоки для кода на R, например,
# YOUR CODE HERE
# (do not forget to remove #'s and all this text so that we could run the code)
и текст в блоки для текста. Пожалуйста, впишите ниже ваше имя и фамилию:
YOUR NAME HERE
Перед сдачей домашнего задания рекомендуем запустить
Run All
или сгенерировать html-страницу с помощью
Knit
, чтобы убедиться, что в финальной версии весь ваш код
будет запускаться без проблем. Дисклеймер - в зависимости от среды, в
которой вы выполняете задания, округление непрерывных значений может
производиться несколько по-разному. В заданиях ниже не будут оцениваться
расхождения с образцом в количестве знаков после запятой в выдаче.
Аналогично, несколько иначе могут выглядеть шрифты в таблицах и
графиках, на такие расхождения тоже не стоит обращать внимания, если нет
специального требования в задании. И не стесняйтесь задавать вопросы по
домашнему заданию в телеграм-группе.
(первая часть домашнего задания строится на тех же данных, что были в предыдущем домашнем задании)
Во многих лингвистических исследованиях отмечается, что часто используемые в языке слова звучат короче, а при их произнесении наблюдается редукция и коартикуляция. Работа Fabian Tomaschek et al. (2018) исследует гипотезу, что моторные навыки произнесения улучшаются с опытом, который, в свою очередь, напрямую связан с частотностью слова. Ученые попросили испытуемых (17 бакалавров университета Тюбингена, 8 мужчин и 9 женщин) прочитать вслух немецкие глаголы, содержащие звук [a:] в основе. Испытуемые были поставлены в экспериментальные условия, которые исподволь заставляли их читать быстрее или медленнее (slow/fast condition).
В этом задании мы просим вас сравнить длину звучания всего слова целиком, а также длину звучания интересующего ученых сегмента (звука [a:]) в условиях slow и fast. Хотя логично предположить, что в условии fast произнесение и слов, и сегментов будет короче, все же нужно убедиться, что данные это подтверждают, прежде чем переходить к более сложному анализу по сути вопроса. Кроме того, мы будем уверены, что экспериментальные условия были должным образом соблюдены, ученые не запутались в кодировании данных и документировали результаты корректно.
Интересующие нас переменные:
LogDurationW
- log-transformed word duration (логарифм
длины произнесения слова)LogDurationA
- log-transformed segment duration
(логарифм длины произнесения сегмента)Cond
- condition: slow vs. fast (условие).Загрузим пакет tidyverse
, а данные загрузим в переменную
dur_word_freq
.
library(tidyverse)
dur_word_freq <- read_csv("https://raw.githubusercontent.com/LingData2019/LingData2020/master/data/dur_word_frequency.csv")
Выведите все уникальные значения, которые встречаются в столбце
Lemma
, с помощью функции distinct()
, см.
фрагмент ниже:
Lemma |
---|
<chr> |
schab |
blas |
schlaf |
… |
# YOUR CODE HERE
Давайте убедимся, что наши данные не содержат значений NA (а если
содержат, то хорошо бы знать, в каких столбцах). Используйте функции
map_int()
и is.na()
, чтобы сделать выдачу,
которая позволит исследовать вопрос.
# YOUR CODE HERE
Факторы - это строковые переменные, закодированные числами (как
levels) для экономии вычислительных ресурсов. Некоторые функции в R
работают только с факторами, а некоторые методы чувствительны к порядку
кодирования, поэтому перевод из строк в факторы иногда бывает полезен.
Используя функции mutate()
и across()
,
переведите все строковые переменные в столбцах в факторы, а затем
посмотрите на структуру тиббла с помощью функции str()
.
# YOUR CODE HERE
Догадайтесь, вспомните или прочитайте, по какому принципу кодируются
факторы по умолчанию (подсказка: в переменной Cond
значение
fast
имеет уровень 1, а slow
имеет уровень
2).
YOUR VERY SHORT ANSWER HERE
Сгруппировав данные по условию (Cond
), выведите средние
значения лог-трансформированных длин сегмента и слова примерно в таком
виде (названия столбцов должны совпадать с данными в примере, округление
числовых переменных может отличаться):
Cond | meanLogDurA | meanLogDurW |
---|---|---|
<chr> | <dbl> | <dbl> |
fast | -1.738072 | -0.5836253 |
slow | -1.628756 | -0.4483053 |
# YOUR CODE HERE
Добавьте в таблицу 1.4 минимальные, максимальные и медианные значения
для групп fast и slow (названия столбцов могут быть другими, чем в 1.4).
Вам могут быть полезны функции min()
, max()
и
median()
.
# YOUR CODE HERE
Данные в наборе, с которым мы работаем, следуют “длинному” формату -
каждой точке наблюдения соответствует своя строка. Отфильтруйте данные
по условию “slow” и по значению “t” переменной Exponent
(окончание глагольной формы), затем представьте их в широком формате
таким образом, чтобы каждая строка представляла длительность
произнесения разных слов одним испытуемым (см. фрагмент ниже).
Participant | schab | lahm | bahn |
---|---|---|---|
<chr> | <dbl> | <dbl> | <dbl> |
Art_02_S01 | -0.4768593 | -0.4471271 | -0.4085488 |
Art_02_S03 | -0.4780197 | -0.5621014 | -0.5621014 |
Art_02_S04 | -0.5798006 | -0.7550013 | -0.7133295 |
# YOUR CODE HERE
Найдите глагол, для которого в заданных экспериментальных условиях нет данных минимум по двум испытуемым.
YOUR ANSWER HERE
Ваш код для этого задания:
# YOUR CODE HERE
Сколько примерно времени вы потратили на выполнение первой части домашнего задания? (Округлите до получаса, считая чистое время без отвлечения на другие дела).
YOUR ANSWER HERE
(предыдущая часть домашнего задания позволяет получить максимум 7 баллов. Сделав это задание, вы сможете повысить оценку).
В файле по ссылке ниже приведены ответы студентов в опроснике по курсу.
Гугл-форма превращает несколько выбранных ответов в строку, где темы
разделены запятой. В датасете данные представлены в таком виде:
"грамматика и семантика", "социолингвистика"
.
topics <- read_tsv("https://raw.githubusercontent.com/olesar/2025dav4compling/refs/heads/main/data/students2025_topics.tsv")
## Rows: 21 Columns: 2
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: "\t"
## chr (1): Topics
## dbl (1): ID
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
Используя функцию separate_rows()
, представьте данные
примерно в таком виде (порядок столбцов может быть любым):
ID | фонетика и интонация | история языка | компаративистика | … |
---|---|---|---|---|
<dbl> | <lgl> | <lgl> | <lgl> | … |
1 | TRUE | TRUE | TRUE | … |
2 | FALSE | FALSE | TRUE | … |
3 | FALSE | TRUE | TRUE | … |
Ваш код для этого задания:
# YOUR CODE HERE
Добавьте в код еще одну строку, чтобы с помощью функций
summarise
, across
и where
получить тиббл, в котором подсчитано количество значений TRUE по каждому
столбцу. Пример:
фонетика и интонация | история языка | компаративистика | … |
---|---|---|---|
<int> | <int> | <int> | … |
7 | 4 | 4 | … |
Подсказки:
1) есть функция, которая позволяет узнать, принадлежат ли данные к типу
логических данных.
2) TRUE + TRUE + FALSE = 2
Ваш код для этого задания:
# YOUR CODE HERE
С помощью ggplot2 визуализируйте полученные частоты упоминаний областей лингвистики в виде столбчатой диаграммы:
pivot_longer()
можно транспонировать их в такой
формат, чтобы ggplot
мог пользоваться векторами, заданными
в двух столбцах - названиями областей в одном topics
и
счетчиком в другом (counts
). (Здесь полученные ранее данные
сохранены в переменную topic_counts
).topic_counts |>
pivot_longer(cols=everything(), names_to = "topics", values_to = "counts")
Во-вторых, отфильтруйте строку, в которой встретилась тема “NA” - дело в том, что один из студентов не захотел отвечать на этот вопрос.
Теперь используйте геом geom_col
c заливкой столбцов
цветом #77b6ff
и классической темой, чтобы получить
столбчатую диаграмму. Обратите внимание, что нужно горизонтально
расположить столбцы для лучшей читаемости длинных подписей.
Ваш код для этого задания:
# YOUR CODE HERE
Вы можете выкладывать задания, которые делаете самостоятельно на семинаре, в репозиторий на гитхабе. Если вы хотите получать фидбек, укажите адрес этого репозитория ниже:
YOUR ANSWER HERE
Это необязательно, но вы можете написать здесь свои комментарии по домашнему заданию, если хотите.
YOUR ANSWER HERE
В сети есть много шпаргалок по работе с датафреймами, например:
Шпаргалки для ggplot: