ГРУППИРОВКА ДАННЫХ ПО ВИДУ: НОМИНАЛЬНЫЕ & ЧИСЛОВЫЕ

Types of Given Data
Characteristic Numeric
Date_Entry Dist_metro_ad
Region Rooms
District_ad Price
Address Minimum_duration
Metro Area_total
No_agents Area_living
Building Area_kitchen
Floor NFloor
Lift
Furnished
Bath
Refurbished
Balcony
Year_construction
Latitude
Longitude

К количественным показателям мы отнесли те значения, которые мы можем представить в численной форме и сравнить между собой, например, цены на жильё. К качественным показателям мы отнесли те значения, которые несут в себе тот или иной признак или характеристику, например, названия станции метро.

ТАБЛИЦЫ & ГРАФИКИ РАСПРЕДЕЛЕНИЯ

Region

data <- dwellings[,c("Dist_metro_ad", "Rooms", "Minimum_duration", "Area_total", "Area_living", "Area_kitchen", "Floor",
                     "NFloor", "Lift")]
data$Minimum_duration <- gsub(" mes.", "", data$Minimum_duration)
data$Minimum_duration <- as.numeric(data$Minimum_duration)
data$NFloor <- as.numeric(data$NFloor)

region <- table(dwellings$Region)
region <- data.frame(region)
names(region)[names(region) == "Var1"] <- "Region"
names(region)[names(region) == "Freq"] <- "Frequency"
kable(region, caption = "Region_Frequency")
Region_Frequency
Region Frequency
gorod Sankt-Peterburg 2849
Leningradskaya oblast’ 151
region_new = region
region_new[, 1] = c('Санкт-Петербург', 'Ленинградская область')
ggplot(region_new, aes(Region, Frequency)) + 
  geom_bar(stat='identity', fill='lightblue', colour='darkred', size=1.25) + 
  xlab('Регион') + ylab('Частота') + 
  ggtitle('Количество объявлений по регионам')

На графике видно, что количество объявлений в Ленигадской области примерно в 15 раз меньше, чем в Санкт-Петербурге. Это, скорее всего, связано со спросом на жильё в этих районах - очевидно, что в Петербурге он будет намного больше, чем в Ленинградской области.

Rooms

dwellings$Rooms[dwellings$Rooms == "1   (studiya)"] <- "1 (studiya)"
dwellings$Rooms[dwellings$Rooms == ""] <- "Not Available"
rooms <- table(dwellings$Rooms)
rooms <- data.frame(rooms)
names(rooms)[names(rooms) == "Var1"] <- "Rooms"
names(rooms)[names(rooms) == "Freq"] <- "Frequency"
kable(rooms, caption = "Rooms_Frequency")
Rooms_Frequency
Rooms Frequency
1 1157
1 (studiya) 161
2 957
3 543
4 129
5 34
6 13
7 1
8 2
Not Available 3
ggplot(rooms, aes(x=Frequency, y=Rooms)) + 
  geom_bar(stat='identity', fill='lightblue', colour='darkred') +
  xlab('Частота') + ylab('Количество комнат') +
  ggtitle('Количество комнат в квартире')

Исходя из графика, можно сделать вывод, что наиболее популярны однокомнатные квартиры. За ними идут двух- и трехкомнатные. Самые менее встречающиеся - квартиры с четырьмя и более комнатами, а также студии. Данную тенденцию можно объяснить не большим спросом на многокомнатные квартиры и студии, что, вполне вероятно, может быть вызвано относительной дешевизной однокомнатных квартир.

No_Agents

dwellings$No_agents[dwellings$No_agents == "Da"] <- "1"
dwellings$No_agents[dwellings$No_agents == ""] <- "0" 
dwellings[, 10] <- sapply(dwellings[,10], as.numeric)
no_agents <- table(dwellings$No_agents)
no_agents <-data.frame(no_agents)
no_agents$Var1 <- sapply(no_agents$Var1, as.character)
no_agents$Var1[no_agents$Var1 == 0] <- "No"
no_agents$Var1[no_agents$Var1 == 1] <- "Yes"
names(no_agents)[names(no_agents) == "Var1"] <- "Agents"
names(no_agents)[names(no_agents) == "Freq"] <- "Frequency"
kable(no_agents, caption = "Agents")
Agents
Agents Frequency
No 2582
Yes 418
no_agents_new = no_agents
no_agents_new$Agents = c('Да', 'Нет')
ggplot(no_agents_new, aes(Agents, Frequency)) + 
  geom_bar(stat='identity', fill='lightblue', colour='darkred') +
  xlab('') + ylab('Частота') +
  ggtitle('Агент при сдаче задействуется')

На графике мы видим, что число домовладельцев, которые задействуют риелторов при сдаче своей жилплощади, намного больше чем тех, кто решает сдавать сам. Можно допустить, что это происходит, потому что люди боятся оказаться обманутыми. Также причиной может быть более доверительное отношение со стороны арендаторов, опять же, из-за страха оказаться обманутыми.

Lift

dwellings$Lift <- str_replace_all(dwellings$Lift, "Est'", "1")
dwellings$Lift <- str_replace_all(dwellings$Lift, "Net", "0")
dwellings$Lift[dwellings$Lift == ""] <- "Not Available"
lift <- table(dwellings$Lift)
lift <- data.frame(lift)
names(lift)[names(lift) == "Var1"] <- "Access to Lift"
names(lift)[names(lift) == "Freq"] <- "Frequency"
kable(lift, caption = "Lift")
Lift
Access to Lift Frequency
0 1197
1 1634
Not Available 169
lift_new = lift[-3, ]
lift_new$`Access to Lift` = c('Отсутствует', 'Имеется')
ggplot(lift_new, aes(`Access to Lift`, Frequency)) + 
  geom_bar(stat='identity', fill='lightblue', colour='darkred') +
  xlab('') + ylab('Частота') +
  ggtitle('Наличие лифта')

Как можно заметить, наличие лифта в доме не является особо приоритетным, однако большинство домов всё же содержит лифты (возможно, это вызвано общей тенденцией застройщиков, которая заключается в создании комфортных условий для потребителей).

Metro

