Данные в табличном виде:

Пункт 1:

Группировка данных по виду.

Номинальные данные Числовые данные
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

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('Частота публикования объявлений об аренде квартир по годам','Год размещения объявления','Количество объявлений')

Коэффициент корреляции №1

cor(month(X$Date_entry),X$Price)
## [1] 0.0422861

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

Коэффициент корреляции №2

cor(year(X$Date_entry),X$Price)
## [1] -0.08037258

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

Region

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

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

Address

Столбец Address

Для столбца с адресами нет смысла строить таблицу и графики, так как данный столбец содержит слишком много уникальных значений (более 2 тыс.)

Metro

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

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

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

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

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

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

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

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

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

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

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

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('Диаграмма рассеяния взаимосвзяи года постройки здания и цены аренды квартиры','Цена логарифмированная','Год постройки')

Коэффициент корреляции Year_construction

При отрицательной корреляции увеличение значений одной переменной (года постройки) ведет к закономерному уменьшению другой переменной (цены).

cor(X$Year_construction, X$Price, use = "complete.obs")
## [1] -0.01172473

Minimum duration

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

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

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_old

В данной таблице представлены описательные статистики переменной “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

Описание таблицы Area_total

В данной таблице представлены описательные статистики по переменной “Area_total”. Данные таблицы совпадают с данными до очистки данных, так как ошибок данных переменной “Area_total” обнаружено не было.Это можно заметить,например, по значению mean: В обоих случаях mean = 61.52511.
Общая площадь квартиры кв.м
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('Диаграмма рассеяния взаимосвзяи общей площади и цены аренды квартиры','Цена логарифмированная','Общая площадь')

Описание коэффициент корреляции Area_total

Коэффициент корреляции показывает, насколько сильно взаимосвязаны 2 переменные. Как мы видим, коэффициент корреляции равен 0.7709547. Это значит, что общая площадь квартиры сильно влияет на цену сдачи в аренду этой квартиры.Влияние общей площади квартиры так же можно подтвердить диаграммой рассеяния взаимосвязи цены и общей площади квартир: чем больше площадь, тем выше цена сдачи квартиры.

cor(X$Area_total, X$Price, use = "complete.obs")
## [1] 0.7710159

Area_living

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_living_old

В данной таблице представлены описательные статистики переменной “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

В данной таблице представлены описательные статистики по переменной “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('Диаграмма рассеяния взаимосвзяи жилой площади и цены аренды квартиры','Цена логарифмированная','Жилая площадь')

Описание коэффициент корреляции Area_living

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

cor(X$Area_living, X$Price, use = "complete.obs")
## [1] 0.7275315

Area_kitchen

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_kitchen_old

В данной таблице представлены описательные статистики переменной “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

В данной таблице представлены описательные статистики по переменной “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('Диаграмма рассеяния для куханной площади','Цена логарифмированная','Кухонная площадь')

Описание коэффициента корреляции Area_kitchen

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

cor(X$Area_kitchen, X$Price, use = "complete.obs")
## [1] 0.5260778

Price

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

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)

Описание коэффициента корреляции Latitude

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

cor(X$Latitude, X$Price, use = "complete.obs")
## [1] 0.04131462

Longitude

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. Как и предполагалось ранее, большая часть квартир располагается в городе, однако в центре города, по сравнению с его окраинами, предложение квартир меньше. Вполне возможно, что это является результатом застройки окраин города многоэтажными зданиями, тогда как в центре распологаются здания низкоэтажные для созранения культурного центра города. Также по окрасу квартир в центре города видно, что цена в центре намного выше, чем на окраинах города.

Описание коэффициента корреляции Longitude

Коэффициента корреляции равен -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('Диаграмма рассеяния взаимосвязи местоположения квартир(широты,долготы) и цены','Широта','Долгота')