| Номинальные данные | Числовые данные |
|---|---|
| Date_entry дата размещения объявления (гггг-мм-дд) | Price наёмная цена (рублей / месяц) |
| Region регион | Dist_metro_ad расстояние до ближайшей станции метро, согласно объявлению (м) |
| District_ad городской район, согласно объявлению | Minimum_duration минимальная продолжительность договора (месяц) |
| Address адрес | Area_total общая площадь (кв. м) |
| Metro ближайшая станция метро, согласно объявлению | Area_living жилая площадь (кв. м) |
| Rooms количество комнат | Area_kitchen площадь кухни (кв. м) |
| No_agents сдача через посредника или без | Latitude географическая широта |
| Building материал, из которого построено здание | Longitude географическая долгота |
| Floor этаж, на котором расположена квартира | |
| NFloor число этажей в доме | |
| Lift наличие лифта | |
| Furnished меблирована квартира или нет | |
| Bath тип ванной | |
| Refurbished тип ремонта | |
| Balcony наличие балкона | |
| Year_construction год постройки | |
| Minimum duration минимальная продолжительность договора (месяц) |
X = filter(X,X$Minimum_duration != '11000 mes.' & X$Minimum_duration != '2500 mes.')
X$NFloor = gsub("kv.m.", "", X$NFloor)
X$NFloor=as.integer(X$NFloor)
X = filter(X, X$NFloor != '99'& X$NFloor != '0')
X = filter(X, X$Price != '2')
X=filter(X, X$Price>8000)
X = filter(X, X$Date_entry != '2015-12-07')
X <- X[-c(1466), ]
X <- X[-c(2330), ]
X = filter(X, X$Metro != 'Zelenogorsk')
X = filter(X, X$Metro != 'Vyborg')
X = filter(X, X$Metro != 'Vsevolojskaya')
X = filter(X, X$Metro != 'Volkovskaya')
X = filter(X, X$Metro != 'Tarhovka')
X = filter(X, X$Metro != "Tat'yanino")
X = filter(X, X$Metro != 'Pavlovsk')
X = filter(X, X$Metro != "Kuz'molovo")
X = filter(X, X$Metro != 'Kolpino')
X = filter(X, X$Metro != 'Dibuny')
X = filter(X, X$Metro != 'Berngardovka')
X = filter(X, X$Metro != 'Carskoe selo')
X = filter(X, X$Metro != 'Detskoe Selo')
X=filter(X, X$Area_kitchen>=2)
X=filter(X, X$Area_living>3)
X=filter(X, X$Price>8000)
X=filter(X, X$Floor<X$NFloor)
X=filter(X, X$Area_living<X$Area_total)
X$LogPrice=log(X$Price)
X=arrange(X,Price)
X=mutate(X,PriceDef=0)
X$PriceDef=ifelse(X$Price<16000,"8000 - 16000" ,0)
X$PriceDef=ifelse(16000<=X$Price&X$Price<30000,"16000 - 30000" ,X$PriceDef)
X$PriceDef=ifelse(30000<=X$Price&X$Price<70000,"30000 - 70000" ,X$PriceDef)
X$PriceDef=ifelse(70000<=X$Price&X$Price<100000,"70000 - 100000" ,X$PriceDef)
X$PriceDef=ifelse(100000<=X$Price&X$Price<150000,"100000 - 150000" ,X$PriceDef)
X$PriceDef=ifelse(150000<=X$Price&X$Price<250000,"150000 - 250000" ,X$PriceDef)
X$PriceDef=ifelse(250000<=X$Price&X$Price<400000,"250000 - 400000" ,X$PriceDef)
X$PriceDef=ifelse(400000<=X$Price&X$Price<600000,"400000 - 600000" ,X$PriceDef)
X <- transform(X, PriceM = X$Price / X$Area_total)
X=mutate(X,PriceMetr=0)
X$PriceMetr=ifelse(X$PriceM<470,"40 - 470" ,0)
X$PriceMetr=ifelse(470<=X$PriceM&X$PriceM<900,"470 - 900" ,X$PriceMetr)
X$PriceMetr=ifelse(900<=X$PriceM&X$PriceM<1330,"900 - 1330" ,X$PriceMetr)
X$PriceMetr=ifelse(1330<=X$PriceM&X$PriceM<1760,"1330 - 1760" ,X$PriceMetr)
X$PriceMetr=ifelse(1760<=X$PriceM&X$PriceM<2190,"1760 - 2190" ,X$PriceMetr)
X$PriceMetr=ifelse(2190<=X$PriceM&X$PriceM<2620,"2190 - 2620" ,X$PriceMetr)
X$PriceMetr=ifelse(2620<=X$PriceM&X$PriceM<3050,"2620 - 3050" ,X$PriceMetr)
X$PriceMetr=ifelse(3050<=X$PriceM&X$PriceM<3489,"3050 - 3489" ,X$PriceMetr)
X <- transform(X, PriceM = X$Price / X$Area_total)
plot_standard <- function(title, xlab, ylab){
return(
list(
theme(
axis.text = element_text(size = 10),
axis.title.x = element_text(size = 12, vjust = - 1),
axis.title.y = element_text(size = 12, vjust = 3),
plot.title = element_text(size = 15, vjust = 1.5,face = "bold")
),
ggtitle(title),
xlab(xlab),
ylab(ylab))
)}
Date_entry_old=as.data.frame(table(na.omit(XOLD$Date_entry)))
Date_entry_new=as.data.frame(table(na.omit(X$Date_entry)))
Date_entry_old=arrange(Date_entry_old,desc(Freq))
Date_entry_new=arrange(Date_entry_new,desc(Freq))
Мы сгруппировали данные по виду и выяснили, что столбец Date_entry, описывающий дату размещения объявления (гггг-мм-дд), относится к номинальным данным. Затем мы отфильтровали данные по столбцу Date_entry, удалив данные “2015-12-07”, так как они не соответствуют действительности. После этого мы составили две таблицы, отражающих сколько объявлений было размещено в определенный день. Из данной таблицы можно выяснить в какие месяцы чаще всего размещались объявления, а также в какие года. Подробнее об этом можно узнать из графиков ниже.
Мы построили график “Частота публикования объявлений об аренде квартир по месяцам”, показывающий в какие месяцы чаще всего публиковались объявления о сдаче квартиры. Из данного графика можно узнать, что чаще всего объявления размещались в первые месяцы лета, а также в феврале, марте и апреле.
X$Date_entry=ymd(X$Date_entry)
ggplot(data=Date_entry_new)+
geom_bar(aes(x=month(Var1,label = TRUE)),fill="#ECE2F0",colour="#D0D1E6")+
theme(plot.title = element_text(hjust = 1.5), plot.subtitle = element_text(hjust = 1.5))+
theme_minimal()+
plot_standard('Частота публикования объявлений об аренде квартир по месяцам','Месяц размещения объявления','Количество объявлений')
Мы построили график “Частота публикования объявлений об аренде квартир по годам”, показывающий в какие года чаще всего публиковались объявления о сдаче квартиры. Из данного графика можно узнать, что чаще всего объявления размещались в 2016 году. Это может быть связано с появлением большого количества новых домов в этом году.
ggplot(data=Date_entry_new)+
geom_bar(aes(x=year(Var1)),fill="#ECE2F0",colour="#D0D1E6")+
theme(plot.title = element_text(hjust = 0.5), plot.subtitle = element_text(hjust = 0.5))+
theme_minimal()+
plot_standard('Частота публикования объявлений об аренде квартир по годам','Год размещения объявления','Количество объявлений')
cor(month(X$Date_entry),X$Price)
## [1] 0.0422861
Рассчитав коэффициент корреляции относительно месяца размещения объявления и цены на аренду, мы выяснили, что между переменными существует слабая зависимость, т.к. коэффициент корреляции близок к нулю. Из этого можно сделать вывод, что цена на аренду в слабой степени зависит от месяца размещения объявления, а значит спрос на квартиры в разные месяцы находится на примерно одном уровне.
cor(year(X$Date_entry),X$Price)
## [1] -0.08037258
Рассчитав коэффициент корреляции относительно года размещения объявления и цены на аренду, мы выяснили, что между переменными существует слабая зависимость, т.к. коэффициент корреляции близок к нулю. Из этого можно сделать вывод, что цена на аренду в слабой степени зависит от года размещения объявления. А значит спрос на квартиры в разные года находится на примерно одном уровне.
Region_old=as.data.frame(table(na.omit(XOLD$Region)))
Region_new=as.data.frame(table(na.omit(X$Region)))
Region_old=arrange(Region_old,desc(Freq))
Region_new=arrange(Region_new,desc(Freq))
Сгруппировали данные в столбце по двум возможным значениям: Санкт-Петербург и Ленинградская область. Данные этого столбца заслуживают отдельного детального рассмотрения, так как с их помощью можно выяснить, где спрос и предложение квартир больше, как отличаются цены непосредственно в городе-миллионнике и в области, к которой он принадлежит.
| Var1 | Freq |
|---|---|
| gorod Sankt-Peterburg | 2862 |
| Leningradskaya oblast’ | 138 |
| Var1 | Freq |
|---|---|
| gorod Sankt-Peterburg | 2106 |
| Leningradskaya oblast’ | 96 |
Построили график распределения. Стоит заметить, что квартир, сдающихся в Санкт-Петербурге гораздо больше, чем сдающихся в Ленинградской области. Это можно объяснить тем, что спрос на жилье в городе выше, чем в области, по причине большего количества населения и большего числа приезжающих именно в город по разным причинам (наличие рабочих мест, учебных заведений и т.д.) и нуждающихся в жилье.
par(mar=c(4,8,2,1), bty="l", cex.axis=1, mfrow=c(1,1), cex.axis=1, cex.main=1)
barplot(Region_new$Freq, beside=TRUE, names.arg = Region_new$Var1, las=1,main = "Соотношение предложения квартир между городом и областью",col="#D0D1E6")
mtext("Регион", side=1, line=3)
mtext("Частота", side=2, line=4)
Можем наблюдать, что корреляция между ценой сдаваемых квартир и регионом, в котором они расположены слабая. Значит, вне зависимости от расположения, как в городе, так и в области, встречаются квартиры из разных ценовых сегментов.
##
## Pearson's Chi-squared test
##
## data: X1$Price and X1$Region
## X-squared = 334.78, df = 118, p-value < 2.2e-16
##
## Pearson's Chi-squared test
##
## data: Tab_Region
## X-squared = 334.78, df = 118, p-value < 2.2e-16
## [1] 0.4329242
District_ad_old=as.data.frame(table(XOLD$District_ad))
District_ad_old=arrange(District_ad_old,desc(Freq))
District_ad_new=as.data.frame(table(X$District_ad))
District_ad_new=arrange(District_ad_new,desc(Freq))
Для того чтобы выявить наиболее популярные районы Санкт-Петербурга и Ленинградской области на рынке съемного жилья, мы построили таблицу, в которой представлены название городского района и частота его упоминания в объявлениях о сдаче квартир в аренду. После выявления ошибок в данных Кронштадтский район оказался за пределами нашего анализа, то есть мы работали с 22 различными значениями, а не с 23, которые были даны изначально
Данный график иллюстрирует распределение предложения квартир в аренду в зависимости от городского района. На оси ординат перечислены названия районов, а на оси абсцисс – частота, с которой они фигурируют в объявлениях о сдаче жилья. Можно заметить, что в Приозерском, Гатчинском, Тосненском и Коллинском районах, расположенных в Ленинградской области, квартиры в аренду сдаются наиболее редко. В то время как Приморский, Московский, Выборгский, Центральный, Калининский и Невский районы, которые находятся в относительно близком расстоянии от центра Санкт-Петербурга, предлагают широчайший спектр съемного жилья. Таким образом, можно сделать следующий вывод: чем дальше находится район от центра Санкт-Петербурга, тем более низкое предложение съемного жилья в нем.
par(mar=c(4,8,1,1), mfrow=c(1,1), bty="l", cex.axis=0.7)
barplot(District_ad_new$Freq, space=0.5, col="#D0D1E6", beside=TRUE, names.arg = District_ad_new$Var1, las=2, main = "Распределение предложения квартир по районам", horiz = T)
mtext("Городской район", side=2, line=7)
mtext("Частота", side=1, line=3)
Данный код позволяет проследить взаимосвязь между наемной ценой и городским районом, в котором находится предлагаемая в аренду квартира. Скорректированный коэффициент сопряженности Пирсона равен 0.8279163, что говорит о достаточно сильной корреляции между данными переменными. Следовательно, месторасположение съемного жилья, в частности городской район, влияет на величину ежемесячной арендной платы.
##
## Pearson's Chi-squared test
##
## data: X1$Price and X1$District_ad
## X-squared = 4408, df = 2478, p-value < 2.2e-16
##
## Pearson's Chi-squared test
##
## data: Tab_District_ad
## X-squared = NaN, df = 2596, p-value = NA
## [1] NaN
Для столбца с адресами нет смысла строить таблицу и графики, так как данный столбец содержит слишком много уникальных значений (более 2 тыс.)
Metro_old = filter(XOLD, XOLD$Metro != '')
Metro_old=(table(Metro_old$Metro))
Metro_old=as.data.frame(Metro_old)
Metro_new = filter(X, X$Metro != '')
Metro_new=(table(Metro_new$Metro))
Metro_new=as.data.frame(Metro_new)
Metro_old=arrange(Metro_old,desc(Freq))
Metro_new=arrange(Metro_new,desc(Freq))
Сделав таблицу по неочищенным данным, проранжировав их от меньшего к большему, мы обнаружили, что среди станций метро, которые встречались 1-4 раза, были названия, которые относились не к метрополитену, а к железнодорожным станциям. Были удалены следующие названия: Zelenogorsk, Vyborg, Vsevolojskaya, Volkovskaya, Tarhovka, Tat’yanino,Pavlovsk, Kuz’molovo, Kolpino, Dibuny, Berngardovka, Carskoe selo, Detskoe Selo. Всего удалили 13 станций. В новой таблице получили 64 уникальных значения. Данные в таблице интересны распределением предложения квартир по разным станциям метро, что может помочь в дальнейших исследованиях, таких как “Зависимость аренды квартиры от её местоположения”.
| Var1 | Freq | |
|---|---|---|
| 1 | Primorskaya | 128 |
| 2 | Komendantskii pr. | 127 |
| 3 | Veteranov pr. | 109 |
| 4 | Chernyshevskaya | 107 |
| 73 | Tarhovka | 1 |
| 74 | Tat’yanino | 1 |
| 75 | Volkovskaya | 1 |
| 76 | Vyborg | 1 |
| 77 | Zelenogorsk | 1 |
| 78 | 0 |
| Var1 | Freq | |
|---|---|---|
| 1 | Komendantskii pr. | 108 |
| 2 | Primorskaya | 98 |
| 3 | Veteranov pr. | 86 |
| 4 | Moskovskaya | 84 |
| 73 | Tarhovka | 0 |
| 74 | Tat’yanino | 0 |
| 75 | Volkovskaya | 0 |
| 76 | Vsevolojskaya | 0 |
| 77 | Vyborg | 0 |
| 78 | Zelenogorsk | 0 |
3 самых часто встречающихся станций:
Komendantskii pr. - 113 раз
Primorskaya - 104 раза
Veteranov pr. - 94 раза
4 самых редко встречающихся станций:
Obuhovo - 1 раз
Obvodnyi Kanal - 1 раз
Shushary - 1 раз
Spasskaya - 1 раз
Интересно, что самое высокое предложение квартир было на станциях, которые расположены далеко от центра города, например, Проспект Ветеранов, Комендантский проспект, Проспект Просвещения. Скорее всего, данный факт зависит от цены, так как на окраине города жильё стоит дешевле, также такое высокое предложения на этих станциях может быть вызвано застройкой многоэтажных зданий в районах, близлежащих к конечным станциям метро. Для выявления зависимости между ценой и станциями метро посчитаем коэффициент корреляции и построим диаграмму, отражающую данную зависимость, для наглядности.
Однако самые редко встречающиеся квартиры также по большей части расположены не в центре. Можно предположить, что районы, в которых расположены данные станции, являются промышленными, а не спальными. Поэтому предложение там такое низкое.
Metro_new3=filter(Metro_new,Metro_new$Freq>27)
Metro_new2=filter(Metro_new,Metro_new$Freq<27&Metro_new$Freq !='0')
par(mar=c(3,12,1,4), bty="l", mfcol=c(1,1), cex.axis=1)
barplot(Metro_new2$Freq, space=0.5, col = "#D0D1E6", horiz=T,las=1, main=" метро", names.arg=(Metro_new2$Var1) )
Коэффициент корреляции Пирсона между станциями метро и ценой составил 0,92. Он показывает положительную, практически совершенную корреляцию. Это означает, что станции метро, на которых располагаются квартиры, и цены находятся в зависимости.
##
## Pearson's Chi-squared test
##
## data: X$Price and X$Metro
## X-squared = 11208, df = 7552, p-value < 2.2e-16
##
## Pearson's Chi-squared test
##
## data: Tab_Metro
## X-squared = NaN, df = 9086, p-value = NA
## [1] NaN
Из диаграммы видно, что цены на квартиры на 3-ех самых часто встречающихся станциях метро довольно дешевые, не превышают 100т. На станции Komendantskii pr. цена варьируется от 16т. до 100т., на Primorskaya - от 8т. до 100т., на Veteranov pr. – от 8т. до 70т. Это подтверждает предположение о том, что существует некая зависимость между ценой и месторасположением. Самые дорогие квартиры находится на станциях Chkalovskaya, Admiralteiskaya и Krestovskii ostrov и стоят от 400т. до 600т. Данные станции метро находятся в центре города, значит, это еще одно подтверждение зависимости, описанной выше.
X$LogPrice=log(X$Price)
ggplot(X, aes(x = X$LogPrice, y = X$Metro)) +
geom_point(aes(color = PriceDef)) +
theme_minimal()+
plot_standard('Диаграмма взимосвязи ближайших станций метро и цены аренды','Цена логарифмированная','Станции метро')
Rooms_old=filter(X, X$Rooms != '')
Rooms_old=table(Rooms_old$Rooms)
Rooms_old=as.data.frame(Rooms_old)
Rooms_old=arrange(Rooms_old,desc(Freq))
Rooms_new=filter(X, X$Rooms != '')
Rooms_new=table(Rooms_new$Rooms)
Rooms_new=as.data.frame(Rooms_new)
Rooms_new=arrange(Rooms_new,desc(Freq))
Rooms_new=filter(Rooms_new, Rooms_new$Freq != '0')
Rooms_old=filter(Rooms_old, Rooms_old$Freq != '0')
В процессе анализа столбца с количеством комнат в изначальной таблице мы заметили, что значения 1(studiya) и 1 (studiya) различаются только наличием пробела. Устранив эту ошибку, мы построили таблицу, в которой представили количество (тип) комнат в квартирах, выставленных в аренду, и частоту упоминания данных характеристик в объявлениях для того, чтобы выяснить, какое количество комнат в квартире арендодатели предлагают в большей степени.
| Var1 | Freq |
|---|---|
| 1 | 940 |
| 2 | 746 |
| 3 | 387 |
| 4 | 64 |
| 1 (studiya) | 32 |
| 5 | 15 |
| 1 (studiya) | 10 |
| 6 | 3 |
| 7 | 2 |
| 8 | 1 |
| 9 | 1 |
| Var1 | Freq |
|---|---|
| 1 | 940 |
| 2 | 746 |
| 3 | 387 |
| 4 | 64 |
| 1 (studiya) | 32 |
| 5 | 15 |
| 1 (studiya) | 10 |
| 6 | 3 |
| 7 | 2 |
| 8 | 1 |
| 9 | 1 |
Данный график показывает частоту предложения квартир в аренду с тем или иным количеством комнат. На оси ординат представлено количество (тип) комнат, а на оси абсцисс – частота, с которой оно фигурируют в объявлениях о сдаче жилья. Можно заметить, что, как правило, арендодатели предлагают съемное жилье с 1 и 2 комнатами. Предложение квартир в аренду с 4 и более комнатами крайне низкое. Скорее всего,данные различия объясняются существенной разницей в цене, которая имеет определяющее влияние на спрос
Rooms_new1=filter(Rooms_new, Rooms_new$Freq!='')
par(mar=c(4,8,1,1), mfrow=c(1,1), bty="l", cex.axis=0.7)
barplot(Rooms_new1$Freq, space=0.5,col="#D0D1E6", beside=TRUE, names.arg = Rooms_new1$Var1, las=2, main = "Соотношение квартир с разным количеством комнат",horiz=T)
mtext("Количество комнат", side=2, line=5)
mtext("Частота", side=1, line=3)
Данный код позволяет проследить взаимосвязь между наемной ценой и количеством комнат в предлагаемой в аренду квартире. Скорректированный коэффициент сопряженности Пирсона равен 0.8883058, что говорит о достаточно сильной корреляции между данными переменными. Следовательно, количество комнат в квартире влияет на величину ежемесячной арендной платы.
##
## Pearson's Chi-squared test
##
## data: X1$Price and X1$Rooms
## X-squared = 6574.8, df = 1180, p-value < 2.2e-16
##
## Pearson's Chi-squared test
##
## data: Tab_Rooms
## X-squared = NaN, df = 1298, p-value = NA
## [1] NaN
No_agents_NEW=as.data.frame(table(X$No_agents))
No_agents_NEW=arrange(No_agents_NEW,desc(Freq))
No_agents_OLD=as.data.frame(table(XOLD$No_agents))
No_agents_OLD=arrange(No_agents_OLD,desc(Freq))
Построив таблицу, мы выяснили, что в столбце, содержащем информацию по сдаче квартир через посредника или без, было всего 2 уникальных значения: “Da”, если сдается через посредника, и пропуск, если квартира без посредника.
Таким образом, с помощью таблицы можно сделать вывод, что данные не имеют ошибок. Также по данным можно сделать вывод, что 85% всех квартир сдается без посредника. Можно было бы предположить, что более дорогие квартиры сдают через посредника, чтобы обеспечить безопасность сделки. Чтобы проверить данную гипотезу, мы вычислили коэффициент корреляции и построили диаграмму для наглядности.
| Var1 | Freq |
|---|---|
| 2587 | |
| Da | 413 |
| Var1 | Freq |
|---|---|
| 1914 | |
| Da | 288 |
Коэффициент корреляции Пирсона между ценой и наличием посредника при сдаче квартиры составил 0,3.Он показывает положительную корреляцию, но значение очень маленькое(меньше 0,5). Это означает, что зависимости между значениями практически нет.Наша гипотеза о взаимосвязи не подтвердилась.
##
## Pearson's Chi-squared test
##
## data: X$Price and X$No_agents
## X-squared = 146.24, df = 118, p-value = 0.0399
##
## Pearson's Chi-squared test
##
## data: Tab_No_agents
## X-squared = 146.24, df = 118, p-value = 0.0399
## [1] 0.2973975
Через посредника сдаются квартиры по цене от 8т. до 150т. Без посредника сдают квартиры от 8т. до 600т. Таким образом, это еще раз доказывет, что наша гипотеза не подтвердилась. Можно предположить, что сдача квартир через посредника неудобна и требует дополнительных средств, поэтому только 15% квартир сдается таким образом.
ggplot(X, aes(x = X$LogPrice, y = X$No_agents)) +
geom_point(aes(color = PriceDef)) +
theme_minimal()+
plot_standard('Диаграмма взаимосвязи наличия посредника при сдаче квартиры и цены аренды','Цена логарифмированная','через посредника/без')
Building_new=filter(X, X$Building != '')
Building_new=table(Building_new$Building)
Building_new=as.data.frame(Building_new)
Building_new=arrange(Building_new,desc(Freq))
Building_old=filter(XOLD, XOLD$Building != '')
Building_old=table(Building_old$Building)
Building_old=as.data.frame(Building_old)
Building_old=arrange(Building_old,desc(Freq))
Мы сгруппировали данные по виду и выяснили, что столбец Building, описывающий материал, из которого построено здание, относится к номинальным данным. Затем мы отфильтровали данные по столбцу Building, удалив пустые строки, так как по ним невозможно провести анализ. После этого мы составили две таблицы, отражающих материал, из которого построено здание, до и после очистки данных. Данные таблицы были составлены, чтобы показать в домах из какого материала чаще всего сдают квартиры.
Мы составили график “Количество объявлений в зависимости от материала здания”, отражающий взаимосвязь между количеством объявлений и материалом здания, в котором сдается квартира. Из этого графика можно узнать в домах из какого материала чаще сдают квартиры. Этот график интересен тем, что самым популярным материалом, из которго построено здание, является Кирпич и Кирп.Монолит
Building_new1=filter(Building_new, Building_new$Freq!='')
Building_new1=filter(Building_new, Building_new$Freq!='0')
par(mar=c(5,9,1,4), bty="l", mfcol=c(1.8,1), cex.axis=0.9)
barplot(Building_new1$Freq, space=0.5, col = "#D0D1E6", beside=TRUE, names.arg = Building_new1$Var1, xlab = "Частота", las=2, main = "Количество объявлений в зависимости от материала здания",horiz=T)
Tab1 = table(X$Building, X$Price)
NObs1 = sum(Tab1)
NRow1 = nrow(Tab1)
NCol1 = ncol(Tab1)
Chi_3 = 0
for(i in 1:NRow1)
{
for(j in 1:NCol1)
{
Chi_3 = Chi_3 + (Tab1[i,j]^2) / (sum(Tab1[i,]) * sum(Tab1[,j]))
}
}
Chi_3 = NObs1 * (Chi_3 - 1)
C1 = sqrt(Chi_3 / (Chi_3 + NObs1))
min_KL1 = min(NRow1, NCol1)
C_max1 = sqrt((min_KL1-1) / min_KL1)
C_max1 = ( ((NRow1-1)/NRow1) * ((NCol1-1)/NCol1) ) ^ (1/4)
C_P1 = C1 / C_max1
chisq.test(X$Building, X$Price)
##
## Pearson's Chi-squared test
##
## data: X$Building and X$Price
## X-squared = 2236.9, df = 2950, p-value = 1
chisq.test(Tab1)
##
## Pearson's Chi-squared test
##
## data: Tab1
## X-squared = 2236.9, df = 2950, p-value = 1
Рассчитав коэффициент корреляции относительно материала, из которого построено здание, и цены на аренду, мы выяснили, что между переменными существует сильная зависимость, т.к. p-value близок к 1. Из этого можно сделать вывод, что цена на аренду сильно зависит от материала из которого построено здание, а значит спрос на квартиры меняется в зависимости от материла.
Floor_new=as.data.frame(table(na.omit(X$Floor)))
Floor_new=arrange(Floor_new,desc(Freq))
Floor_old=as.data.frame(table(na.omit(XOLD$Floor)))
Floor_old=arrange(Floor_old,desc(Freq))
В столбце с данными по этажам было 28 уникальных значений. В первоначальной таблице никаких значений, которые в реальности не существуют, замечено не было. Однако, так как следующий столбец содержал информацию по общему числу этажей в доме, было решено проверить, существуют ли строки, в которых этаж сдаваемой квартиры больше, чем этаже в доме. Оказалось, что в неочищенных данных были строки с такими значениями. В итоге, конечная таблица содержит 26 уникальных значений.
| Var1 | Freq | |
|---|---|---|
| 1 | 3 | 401 |
| 2 | 4 | 333 |
| 3 | 2 | 313 |
| 4 | 5 | 275 |
| 22 | 19 | 12 |
| 23 | 23 | 10 |
| 24 | 24 | 6 |
| 25 | 25 | 2 |
| 26 | 26 | 1 |
| 27 | 30 | 1 |
| 28 | 32 | 1 |
| Var1 | Freq | |
|---|---|---|
| 1 | 3 | 331 |
| 2 | 2 | 264 |
| 3 | 4 | 264 |
| 4 | 5 | 171 |
| 24 | 24 | 4 |
| 25 | 26 | 1 |
| 26 | 32 | 1 |
3 самых часто встречающихся этажа: *3 - 373 раза
*4 - 298 раз
*2 - 290 раз
2 самых редко встречающихся этажа: *26 - 1 раз
*32 - 1 раз
Таким образом, преобладают квартиры на нижних этажах. Можно было бы предположить, что большое количество квартир на нижних этажах обусловлено невысокой ценой. Чтобы проверить, существует ли зависимость между этажами и ценами, посчитаем коэффициент корреляции и построим диаграмму для наглядности.
par(mar=c(5,9,1,4), bty="l", mfcol=c(1.8,1), cex.axis=0.9)
hist(Floor_new$Freq, col="#D0D1E6", xlab="",breaks = 40, ylab="", main = "Количество объявлений в зависимости от этажа квартиры") #, breaks = 3)
mtext("Частота", side=1, line=3)
mtext("Этаж", side=2, line=3)
Коэффициент корреляции Пирсона между станциями метро и ценой составил 0.75. Он показывает положительную корреляцию. Это означает, что этажи, на которых располагаются квартиры, и цены находятся в зависимости.
##
## Pearson's Chi-squared test
##
## data: X$Price and X$Floor
## X-squared = 2650.3, df = 2950, p-value = 1
##
## Pearson's Chi-squared test
##
## data: Tab_Floor
## X-squared = 2650.3, df = 2950, p-value = 1
## [1] 0.7479072
На преобладающих по численности нижних этажах цена на квартиры варьируется от 8т. до 600т. Самые дорогие квартиры находятся на 4 и 5 этажах. Самая дешевая расположена на 9 этаже. Предположение, высказанное выше, не подтвердилось. Можно также предположить, что большое количество квартир на нижних этажах обусловлено тем, что в Петербурге преобладают дома, количество этажей которых не превышает 10 в силу того, что центр города застроен невысокими зданиями. А количество высотных домов на окраинах еще не превысило количество домов с малым числом этажей. Данное предположение будет проверено ниже.
ggplot(X, aes(x = LogPrice, y = Floor)) +
geom_point(aes(color = PriceDef)) +
theme_minimal()+
plot_standard('Диаграмма взаимосвязи этажа и цены аренды квартиры','Цена логарифмированная','этажи')
NFloor_new=as.data.frame(table(na.omit(X$NFloor)))
NFloor_new=arrange(NFloor_new,desc(Freq))
NFloor_old=as.data.frame(table(na.omit(XOLD$NFloor)))
NFloor_old=arrange(NFloor_old,desc(Freq))
С помощью данных о количестве этажей в домах, в которых сдаются квартиры, подтвердим или опровергнем ранее высказанную гипотезу о том, что в городе преобладают невысокие здания. Также проверим, есть ли взаимосвязь между ценой квартиры и этажностью дома, в котором она находится. Исключив ранее данные, в которых этаж, на котором находится квартира, больше чем количество этажей в доме и проанализировав оставшиеся данные, исключим значение «99», так как максимально высокое здание в Санкт-Петербурге имеет 88 этажей (Лахта-центр).
На графике распределения можно увидеть, что большинство квартир сдается в домах, имеющих 5 этажей (свыше 400 штук), вторыми являются дома в 16 этажей (свыше 300 штук). Квартир в четырехэтажных домах сдается меньше (меньше 100), в домах с количеством этажей свыше 20 их и вовсе крайне мало. Исходя из данных, мы также можем сделать вывод о том, что примерно одинаковое количество квартир сдается в домах, этажность которых меньше 10 и больше 10. Значит, гипотеза о том, что большинство зданий в городе малоэтажные, не подтвердилась.
NFloor_new1=filter(NFloor_new, NFloor_new$Freq!='0')
par(mar=c(5,9,1,4), bty="l", mfcol=c(1.8,1), cex.axis=0.9)
barplot(NFloor_new1$Freq, space=0.5, col = "#D0D1E6", beside=TRUE, names.arg = NFloor_new1$Var1, xlab = "Количество объявлений в зависимости от кол-ва этажей", ylab = "Частота", las=2, main = "Число этажей в доме")
Корреляция между ценой квартиры и количеством этажей в доме средняя, ближе к сильной. В связи с этим, можно сделать вывод о том, что чем выше здание - тем выше цена на сдаваемые в нем квартиры. Скорее всего, это связано с тем, что, как правило, более высокие здания построены позднее, а значит, находятся в лучшем состоянии
##
## Pearson's Chi-squared test
##
## data: X1$Price and X1$NFloor
## X-squared = 3551.8, df = 3422, p-value = 0.05972
##
## Pearson's Chi-squared test
##
## data: Tab_NFloor
## X-squared = 3551.8, df = 3422, p-value = 0.05972
## [1] 0.794041
Furnished_old=filter(XOLD, XOLD$Furnished!= '')
Furnished_old=table(Furnished_old$Furnished)
Furnished_old=as.data.frame(Furnished_old)
Furnished_old=arrange(Furnished_old,desc(Freq))
Furnished_new=filter(X, X$Furnished != '')
Furnished_new=table(Furnished_new$Furnished)
Furnished_new=as.data.frame(Furnished_new)
Furnished_new=arrange(Furnished_new,desc(Freq))
В данной таблице мы указали тип мебелировки и частоту, с которой квартиры с данными типами появляются на сайте о сдаче квартир в аренду. Сначала мы очистили всю таблицу с данными от ошибок, удалив нерепрезентативные предложения об аренде. Число квартир с каждым типом мебели уменьшилось, а квартир, в которых было указано только о наличии мебели («Есть») не осталось. Затем столбец с типом мебели мы очистили от пустых ячеек и получили готовую таблицу частот, где указан тип мебели или её отсутствие в квартире.
| Var1 | Freq |
|---|---|
| Sbornaya Sovr. | 815 |
| Sbor.+kuh.garn. | 584 |
| Garnitur Sovr. | 313 |
| Net | 114 |
| Minimum | 95 |
| Garnit+kuh.nab. | 83 |
| Est’ | 54 |
| Sbornaya 70-80 | 34 |
| Tol’ko kuhnya | 29 |
| Garnitur 70-80 | 7 |
| 0 |
| Var1 | Freq |
|---|---|
| Sbornaya Sovr. | 597 |
| Sbor.+kuh.garn. | 461 |
| Garnitur Sovr. | 245 |
| Minimum | 81 |
| Garnit+kuh.nab. | 67 |
| Net | 53 |
| Sbornaya 70-80 | 28 |
| Tol’ko kuhnya | 25 |
| Garnitur 70-80 | 4 |
| 0 | |
| Est’ | 0 |
Данная диаграмма частот показывает соотношение количества квартир по типу мебелировки. Чаще всего встречаются квартиры со сборной современной мебелью, со сборной мебелью и кухонным гарнитуром. Относительно мало предложений по квартирам с мебелью 1970-80 годов и по квартирам, где есть только кухонная мебель. Можно сделать вывод, что в Санкт-Петербурге чаще сдаются квартиры с более современной мебелью в более полном комплекте. Также присутствует 53 квартиры, где мебели нет совсем. Можно предположить, что эти квартиры построены недавно, сдаются впервые и арендатору самому нужно приобрести мебель в квартиру
Furnished_new1=filter(Furnished_new, Furnished_new$Freq!='0')
par(mar=c(4,8,3,3), mfrow=c(1,1), bty="l", cex.axis=0.8)
barplot(Furnished_new1$Freq, space=0.5,col="#D0D1E6", names.arg = Furnished_new1$Var1, las=2, main = "Соотношение квартир по мебелировке",horiz=T)
mtext("Мебелировка", side=2, line=7)
mtext("Частота", side=1, line=3)
С помощью этого кода мы получаем данные о корреляции для номинальных данных: цены за квартиру в месяц и типом мебелировки. Скорректированный коэффициент сопряжённости Пирсона равен 0.6202336, что говорит о средней корреляции между данными переменными.
Это говорит о том, что тип мебелировки частично влияет влияет на цену за месяц аренды.
##
## Pearson's Chi-squared test
##
## data: X1$Price and X1$Furnished
## X-squared = 881.52, df = 808, p-value = 0.03651
##
## Pearson's Chi-squared test
##
## data: Tab_Fur
## X-squared = NaN, df = 1010, p-value = NA
## [1] NaN
Диаграмма позволяет для каждого типа мебелировки увидеть плотность распределения предложений относительно цены за квартиру. Для удобства на горизонтальной оси мы использовали логарифмированную цену, а в легенде диаграммы указали реальные диапазоны цен. Вычислив скорректированный коэффициент сопряжённости Пирсона, мы уже выяснили, что присутствует средняя корелляция между ценой за квартиру и типом мебелировки. С помощью данной диагараммы мы попробовали разобраться, как именно проявляется эта зависимость. Можно увидеть, что квартиры с мебелью 1970-80 годов или только с кухней преимущественно представлены в ценовом сегменте от 8 до 30 тыс. руб. в месяц. В среднем ценовом сегменте от 30 до 70 тыс. руб. в месяц преобладают квартиры со сборной современной мебелью, со сборной мебелью и кухонным гарнитуром. Почти во всех ценовых сегментах представлены квартиры с минимальным количеством мебели или её отсутствием: это произошло из-за того, что в данных категориях мебель не влияет не цену квартиры. Кроме того, видно, что квартиры со сборной современной мебелью чаще других встречаются в самом высоком ценовом сегменте от 250 до 600 тыс. руб. в месяц.
Общим выводом является то, что квартиры с современной мебелью не только чаще встречаются на рынке аренды, но и занимают более высокие ценовые позиции, чем квартиры со старой мебелью.
X1=X
X1=filter(X1,X1$Furnished!='')
ggplot(X1, aes(x = X1$LogPrice, y = X1$Furnished)) +
geom_point(aes(color = PriceDef)) +
theme_minimal()+
plot_standard('Диаграмма зависимости цены аренды квартиры от типа мебелировки','Цена логарифмированная','Тип мебелировки')
Bath_old=filter(XOLD, XOLD$Bath!= '')
Bath_old=table(Bath_old$Bath)
Bath_old=as.data.frame(Bath_old)
Bath_old=arrange(Bath_old,desc(Freq))
Bath_new=filter(X, X$Bath != '')
Bath_new=table(Bath_new$Bath)
Bath_new=as.data.frame(Bath_new)
Bath_new=arrange(Bath_new,desc(Freq))
Bath_new=filter(Bath_new, Bath_new$Freq != '0')
Bath_old=filter(Bath_old, Bath_old$Freq != '0')
В данной таблице мы указали тип ванной и частоту, с которой квартиры с данными типами появляются на сайте о сдаче квартир в аренду. Сначала мы очистили всю таблицу с данными от ошибок, удалив нерепрезентативные предложения об аренде. Число квартир с некоторыми типами ванной уменьшилось, а квартир, в которых было указано только о наличии или отсутствии ванной («Есть» / «Нет») не осталось. Также 5 квартир, в которых в качестве типа ванной было указано «Большой» были удалены по несоответствию другим критериям. Затем столбец с типом ванной мы очистили от пустых ячеек и получили готовую таблицу частот.
| Var1 | Freq |
|---|---|
| Otdel’naya | 830 |
| Sovmeshchennaya | 425 |
| Est’ | 115 |
| Dush | 43 |
| Prodol’naya | 19 |
| Poperechnaya | 17 |
| Bol’shoi | 5 |
| Net | 3 |
| Sidyachaya | 1 |
| V koridore | 1 |
| Var1 | Freq |
|---|---|
| Otdel’naya | 670 |
| Sovmeshchennaya | 296 |
| Dush | 29 |
| Prodol’naya | 17 |
| Poperechnaya | 15 |
Данная диаграмма частот показывает соотношение количества квартир по типу ванной. Подавляющее большинство предложений, это квартиры с отельной ванной, на втором месте по частоте – квартиры с совместной ванной. Относительно мало предложений по квартирам с душем, продольной или поперечной ванной. Можно сделать вывод, что арендаторам важнее знать отельная ванна или совместная, нежели продольная она или поперечная, поэтому собственники чаще указывают именно эту информацию.
Bath_new=arrange(Bath_new,Freq)
Bath_new1=filter(Bath_new, Bath_new$Freq!='0')
par(mar=c(4,8,2,1), mfrow=c(1,1.5), bty="l", cex.axis=0.9)
barplot(Bath_new1$Freq, space=0.5, col = "#D0D1E6", beside=TRUE, names.arg = Bath_new1$Var1, las=2, main = "Соотношение квартир по типу ванной",horiz=T)
mtext("Тип ванной", side=2, line=7)
mtext("Частота", side=1, line=3)
Bath
##
## Pearson's Chi-squared test
##
## data: X1$Price and X1$Bath
## X-squared = 365.47, df = 505, p-value = 1
##
## Pearson's Chi-squared test
##
## data: Tab_Bath
## X-squared = 365.47, df = 505, p-value = 1
## [1] 0.4569931
С помощью этого кода мы получаем данные о корреляции для номинальных данных: цены за квартиру в месяц и типом ванной в квартире. Скорректированный коэффициент сопряжённости Пирсона равен 0.4364034, что говорит о слабой корреляции между данными переменными. Общим выводом является то, что тип ванной влияет не только на количество объявлений о сдаче квартир с данным типом, но и слабо влияет на цену за месяц аренды.
Lift_old=filter(XOLD, XOLD$Lift != '')
Lift_old=table(Lift_old$Lift)
Lift_old=as.data.frame(Lift_old)
Lift_old=arrange(Lift_old,desc(Freq))
Lift_new=filter(X, X$Lift != '')
Lift_new=table(Lift_new$Lift)
Lift_new=as.data.frame(Lift_new)
Lift_new=arrange(Lift_new,desc(Freq))
Lift_new=filter(Lift_new, Lift_new$Freq != '0')
Lift_old=filter(Lift_old, Lift_old$Freq != '0')
Удалив все нерепрезентативные данные, мы построили таблицу, в которой отразили наличие либо отсутствие лифта и частоту появления данной информации в объявлениях о съемном жилье для того, чтобы понять, в каких домах – с лифтом или без – квартиры в аренду предлагаются наиболее часто.
| Var1 | Freq |
|---|---|
| Est’ | 1742 |
| Net | 1133 |
| Var1 | Freq |
|---|---|
| Est’ | 1376 |
| Net | 826 |
Данная диаграмма частот демонстрирует, что предложений квартир в аренду, расположенных в домах, где есть лифт, почти в 2 раза больше, чем в тех, где он отсутствует. Безусловно, лифт избавляет жильцов от необходимости подниматься на высокие этажи посредством собственных сил, поэтому наличие лифта является довольно привлекательным сведением при выборе съемного жилья.
par(mar=c(1,5,2,2), mfrow=c(2,1), bty="l", cex.axis=0.7)
barplot(Lift_new$Freq, space=0.5,col="#D0D1E6", beside=TRUE, names.arg = Lift_new$Var1, las=2, main = "Количество объявлений в зависимости от наличия лифта в доме", horiz=T)
mtext("Наличие лифта", side=2, line=3)
mtext("Частота", side=1, line=3)
Данный код позволяет проследить взаимосвязь между наемной ценой и наличием лифта в доме, в котором находится квартира. Скорректированный коэффициент сопряженности Пирсона равен 0.2942761, что говорит о довольно слабой корреляции между данными переменными. Следовательно, наличие лифта в доме не влияет на величину ежемесячной арендной платы.
##
## Pearson's Chi-squared test
##
## data: X1$Price and X1$Lift
## X-squared = 142.99, df = 118, p-value = 0.05857
##
## Pearson's Chi-squared test
##
## data: Tab_Lift
## X-squared = NaN, df = 236, p-value = NA
## [1] NaN
Balcony_old=filter(XOLD, XOLD$Balcony != '')
Balcony_old=table(Balcony_old$Balcony)
Balcony_old=as.data.frame(Balcony_old)
Balcony_old=arrange(Balcony_old,desc(Freq))
Balcony_new=filter(X, X$Balcony != '')
Balcony_new=table(Balcony_new$Balcony)
Balcony_new=as.data.frame(Balcony_new)
Balcony_new=arrange(Balcony_new,desc(Freq))
Balcony_new=filter(Balcony_new,Balcony_new$Freq != '0')
Balcony_old=filter(Balcony_old,Balcony_old$Freq != '0')
Рассмотрим данные о наличии или отсутствии, количестве и типе балконов в сдающихся квартирах. С помощью этих данных определим, насколько много встречается квартир с несколькими балконами, террасами, лоджиями и эркерами. Также посмотрим, существует ли корреляция между ценой квартиры и наличием/отсутствием балкона, ценой и количеством имеющихся в сдаваемой квартире балконов
Построив диаграмму рассеяния, видим, что если в квартире есть балкон, то в большинстве случаев это обычный балкон или лоджия, в то время как квартиры с несколькими балконами встречаются в гораздо меньшем количестве. Скорее всего, это связано с тем, что квартир с большой площадью (несколько балконов встречается именно в таких квартирах) сдается довольно мало, так как они не пользуются большим спросом, а в квартирах с маленькой площадью редко встречается несколько балконов или терраса. Эркеры же в основном встречаются в домах более старой постройки, квартир в которых также сдается немного, в основном сдаются квартиры в домах более типовой застройки.
Balcony_new1=filter(Balcony_new,Balcony_new$Freq!='')
par(mar=c(4,8,2,2), mfrow=c(1,1), bty="l", cex.axis=0.7)
barplot(Balcony_new1$Freq, space=0.5,col="#D0D1E6", beside=TRUE, las=2, main = "Cоотношение квартир по типу балкона", horiz=T, names.arg = Balcony_new1$Var1)
mtext("Тип балкона", side=2, line=7)
mtext("Частота", side=1, line=3)
Наблюдается сильная корреляция между ценой квартиры и наличием/отсутствием и видом имеющегося балкона. Значит, тип и наличие балкона сльно влияют на стоимость сдаваемой квартиры.
##
## Pearson's Chi-squared test
##
## data: X1$Price and X1$Balcony
## X-squared = 2779.8, df = 1111, p-value < 2.2e-16
##
## Pearson's Chi-squared test
##
## data: Tab_Balcony
## X-squared = NaN, df = 1616, p-value = NA
## [1] NaN
Refurbished_old=filter(XOLD, XOLD$Refurbished != '')
Refurbished_old=table(Refurbished_old$Refurbished)
Refurbished_old=as.data.frame(Refurbished_old)
Refurbished_old=arrange(Refurbished_old,desc(Freq))
Refurbished_new=filter(X, X$Refurbished != '')
Refurbished_new=table(Refurbished_new$Refurbished)
Refurbished_new=as.data.frame(Refurbished_new)
Refurbished_new=arrange(Refurbished_new,desc(Freq))
Refurbished_new=filter(Refurbished_new, Refurbished_new$Freq != '0')
Refurbished_old=filter(Refurbished_old, Refurbished_old$Freq != '0')
В данной таблице мы указали тип ремонта и частоту, с которой квартиры с данными типами появляются на сайте о сдаче квартир в аренду. Построив таблицу частот для исходных данных, мы заметили, что данные в таблице сместились, и в категории «тип ремонта» встречаются значения из категории «тип ванной». Изначально мы хотели переносить эти данные обратно в тип ванной, однако в процессе очистки данных по остальным параметрам, все строки с этой ошибкой были удалены. Поэтому осталось лишь очистить столбец с типом ремонта от пустых ячеек и получить готовую таблицу частот, где осталось всего лишь 4 типа ремонта.
| Var1 | Freq |
|---|---|
| Evrostandart | 924 |
| Proizveden | 611 |
| Ne trebuetsya | 184 |
| Otdel’naya | 28 |
| Trebuetsya | 14 |
| Sovmeshchennaya | 10 |
| Dush | 1 |
| Prodol’naya | 1 |
| Var1 | Freq |
|---|---|
| Evrostandart | 692 |
| Proizveden | 477 |
| Ne trebuetsya | 159 |
| Trebuetsya | 10 |
Данная диаграмма частот показывает соотношение количества квартир по типу ремонта. Чаще всего встречаются квартиры с ремонтом по Евростандарту. На втором месте по частоте – квартиры, где указано, что ремонт произведён, это видимо значит, что ремонт был произведён недавно, в отличие от категории «ремонт не требуется». Относительно мало предложений, где указано, что ремонт не требуется, и всего 11 квартир, где ремонт требуется. Можно сделать вывод, что в Санкт-Петербурге чаще сдаются квартиры с более современным ремонтом, отвечающим новым стандартам качества.
Refurbished_new1=filter(Refurbished_new,Refurbished_new$Freq!='')
par(mar=c(4,7,2,1), mfrow=c(1,1), bty="l", cex.axis=0.9)
barplot(Refurbished_new1$Freq, space=0.5, col = "#D0D1E6", beside=TRUE, names.arg = Refurbished_new1$Var1, las=2, main = "Соотношение квартир по типу ремонта",horiz=T)
mtext("Тип ремонта", side=2, line=6)
mtext("Частота", side=1, line=3)
##
## Pearson's Chi-squared test
##
## data: X1$Price and X1$Refurbished
## X-squared = 378.17, df = 294, p-value = 0.0006569
##
## Pearson's Chi-squared test
##
## data: Tab_Refur
## X-squared = NaN, df = 784, p-value = NA
## [1] NaN
С помощью этого кода мы получаем данные о корреляции для номинальных данных: цены за квартиру в месяц и типом ремонта в квартире. Скорректированный коэффициент сопряжённости Пирсона равен 0.5057078, что говорит о средней корреляции между данными переменными. Общим выводом является то, что тип ремонта влияет не только на количество объявлений о сдаче квартир с данным типом, но и частично влияет на цену за месяц аренды.
Year_construction_old=filter(XOLD, XOLD$Year_construction != '')
Year_construction_old=table(Year_construction_old$Year_construction)
Year_construction_old=as.data.frame(Year_construction_old)
Year_construction_new=filter(X, X$Year_construction != '')
Year_construction_new=table(Year_construction_new$Year_construction)
Year_construction_new=as.data.frame(Year_construction_new)
Year_construction_new=arrange(Year_construction_new,desc(Freq))
Year_construction_old=arrange(Year_construction_old,desc(Freq))
В данной таблице мы указали тип ремонта и частоту, с которой квартиры с данными типами появляются на сайте о сдаче квартир в аренду. Построив таблицу частот для исходных данных, мы заметили, что данные в таблице сместились, и в категории «тип ремонта» встречаются значения из категории «тип ванной». Изначально мы хотели переносить эти данные обратно в тип ванной, однако в процессе очистки данных по остальным параметрам, все строки с этой ошибкой были удалены. Поэтому осталось лишь очистить столбец с типом ремонта от пустых ячеек и получить готовую таблицу частот, где осталось всего лишь 4 типа ремонта.
В данной таблице указан год постройки здания и частота, с которой квартиры с определенным годом постройки представлены на сайте о сдаче квартир. Построив таблицу,сотощую из столбцов “Год постройки” и “Дата размещения объявления на сайте” было замечено, что одно здание было построено похже размещения объявления. Эта строка была удалена их нового датасета. Таблица частот, тем не менее не изменилась сильно.
Факторы, на которые было обращено внимание при постройке таблицы частот по году постройки:
Большая часть всех зданий была построена в 2014-2016 годах, что говорит о том, что предложение сдачи квартир приходится большей частью на новостройки и , т.к. новые здания строятся в большинстве на окраинах города, то и предложение квартир будет больше на окраинах города.(не в центре)
|
Var1 |
Freq |
|
|---|---|---|
|
1 |
2016 |
50 |
|
2 |
2015 |
41 |
|
3 |
2014 |
28 |
|
4 |
2008 |
21 |
|
58 |
1992 |
1 |
|
59 |
1993 |
1 |
|
60 |
1994 |
1 |
|
61 |
1995 |
1 |
|
62 |
1997 |
1 |
| Var1 | Freq | |
|---|---|---|
| 1 | 2016 | 36 |
| 2 | 2015 | 34 |
| 3 | 2014 | 27 |
| 4 | 2008 | 19 |
| 54 | 1992 | 1 |
| 55 | 1993 | 1 |
| 56 | 1994 | 1 |
| 57 | 1995 | 1 |
| 58 | 1997 | 1 |
Диаграммма рассения показывает взаимосвязь года постройки здания, в котором сдается квартира и цены. Можно заметить, что только в зданиях, построенных в последние два десятилетия квартиры сдаются по цене от 100 000 до 250 000. Квартиры, сдающиеся в аренду в зданиях, год постри которых меньше 1950 в большинстве сдаются по цене от 400 000 до 600 000. В соответствии с предоставленным графиком можно сделать вывод, что год постройки влияет на стоимость сдачи квартир.
ggplot(X, aes(x = X$Year_construction, y =X$LogPrice)) +
geom_point(aes(color = PriceDef)) +
theme_minimal()+
plot_standard('Диаграмма рассеяния взаимосвзяи года постройки здания и цены аренды квартиры','Цена логарифмированная','Год постройки')
При отрицательной корреляции увеличение значений одной переменной (года постройки) ведет к закономерному уменьшению другой переменной (цены).
cor(X$Year_construction, X$Price, use = "complete.obs")
## [1] -0.01172473
X$Minimum_duration = gsub(" mes.", "", X$Minimum_duration)
XOLD$Minimum_duration = gsub(" mes.", "", XOLD$Minimum_duration)
Minimum_duration_new=filter(X, X$Minimum_duration != '')
Minimum_duration_new=table(Minimum_duration_new$Minimum_duration)
Minimum_duration_new=as.data.frame(Minimum_duration_new)
Minimum_duration_new=arrange(Minimum_duration_new,desc(Freq))
Minimum_duration_old=filter(X, X$Minimum_duration != '')
Minimum_duration_old=table(Minimum_duration_old$Minimum_duration)
Minimum_duration_old=as.data.frame(Minimum_duration_old)
Minimum_duration_old=arrange(Minimum_duration_old,desc(Freq))
Мы сгруппировали данные по виду и выяснили, что столбец Minimum_duration, описывающий минимальную продолжительность договора в мес., относится к номинальным данным. Затем мы отфильтровали данные по столбцу Minimum_duration, удалив данные равные “11000” и “2500” месяцев, так как они не соответствовуют действительности. После этого мы составили две таблицы, отражающих количество опубликованных объявлений в соответствии с минимальной продолжительностью договора до и после очистки данных. Данные таблицы были составлены, чтобы показать какие минимальные продолжительности договора наиболее популярны среди составителей объявлений.
| Var1 | Freq | |
|---|---|---|
| 1 | 11 | 1240 |
| 2 | 12 | 139 |
| 3 | 6 | 85 |
| 4 | 1 | 52 |
| 11 | 15 | 3 |
| 12 | 5 | 3 |
| 13 | 7 | 3 |
| 14 | 8 | 2 |
| 15 | 9 | 1 |
| Var1 | Freq | |
|---|---|---|
| 1 | 11 | 1240 |
| 2 | 12 | 139 |
| 3 | 6 | 85 |
| 4 | 1 | 52 |
| 11 | 15 | 3 |
| 12 | 5 | 3 |
| 13 | 7 | 3 |
| 14 | 8 | 2 |
| 15 | 9 | 1 |
Мы составили график “Количество объявлений в зависимости от минимальной продолжительности договора”, отражающий взаимосвязь между количеством объявлений и минимальной продолжительностью договора. Из этого графика можно узнать какую минимальную продолжитедьность договора указывают в большинстве объявлений. Этот график интересен тем, что самой популярной минимальной продолжительностью договора среди составителей объявлений является срок в 11 месяцев. Это связано в большинстве случаях с тем, что договор заключенный меньше, чем на год не нуждается в регистрации, и по ошибочному мнению многих арендодателей не облагается налогом.
par(mar=c(5,9,1,4), bty="l", mfcol=c(1.8,1), cex.axis=0.9)
barplot(Minimum_duration_new$Freq, space=0.5, col = "#D0D1E6", horiz=T,las=2, main="Количество объявлений в зависимости от минимальной продолжительности договора",names.arg=(Minimum_duration_new$Var1))
mtext("Частота", side=1, line=3)
mtext("Продолжительность договора (мес.)", side=2, line=3)
Tab = table(X$Minimum_duration, X$Price)
NObs = sum(Tab)
NRow = nrow(Tab)
NCol = ncol(Tab)
Chi_2 = 0
for(i in 1:NRow)
{
for(j in 1:NCol)
{
Chi_2 = Chi_2 + (Tab[i,j]^2) / (sum(Tab[i,]) * sum(Tab[,j]))
}
}
Chi_2 = NObs * (Chi_2 - 1)
C = sqrt(Chi_2 / (Chi_2 + NObs))
min_KL = min(NRow, NCol)
C_max = sqrt((min_KL-1) / min_KL)
C_max = ( ((NRow-1)/NRow) * ((NCol-1)/NCol) ) ^ (1/4)
C_P = C / C_max
chisq.test(X$Minimum_duration, X$Price)
##
## Pearson's Chi-squared test
##
## data: X$Minimum_duration and X$Price
## X-squared = 1659.2, df = 1770, p-value = 0.9707
chisq.test(Tab)
##
## Pearson's Chi-squared test
##
## data: Tab
## X-squared = 1659.2, df = 1770, p-value = 0.9707
Рассчитав коэффициент корреляции относительно минимальной продолжительности договора и цены на аренду, мы выяснили, что между переменными существует сильная зависимость, т.к. p-value близок к 1. Из этого можно сделать вывод, что цена на аренду сильно зависит от продолжительности заключения договора, а значит спрос на квартиры меняется в зависимости от минимальной продолжительности договора.
Dist_metro_ad=describe(X$Dist_metro_ad)
modLon=table(X$Dist_metro_ad)
head(modLon[order(modLon, decreasing = TRUE)])
Dist_metro_ad$Moda<- 30.3192712
Quantile=quantile(X$Dist_metro_ad,na.rm = TRUE)
Dist_metro_ad$Quantile_1st<-Quantile[2]
Dist_metro_ad$Quantile_3rd<-Quantile[4]
Dist_metro_ad=as.data.frame(Dist_metro_ad)
Dist_metro_ad$vars<-NULL
Dist_metro_ad$n<-NULL
Dist_metro_ad$vars<-NULL
Dist_metro_ad$trimmed<-NULL
Dist_metro_ad$se<-NULL
Dist_metro_ad$mad<-NULL
Dist_metro_ad_old=describe(XOLD$Dist_metro_ad)
modLon=table(XOLD$Dist_metro_ad)
head(modLon[order(modLon, decreasing = TRUE)])
Dist_metro_ad_old$Moda<- 30.3192712
Quantile=quantile(XOLD$Dist_metro_ad,na.rm = TRUE)
Dist_metro_ad_old$Quantile_1st<-Quantile[2]
Dist_metro_ad_old$Quantile_3rd<-Quantile[4]
Dist_metro_ad_old=as.data.frame(Dist_metro_ad_old)
Dist_metro_ad_old$vars<-NULL
Dist_metro_ad_old$n<-NULL
Dist_metro_ad_old$vars<-NULL
Dist_metro_ad_old$trimmed<-NULL
Dist_metro_ad_old$se<-NULL
Dist_metro_ad_old$mad<-NULL
Мы сгруппировали данные по виду и выяснили, что столбец Dist_metro_ad, описывающий расстояние до ближайшего метро (согласно объявлению) в м., относится к числовым данным. Затем мы отфильтровали данные по столбцу Dist_metro_ad, удалив пустые значения и значения меньше 100 метров, так как они не соответствуют действительности. После этого мы составили две таблицы, отражающих: минимум, первый квартиль, медиану, среднюю, моду, третий квартиль, максимум, среднеквадратическое отклонение, размах, коэффициент асимметрии и куртозис расстояния до ближайшего метро до и после очистки данных. Из данных таблиц можно выяснить, что после очистки данных среднее значение, среднеквадратическое отклонение, медиана, минимум, первый и третий квартиль увеличились. С другой стороны, размах, коэффициент асимметрии и куртозис уменьшились, а значение максимума и моды остались неизменными. Причиной этого стало удаление нами пустых строк и установка минимального расстояния до ближайшего метро в 100 м., которые влияли на достоверность указанных выше описательных статистик.
| mean | sd | median | min | max | range | skew | kurtosis | Moda | Quantile_1st | Quantile_3rd | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| X1 | 1478.321 | 2836.752 | 800 | 0 | 40250 | 40250 | 6.210566 | 52.45705 | 30.31927 | 320 | 1500 |
| mean | sd | median | min | max | range | skew | kurtosis | Moda | Quantile_1st | Quantile_3rd | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| X1 | 1521.956 | 2876.43 | 820 | 0 | 40250 | 40250 | 6.285094 | 54.91051 | 30.31927 | 330 | 1550 |
Мы построили график “Гистограмма распределения предложения квартир по расстоянию до ближайшего метро”, отражающий взаимосвязь между количеством объявлений о сдаче квартиры и расстоянием до ближайшего метро. Из этого графика можно узнать, что в большинстве объявлений указано расстояние до ближайшего метро примерно до 300-400 м.
ggplot() +
geom_histogram(data = X, aes(x = Dist_metro_ad),fill="#ECE2F0",colour="#D0D1E6") +
plot_standard('Гистограмма распределения предложения квартир по расстоянию до ближайшего метро','Расстояние','Частота')+
theme_minimal()
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
Мы построили график “График эмпирической функции плотности расстояния ближайшего до метро”, отражающий частоту попадания наблюдаемых знаечений в интервалы расстояния до ближайшего метро в тыс.м. По данному графику можно увидеть, что в половине объявлений расстояние до ближайшего метро составляет 1000-2000 м., что сходится с выводами из первого графика, где наиболее часто указываемым расстоянием до метро было расстояние в 300-400 м.
Dist1= na.omit(X$Dist_metro_ad)
Dist=as.data.frame(Dist1)
Dist=filter(Dist,Dist$Dist1 !='0')
Dist$Dist1=Dist$Dist1/1000
Dist$Dist1=as.numeric(Dist$Dist1)
plot(density(Dist$Dist),ylab="Плотность вероятности",main="График эмпирической функции плотности расстояния ближайшего до метро")
mtext("Расстояние, деленное на 1000 ", side=1, line=2)
Мы составили диаграмму рассеяния по столбцу Dist_metro_ad, которая показывает взаимосвязь между ценами за аренду квартиры и расстоянием до ближайшего метро. По данной диаграмме видно, что чем ближе квартира к метро, тем дороже стоимость ее аренды. Это можно объяснить тем, что у квартир, находящихся недалеко от метро, высокий спрос, обусловленный тем, что в Петербурге многие люди передвигаются до места работы или учебы преимущественно на метро, а значит при выборе квартиры на съем будут в первую очередь смотреть на близость к метро.
ggplot(X, aes(x = X$LogPrice, y = X$Dist_metro_ad)) +
geom_point(aes(color = PriceDef)) +
theme_minimal()+
plot_standard('Диаграмма рассеяния взаимосвязи расстояние до ближайшей станции метро и цены','Цена логарифмированная','Расстояние')
cor(X$Dist_metro_ad, X$Price, use = "complete.obs")
## [1] -0.150968
Рассчитав коэффициент корреляции относительно расстояния до ближайшего метро и цены на аренду, мы выяснили, что между переменными существует слабая зависимость, т.к. p-value близок к 0. Из этого можно сделать вывод, что цена на аренду слабо зависит от расстояния до ближайшего метро, а значит спрос на квартиры не сильно меняется в зависимости от расстояния до ближайшего метро.
Area_total_old=describe(XOLD$Area_total, na.rm = TRUE)
mod1=table(XOLD$Area_total)
head(mod1[order(mod1, decreasing = TRUE)])
Area_total=describe(X$Area_total, na.rm = TRUE)
mod1=table(X$Area_total)
head(mod1[order(mod1, decreasing = TRUE)])
Area_total_old$Moda<-40
Quantile1=quantile(XOLD$Area_total, na.rm = TRUE)
Area_total_old$Quantile_1st<-Quantile1[2]
Area_total_old$Quantile_3rd<-Quantile1[4]
Area_total_old=as.data.frame(Area_total_old)
Area_total_old$vars<-NULL
Area_total_old$n<-NULL
Area_total_old$vars<-NULL
Area_total_old$trimmed<-NULL
Area_total_old$se<-NULL
Area_total_old$mad<-NULL
Area_total$Moda<-40
Quantile2=quantile(X$Area_total, na.rm = TRUE)
Area_total$Quantile_1st<-Quantile2[2]
Area_total$Quantile_3rd<-Quantile2[4]
Area_total=as.data.frame(Area_total)
Area_total$vars<-NULL
Area_total$n<-NULL
Area_total$vars<-NULL
Area_total$trimmed<-NULL
Area_total$se<-NULL
Area_total$mad<-NULL
В данной таблице представлены описательные статистики переменной “Area_total” до очистки данных. Ошибок данных переменной “Area_total” обнаружено не было.
| mean | sd | median | min | max | range | skew | kurtosis | Moda | Quantile_1st | Quantile_3rd | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| X1 | 61.52511 | 37.93154 | 50 | 15 | 500 | 485 | 3.295432 | 20.0002 | 40 | 38 | 70 |
| mean | sd | median | min | max | range | skew | kurtosis | Moda | Quantile_1st | Quantile_3rd | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| X1 | 60.33648 | 34.33185 | 50 | 19 | 444 | 425 | 3.261518 | 19.70965 | 40 | 39 | 70 |
Данный график показывает распределение общей площади квартир. На данном графике видно, что предлагается большое количество квартир, общая площадь которых находится в промежутке между 0 и 100 кв.м.. Как мы понимаем, на рынке аренды квартир преобладают квартиры площадью от 0 до 100 кв.метров, но почему именно такие квартиры, доказано будет с помощью диаграммы рассеяния для общей площади квартир.
plot(density(X$Area_total),ylab="плотность вероятности",main="график эмпирической функции плотности общей площади")
mtext("общая площадь", side=1, line=2)
Данная гистограмма показывает, что наибольшее количество предлагаемых квартир являются квартиры площадью 0-100 кв.м., а наименьшее – квартиры площадью 200-300 кв.м.Красной пунктирной линией указана описательная статистика mean (среднее значение) равная 61.52511. Как мы видим на гистограмме, самое большое предложение на ренке аренд квартир на квартиры площадью меньше 61.52511.
ggplot() +
geom_histogram(data = X, aes(x = Area_total), binwidth = 10 ,fill="#ECE2F0",colour="#D0D1E6") +
geom_vline(aes(xintercept = mean(X$Area_total)), linetype="dashed", color="#8B0000", size=1) +
plot_standard('Гистограмма распределения предложения квартир по общей площади','Общая площадь','Частота')+
theme_minimal()
Диаграмма рассеяния показывает соотношение общей площади квартиры и цены. На диаграмме указана логарифмированная цена. Анализируя диаграмму, можно сделать вывод, что большое предложение квартир стоимостью 30 000 – 70 000 рублей, так как плотность графика наибольшая в это промежутке цен. Если посмотреть на иные промежутки цен,то можно заметить,что меньше квартир предлагается по цене 400 000-600 000 рублей. Таким образом, можно сделать вывод,что площадь квартиры влияет на цену.
ggplot(X, aes(x = X$LogPrice, y = X$Area_total)) +
geom_point(aes(color = PriceDef)) +
theme_minimal()+
plot_standard('Диаграмма рассеяния взаимосвзяи общей площади и цены аренды квартиры','Цена логарифмированная','Общая площадь')
Коэффициент корреляции показывает, насколько сильно взаимосвязаны 2 переменные. Как мы видим, коэффициент корреляции равен 0.7709547. Это значит, что общая площадь квартиры сильно влияет на цену сдачи в аренду этой квартиры.Влияние общей площади квартиры так же можно подтвердить диаграммой рассеяния взаимосвязи цены и общей площади квартир: чем больше площадь, тем выше цена сдачи квартиры.
cor(X$Area_total, X$Price, use = "complete.obs")
## [1] 0.7710159
Area_living_old=describe(XOLD$Area_living, na.rm = TRUE)
mod2=table(XOLD$Area_living)
head(mod2[order(mod2, decreasing = TRUE)])
Area_living=describe(X$Area_living, na.rm = TRUE)
mod2=table(X$Area_living)
head(mod2[order(mod2, decreasing = TRUE)])
Area_living_old$Moda<-18
Quantile2=quantile(XOLD$Area_living, na.rm = TRUE)
Area_living_old$Quantile_1st<-Quantile2[2]
Area_living_old$Quantile_3rd<-Quantile2[4]
Area_living_old=as.data.frame(Area_living_old)
Area_living_old$vars<-NULL
Area_living_old$n<-NULL
Area_living_old$vars<-NULL
Area_living_old$trimmed<-NULL
Area_living_old$se<-NULL
Area_living_old$mad<-NULL
Area_living$Moda<-18
Quantile2=quantile(X$Area_living, na.rm = TRUE)
Area_living$Quantile_1st<-Quantile2[2]
Area_living$Quantile_3rd<-Quantile2[4]
Area_living=as.data.frame(Area_living)
Area_living$vars<-NULL
Area_living$n<-NULL
Area_living$vars<-NULL
Area_living$trimmed<-NULL
Area_living$se<-NULL
Area_living$mad<-NULL
В данной таблице представлены описательные статистики переменной “Area_total” до очистки данных. Ошибки данных переменной “Area_total” были обнаружены и исправлены. О них будет сказано в описании таблицы Area_living.
| mean | sd | median | min | max | range | skew | kurtosis | Moda | Quantile_1st | Quantile_3rd | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| X1 | 37.50215 | 66.41272 | 30 | 1 | 3362 | 3361 | 42.53826 | 2117.412 | 18 | 19 | 44.75 |
В данной таблице представлены описательные статистики по переменной “Area_living”. Были выявлены ошибки данных. Изначально были представлены данные о квартирах с жилой площадью в 1 и 3 кв. метра. Узнав оптимальный размер жилой площади, мы удалили жилую площадь в 1 и 3кв. метра, так как посчитали, что такое маленькое пространство непригодно для жизни. Описательные характеристики после очистки данных изменились. Например, изменилось среднее значение (mean): было 37.50215, стало 33.3738. Изменилось минимальное значение (min), так как были удалены данные: min был 1 кв.метр, стал 9 кв.метров. Также изменился размах (range) из-за очистки данных.
| mean | sd | median | min | max | range | skew | kurtosis | Moda | Quantile_1st | Quantile_3rd | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| X1 | 33.38958 | 21.80289 | 30 | 9 | 262 | 253 | 3.271591 | 20.67833 | 18 | 18 | 40 |
Данный график показывает распределение общей площади квартир. На данном графике видно, что предлагается большое количество квартир, жилая площадь которых находит в промежутке между 0 и 50 кв.м. Совсем минимальное количество квартир предожено площадью больше 150 кв.метров. От чего завсити предложение квартир, выясним с помощью следующих графиков.
plot(density(X$Area_living),ylab="Плотность вероятности",main="график эмпирической функции плотности жилой площади")
mtext("Жилая площадь", side=1, line=2)
Данная гистограмма показывает, что наибольшее количество предлагаемых квартир являются квартиры с жилой площадью 0-50 кв.м., а наименьшее – квартиры площадью 100-150 кв.м. Красной пунктирной линией показано среднее значение (mean), которое равно 33.3738. Значит, наиболее предлагаемые квартиры - это квартиры с жилой блощадью меньше 33.3738 кв метров.
ggplot() +
geom_histogram(data = X, aes(x = Area_living), binwidth = 10 ,fill="#ECE2F0",colour="#D0D1E6") +
geom_vline(aes(xintercept = mean(X$Area_living)), linetype="dashed", color="#8B0000", size=1) +
plot_standard('Гистограмма распределения предложения квартир по жилой площади','Жилая площадь','Частота')+
theme_minimal()
Диаграмма рассеяния показывает соотношение жилой площади квартир и цен. Квартиры, жилая площадь которых составляет от 0 до 50 кв.метров имеют наименьшую цену, поэтому предложения этих квартир больше.
ggplot(X, aes(x = X$LogPrice, y = X$Area_living)) +
geom_point(aes(color = PriceDef)) +
theme_minimal()+
plot_standard('Диаграмма рассеяния взаимосвзяи жилой площади и цены аренды квартиры','Цена логарифмированная','Жилая площадь')
Коэффициент корреляции равен 0.7275243, что говорит о сильном влиянии жилой площади на цену.Таким образом, чем больше квадратов жиой площади, тем выше цена.
cor(X$Area_living, X$Price, use = "complete.obs")
## [1] 0.7275315
Area_kitchen_old=describe(XOLD$Area_kitchen, na.rm = TRUE)
mod3=table(XOLD$Area_kitchen)
head(mod3[order(mod3, decreasing = TRUE)])
Area_kitchen=describe(X$Area_kitchen, na.rm = TRUE)
mod3=table(X$Area_kitchen)
head(mod3[order(mod3, decreasing = TRUE)])
Area_kitchen_old$Moda<-10
Quantile3=quantile(XOLD$Area_kitchen, na.rm = TRUE)
Area_kitchen_old$Quantile_1st<-Quantile3[2]
Area_kitchen_old$Quantile_3rd<-Quantile3[4]
Area_kitchen_old=as.data.frame(Area_kitchen_old)
Area_kitchen_old$vars<-NULL
Area_kitchen_old$n<-NULL
Area_kitchen_old$vars<-NULL
Area_kitchen_old$trimmed<-NULL
Area_kitchen_old$se<-NULL
Area_kitchen_old$mad<-NULL
Area_kitchen$Moda<-10
Quantile3=quantile(X$Area_kitchen, na.rm = TRUE)
Area_kitchen$Quantile_1st<-Quantile3[2]
Area_kitchen$Quantile_3rd<-Quantile3[4]
Area_kitchen=as.data.frame(Area_kitchen)
Area_kitchen$vars<-NULL
Area_kitchen$n<-NULL
Area_kitchen$vars<-NULL
Area_kitchen$trimmed<-NULL
Area_kitchen$se<-NULL
Area_kitchen$mad<-NULL
В данной таблице представлены описательные статистики переменной “Area_total” до очистки данных. Ошибки данных переменной “Area_total” были обнаружены и исправлены.
| mean | sd | median | min | max | range | skew | kurtosis | Moda | Quantile_1st | Quantile_3rd | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| X1 | 13.35892 | 11.86863 | 10 | 1 | 200 | 199 | 5.95212 | 62.08688 | 10 | 8 | 14 |
В данной таблице представлены описательные статистики по переменной “Area_kitchen”. Были выявлены ошибки данных. Изначально были представлены данные о квартирах с кухонной площадью в 1 кв. метра. Узнав оптимальный размер кухонной площади, мы удалили кухонную площадь в 1 кв. метра, так как посчитали, что такое маленькое пространство непригодно. Описательные характеристики после очистки данных изменились. Например, изменилось среднее значение (mean): было 13.35892, стало 12.12336. Также уменьшился размах (range) cо 199 до 168.
| mean | sd | median | min | max | range | skew | kurtosis | Moda | Quantile_1st | Quantile_3rd | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| X1 | 12.12665 | 7.860584 | 10 | 2 | 170 | 168 | 6.216186 | 84.82467 | 10 | 8 | 13.65 |
Данный график показывает распределение общей площади квартир. На данном графике видно, что предлагается большее количество квартир, кухонная площадь которых находится в промежутке между 0 и 20 кв.м. Почему на рынке аренды квартир предлагается наибольшее количесвто квартир с кухонной площадью 0-20 кв.метров будет обосновано на следующих графиках.
L <- na.omit(X)
plot(density(L$Area_kitchen),ylab="плотность вероятности",main="график эмпирической функции плотности кухонной площади")
mtext("кухонная площадь", side=1, line=2)
Данная гистограмма показывает, что наибольшее количество предлагаемых квартир являются квартиры с кухонной площадью 0-20 кв.м., а наименьшее – квартиры площадь больше 50 кв.метров. Красной пунктирной линией показано среднее значение (mean), которое равно 12.12336. Значит, наиболее предлагаемые квартиры - это квартиры с жилой блощадью меньше 12.12336 кв метров.
ggplot() +
geom_histogram(data = X, aes(x = Area_kitchen), binwidth = 10 ,fill="#ECE2F0",colour="#D0D1E6") +
geom_vline(aes(xintercept = mean(X$Area_kitchen)), linetype="dashed", color="#8B0000", size=1) +
plot_standard('Гистограмма распределения предложения квартир по площади кухни','Кухонная площадь','Частота')+
theme_minimal()
Диаграмма рассеяния показывает соотношение кухонной площадью квартир и цен Квартиры. Мы видим на диаграмме рассеяния,что плотность наибольшая на даиграмме, где кухонная площадь равна 0-25 кв.метров. Значит, больше квартир предлагается этой площадью. Как же влияет цена на площадь? Из рисунка мы видим,что квартир площадью 0-50кв.метров по цене от 8000 до 70000 больше, чем квартир с такой площадью по цене большей 70000. Таким образом, количество предлагаемых квартир зависит от цены кухонной площади.
ggplot(X, aes(x = X$LogPrice, y = X$Area_kitchen)) +
geom_point(aes(color = PriceDef)) +
theme_minimal()+
plot_standard('Диаграмма рассеяния для куханной площади','Цена логарифмированная','Кухонная площадь')
Коэффициента корреляции равен 0.5258566. Можно сделать вывод, что кухонная площадь не сильно влияет на цену.Таким образом, цена за квартиру,вероятно,будет формироваться за счет жилой и общей площади квартиры.
cor(X$Area_kitchen, X$Price, use = "complete.obs")
## [1] 0.5260778
Price=describe(X$Price, na.rm = TRUE)
mod=table(X$Price)
head(mod[order(mod, decreasing = TRUE)])
Price$Moda<-20000
Quantile=quantile(X$Price)
Price$Quantile_1st<-Quantile[2]
Price$Quantile_3rd<-Quantile[4]
Price=as.data.frame(Price)
Price$vars<-NULL
Price$n<-NULL
Price$vars<-NULL
Price$trimmed<-NULL
Price$se<-NULL
Price$mad<-NULL
Price_old=describe(XOLD$Price)
mod=table(XOLD$Price)
head(mod[order(mod, decreasing = TRUE)])
Price_old$Moda<-20000
Quantile1=quantile(XOLD$Price)
Price_old$Quantile_1st<-Quantile1[2]
Price_old$Quantile_3rd<-Quantile1[4]
Price_old=as.data.frame(Price_old)
Price_old$vars<-NULL
Price_old$n<-NULL
Price_old$vars<-NULL
Price_old$trimmed<-NULL
Price_old$se<-NULL
Price_old$mad<-NULL
В данной таблице представлены описательные статистики по переменной “Price”. Ошибки по переменной Price: Были удалены все квартиры, стоимость аренды которых ниже 8000, т.к. все цены, указанные ниже 8000 были не валидны.(Прим. квартиры с площадью 90 кв.м. по цене 1500 в центре Спб)
После удаления данных описательные характеристики изменились. Например, изменилось среднее значение (mean): было 43619.47, стало 41046.64. Также уменьшился размах (range) cо 508799 до 500301. Изменилось значение минимума с 2 до 8500. Изменилось значенрие коэффициент асимметрии и куртозиса:4.488188 -> 4.758172,29.51536->31.76663
| mean | sd | median | min | max | range | skew | kurtosis | Moda | Quantile_1st | Quantile_3rd | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| X1 | 43619.47 | 43751.31 | 30000 | 2 | 508801 | 508799 | 4.488188 | 29.51536 | 20000 | 21000 | 50000 |
| mean | sd | median | min | max | range | skew | kurtosis | Moda | Quantile_1st | Quantile_3rd | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| X1 | 41046.64 | 40540.56 | 29000 | 8500 | 508801 | 500301 | 4.758172 | 31.76663 | 20000 | 21000 | 45000 |
Данный график показывает распределение предложения квартир по цене. На данном графике видно, что предлагается большее количество квартир, цена которых находится в интервале между 16 и 30 тыс.в месяц. Красной пунктирной линией показано среднее значение (mean), которое равно 41046.64.
Firpl=arrange(X,Price)
Firpl$Price=Firpl$Price/1000
ggplot() +
geom_histogram(data = Firpl, aes(x = Price), binwidth = 10 ,fill="#ECE2F0",colour="#D0D1E6") +
geom_vline(aes(xintercept = mean(Firpl$Price)), linetype="dashed", color="#8B0000", size=1) +
plot_standard('Гистограмма распределения предложения квартир по цене','Цена, деленная на 1000','Частота')+
theme_minimal()
Данный график показывает распределение предложения квартир по цене. На данном графике видно, что предлагается большее количество квартир, цена которых не ниже 16 000 и не превышает 30 000.
plot(density(Firpl$Price),col="cyan4",ylab="плотность вероятности",main="График эмпирической функции плотности цены")
mtext("Цена(деленная на 1000) ", side=1, line=2)
Latitude=describe(X$Latitude)
modL=table(X$Latitude)
head(modL[order(modL, decreasing = TRUE)])
Latitude$Moda<- 59.970846
Quantile=quantile(X$Latitude,na.rm = TRUE)
Latitude$Quantile_1st<-Quantile[2]
Latitude$Quantile_3rd<-Quantile[4]
Latitude=as.data.frame(Latitude)
Latitude$vars<-NULL
Latitude$n<-NULL
Latitude$vars<-NULL
Latitude$trimmed<-NULL
Latitude$se<-NULL
Latitude$mad<-NULL
Latitude_old=describe(XOLD$Latitude)
modL=table(XOLD$Latitude)
head(modL[order(modL, decreasing = TRUE)])
Latitude_old$Moda<- 59.970846
Quantile=quantile(XOLD$Latitude,na.rm = TRUE)
Latitude_old$Quantile_1st<-Quantile[2]
Latitude_old$Quantile_3rd<-Quantile[4]
Latitude_old=as.data.frame(Latitude_old)
Latitude_old$vars<-NULL
Latitude_old$n<-NULL
Latitude_old$vars<-NULL
Latitude_old$trimmed<-NULL
Latitude_old$se<-NULL
Latitude_old$mad<-NULL
В данной таблице представлены описательные статистики по переменной “Latitude”. Ошибки по переменной Latitude: Была удалена одна строка с предложением квартиры, которая находилась в Выборге по значениям широты и долготы.
После удаления данных описательные характеристики изменились. Изменилось значения размаха в данных, т.к. широта удаленной перменной значилось как мах значения, в соответствии с этим изменился и максимум. Также изменлись куторзис и коэффициент ассиметрии.
| mean | sd | median | min | max | range | skew | kurtosis | Moda | Quantile_1st | Quantile_3rd | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| X1 | 59.94065 | 0.0694677 | 59.94084 | 59.56743 | 60.7037 | 1.136271 | 0.3024379 | 5.509966 | 59.97085 | 59.88022 | 59.99361 |
| mean | sd | median | min | max | range | skew | kurtosis | Moda | Quantile_1st | Quantile_3rd | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| X1 | 59.94082 | 0.0701381 | 59.94109 | 59.57969 | 60.08164 | 0.501948 | -0.1877722 | -0.2774025 | 59.97085 | 59.87375 | 59.99948 |
На данном графике показано распределение квартир по широте. В данном случае график представляет реальные значения, которые согласуются с местоположением Санкт-Петербурга и Ленинградской области. Однако, можно заметить, что все же Предложение квартир непосредственно в городе выше, чем в Лен. области, что будет далее показано на графике рассеяния.
ggplot() +
geom_histogram(data = X, aes(x = Latitude),fill="#ECE2F0",colour="#D0D1E6") +
plot_standard('Гистограмма распределения предложения квартир по широте','Широта','Частота')+
theme_minimal()
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
Данный график лишь доказывает распределения предложения квартир на территории Спб. Наибольшее колличество квартир располагается в на широте от 59.95-59.97
Lat= na.omit(X$Latitude)
Lat=as.data.frame(Lat)
Lat$Lat=as.numeric(Lat$Lat)
plot(density(Lat$Lat),ylab="Плотность вероятности",main="График эмпирической функции плотности широты")
mtext("Широта ", side=1, line=2)
Коэффициента корреляции равен 0.04131462. Можно сделать вывод, что значение широты не сильно влияет на цену.Однако, стоит заметить, что широта определяет лишь часть местоположения квартиры, в то время как соединение параметров широты и долготы могло бы повлиять на ценообразование.
cor(X$Latitude, X$Price, use = "complete.obs")
## [1] 0.04131462
Longitude=describe(X$Longitude)
modLon=table(X$Longitude)
head(modLon[order(modLon, decreasing = TRUE)])
Longitude$Moda<- 30.3192712
Quantile=quantile(X$Longitude,na.rm = TRUE)
Longitude$Quantile_1st<-Quantile[2]
Longitude$Quantile_3rd<-Quantile[4]
Longitude=as.data.frame(Longitude)
Longitude$vars<-NULL
Longitude$n<-NULL
Longitude$vars<-NULL
Longitude$trimmed<-NULL
Longitude$se<-NULL
Longitude$mad<-NULL
Longitude_old=describe(XOLD$Longitude)
modLon=table(XOLD$Longitude)
head(modLon[order(modLon, decreasing = TRUE)])
Longitude_old$Moda<- 30.3192712
Quantile=quantile(XOLD$Longitude,na.rm = TRUE)
Longitude_old$Quantile_1st<-Quantile[2]
Longitude_old$Quantile_3rd<-Quantile[4]
Longitude_old=as.data.frame(Longitude_old)
Longitude_old$vars<-NULL
Longitude_old$n<-NULL
Longitude_old$vars<-NULL
Longitude_old$trimmed<-NULL
Longitude_old$se<-NULL
Longitude_old$mad<-NULL
В данной таблице представлены описательные статистики по переменной “Longitude”. Ошибки по переменной Longitude: Была удалена одна строка с предложением квартиры, которая находилась в Выборге по значениям широты и долготы.
После удаления данных описательные характеристики изменились. Изменилось значения размаха в данных, т.к. долгота удаленной перменной значилось как мин значение, в соответствии с этим изменился и минимум. Также изменлись куторзис и коэффициент ассиметрии.
| mean | sd | median | min | max | range | skew | kurtosis | Moda | Quantile_1st | Quantile_3rd | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| X1 | 30.32904 | 0.0868281 | 30.32517 | 28.77106 | 30.65687 | 1.885808 | -2.105808 | 40.6773 | 30.31927 | 30.27959 | 30.376 |
| mean | sd | median | min | max | range | skew | kurtosis | Moda | Quantile_1st | Quantile_3rd | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| X1 | 30.3301 | 0.0826944 | 30.32751 | 30.07806 | 30.65687 | 0.578806 | 0.1362524 | 0.2130312 | 30.31927 | 30.27459 | 30.37905 |
На данном графике показано распределение квартир по долготе В данном случае график представляет реальные значения, которые согласуются с местоположением Санкт-Петербурга и Ленинградской области. Наибольшее кол-во квартир предлагается в интервале долготы от 30.31 по 30.32
ggplot() +
geom_histogram(data = X, aes(x = Longitude),fill="#ECE2F0",colour="#D0D1E6") +
plot_standard('Гистограмма распределения предложения квартир по долготе','Долгота','Частота')+
theme_minimal()
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
График эмпирической функции плотности долготы также показвает распределение квартир, вследсвтие чего можно сделать предположение, что по широте наибольшее кол-во квартир располагается в Санкт-Петербурге.
Lon= na.omit(X$Longitude)
Lon=as.data.frame(Lon)
Lon$Lon=as.numeric(Lon$Lon)
plot(density(Lon$Lon),ylab="Плотность вероятности",main="График эмпирической функции плотности долготы")
mtext("Долгота ", side=1, line=2)
Следующий график показывает местоположение квартир по широте и долготе, а также цвет обозначения квартир коррелирует с ценой на данные квартиры. Таким образом можно сделать вывод, что наибольшее колличество квартир сдаются по цене 16000-30000. Как и предполагалось ранее, большая часть квартир располагается в городе, однако в центре города, по сравнению с его окраинами, предложение квартир меньше. Вполне возможно, что это является результатом застройки окраин города многоэтажными зданиями, тогда как в центре распологаются здания низкоэтажные для созранения культурного центра города. Также по окрасу квартир в центре города видно, что цена в центре намного выше, чем на окраинах города.
Коэффициента корреляции равен -0.0990394. Можно предположить, что значение долготы не влияет на ценообразование квартир. Стоит также указать, что, судя по графику ниже, конкретное местонахождение квартиры, а именно, сочетание параметров долготы и широты может определить цену аренды квартир, в соответствии с удаленностью от центра города. Возможно, коэффициент не может в должной степени отразить зависимость между переменными широты и долготы, тогда как общее значение этих столбцов может оказать влияние на ценообразование. Таким образом, при должном совмещении двух переменных широты и долготы получится узнать действительную корреляцию между местоположением квариры и ценой её аренды. Также данную информацию может предоставить график ниже.
cor(X$Price,X$Longitude, use = "complete.obs")
## [1] -0.0990394
ggplot(X, aes(x = X$Latitude, y = X$Longitude)) +
geom_point(aes(color = PriceDef)) +
theme_minimal()+
plot_standard('Диаграмма рассеяния взаимосвязи местоположения квартир(широты,долготы) и цены','Широта','Долгота')