dwellings$Metro[dwellings$Metro == ""] <- "Not Available"
metro <- table(dwellings$Metro)
metro <- data.frame(metro)
names(metro)[names(metro) == "Var1"] <- "Metro"
names(metro)[names(metro) == "Freq"] <- "Frequency"
kable(metro, caption = "Metro")
Metro
Metro Frequency
A.Hevskogo pl. 18
Admiralteiskaya 37
Akademicheskaya 72
Aleksandrovskaya 1
Antropshino 2
Avtovo 41
Baltiiskaya 15
Berngardovka 2
Bol’shevikov pr. 81
Buharestskaya 2
Carskoe selo 5
Chernaya rechka 25
Chernyshevskaya 104
Chkalovskaya 60
Devyatkino 59
Dostoevskaya 10
Dybenko ul. 68
Elektrosila 31
Elizarovskaya 6
Frunzenskaya 59
Gor’kovskaya 36
Gostinyi Dvor 29
Grajdanskii pr. 73
Kirishi 1
Kirovskii zavod 11
Kolpino 2
Komendantskii pr. 110
Krestovskii ostrov 38
Kupchino 81
Ladojskaya 67
Lenina pl. 49
Leninskii pr. 104
Lesnaya 35
Ligovskii pr. 9
Lomonosovskaya 25
Mayakovskaya 19
Mejdunarodnaya 62
Moskovskaya 103
Moskovskie vorota 5
Mujestva pl. 37
Narvskaya 8
Nevskii pr. 41
Not Available 78
Novocherkasskaya 37
Novyi Petergof 2
Obuhovo 2
Obvodnyi Kanal 7
Ozerki 63
Park Pobedy 58
Parnas 53
Pavlovsk 3
Pesochnaya 1
Petrogradskaya 92
Pionerskaya 41
Politehnicheskaya 10
Primorskaya 131
Proletarskaya 23
Prosveshcheniya pr. 84
Pushkinskaya 6
Razliv 1
Rybackoe 27
Sadovaya 26
Sennaya pl. 22
Sestroreck 3
Shushary 2
Sportivnaya 18
Staraya Derevnya 92
Staryi Petergof 1
Tarhovka 1
Tat’yanino 1
Tehnologicheskii i-t 17
Udel’naya 42
Vasileostrovskaya 65
Veteranov pr. 112
Vladimirskaya 24
Volkovskaya 1
Vosstaniya pl. 104
Vsevolojskaya 2
Vyborgskaya 13
Zelenogorsk 1
Zvenigorodskaya 3
Zvezdnaya 88
metro_first = metro[c(1:27), ]
metro_second = metro[c(28:54), ]
metro_third = metro[c(55:82), ]
ggplot(metro_first, aes(y=Metro, x=Frequency)) + 
  geom_bar(stat='identity', fill='lightblue', colour='darkred') +
  xlab('Частота') + ylab('Станция метро') +
  ggtitle('Количество объявлений по станциям метро (1)') + 
  xlim(0, 125)

ggplot(metro_second, aes(y=Metro, x=Frequency)) + 
  geom_bar(stat='identity', fill='lightblue', colour='darkred') +
  xlab('Частота') + ylab('Станция метро') +
  ggtitle('Количество объявлений по станциям метро (2)') + 
  xlim(0, 125)

ggplot(metro_third, aes(y=Metro, x=Frequency)) + 
  geom_bar(stat='identity', fill='lightblue', colour='darkred') +
  xlab('Частота') + ylab('Станция метро') +
  ggtitle('Количество объявлений по станциям метро (3)') + 
  xlim(0, 125)

На графике присутствует разделение Санкт-Петербурга на более мелкие участки - по станциям метро. Очевидно, что на более маленьких и менее застроенных участках, таких, например, как Волковская или Звенигородская, предложение квартир меньше всего, а на более застроенных, таких как Девяткино, наоборот.

Dist_metro_ad

dwellings$Dist_metro_ad[is.na(dwellings$Dist_metro_ad)] <- "Not Available"

distance_metro_ad <- data.frame(dwellings$Dist_metro_ad)
distance_metro_ad <- subset(distance_metro_ad, distance_metro_ad[,1]!="nan")
distance_metro_ad[,1] <- sapply(distance_metro_ad[,1], as.numeric)

distance_metro_ad_table <- data.frame(table(dwellings$Dist_metro_ad))
distance_metro_ad_mode <- distance_metro_ad_table$Var1[distance_metro_ad_table$Freq == max(distance_metro_ad_table$Freq)]

statistics_distance_metro_ad <- c(
  min(distance_metro_ad),
  quantile(distance_metro_ad[,1], 0.25, 'na.rm' = TRUE),
  median(distance_metro_ad[,1]),
  mean(distance_metro_ad[,1]),
  distance_metro_ad_mode, 
  quantile(distance_metro_ad[,1], 0.75, 'na.rm' = TRUE),
  max(distance_metro_ad),
  sd(distance_metro_ad[,1]),
  max(distance_metro_ad)-min(distance_metro_ad),
  skewness(distance_metro_ad),
  kurtosis(distance_metro_ad)
) 
distance_metro_ad_statistics <- data.frame("Coefficients" = statistics_distance_metro_ad, "Values" = round(statistics_distance_metro_ad, digits = 1))

kable(distance_metro_ad_statistics, caption = "Distance to Metro")
Distance to Metro
Coefficients Values
NA NA
320 320
NA NA
NA NA
492 492
1550 1550
NA NA
NA NA
NA NA
NA NA
NA NA
ggplot(distance_metro_ad, aes(x=dwellings.Dist_metro_ad, ..scaled..)) + 
  geom_density(color='darkred', fill='lightblue') +
  xlab('Расстояние до ближайшего метро, м.') + 
  ylab('Плотность распределения') +
  ggtitle('Плотность распределения расстояния до ближайшего метро') +
  scale_x_continuous(limits=c(0, 10000), breaks=seq(0, 10000, 1000))

ggplot(distance_metro_ad, aes(x=dwellings.Dist_metro_ad)) + 
  geom_histogram(boundary=0, bins=21, color='darkred', fill='lightblue') +
  xlab('Расстояние, м.') + 
  ylab('Частота интервала') +
  ggtitle('Расстояние до ближайшего метро') +
  scale_x_continuous(limits=c(0, 10000), breaks=c(seq(0, 10000, 1000)))

Большинство квартир расположены в шаговой доступнотси от метро. Чем дальше находится метро, тем меньше объявлений, так как ниже спрос на такие квартиры из-за неудобства, связанного с большим объемом времени, затраченного на путь до метро, или большими затратами на услуги такси. Обычно, если люди хотят арендовать квартиру, то у них в приоритете квартиры с максимальным количеством удобств, в том числе и наличие метро поблизости.

Building

