*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.*

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE, error=TRUE)
```

Домашнее задание сдается на почту в виде двух файлов, Rmd и html (или в виде тетрадки, если вы выполняли задание в колабе). Чтобы облегчить проверку домашнего задания, мы просим вас писать код в блоки для кода на R, например,

```{r example}
# YOUR CODE HERE 
# (do not forget to remove #'s and all this text so that we could run the code)
```

и текст в блоки для текста. Пожалуйста, впишите ниже ваше имя и фамилию:

```{txt name}
     YOUR NAME HERE
```

Перед сдачей домашнего задания рекомендуем запустить `Run All` или сгенерировать html-страницу с помощью `Knit`, чтобы убедиться, что в финальной версии весь ваш код будет запускаться без проблем. Дисклеймер - в зависимости от среды, в которой вы выполняете задания, округление непрерывных значений может производиться несколько по-разному. В заданиях ниже не будут оцениваться расхождения с образцом в количестве знаков после запятой в выдаче. Аналогично, несколько иначе могут выглядеть шрифты в таблицах и графиках, на такие расхождения тоже не стоит обращать внимания, если нет специального требования в задании. И не стесняйтесь задавать вопросы по домашнему заданию в телеграм-группе.

## 1. Частотность и фонетика

(первая часть домашнего задания строится на тех же данных, что были в предыдущем домашнем задании)

Во многих лингвистических исследованиях отмечается, что часто используемые в языке слова звучат короче, а при их произнесении наблюдается редукция и коартикуляция. Работа [Fabian Tomaschek et al.](https://www.semanticscholar.org/paper/Practice-makes-perfect-%3A-The-consequences-of-for-Tomaschek-Tucker/1e0dbc3787a6da84ffd4c3cae62f1340e4267694) (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 (условие).

### 1.0 Загрузка данных

Загрузим пакет `tidyverse`, а данные загрузим в переменную `dur_word_freq`.

```{r load-data, warning = FALSE, message = FALSE}
library(tidyverse)
dur_word_freq <- read_csv("https://raw.githubusercontent.com/LingData2019/LingData2020/master/data/dur_word_frequency.csv")
```

### 1.1 Исследуем набор данных

Выведите все уникальные значения, которые встречаются в столбце `Lemma`, с помощью функции `distinct()`, см. фрагмент ниже:

| Lemma   |
|:--------|
| \<chr\> |
| schab   |
| blas    |
| schlaf  |
| ...     |

```{r distinct}
# YOUR CODE HERE 
```

### 1.2 Пропущенные значения

Давайте убедимся, что наши данные не содержат значений NA (а если содержат, то хорошо бы знать, в каких столбцах). Используйте функции `map_int()` и `is.na()`, чтобы сделать выдачу, которая позволит исследовать вопрос.

```{r is_na}
# YOUR CODE HERE 
```

### 1.3 Данные как факторы

Факторы - это строковые переменные, закодированные числами (как levels) для экономии вычислительных ресурсов. Некоторые функции в R работают только с факторами, а некоторые методы чувствительны к порядку кодирования, поэтому перевод из строк в факторы иногда бывает полезен. Используя функции `mutate()` и `across()`, переведите все строковые переменные в столбцах в факторы, а затем посмотрите на структуру тиббла с помощью функции `str()`.

```{r mutate}
# YOUR CODE HERE 
```

### 1.4 Кодирование факторов 

Догадайтесь, вспомните или прочитайте, по какому принципу кодируются факторы по умолчанию (подсказка: в переменной `Cond` значение `fast` имеет уровень 1, а `slow` имеет уровень 2).

```{txt factors}
    YOUR VERY SHORT ANSWER HERE
```

### 1.5 Усредненные длительности сегмента и слова

Сгруппировав данные по условию (`Cond`), выведите средние значения лог-трансформированных длин сегмента и слова примерно в таком виде (названия столбцов должны совпадать с данными в примере, округление числовых переменных может отличаться):

| Cond    | meanLogDurA | meanLogDurW |
|:--------|:------------|:------------|
| \<chr\> | \<dbl\>     | \<dbl\>     |
| fast    | -1.738072   | -0.5836253  |
| slow    | -1.628756   | -0.4483053  |

```{r summarise}
# YOUR CODE HERE 
```

### 1.6 Больше описательных статистик для длительности сегмента и слова

Добавьте в таблицу 1.4 минимальные, максимальные и медианные значения для групп fast и slow (названия столбцов могут быть другими, чем в 1.4). Вам могут быть полезны функции `min()`, `max()` и `median()`.

```{r summarise2}
# YOUR CODE HERE 
```

### 1.7 Длинный и короткий формат

Данные в наборе, с которым мы работаем, следуют "длинному" формату - каждой точке наблюдения соответствует своя строка. Отфильтруйте данные по условию "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 |

```{r wider}
# YOUR CODE HERE 
```

### 1.8

Найдите глагол, для которого в заданных экспериментальных условиях нет данных минимум по двум испытуемым.

    YOUR ANSWER HERE

### 1.9

Ваш код для этого задания:

```{r verb}
# YOUR CODE HERE 
```

### 1.10

Сколько примерно времени вы потратили на выполнение первой части домашнего задания? (Округлите до получаса, считая чистое время без отвлечения на другие дела).

```{txt timeload}
     YOUR ANSWER HERE
