Переходим к компьютерной части третьей лекции. Запускаем наше студио, открываем шаблон lab_3_before R для работы, как всегда более-менее серьезное исследование начинается с загрузки кучи полезных пакетов. Ну, мы предполагаем, что их уже поставили через tools install packages, все требуемые пакеты. И если вы их поставили, тогда мы просто активируем их, нажимая Ctrl + Enter или Command + Enter. Первый, второй, третий, четвертый, пятый, шестой, седьмой, восьмой, девятый, десятый, одиннадцатый. Соответственно, предупреждение warning, в них нет ничего страшного. Это говорит о том, что просто версия R установленная, на этом компьютере, чуть-чуть более старая, чем та, которая вышла в Интернете, ничего опасного в этом нет. Мы не используем какие-то совершенно совсем уж совсем последние достижения мы используем в основном базовый функционал, поэтому нам это не очень важно. Тут важно обратить, что если вот возникла какая-то ошибка, не warning, не предупреждение, а error (ошибка) — это говорит о том, что скорее всего, данный пакет просто не был установлен или опечатка в названии, поэтому если какой-то пакет не установлен, его надо установить. Хорошо, переходим к содержательной части. Для начала проиллюстрируем графически переход к логарифмам. Для начала рассмотрим встроенный набор данных, набор данных по цене бриллиантов, h <- diamonds. Можно посмотреть, что находится в этом наборе h, glimpse(h) и мы видим, что в этом наборе данных есть информация по массе бриллианта, есть информация по качеству огранки, по цвету, по прозрачности. Ну, давайте для простоты воспользуемся двумя переменными, а именно массой бриллианта в каратах и ценой бриллианта в долларах. Соответственно, поскольку этот набор данных, встроенный в R, то соответственно, документацию к нему можно почитать, набрав help(diamonds) и узнать, чего там означает каждая переменная и вот здесь видно, что у нас наблюдений очень много 54 000 бриллиантов. Соответственно, мы построим график, самый первый базовый график — qplot, данные возьмем из набора данных h, по горизонтали отложим соответственно, массу бриллианта в каратах, а по вертикали отложим его цену. И у нас получится вот такой замечательный график, он немножко долго строится, потому что тут 54 000 точек. А теперь мы перейдем к логарифмам. То есть мы видим, что на этом графике зависимость не линейная. Вот сначала с ростом массы от нуля до единички, у нас цена растет на 5 000 да, а потом с ростом массы от одного до двух цена уже как-то растет более резко. Поэтому здесь оправдан переход к логарифмам. Мы построим тот же самый график, только в других осях. Данные мы возьмем из набора данных h, однако по горизонтали мы отложим логарифм, логарифм массы и по вертикали отложим логарифм массы бриллианта и посмотрим на тот же самый график, только в других осях. И соответственно, мы видим, что при переходе к логарифмам, ну, во-первых, логарифмы, если раньше сама масса менялась от нуля до пяти карат, то соответственно, мы видим, что логарифм массы он уже меняется где-то вот от минус полутора до полутора, но зависимость стала более похожа на линию. И соответственно, такое преобразование позволяет нашей модели линейной быть более адекватной данным. Давайте посмотрим некоторые усовершенствования к нашему графику. Здесь к сожалению на графике сплошная чернота из-за того, что 54 000 точек, то на нашем графике собственно, не совсем понятно, каких больше бриллиантов вот таких вот, которые здесь лежат или вот здесь вот. И существует такая стандартная техника, когда наблюдений слишком много, это конечно, очень хорошая ситуация, но тем не менее, чтобы визуализировать ее, возникает некоторая дополнительная трудность. Давайте наш график, наш базовый график назовем буковками bg вот сделаем такое присвоение bg — это просто наш базовый график. А теперь к нашему базовому графику чуть-чуть изменим его тип. Скажем, что это будет график шестиугольники. То есть у нас плоскость будет замощена шестиугольниками. Выбираем geom_hex, нажимаем тут Tab, беру в скобочки и строю немножко измененный график, который нам позволит увидеть черную кошку в черной комнате. Соответственно, вот если посмотреть на предыдущий график, то тут все черным черно. Это черная комната, а сейчас мы в ней увидим черных кошек. Да, соответственно на этом графике мы видим, что уже не все черным черно, а есть вертикальные светлые полосочки. Иногда попадаются темные места, а иногда светлые. Это означает, что есть стандартная форма огранки. То есть на этом графике можно сделать вывод, что будет стандартная форма огранки, вот вертикальная черта соответствует какой-то стандартной массе, а между ними бриллианты тоже попадаются, но их гораздо меньше, тут темные шестиугольники. Поэтому этот график позволяет нам увидеть черных кошек в черной комнате. Давайте проиллюстрируем, еще приведем одну иллюстрацию полезности от перехода к логарифмам. Загрузим данные по стоимости квартир в Москве. Это уже набор данных не встроенной ver, мы его уже загружали в прошлом практикуме, соответственно, мы используем команду read.csv, указываем имя файла. Здесь надо сказать R из какой папки брать файлы. Мы заходим в session и указываем Set Working Directory — To Source file Location то есть это означает, что по умолчанию, R будет искать файлы в той папке, в которой находится наш script. И мы в ней выбираем наш файл, вот flats_moscow.txt. Я на всякий случай напомню, что там есть разделители, это знаки табуляции. Разделители — это знаки табуляции. Заголовок — первая строчка, отвечает за имена переменных. Он есть. И разделитель десятичных разрядов — точка. Соответственно, если ваш файл имеет другой формат, то вам надо выбрать разделитель данных указать, если заголовок и десятичный разделитель указать. Мы загрузили набор данных f, можем посмотреть на наш набор данных f. Тут у нас есть несколько переменных, описание, оно приложено в файле flats_moscow_description и соответственно, вы можете посмотреть. Ну, основные переменные: price — это цена квартиры в тысячах долларах. Это данные нескольколетней давности, totspan — это общая площадь квартиры, livespan — жилая, kitspan — площадь кухни ну, и так далее. Соответственно, давайте построим график, возьмем значит данные из набора данных f на этот раз и построим по горизонтали жилую площадь, а по вертикали отложим цену квартиры. Сначала без логарифмов. Посмотрим, как выглядит график без логарифмов. Здесь 2 000 наблюдений. Можно посмотреть структуру таблички f тут будет написано, что у нас 2 040 наблюдений по 11 переменным. Соответственно, мы видим, что тут зависимость как-то тоже непохожа на прямую. Однако, давайте попробуем перейти к логарифмам. И построим тот же самый график. Данные берем из набора данных f. По горизонтали отложим логарифм общей площади квартиры, а по вертикали отложим логарифм цены. И вот мы видим, что уже данные превратились в такое вытянутое облачко, которое более-менее уже похоже на рассеяние точек вдоль прямой. То есть при переходе к логарифмам мы получим более адекватную модель. Ну, тут следует сказать, что зачастую бывают наборы данных, где много качественных переменных, например, в наборе данных по квартирам, качественными переменными являются walk — находится ли квартира в пешей доступности от метро — единичкой, если да, ноль, если нет, brick кирпичный или не кирпичный дом. Один, если кирпичный. И еще третья переменная это является ли квартира квартирой на крайних этажах, то есть на первом или на последнем. Соответственно, как визуализировать много качественных переменных. Для этого есть очень удачный пакет vcd и в нем живет функция, которая называется mosaic. Она представляет собой мозаичный график. Давайте возьмем данные из набора данных по квартирам и построим мозаичный график, где сначала поделим все квартиры по тому, находятся ли они в пешей доступности от метро или нет. Потом поделим по тому критерию, является ли этот дом кирпичным или нет. И потом поделим по критерию, является ли квартира на первом этаже или нет. И давайте еще укажем, что нам нужна закраска, потом мы скажем, что она означает. Мы получим вот такой интересный, необычный график. Давайте его проинтерпретируем, потому что очень часто попадаются наборы данных, где много качественных переменных. Значит, сначала мы поделили все квартиры на квартиры в пешей доступности от метро. Ну, это как указано в объявлении. А что там на самом деле, конечно, не знаем. И мы видим, что квартира в пешей доступности от метро, длина вот этого отрезка, больше, чем квартир далеко от метро. Дальше квартиры каждого типа и те, и те, в свою очередь делятся на квартиры в кирпичных домах, вернее не в кирпичных brick равно 0, и квартиры в кирпичных. И здесь мы видим очень интересный факт, что среди тех квартир, которые в пешей доступности от метро, доля кирпичных домов выше, чем в тех квартирах, которые не в пешей доступности от метро. Вот здесь, когда walk равно 0, то пропорция единичек brick к нулям, brick, она меньше, чем пропорции единичек кирпичных к нулям, кирпичных для случая домов в пешей доступности от метро. А дальше уже все делится по принципу на первом этаже квартира или не на первом. И здесь мы видим, что вот эти два фактора walk и brick, они более-менее связаны с тем, на каком этаже находится квартира. Пропорции примерно постоянные между теми квартирами, которые не на первом этаже и теми квартирами, которые на первом этаже. То есть на графике, что обозначает площадь? Она пропорциональна соответственно, количеству наблюдений, которые попадают в эту категорию. А что означают цвета? Компьютер автоматом проверяет гипотезу о независимости признаков и соответственно, если бы мы представили, что на самом деле все три признака независимы (в пешей доступности от метро, кирпичность дома и floor), тогда бы все прямоугольнички были серыми. А наличие синеньких прямоугольничков говорит, что по сравнению с ситуацией независимости наблюдений, в эту группу попадает слишком много наблюдений, но а красные соответственно, что слишком мало. Соответственно, мы загрузили, посмотрели пользу от перехода к логарифмам и проиллюстрировали. как работать с большим количеством, как визуализировать большое количество качественных переменных