dwellings$Building[dwellings$Building == ""] <- "Not Available"
building <- table(dwellings$Building)
building <- data.frame(building)
names(building)[names(building) == "Var1"] <- "Building Type"
names(building)[names(building) == "Freq"] <- "Frequency"
kable(building, caption = "Building")
Building
Building Type Frequency
121(Gatchinskaya) 2
137 seriya 40
504 seriya 17
504D seriya 5
600.11 seriya 9
602 seriya 2
606 seriya 11
Besshovnaya tehnologiya 4
Blochnyi 117
Brejnevka 18
Hrushchevka 25
Individual’nyi proekt 46
Kirp.Monolit 572
Kirpichnyi 1026
Korabl’ 16
Kottedj 4
Monol.Panel’nyi 84
Monolit 298
Not Available 320
Panel’nyi 201
Rekonstrukciya 1
Stalinskii 64
Staryi fond 78
Staryi fond bez KR 1
Staryi fond s KR 39
building_new = building
building_new$`Building Type` <- c('Старый фонд с КР', 'Старый фонд без КР', 
                                  'Старый фонд', 'Сталинский', 'Реконструкция',
                                  'Панельный', 'Нет данных', 'Монолит', 
                                  'Панельный монолит', 'Коттедж', 'Корабль',
                                  'Кирпичный', 'Кирпичный монолит', 
                                  'Индивидуальный проект', 'Хрущёвка', 'Брежневка',
                                  'Блочный', 'Бесшовная технология', '606 серия',
                                  '602 серия', '600.11 серия', '504D серия', 
                                  '504 серия', '137 серия', '121 (Гатчинская)')
ggplot(building_new, aes(Frequency, `Building Type`)) + 
  geom_bar(stat='identity', fill='lightblue', colour='darkred') +
  xlab('Частота') + ylab('Тип здания') +
  ggtitle('Количество зданий разных типов')

Очевидно, на этом графике количество предлагаемых зданий разных видов напрямую зависит от того, с какой частотой это здание можно встретить в городе. Мы можем сделать гипотезу о том, что люди, арендующие жилье в Петербурге, хотят приобщиться к общему укладу жизни среднестатистического жителя, который, в частности, выражается в выборе дизайна здания. Хотя всё-таки более вероятно, что люди скорее ориентируется на отзывы людей, которые говорят, в каком здании более комфортно жить. Последнее выглядит более реалистично.

Floor

dwellings$Floor[is.na(dwellings$Floor)] <- "Not Available"
floor <- table(dwellings$Floor)
floor <- data.frame(floor)
names(floor)[names(floor) == "Var1"] <- "Floor"
names(floor)[names(floor) == "Freq"] <- "Frequency"
kable(floor, caption = "Floor")
Floor
Floor Frequency
1 146
10 107
11 69
12 89
13 58
14 54
15 63
16 40
17 24
18 24
19 21
2 311
20 26
21 14
22 19
23 7
24 6
25 3
3 420
31 1
4 350
5 282
6 200
7 222
8 159
9 116
Not Available 169
floor_new = floor
X = levels(floor_new[12, 1])
floor_new$Floor = 99
for (i in 1:27)
  floor_new[i, 1] = X[i]
floor_new = floor_new[-27, ]
floor_new$Floor = as.integer(floor_new$Floor)
ggplot(floor_new, aes(Floor, Frequency)) + 
  geom_bar(stat='identity', fill='lightblue', colour='darkred') +
  xlab('Этаж') + ylab('Частота') +
  ggtitle('Количество квартир по этажам') +
  scale_x_continuous(breaks=c(0:31))

Разброс в количистве квартир по различным этажам обсуловлен тем, что люди предпочитают жить не очень низко из-за шума или большей вероятности ограбления, но и не слишком высоко из-за больших физических нагрузок, а также тем, что пятиэтажек намного больше, чем десятиэтажек и более высоких зданий. Однако есть совсем небольшое количество квартир на 31 этаже. Эти данные значительно выбиваются на фоне остальных. Возможно, это ошибка данных на уровне статистической погрешности.

Refurbished

dwellings$Refurbished[dwellings$Refurbished == ""] <- "Not Available"
refurbished <- table(dwellings$Refurbished)
refurbished <- data.frame(refurbished)
names(refurbished)[names(refurbished) == "Var1"] <- "Refurbished"
names(refurbished)[names(refurbished) == "Freq"] <- "Frequency"
kable(refurbished, caption = "Refurbished")
Refurbished
Refurbished Frequency
Dush 1
Evrostandart 893
Ne trebuetsya 162
Not Available 1297
Otdel’naya 22
Proizveden 605
Sidyachaya 1
Sovmeshchennaya 12
Trebuetsya 7
refurbished_new = refurbished
refurbished_new$Refurbished = c('Душ', 'Евростандарт', 'Не требуется', 
                                'Нет данных', 'Отдельная', 'Произведён', 
                                'Сидячая', 'Совмещённая', 'Требуется')
ggplot(refurbished_new, aes(y=Refurbished, x=Frequency)) + 
  geom_bar(stat='identity', fill='lightblue', colour='darkred') +
  xlab('Частота') + ylab('Варианты') +
  ggtitle('Ремонт в квартире')

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

Furnished

dwellings$Furnished[dwellings$Furnished == ""] <- "Not Available"
furnished <- table(dwellings$Furnished)
furnished <- data.frame(furnished)
names(furnished)[names(furnished) == "Var1"] <- "Furnished"
names(furnished)[names(furnished) == "Freq"] <- "Frequency"
kable(furnished, caption = "Furnished")
Furnished
Furnished Frequency
Est’ 93
Garnit+kuh.nab. 91
Garnitur 70-80 6
Garnitur Sovr. 301
Minimum 86
Net 116
Not Available 842
Sbor.+kuh.garn. 596
Sbornaya 70-80 18
Sbornaya Sovr. 825
Tol’ko kuhnya 26
furnished_new = furnished
furnished_new$Furnished = c('Есть', 'Гарнитур+кух.наб', 'Гарнитур 70-80',
                            'Гарнитур совр.', 'Минимум', 'Нет', 'Нет данных',
                            'Сбор.+кух.гарн.', 'Сборная 70-80', 'Сборная совр.',
                            'Только кухня')
ggplot(furnished_new, aes(y=Furnished, x=Frequency)) + 
  geom_bar(stat='identity', fill='lightblue', colour='darkred') +
  xlab('Частота') + ylab('Элементы мебели') +
  ggtitle('Наличие мебели в квартире')

Мало людей, не имеющих свою квартиру, имеют мебель или желают её приобрести. Поэтому квартир, где нет или минимум мебели, так мало.

Bath

