Очень часто возникает потребность графически изобразить информацию и, одновременно, о какой-то количественной переменной, и о качественной переменной. Давайте посмотрим, как это можно сделать. Соответственно, во-первых, для корректной работы многих графических функций да и многих функций, оценивающих модель, необходимо компьютеру указать, что переменная является факторной, то есть принимает ограниченное количество значений. Вот здесь по умолчанию, когда набор данных прочитался в память из файла, компьютер распознал вот переменную kitchen span как, или вот, допустим, distance как числовую. И вот у нее значение 12.5, 13.5. А, например, переменную brick он распознал как integer, это означает «целое», сокращение int, а на самом деле она вовсе не целая, она не может принять значение 2 или 3. Она вот принимает именно значение 1 или 0, то есть она, по сути, факторная, у неё ограничено количество значений. И поэтому для удобства мы компьютеру укажем, какие переменные на самом деле являются факторными. Значит, мы набор данных f изменим, mutate_each, мы изменим несколько переменных в наборе данных f, мы используем, будем использовать функцию factor, и мы её применим к переменным: walk, она факторная, показывает, в пешей доступности дом от метро или нет; brick, она факторная; floor, первый-последний этаж, факторная; и code, на самом деле это код района Москвы, но она тоже факторная. Соответственно, нажимаем Ctrl + Enter. Визуально ничего не произошло, и, с точки зрения пользователя, может и немного поменялось. Если я наберу glimpse(f), снова посмотрю на набор данных f, то тот же самый набор данных, только изменилась вот здесь надпись, что переменную теперь компьютер считает факторной. Поехали, построим первый график. Значит, возьму график построю по набору данных f. По горизонтали я отложу логарифм цены квартиры. И, соответственно, если я построю такой график, компьютер просто построит гистограмму логарифма цены квартиры. Теперь я его чуть-чуть видоизменю. Я хочу на том же графике учесть, скажем, кирпичный дом или не кирпичный. Давайте я укажу, что закраска, то есть цвет гистограммы, будет определяться переменной brick, которая отвечает за кирпичность дома. И давайте на всякий случай... Давайте посмотрим, что получится. Вот у нас, соответственно, получились две гистограммы. Ну здесь они наложены одна на другую, чтобы получилась исходная. То есть давайте сравним график с предыдущим. То есть получается, что вот эти чёрные столбики исходной гистограммы компьютер поделил на две части: часть, которая соответствует кирпичным домам, и часть, которая соответствует не кирпичным домам. Ну из этого графика, например, я вижу, что не кирпичных, красных, больше, чем кирпичных. И, соответственно, видно, что кирпичные — у них логарифм цены чуть-чуть выше: они чуть-чуть правее лежат. На этом графике, может быть, когда гистограммы наложены друг на друга сверху, это не видно. А давайте мы чуть-чуть изменим позицию гистограммы и выберем вариант, когда столбики чередуются: то красный, отвечающий за не кирпичные дома, то столбик, отвечающий за кирпичные дома. Тут мы укажем опцию position="dodge" и посмотрим, как это будет выглядеть. И вот здесь на этом графике уже столбики диаграммы не друг над другом расположены, как на предыдущем, — вот здесь столбики друг над другом, кирпичные над не кирпичными, — а здесь они чередуются. И видно, что центр распределения здесь правее лежит по сравнению с центром красного распределения, то есть цена, логарифм цены, выше у кирпичных, и видно, что всё-таки красных больше, чем таких сине-зелёных, соответственно, просто не кирпичных домов больше. Вот мы видим это на этом графике. Также можно наложить функции плотности. То есть если я укажу тот же график, но укажу здесь опцию geom="density", то есть оценённой функции плотности сглаженной гистограммы, то я получу вот такую вот картинку. Тут, правда, не совсем видно, одна другую загораживает. Поэтому, чтобы они не загораживали одна другую, мы укажем ещё опцию прозрачности ŷ, пусть будет ŷ равно 0.5, чтоб они просвечивали и было видно один на фоне другой. Ну вот здесь видно то же самое, что красных, — нет, количество здесь уже не видно, площадь под функцией плотности всегда отнормирована на единичку, — но видно, что всё-таки центр распределения кирпичных домов правее, чем центр распределения не кирпичных домов. Ну у нас качественных переменных много. У нас, например, качественной является также расстояние, у нас качественной является также, на первом этаже или не на первом. Давайте мы к этому графику к последнему, например, сделаем. Давайте объявим этот график базовым, какой-нибудь график 2, нажмём Ctrl + Enter, и теперь чуть-чуть изменим график 2: мы добавим к нему несколько фасеток, напишем facet_grid и укажем, что мы этот график разделим на четыре графика, а именно: по одному измерению мы будем откладывать, в пешей доступности дом или нет, а по другому измерению мы будем откладывать, соответственно, на первом этаже расположена квартира или нет. И получим вот уже другой график. Давайте посмотрим, что на нём видно. Соответственно, на нём видно, что если дом находится не в пешей доступности и не на первом этаже, то на самом деле кирпичные и не кирпичные почти не отличаются: центр распределения одинаковый. А вот здесь видно, что когда дом в пешей доступности от метро и кирпичный, то цены для кирпичных и не кирпичных, вот если посмотреть центр распределения, они уже существенно отличаются. Так, и что мы ещё можем посмотреть? Ну можно отказаться от двух измерений, можно, например, посмотреть разницу только по тому, на первом этаже или нет. Соответственно, здесь у нас будет два графика. Идея грамматики графики, то есть наложение каких-то стандартных преобразований графика, она работает с любым базовым графиком, поэтому, например, в качестве g2 мы могли взять гистограмму, а не оценку плотности, и точно так же располагать её в виде фасеток.