```

## 2. Лингвистические интересы студентов

(предыдущая часть домашнего задания позволяет получить максимум 7 баллов. Сделав это задание, вы сможете повысить оценку).

В файле по ссылке ниже приведены ответы студентов в опроснике по курсу.  

* ID -- id студента (данные анонимизированы)   
* Topics -- ответ студента на вопрос, какие области теоретической лингвистики его интересуют.  

Гугл-форма превращает несколько выбранных ответов в строку, где темы разделены запятой. В датасете данные представлены в таком виде: `"грамматика и семантика", "социолингвистика"`.

```{r topics}
topics <- read_tsv("https://raw.githubusercontent.com/olesar/2025dav4compling/refs/heads/main/data/students2025_topics.tsv")
```

### 2.1

Используя функцию `separate_rows()`, представьте данные примерно в таком виде (порядок столбцов может быть любым):

| ID      | фонетика и интонация | история языка | компаративистика | ... |
|:--------|:---------------------|:--------------|:-----------------|:----|
| \<dbl\> | \<lgl\>              | \<lgl\>       | \<lgl\>          | ... |
| 1       | TRUE                 | TRUE          | TRUE             | ... |
| 2       | FALSE                | FALSE         | TRUE             | ... |
| 3       | FALSE                | TRUE          | TRUE             | ... |

Ваш код для этого задания:

```{r logicalsummary}
# YOUR CODE HERE 
```

### 2.2

Добавьте в код еще одну строку, чтобы с помощью функций `summarise`, `across` и `where` получить тиббл, в котором подсчитано количество значений TRUE по каждому столбцу. Пример:

| фонетика и интонация | история языка | компаративистика | ... |
|:---------------------|:--------------|:-----------------|:----|
| \<int\>              | \<int\>       | \<int\>          | ... |
| 7                    | 4             | 4                | ... |

Подсказки:  
1) есть функция, которая позволяет узнать, принадлежат ли данные к типу логических данных.  
2) TRUE + TRUE + FALSE = 2  

Ваш код для этого задания:

```{r topic_counts}
# YOUR CODE HERE 
```

### 2.3 Визуализация

С помощью ggplot2 визуализируйте полученные частоты упоминаний областей лингвистики в виде столбчатой диаграммы:

<img src="https://raw.githubusercontent.com/olesar/2025dav4compling/main/img/plot1.png" width="60%"/>

1)  Во-первых, решим проблему того, что ggplot не сможет легко извлечь данные, записанные в отдельных столбцах. Код ниже показывает, как с помощью `pivot_longer()` можно транспонировать их в такой формат, чтобы `ggplot` мог пользоваться векторами, заданными в двух столбцах - названиями областей в одном `topics` и счетчиком в другом (`counts`). (Здесь полученные ранее данные сохранены в переменную `topic_counts`).

```{r pivoting, eval=FALSE}
topic_counts |>
  pivot_longer(cols=everything(), names_to = "topics", values_to = "counts")
```

2)  Во-вторых, отфильтруйте строку, в которой встретилась тема "NA" - дело в том, что один из студентов не захотел отвечать на этот вопрос.

3)  Теперь используйте геом `geom_col` c заливкой столбцов цветом `#77b6ff` и классической темой, чтобы получить столбчатую диаграмму. Обратите внимание, что нужно горизонтально расположить столбцы для лучшей читаемости длинных подписей.

Ваш код для этого задания:

```{r topic_barplot}
# YOUR CODE HERE 
```

### 3.1 Адрес репозитория на github

Вы можете выкладывать задания, которые делаете самостоятельно на семинаре, в репозиторий на гитхабе. Если вы хотите получать фидбек, укажите адрес этого репозитория ниже:

```{txt github_repo}
     YOUR ANSWER HERE
```

### 3.2

Это необязательно, но вы можете написать здесь свои комментарии по домашнему заданию, если хотите.

```{txt comments}
     YOUR ANSWER HERE
```

### Полезное

В сети есть много шпаргалок по работе с датафреймами, например:

-   [<https://rstudio.github.io/cheatsheets/tidyr.pdf>]
-   [<https://rstudio.github.io/cheatsheets/html/tidyr.html>]

Шпаргалки для ggplot:

-   [<https://rstudio.github.io/cheatsheets/data-visualization.pdf>]
-   [<https://rstudio.github.io/cheatsheets/html/data-visualization.html>]