dwellings$Bath[dwellings$Bath == ""] <- "Not Available"
bath <- table(dwellings$Bath)
bath <- data.frame(bath)
names(bath)[names(bath) == "Var1"] <- "Access to Bath"
names(bath)[names(bath) == "Freq"] <- "Frequency"
kable(bath, caption = "Access to Bath")
Access to Bath
Access to Bath Frequency
Bol’shoi 10
Dush 57
Est’ 151
Na kuhne 2
Net 4
Not Available 1542
Otdel’naya 809
Poperechnaya 7
Prodol’naya 12
Sovmeshchennaya 406
bath_new = bath
bath_new$`Access to Bath` = c('Большой', 'Душ', 'Есть', 'На кухне', 'Нет',
                              'Нет данных', 'Отдельная', 'Поперечная', 
                              'Продольная', 'Совмещённая')
ggplot(bath_new, aes(y=`Access to Bath`, x=Frequency)) + 
  geom_bar(stat='identity', fill='lightblue', colour='darkred') +
  xlab('Частота') + ylab('Варианты') +
  ggtitle('Наличие ванны или душа')

Данный график по своей информативности во многом совпадает с предыдущими. Однако в большинстве своем данные о наличии ванны или душа не указаны. Если рассматривать различные варианты наличия того или другого, то чаще всего встречается отдельная ванная. Думаем, спрос на квартиры, в которых совсем нет ни ванны, ни душа, будет крайне мал.

Balcony

dwellings$Balcony[dwellings$Balcony == ""] <- "Not Available"
balcony <- table(dwellings$Balcony)
balcony <- data.frame(balcony)
names(balcony)[names(balcony) == "Var1"] <- "Access to Balcony"
names(balcony)[names(balcony) == "Freq"] <- "Frequency"
kable(balcony, caption = "Access to Balcony")
Access to Balcony
Access to Balcony Frequency
2 balkona 25
2 lodjii 19
3 erkera 1
3 lodjii 5
4 balkona 1
Balkon 771
Balkon i erker 1
Balkon i lodjiya 11
Erker 3
est’ 158
Lodjiya 380
net 11
Net 290
Not Available 1003
Terrasa 11
Zasteklennaya lodjiya 223
Zasteklennyi balkon 87
balcony_new = balcony
balcony_new$`Access to Balcony` = c('Два балкона', 'Две лоджии', 'Три эркера',
                                    'Три лоджии', 'Четыре балкона', 'Балкон',
                                    'Балкон и эркер', "Балкон и лоджия", 
                                    'Эркер', 'Есть', 'Лоджия', 'Нет', 'нет', 
                                    'Нет данных', 'Терасса', 
                                    'Застеклённая лоджия', 'Застеклённый балкон')
ggplot(balcony_new, aes(y=`Access to Balcony`, x=Frequency)) + 
  geom_bar(stat='identity', fill='lightblue', colour='darkred') +
  xlab('Частота') + ylab('Варианты') +
  ggtitle('Наличие балкона в квартире')

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

Year_Construction

dwellings$Year_construction[is.na(dwellings$Year_construction)] <- "Not Available"
year_construction <- table(dwellings$Year_construction)
year_construction <- data.frame(year_construction)
names(year_construction)[names(year_construction) == "Var1"] <- "Year_Construction"
names(year_construction)[names(year_construction) == "Freq"] <- "Frequency"
kable(year_construction, caption = "Year_Construction")
Year_Construction
Year_Construction Frequency
1818 1
1838 1
1904 1
1911 1
1913 1
1914 1
1917 1
1919 1
1952 1
1953 1
1954 1
1956 4
1960 3
1961 2
1963 1
1964 2
1965 2
1966 1
1967 2
1968 3
1969 1
1970 3
1972 4
1973 3
1974 2
1975 1
1976 3
1978 3
1979 1
1980 5
1981 1
1982 1
1983 2
1985 1
1987 2
1989 2
1990 1
1996 3
1997 2
1998 1
2000 7
2001 1
2002 2
2003 2
2004 6
2005 8
2006 11
2007 13
2008 15
2009 7
2010 14
2011 11
2012 18
2013 12
2014 31
2015 45
2016 45
2017 5
Not Available 2674
year_construction_first = year_construction[c(1:20),]
year_construction_second = year_construction[c(21:40),]
year_construction_third = year_construction[c(41:58),]
ggplot(year_construction_first, aes(y=Year_Construction, x=Frequency)) + 
  geom_bar(stat='identity', fill='lightblue', colour='darkred') +
  xlab('Частота') + ylab('Год') +
  ggtitle('Год постройки дома (1)') +
  xlim(0, 45)

ggplot(year_construction_second, aes(y=Year_Construction, x=Frequency)) + 
  geom_bar(stat='identity', fill='lightblue', colour='darkred') +
  xlab('Частота') + ylab('Год') +
  ggtitle('Год постройки дома (2)')

ggplot(year_construction_third, aes(y=Year_Construction, x=Frequency)) + 
  geom_bar(stat='identity', fill='lightblue', colour='darkred') +
  xlab('Частота') + ylab('Год') +
  ggtitle('Год постройки дома (3)')

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

District_Ad

district_ad <- table(dwellings$District_ad)
district_ad <- data.frame(district_ad)
names(district_ad)[names(district_ad) == "Var1"] <- "District Address"
names(district_ad)[names(district_ad) == "Freq"] <- "Frequency"
kable(district_ad, caption = "District Address")
District Address
District Address Frequency
Адмиралтейский 135
Василеостровский 199
Всеволожский 131
Выборгский 273
Гатчинский 6
Калининский 219
Киришский 1
Кировский 130
Колпинский 10
Красногвардейский 108
Красносельский 148
Кронштадтский 1
Курортный 16
Ломоносовский 3
Лужский 1
Московский 331
Невский 196
Петроградский 243
Петродворцовый 14
Приморский 296
Приозерский 2
Пушкинский 37
Тосненский 3
Фрунзенский 122
Центральный 375
ggplot(district_ad, aes(y=`District Address`, x=Frequency)) + 
  geom_bar(stat='identity', fill='lightblue', colour='darkred') + 
  xlab('Частота') + ylab('Район') + 
  ggtitle('Количество объявлений по районам Санкт-Петербурга')

Этот график демонстрирует то же самое, что и график о регионах. В районах, находящихся далеко, за пределами Санкт-Петербурга, такие как Тосненский, Лужский, Киришский, предложение квартир очень низкое из-за такого же низкого спроса. У приезжих людей наблюдается тенденция снимать жилье поближе к центру, что может быть вызвано одним из двух факторов: во-первых, расположением места работы, во-вторых, что относительно спорно, модой и статусностью.

Price

