| 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 |
К количественным показателям мы отнесли те значения, которые мы можем представить в численной форме и сравнить между собой, например, цены на жильё. К качественным показателям мы отнесли те значения, которые несут в себе тот или иной признак или характеристику, например, названия станции метро.
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 |
|---|---|
| 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 раз меньше, чем в Санкт-Петербурге. Это, скорее всего, связано со спросом на жильё в этих районах - очевидно, что в Петербурге он будет намного больше, чем в Ленинградской области.
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 |
|---|---|
| 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('Количество комнат в квартире')
Исходя из графика, можно сделать вывод, что наиболее популярны однокомнатные квартиры. За ними идут двух- и трехкомнатные. Самые менее встречающиеся - квартиры с четырьмя и более комнатами, а также студии. Данную тенденцию можно объяснить не большим спросом на многокомнатные квартиры и студии, что, вполне вероятно, может быть вызвано относительной дешевизной однокомнатных квартир.
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 | 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('Агент при сдаче задействуется')
На графике мы видим, что число домовладельцев, которые задействуют риелторов при сдаче своей жилплощади, намного больше чем тех, кто решает сдавать сам. Можно допустить, что это происходит, потому что люди боятся оказаться обманутыми. Также причиной может быть более доверительное отношение со стороны арендаторов, опять же, из-за страха оказаться обманутыми.
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")
| 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('Наличие лифта')
Как можно заметить, наличие лифта в доме не является особо приоритетным, однако большинство домов всё же содержит лифты (возможно, это вызвано общей тенденцией застройщиков, которая заключается в создании комфортных условий для потребителей).
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 | 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)
На графике присутствует разделение Санкт-Петербурга на более мелкие участки - по станциям метро. Очевидно, что на более маленьких и менее застроенных участках, таких, например, как Волковская или Звенигородская, предложение квартир меньше всего, а на более застроенных, таких как Девяткино, наоборот.
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")
| 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)))
Большинство квартир расположены в шаговой доступнотси от метро. Чем дальше находится метро, тем меньше объявлений, так как ниже спрос на такие квартиры из-за неудобства, связанного с большим объемом времени, затраченного на путь до метро, или большими затратами на услуги такси. Обычно, если люди хотят арендовать квартиру, то у них в приоритете квартиры с максимальным количеством удобств, в том числе и наличие метро поблизости.
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 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('Количество зданий разных типов')
Очевидно, на этом графике количество предлагаемых зданий разных видов напрямую зависит от того, с какой частотой это здание можно встретить в городе. Мы можем сделать гипотезу о том, что люди, арендующие жилье в Петербурге, хотят приобщиться к общему укладу жизни среднестатистического жителя, который, в частности, выражается в выборе дизайна здания. Хотя всё-таки более вероятно, что люди скорее ориентируется на отзывы людей, которые говорят, в каком здании более комфортно жить. Последнее выглядит более реалистично.
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 | 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 этаже. Эти данные значительно выбиваются на фоне остальных. Возможно, это ошибка данных на уровне статистической погрешности.
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 | 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('Ремонт в квартире')
Вряд ли квартиры, которым требуется ремонт, имели бы спрос, потому что люди не готовы вкладываться в квартиры, в которых проживают временно. Этим можно объяснить, почему соответствующие показатели такие низкие.
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 | 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('Наличие мебели в квартире')
Мало людей, не имеющих свою квартиру, имеют мебель или желают её приобрести. Поэтому квартир, где нет или минимум мебели, так мало.
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 | 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('Наличие ванны или душа')
Данный график по своей информативности во многом совпадает с предыдущими. Однако в большинстве своем данные о наличии ванны или душа не указаны. Если рассматривать различные варианты наличия того или другого, то чаще всего встречается отдельная ванная. Думаем, спрос на квартиры, в которых совсем нет ни ванны, ни душа, будет крайне мал.
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 | 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('Наличие балкона в квартире')
Как и в случае с ванной, чаще всего данные о наличии балкона не указаны. Однако в остальных случаях балкон обычно присутствует. Если посмотреть на график о количестве квартир по этажам, то можно заметить, что действительно большинство квартир расположены не на первом этаже, а значит могут иметь балкон.
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 | 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 <- 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 | 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('Количество объявлений по районам Санкт-Петербурга')
Этот график демонстрирует то же самое, что и график о регионах. В районах, находящихся далеко, за пределами Санкт-Петербурга, такие как Тосненский, Лужский, Киришский, предложение квартир очень низкое из-за такого же низкого спроса. У приезжих людей наблюдается тенденция снимать жилье поближе к центру, что может быть вызвано одним из двух факторов: во-первых, расположением места работы, во-вторых, что относительно спорно, модой и статусностью.
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")
| 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 и более комнатами.
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")
| 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 кв.м., так как квартиры с меньшей площадью могут быть неудобны для проживания, а с большей - иметь слишком большую стоимость.
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")
| 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))
Данный график согласуется с предыдущим. Чем больше общая площадь квартиры, тем соответсвенно больше и жилая площадь.
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")
| 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 = 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 месяцев или год. Это связано с временными издержками на сдачу квартиры, которые могут быть большими. Поэтому, чтобы иметь стабильный доход, домовладельцы устанавливают в среднем такой срок.
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)
data$Dist_metro_ad <- as.numeric(data$Dist_metro_ad)
scatter_plot(Dist_metro_ad, Price, data) + geom_point()
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 должен быть факторной переменной
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()
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))
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)
С увеличением площади квартиры цена устойчиво возрастает. нет очевидной зависимости между площадью квартиры и ценой за кв.м.
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)
Здесь не существует очевидной зависимости между расстоянием до метро от квартиры и ценой.
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()
При увеличении числа комнат цена также заметно возрастает. В то же время, увеличение числа комнат не способстует значимому увеличению цены за кв.м.
data <- subset(data, Area_living <= 200)
scatter_plot(Area_living, Price_per_thousands, data)
scatter_plot(Area_living, Price_per_area, data)
С возрастанием жилой площади квартиры цена заметно возрастает. Хотя увеличение жилой площади не способстует значимому увеличению цены за кв.м.
data <- subset(data, Area_kitchen <= 50)
scatter_plot(Area_kitchen, Price_per_thousands, data)
scatter_plot(Area_kitchen, Price_per_area, data)
Рост кухонной площади не способстует значимому увеличению цены.
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. Наиболее интересна зависимость цены от каких-либо факторов. Исходя из представленных данных, цены на аренду жилья в основном зависят от общей площади квартиры (и, как следствие, от жилой площади). При этом количество комнат тоже оказывает влияние на цены, однако значительно меньшее, чем площадь. Также можно заметить, что такие факторы, как минимальная продолжительность договора и наличие лифта в доме никак не влияют на цену аренды.