--- title: "Домашнее задание 2" output: pdf_document: latex_engine: xelatex word_document: default mainfont: CMU Serif header-includes: - \usepackage[russian]{babel} - \usepackage{hyperref} - \hypersetup{colorlinks = true, urlcolor = blue, linkcolor=magenta} --- Файл с выполненным заданием необходимо загрузить на Dropbox до дедлайна, указанного на сайте. Загрузить на Dropbox нужно шаблонный файл `.Rmd`, предложенный на сайте с вписанным в ячейки после каждой задачи кодом. Добавлять дополнительные ячейки с кодом разрешается. Домашние задания, сданные после срока, оцениваются с использованием понижающих коэффициентов: опоздание в пределах часа – штраф 10% от полученной оценки, в пределах суток – штраф 20%, в пределах недели – штраф 50%. Домашние задания, сданные через неделю после указанного срока и позже, не принимаются и не оцениваются. Если при проверке работ установлен факт нарушения академической этики, студент получает оценку «0» за данную работу. Работа студента, предоставившего свою работу для списывания, также аннулируется. ### Задача 1 Два события $A$ и $B$ являются независимыми, если выполняется условие $P(A \cap B) = P(A) \times P(B)$. Напишите код, который запрашивает у пользователя с клавиатуры вероятности событий $A$ и $B$ и вероятность их пересечения (одна вероятность — один ввод) и проверяет, являются ли события $A$ и $B$ независимыми, то есть сохраняет и выводит на экран логическое значение `TRUE` или `FALSE`. **Пример 1** ``` Enter P(A): 0.4 Enter P(B): 0.5 Enter P(A and B): 0.2 [1] TRUE ``` **Пример 2** ``` Enter P(A): 0.3 Enter P(B): 0.1 Enter P(A and B): 0.2 [1] FALSE ``` ```{r} #### YOUR CODE HERE ``` ### Задача 2 Напишите код, который запрашивает у пользователя с клавиатуры значения дискретной случайной величины через пробел, потом запрашивает соответствующие значениям вероятности через пробел, и выводит на экран математическое ожидание и дисперсию этой величины. **Пример** ``` Enter values: -1 0 3 Enter probabilities: 0.4 0.1 0.5 E(X) = 1.1 and D(X) = 3.8 ``` **Напоминание.** Математическое ожидание — ожидаемое среднее значение случайной величины — вычисляется следующим образом: $$ E(X)=\sum\limits_{i=1}^{n}x_ip_i = x_1p_1 + x_2p_2 + \dots + x_np_n. $$ Другими словами, перемножаем значения и соответствующие им вероятности, а потом все суммируем). Дисперсия — показатель разброса значений случайной величины относительно ожидаемого среднего значения — вычисляется следующим образом: $$ D(X)=E(X^2)-[E(X)]^2. $$ ```{r} #### YOUR CODE HERE ``` ### Задача 3 Число действительных бюллетеней на избирательных участках некоторой территориальной избирательной комиссии задается вектором `valid_votes`, а число недействительных бюллетеней — вектором `invalid_votes`. Общее число зарегистрированных избирателей задается вектором `voters`. ```{r} valid_votes <- c(25, 8, 12, 18, 25, 32, 10, 17, 22, 17) invalid_votes <- c(1, 0, 4, 3, 9, 2, 0, 5, 1, 0) voters <- c(50, 75, 62, 54, 98, 55, 72, 80, 44, 48) ``` Создайте вектор `turnout`, который содержит значения явки на избирательных участках, выраженные в процентах и округленные до *второго* знака после запятой. **Напоминание.** Явка определяется как доля суммы действительных и недействительных бюллетеней от общего числа зарегистрированных избирателей. ```{r} #### YOUR CODE HERE ``` ### Задача 4 Вектор `ages` представляет собой набор значений возраста респондентов мужского пола, принимавших участие в опросе. ```{r} ages <- c(23, 18, 19, 33, 36, 27, 68, 62, 78, 45, 42, 38, 55, 16, 14, 17, 92) ``` 1. Выберите из вектора `ages` значения, которые соответствуют трудоспособному возрасту (в России для мужчин — с 16 до 59 лет включительно), и сохраните их в вектор `work_age`. Сколько людей такого возраста среди наших респондентов? Сохраните ответ на вопрос в переменную `N1`. ```{r} #### YOUR CODE HERE ``` 2. Выберите из вектора `ages` значения, которые соответствуют возрасту, младше трудоспособного (в России — менее 16 лет), и сохраните их в вектор `young_age`. Сколько людей такого возраста среди наших респондентов? Сохраните ответ на вопрос в переменную `N1`. ```{r} #### YOUR CODE HERE ``` ### Задача 5 Политолог Мебейн (Walter R. Mebane) считает, что большая доля избирательных участков со значениями явки, заканчивающихся на 0 или 5, свидетельствует о фальсификациях результатов выборов. Аргументирует он это чисто психологическими причинами: если значения явки сочиняют люди, то они более склонны записывать круглые числа и числа, кратные 5. Перед вами вектор значений явки на избирательных участках в районе F страны Флатландии: ```{r} Fturnout <- c(100, 124, 121, 130, 150, 155, 144, 132, 189, 145, 125, 110, 118, 129, 127) ``` Сохраните в вектор `s` индексы избирательных участков, где явка, согласно Мебейну, выглядит подозрительной. ```{r} #### YOUR CODE HERE ``` ### Задача 6 Известно, что в таблице содержатся показатели по Ивановской области за 8 лет (с 2008 по 2015 включительно). В Ивановской области 21 муниципальный район. Создайте три вектора, которые могут быть использованы в качестве столбцов `region` (название области), `district_id` (номер района) и `year` (год): а) считая, что сначала идут значения показателей по одному району за 8 лет, потом — по второму за 8 лет и так далее; ```{r} #### YOUR CODE HERE ``` б) считая, что сначала идут значения показателей по одному году по всем 21 районам, потом — по второму по 21 районам и так далее. ```{r} #### YOUR CODE HERE ``` ### Задача 7 Создайте матрицу `M`, которая содержит данные по четырем городам (город, численность населения, площадь): ``` Moscow, 12 615 279, 2561.5 St Petersburg, 5 383 890, 1439 Omsk, 1 164 815, 566.9 Yekaterinburg, 1 483 119, 468 ``` Обратите внимание: в матрице обязательно должны присутствовать названия городов, но при этом числовые данные должны иметь тип `numeric`. ```{r} #### YOUR CODE HERE ``` ### Задача 8 Напишите код, который принимает на вход числовую матрицу `Nums` (дана в коде для примера) и сохраняет в переменную `rmax` индекс строки, имеющей наибольшую сумму элементов. Если таких строк несколько, то переменная `rmax` будет представлять собой вектор и хранить несколько индексов. Ваш код должен корректно работать для матрицы любой размерности. В задаче нельзя использовать условные конструкции и циклы. ```{r} Nums <- matrix(1:12, ncol = 6, byrow = TRUE) #### YOUR CODE HERE ``` ### Задача 9 Дан список `Q` с характеристиками мячей для игры в квиддич. Напишите код, который добавит в этот список данные по снитчу: * `name`: `snitch`, * `points`: `150`, * `who_is_after`: `seeker`. ```{r} Q <- list(name = c("quaffle", "bludger"), points = c(10, 0), who_is_after = c("chaser", "beater")) #### YOUR CODE HERE ```