statistics <- c("Minimum", "First Quantile", "Median", "Mean", "Mode", 
                "Third Quantile", "Max Value", "Root Mean Square Deviation", 
                "Scope", "Skewness", "Kurtosis")

price <- dwellings$Price

df_price <- data.frame(table(dwellings$Price))

mode_price <- df_price$Var1[df_price$Freq == max(df_price$Freq)]
mode_price
## [1] 20000
## 145 Levels: 18 20 30 1450 1500 1700 2000 2100 2500 3000 6500 8000 ... 750000
statistics_price = c(
  min(dwellings$Price), 
  quantile(dwellings$Price, 0.25), 
  median(dwellings$Price), 
  mean(dwellings$Price), 
  mode_price, 
  quantile(dwellings$Price, 0.75), 
  max(dwellings$Price), 
  sd(dwellings$Price), 
  max(dwellings$Price)-min(dwellings$Price), 
  skewness(dwellings$Price), 
  kurtosis(dwellings$Price)
)

price_statistics <- data.frame("Coefficients" = statistics, "Values" = round(statistics_price, digits = 1))

kable(price_statistics, caption = "Data. Price")
Data. Price
Coefficients Values
Minimum 18.0
First Quantile 22000.0
Median 30000.0
Mean 44922.3
Mode 30.0
Third Quantile 50000.0
Max Value 750000.0
Root Mean Square Deviation 45325.2
Scope 749982.0
Skewness 4.9
Kurtosis 45.2
price_new = data.frame(price)
ggplot(price_new, aes(x=price, ..scaled..)) + 
  geom_density(color='darkred', fill='lightblue') +
  xlab('Сумма за месяц, тыс. руб.') + 
  ylab('Плотность распределения') +
  ggtitle('Плотность распределения цены за квартиру (за месяц)') +
  scale_x_continuous(limits=c(0, 200000), breaks=seq(0, 200000, 25000),
                     labels=seq(0, 200, 25))

ggplot(price_new, aes(x=price)) + 
  geom_histogram(boundary=0, bins=17, color='darkred', fill='lightblue') +
  xlab('Сумма за месяц, тыс.руб.') + 
  ylab('Частота интервала') +
  ggtitle('Цена за квартиру (в месяц)') +
  scale_x_continuous(limits=c(0, 200000), breaks=seq(0, 200000, 25000),
                     labels=seq(0, 200, 25))

По графику видно, что большая часть цен варьируется от 15 до 25 тысяч рублей в месяц. Возможно, люди готовы отдать именно такую цену за аренду. Цены ниже не выгодны для арендодателей, а выше - для арендаторов. Также есть выделяющиеся данные - от 180 тысяч рублей в месяц. Такие цены, очевидно, люди готовы платить за квартиры с 5 и более комнатами.

Area_Total

dwellings$Area_total[is.na(dwellings$Area_total)] <- 0.0 

area_total <- dwellings$Area_total

df_area_total <- data.frame(table(dwellings$Area_total))

mode_area_total <- df_area_total$Var1[df_area_total$Freq == max(df_area_total$Freq)]
mode_area_total
## [1] 0
## 202 Levels: 0 12 16 18 20 21 22 23 24 24.5 25 26 26.6 26.7 27 28 29 30 ... 400
statistics_area_total = c(
  min(dwellings$Area_total), 
  quantile(dwellings$Area_total, 0.25), 
  median(dwellings$Area_total), 
  mean(dwellings$Area_total), 
  mode_area_total, 
  quantile(dwellings$Area_total, 0.75), 
  max(dwellings$Area_total), 
  sd(dwellings$Area_total), 
  max(dwellings$Area_total)-min(dwellings$Area_total), 
  skewness(dwellings$Area_total), 
  kurtosis(dwellings$Area_total)
)

area_total_statistics <- data.frame("Coefficients" = statistics, "Values" = round(statistics_area_total, digits = 1))

kable(area_total_statistics, caption = "Data. Area Total")
Data. Area Total
Coefficients Values
Minimum 0.0
First Quantile 36.0
Median 48.0
Mean 58.2
Mode 1.0
Third Quantile 70.0
Max Value 400.0
Root Mean Square Deviation 39.8
Scope 400.0
Skewness 2.4
Kurtosis 13.4
area_total_new = data.frame(area_total)
ggplot(area_total_new, aes(x=area_total, ..scaled..)) + 
  geom_density(color='darkred', fill='lightblue') +
  xlab('Общая площадь, кв.м.') + 
  ylab('Плотность распределения') +
  ggtitle('Плотность распределения общих площадей квартир') + 
  scale_x_continuous(limits=c(0, 250), breaks=seq(0, 250, 25))

ggplot(area_total_new, aes(x=area_total)) + 
  geom_histogram(boundary=0, bins=21,color='darkred', fill='lightblue') +
  xlab('Общая площадь, кв.м.') + 
  ylab('Частота интервала') +
  ggtitle('Общая площадь в квартирах, кв.м.') + 
  scale_x_continuous(limits=c(0, 250), breaks=seq(0, 250, 25))

Большинство квартир имеют общую площадь от 25 до 50 кв.м. О квартирах с большей площадью меньше объявлений, так же как и у квартир с меньшей площадью, чем 25 кв.м., так как квартиры с меньшей площадью могут быть неудобны для проживания, а с большей - иметь слишком большую стоимость.

Area_Living

dwellings$Area_living[is.na(dwellings$Area_living)] <- 0.0

area_living <- dwellings$Area_living

df_area_living <- data.frame(table(dwellings$Area_living))

mode_area_living <- df_area_living$Var1[df_area_living$Freq == max(df_area_living$Freq)]
mode_area_living
## [1] 18
## 199 Levels: 0 2 8 9 10 11 12 12.7 13 14 14.5 15 15.5 15.63 16 16.1 16.5 ... 300
statistics_area_living = c(
  min(dwellings$Area_living), 
  quantile(dwellings$Area_living, 0.25), 
  median(dwellings$Area_living), 
  mean(dwellings$Area_living), 
  mode_area_living, 
  quantile(dwellings$Area_living, 0.75), 
  max(dwellings$Area_living), 
  sd(dwellings$Area_living), 
  max(dwellings$Price)-min(dwellings$Area_living), 
  skewness(dwellings$Area_living), 
  kurtosis(dwellings$Area_living)
)

area_living_statistics <- data.frame("Coefficients" = statistics, "Values" = round(statistics_area_living, digits = 1))

kable(area_living_statistics, caption = "Data. Area Living")
Data. Area Living
Coefficients Values
Minimum 0.0
First Quantile 18.0
Median 30.0
Mean 37.6
Mode 25.0
Third Quantile 46.0
Max Value 300.0
Root Mean Square Deviation 28.4
Scope 750000.0
Skewness 2.8
Kurtosis 15.6
area_living_new = data.frame(area_living)
ggplot(area_living_new, aes(x=area_living, ..scaled..)) + 
  geom_density(color='darkred', fill='lightblue') +
  xlab('Жилая площадь, кв.м.') + 
  ylab('Плотность распределения') +
  ggtitle('Плотность распределения жилых площадей квартир') + 
  scale_x_continuous(limits=c(0, 200), breaks=seq(0, 200, 25))

ggplot(area_living_new, aes(x=area_living)) + 
  geom_histogram(boundary=0, bins=17, color='darkred', fill='lightblue') +
  xlab('Жилая площадь, кв.м.') + 
  ylab('Частота интервала') +
  ggtitle('Жилая площадь в квартирах, кв.м.') + 
  scale_x_continuous(limits=c(0, 200), breaks=seq(0, 200, 25))

Данный график согласуется с предыдущим. Чем больше общая площадь квартиры, тем соответсвенно больше и жилая площадь.

Area_Kitchen

dwellings$Area_kitchen[is.na(dwellings$Area_kitchen)] <- 0.0

area_kitchen <- dwellings$Area_kitchen

df_area_kitchen <- data.frame(table(dwellings$Area_kitchen))

mode_area_kitchen <- df_area_kitchen$Var1[df_area_kitchen$Freq == max(df_area_kitchen$Freq)]
mode_area_kitchen
## [1] 10
## 139 Levels: 0 1 2 3 4 4.4 4.8 5 5.2 5.4 5.5 5.6 5.8 5.9 6 6.2 6.3 6.4 ... 210
statistics_area_kitchen = c(
  min(dwellings$Area_kitchen), 
  quantile(dwellings$Area_kitchen, 0.25), 
  median(dwellings$Area_kitchen), 
  mean(dwellings$Area_kitchen), 
  mode_area_kitchen, 
  quantile(dwellings$Area_kitchen, 0.75), 
  max(dwellings$Area_kitchen), 
  sd(dwellings$Area_kitchen), 
  max(dwellings$Price)-min(dwellings$Area_kitchen), 
  skewness(dwellings$Area_kitchen), 
  kurtosis(dwellings$Area_kitchen)
)

area_kitchen_statistics <- data.frame("Coefficients" = statistics, "Values" = round(statistics_area_kitchen, digits = 1))

kable(area_kitchen_statistics, caption = "Data. Area Kitchen")
Data. Area Kitchen
Coefficients Values
Minimum 0.0
First Quantile 7.0
Median 10.0
Mean 12.4
Mode 40.0
Third Quantile 14.0
Max Value 210.0
Root Mean Square Deviation 13.2
Scope 750000.0
Skewness 4.4
Kurtosis 36.5
area_kitchen_new = data.frame(area_kitchen)
ggplot(area_kitchen_new, aes(x=area_kitchen, ..scaled..)) + 
  geom_density(color='darkred', fill='lightblue') +
  xlab('Площадь кухни, кв.м.') + 
  ylab('Плотность распределения') +
  ggtitle('Плотность распределения площадей кухонь в квартирах') + 
  scale_x_continuous(limits=c(0,60), breaks=seq(0, 60, 10))

ggplot(area_kitchen_new, aes(x=area_kitchen)) + 
  geom_histogram(boundary=0, bins=13, color='darkred', fill='lightblue') +
  xlab('Площадь кухни, кв.м.') + 
  ylab('Частота интервала') +
  ggtitle('Площадь кухни в квартирах, кв.м.') + 
  scale_x_continuous(limits=c(0,60), breaks=seq(0, 60, 5))

Аналогично двум предыдущим графикам, люди отдают предпочтение кухне средних размеров. до 5 кв.м. - слишком маленькая, больше 15 кв.м. - уже слишком большая.

Minimum_Duration

minimum_duration = data.frame(data$Minimum_duration)
ggplot(minimum_duration, aes(x=data.Minimum_duration, ..scaled..)) + 
  geom_density(color='darkred', fill='lightblue') +
  xlab('Время, мес.') + 
  ylab('Плотность распределения показателя') +
  ggtitle('Минимальный срок действия договора аренды') + 
  scale_x_continuous(limits=c(0, 20), breaks=seq(0, 20, 5))

ggplot(minimum_duration, aes(x=data.Minimum_duration)) + 
  geom_histogram(boundary=0, bins=5, color='darkred', fill='lightblue') +
  xlab('Время, мес.') + 
  ylab('Частота интервала') +
  ggtitle('Минимальный срок действия договора аренды') + 
  scale_x_continuous(limits=c(0, 20), breaks=seq(0, 20, 5))

По графику мы видим, что самый частый минимальный срок договора аренды - 11 месяцев или год. Это связано с временными издержками на сдачу квартиры, которые могут быть большими. Поэтому, чтобы иметь стабильный доход, домовладельцы устанавливают в среднем такой срок.

NFloor

n_floor_new = data.frame(data$NFloor)
ggplot(n_floor_new, aes(x=data$NFloor, ..scaled..)) + 
  geom_density(color='darkred', fill='lightblue') +
  xlab('Количество этажей') + 
  ylab('Плотность распределения') +
  ggtitle('Всего этажей в доме') + 
  scale_x_continuous(limits=c(0,30), breaks=seq(0, 30, 2))

ggplot(n_floor_new, aes(x=data$NFloor)) + 
  geom_histogram(boundary=0, bins=16, color='darkred', fill='lightblue') +
  xlab('Количество этажей') + 
  ylab('Частота интервала') +
  ggtitle('Всего этажей в доме') + 
  scale_x_continuous(limits=c(0,30), breaks=seq(0, 30, 2))

Данный график демонстрирует, что зданий с пятью этажами в Ленинградской области намного больше, чем более высоких сооружений или, наоборот, более низких. Отсюда такие числа.

ДИАГРАММЫ РАССЕЯНИЯ И КОЭФФИЦИЕНТЫ КОРРЕЛЯЦИИ

ПЕРЕМЕННЫЕ ЦЕНЫ

dwellings$Area_total[which(dwellings$Area_total == 0)] <- NA 

dwellings$Price_per_thousands <- dwellings$Price / 1000 
dwellings$log_Price <- log(dwellings$Price)
dwellings$Price_per_area <- dwellings$Price / dwellings$Area_total
dwellings$log_Price_per_area <- log(dwellings$Price_per_area)

summary(dwellings[,c("Price", "log_Price", "Price_per_area", "log_Price_per_area")])
##      Price          log_Price      Price_per_area     log_Price_per_area
##  Min.   :    18   Min.   : 2.890   Min.   :   0.562   Min.   :-0.5754   
##  1st Qu.: 22000   1st Qu.: 9.999   1st Qu.: 500.000   1st Qu.: 6.2146   
##  Median : 30000   Median :10.309   Median : 607.477   Median : 6.4093   
##  Mean   : 44922   Mean   :10.446   Mean   : 672.049   Mean   : 6.4357   
##  3rd Qu.: 50000   3rd Qu.:10.820   3rd Qu.: 769.231   3rd Qu.: 6.6454   
##  Max.   :750000   Max.   :13.528   Max.   :3488.372   Max.   : 8.1572   
##                                    NA's   :182        NA's   :182

ФУНКЦИЯ ДЛЯ ГРАФИКОВ

data <- dwellings 

ggplot(data, aes(x = Area_total, y = Price)) + geom_point()

scatter_plot <- function(X, Y, df) {
  plot <- ggplot(df, aes(x = {{X}}, y = {{Y}})) + geom_point()
  print(plot)
}

scatter_plot(Area_total, Price, data) 

scatter_plot(Area_total, log_Price, data) 

scatter_plot(Rooms, log_Price, data) 

scatter_plot(Area_living, log_Price, data)

Dist_metro_ad

data$Dist_metro_ad <- as.numeric(data$Dist_metro_ad)
scatter_plot(Dist_metro_ad, Price, data) + geom_point()

Rooms

data$Rooms[which(data$Rooms == "1 (studiya)")] <- "1"
data$Rooms <- as.numeric(data$Rooms)

scatter_plot(Rooms, Price, data)

ggplot(data, aes(x = as.factor(Rooms), y = Price)) + geom_boxplot() # Rooms должен быть факторной переменной

Minimum_duration

data$Minimum_duration <- gsub(" mes.", "", data$Minimum_duration)
data$Minimum_duration <- as.numeric(data$Minimum_duration)
scatter_plot(Minimum_duration, Price, data)

ggplot(data, aes(x = as.factor(Minimum_duration), y = Price)) + geom_boxplot()

Check

scatter_plot(Area_total, dwellings$Price, data) 

scatter_plot(Area_total, dwellings$Price_per_thousands, data) 

data <- subset(data, Price <= 500000) 
data <- subset(data, Area_total <= 200 | is.na(Area_total))

Area_total

scatter_plot(Area_total, Price, data)

scatter_plot(Area_total, Price_per_thousands, data)

data <- subset(data, Price_per_area <= 2000) 
scatter_plot(Area_total, Price_per_area, data)

С увеличением площади квартиры цена устойчиво возрастает. нет очевидной зависимости между площадью квартиры и ценой за кв.м.

Dist_metro_ad

data <- subset(data, Dist_metro_ad <= 7500&Price <= 300000) 
scatter_plot(Dist_metro_ad, Price, data) 

scatter_plot(Dist_metro_ad, Price_per_thousands, data) 

data <- subset(data, Dist_metro_ad <= 7500& 250<=Price_per_area)
scatter_plot(Dist_metro_ad, Price_per_area, data)

Здесь не существует очевидной зависимости между расстоянием до метро от квартиры и ценой.

Rooms

data <- subset(data, Rooms <= 40000&Price <= 300000) 
ggplot(data, aes(x = as.factor(Rooms), y = Price_per_thousands)) + geom_boxplot()

ggplot(data, aes(x = as.factor(Rooms), y = Price_per_area)) + geom_boxplot()

При увеличении числа комнат цена также заметно возрастает. В то же время, увеличение числа комнат не способстует значимому увеличению цены за кв.м.

Area_living

data <- subset(data, Area_living <= 200)
scatter_plot(Area_living, Price_per_thousands, data)

scatter_plot(Area_living, Price_per_area, data)

С возрастанием жилой площади квартиры цена заметно возрастает. Хотя увеличение жилой площади не способстует значимому увеличению цены за кв.м.

Area_kitchen

data <- subset(data, Area_kitchen <= 50) 
scatter_plot(Area_kitchen, Price_per_thousands, data)

scatter_plot(Area_kitchen, Price_per_area, data)

Рост кухонной площади не способстует значимому увеличению цены.

The Terminal Result

data_corr <- na.omit(data) # убираем все пропуски
data_corr$Lift = as.numeric(data_corr$Lift)
data_corr$Floor = as.numeric(data_corr$Floor)
data_corr$NFloor = as.numeric(data_corr$NFloor)
data_corr$Date_entry = as.Date(data_corr$Date_entry)
data_corr$Year_construction = as.numeric(data_corr$Year_construction)
new_data_corr = data_corr[,-(1:5)]
new_data_corr = new_data_corr[, -6]
new_data_corr = new_data_corr[, -(12:15)]
cor(new_data_corr) # простая корреляционная матрица
##                     Dist_metro_ad         Rooms       Price Minimum_duration
## Dist_metro_ad          1.00000000 -0.1240218678 -0.21441014       0.08252225
## Rooms                 -0.12402187  1.0000000000  0.64389767      -0.03838587
## Price                 -0.21441014  0.6438976741  1.00000000      -0.04628119
## Minimum_duration       0.08252225 -0.0383858718 -0.04628119       1.00000000
## No_agents              0.02827795 -0.0323480540 -0.04234720       0.12240947
## Area_total            -0.16836452  0.8468907318  0.82250664      -0.03730804
## Area_living           -0.13010490  0.8313861444  0.69853894      -0.01413912
## Area_kitchen          -0.09394954  0.3242639599  0.40198713      -0.04212357
## Floor                  0.07370491 -0.1709396550 -0.12176855       0.01216460
## NFloor                 0.13022345 -0.2844786506 -0.21044567       0.01849879
## Lift                   0.16732111 -0.0999347320 -0.02213806       0.15753963
## Latitude              -0.11047386  0.0001870778  0.02174504      -0.01974375
## Longitude             -0.19459912 -0.0487102712 -0.07181110      -0.01930971
## Year_construction              NA            NA          NA               NA
## Price_per_thousands   -0.21441014  0.6438976741  1.00000000      -0.04628119
## log_Price             -0.26755422  0.7022249218  0.93351764      -0.02860498
## Price_per_area        -0.22359153  0.0757399907  0.64028251      -0.03404927
## log_Price_per_area    -0.23340092  0.0410499093  0.59615705      -0.02455615
##                        No_agents  Area_total  Area_living Area_kitchen
## Dist_metro_ad        0.028277949 -0.16836452 -0.130104900 -0.093949543
## Rooms               -0.032348054  0.84689073  0.831386144  0.324263960
## Price               -0.042347197  0.82250664  0.698538937  0.401987128
## Minimum_duration     0.122409472 -0.03730804 -0.014139124 -0.042123565
## No_agents            1.000000000 -0.03381135 -0.003622787 -0.126358521
## Area_total          -0.033811352  1.00000000  0.876293137  0.456325388
## Area_living         -0.003622787  0.87629314  1.000000000  0.238415638
## Area_kitchen        -0.126358521  0.45632539  0.238415638  1.000000000
## Floor               -0.030663416 -0.11832461 -0.145777874  0.002724893
## NFloor              -0.032692772 -0.20634580 -0.245007666 -0.021870404
## Lift                 0.050822097 -0.02959248 -0.058189257  0.032197810
## Latitude            -0.058335150  0.05131619  0.016302405  0.056715704
## Longitude            0.000248039 -0.08009433 -0.067973640 -0.027153738
## Year_construction             NA          NA           NA           NA
## Price_per_thousands -0.042347197  0.82250664  0.698538937  0.401987128
## log_Price           -0.042656586  0.83271790  0.730256670  0.415530655
## Price_per_area      -0.030286261  0.16856821  0.134919621  0.102481981
## log_Price_per_area  -0.024415031  0.13230462  0.106125466  0.079481893
##                            Floor       NFloor         Lift      Latitude
## Dist_metro_ad        0.073704911  0.130223445  0.167321106 -0.1104738605
## Rooms               -0.170939655 -0.284478651 -0.099934732  0.0001870778
## Price               -0.121768555 -0.210445668 -0.022138058  0.0217450430
## Minimum_duration     0.012164598  0.018498789  0.157539625 -0.0197437475
## No_agents           -0.030663416 -0.032692772  0.050822097 -0.0583351501
## Area_total          -0.118324613 -0.206345800 -0.029592475  0.0513161854
## Area_living         -0.145777874 -0.245007666 -0.058189257  0.0163024051
## Area_kitchen         0.002724893 -0.021870404  0.032197810  0.0567157042
## Floor                1.000000000  0.703340577  0.287651300  0.0201999736
## NFloor               0.703340577  1.000000000  0.363750105  0.0082395567
## Lift                 0.287651300  0.363750105  1.000000000 -0.0039690449
## Latitude             0.020199974  0.008239557 -0.003969045  1.0000000000
## Longitude            0.011399607 -0.007848273 -0.022338583  0.0567199435
## Year_construction             NA           NA           NA            NA
## Price_per_thousands -0.121768555 -0.210445668 -0.022138058  0.0217450430
## log_Price           -0.115510190 -0.208929375 -0.048249634  0.0139789199
## Price_per_area      -0.060707404 -0.100935909 -0.031820754 -0.0483664335
## log_Price_per_area  -0.044895645 -0.083680787 -0.042104014 -0.0576743919
##                        Longitude Year_construction Price_per_thousands
## Dist_metro_ad       -0.194599116                NA         -0.21441014
## Rooms               -0.048710271                NA          0.64389767
## Price               -0.071811099                NA          1.00000000
## Minimum_duration    -0.019309710                NA         -0.04628119
## No_agents            0.000248039                NA         -0.04234720
## Area_total          -0.080094335                NA          0.82250664
## Area_living         -0.067973640                NA          0.69853894
## Area_kitchen        -0.027153738                NA          0.40198713
## Floor                0.011399607                NA         -0.12176855
## NFloor              -0.007848273                NA         -0.21044567
## Lift                -0.022338583                NA         -0.02213806
## Latitude             0.056719944                NA          0.02174504
## Longitude            1.000000000                NA         -0.07181110
## Year_construction             NA                 1                  NA
## Price_per_thousands -0.071811099                NA          1.00000000
## log_Price           -0.099741381                NA          0.93351764
## Price_per_area      -0.062415073                NA          0.64028251
## log_Price_per_area  -0.066119791                NA          0.59615705
##                       log_Price Price_per_area log_Price_per_area
## Dist_metro_ad       -0.26755422    -0.22359153        -0.23340092
## Rooms                0.70222492     0.07573999         0.04104991
## Price                0.93351764     0.64028251         0.59615705
## Minimum_duration    -0.02860498    -0.03404927        -0.02455615
## No_agents           -0.04265659    -0.03028626        -0.02441503
## Area_total           0.83271790     0.16856821         0.13230462
## Area_living          0.73025667     0.13491962         0.10612547
## Area_kitchen         0.41553066     0.10248198         0.07948189
## Floor               -0.11551019    -0.06070740        -0.04489564
## NFloor              -0.20892937    -0.10093591        -0.08368079
## Lift                -0.04824963    -0.03182075        -0.04210401
## Latitude             0.01397892    -0.04836643        -0.05767439
## Longitude           -0.09974138    -0.06241507        -0.06611979
## Year_construction            NA             NA                 NA
## Price_per_thousands  0.93351764     0.64028251         0.59615705
## log_Price            1.00000000     0.63854990         0.61925010
## Price_per_area       0.63854990     1.00000000         0.97703111
## log_Price_per_area   0.61925010     0.97703111         1.00000000
corr_table <- cor(new_data_corr)

library(corrplot)
## corrplot 0.84 loaded
corrplot(corr_table)

corrplot(corr_table, method = "number")

На представленной матрице мы можем видеть зависимость различных данных друг от друга. Очевидным образом видна сильная взаимосвязь между такими переменными, как число комнат и общая площадь квартиры/жилая площадь, общая площадь и жилая площадь. Это вполне логично, так как чем больше комнат в квартире, тем соответственно больше и ее площадь, и чем больше общая площадь, тем больше и жилая. То же самое можно сказать и про этажи. Взаимосвязь между числом этажей в доме и этажом, на котором располагается квартира, уже не так сильна, но все же существенна. Ели в доме 20 этажей, то значение переменной “Floor” может варьироваться от 1 до 20, а если этажей всего 5, то значения будут всего от 1 до 5. Наиболее интересна зависимость цены от каких-либо факторов. Исходя из представленных данных, цены на аренду жилья в основном зависят от общей площади квартиры (и, как следствие, от жилой площади). При этом количество комнат тоже оказывает влияние на цены, однако значительно меньшее, чем площадь. Также можно заметить, что такие факторы, как минимальная продолжительность договора и наличие лифта в доме никак не влияют на цену аренды.