library(knitr)
library(xtable)
library(papeR)#pdf formatı için tablolar
library(tidyverse)
airbnb<-read.csv("airbnb.csv")
Verisetimiz airbnb ye aittir. New york şehrinde kiralanan konaklama yerlerini dair bilgiler içirmektedir. kaggle linki:https://www.kaggle.com/dgomonov/new-york-city-airbnb-open-data?select=AB_NYC_2019.csv
Değişkenlerimizi açıklayalım.
degiskenler<-colnames(airbnb)
kable(degiskenler, col.names = "Degiskenler")
| Degiskenler |
|---|
| id |
| name |
| host_id |
| host_name |
| neighbourhood_group |
| neighbourhood |
| latitude |
| longitude |
| room_type |
| price |
| minimum_nights |
| number_of_reviews |
| last_review |
| reviews_per_month |
| calculated_host_listings_count |
| availability_365 |
id , name,host_id ,host_name değişkenleri konak sahibi ve konak kiralayan gibi bilgilerini içerir. neighbourhood_group ,neighbourhood değişkenleri ilçe mahalle bilgisidir. latitude longitude konum bilgileridir. room_type evin paylaşımlı mı evin tümü mü yoksa oda mı bilgisini ifada eder. price: konaklama bedeli minimum nights:en az kiralanabilecek gün gece sayısı number of reviews:kaç adet yorum değerlendirme aldığı review per month: aylık ortalam review sayısı avaibilitiy_365 senede kaç gün müsait bilgisi calculated_host_listings_count:listemele sayısı
Verimizdeki değişkenleri açıkladık kısaca bir veri özeti alalım.
“kaç farklı mahalle ve ev tipi var?”
$neighbourhood_group [1] “Brooklyn” “Manhattan” “Queens” “Staten Island” [5] “Bronx”
$room_type [1] “Private room” “Entire home/apt” “Shared room”
Numerik değişkenlerin temel istatistiklerievlerin ortalama satış fiyatları ve standart fiyatlarla alakalı temel bir bilgi verebiliyor. Bununla beraber yorum sayılar hakkında temel bilgileri detaylı analizlerde değerlendiriyor olacağız.
Peki eksik verimiz var mı?
sum(is.na(airbnb))
## [1] 10052
Reviews_per_month değişkeni hariç tüm değişkenlerimiz tamamen dolu çok önemli bir değişken olmaması sebebiyle gözarda edebiliriz.
Görsellerimizi fiyat değişkeni üzerinden devam ettireceğiz. Daha sonra diğer değişkenlerin birbirleriyle alakalı ilişklerine dikkat edeceğiz.Öncelikli olarak ilçelerin fiyatları üzerindeki etkilerine göz atalım.
colnames(airbnb)
## [1] "id" "name"
## [3] "host_id" "host_name"
## [5] "neighbourhood_group" "neighbourhood"
## [7] "latitude" "longitude"
## [9] "room_type" "price"
## [11] "minimum_nights" "number_of_reviews"
## [13] "last_review" "reviews_per_month"
## [15] "calculated_host_listings_count" "availability_365"
Öncelikli olarak ev fiyatlarını etkileyen diğer değişkenleri inceyeceğiz. Bu şekilde konaklama bedelleri hakkında bir bilgi edinebiliyor olacağız.
ggplot(airbnb,aes(x=neighbourhood_group,y=price))+geom_violin()
Bu durum hiç hoş olmadı evlerin aykırı değerlerinin aşırı derecede fazla olması sebebiyle fiyatlar hakkında tam net görüş alamıyoruz.fiyatları 3000’den az olacak şekilde filtre edip tekrar bakalım.
ggplot(airbnb,aes(x=neighbourhood_group,y=price))+geom_violin(aes(fill=neighbourhood_group))+ylim(c(0,3000))
Artık daha anlaşılabilir ve yorum yapılabilir bir hal aldı. veriyi incelediğimizde ucuzdan pahalıya doğru staten island>Bronx>Queens>Brooklyn>Manhattan olarak söyleyebiliriz. karo şekli ile en pahalı bölgenin meşhur Manhattan olduğunu görüyoruz.
Fakat daha mantıklısı fiyat değişkenini logaritmik tabanda göstermektir.Bu durum aykırı değişkenleri dağılımın normalleşmesi adına uygun bir hareket olacaktır.
ggplot(airbnb,aes(log(price)))+geom_density(fill="#69b3a2", color="#e9ecef", alpha=0.8)+theme_bw()+labs(x="ücret",y="yoğunluk(log)",title = "Fiyatların logaritmik dağılım grafiği")
ggplot(airbnb,aes(x=room_type,y=log(price)))+geom_violin(aes(fill=room_type)) + ylab("Ücret") +
xlab("Oda tipi")
En yüksek fiyatların ev içerisinde hakimiyet oranı arttıkta fiyatların arrtığını görmekteyiz. Bununla beraber özel oda fiyatlarının belirgin fiyat aralığı olduğunu görebiliyoruz. Logaritmik tabana almanın yorumlama açısından gerçekten çok etkili olduğunu tekrardan belirtebiliriz.
ggplot(data = airbnb, mapping = aes(x = price)) +
geom_histogram(mapping = aes(fill = room_type), bins = 70, size = 1.3, color = "black") +
theme_minimal() +
ylab("") +
xlab("Ücret") +
ggtitle("1000 dolardan az ücretli konaklamaların histogram dağılımı")+xlim(c(0,1000))
ggplot(data = airbnb, mapping = aes(x = log(price))) +
geom_histogram(mapping = aes(fill = room_type), bins = 70, size = 1.3, color = "black") +
theme_minimal() +
ylab("") +
xlab("Ücret") +
ggtitle("logaritmik fiyat tabanına göre konaklamaların histogram dağılımı")
Bu şekilde daha anlaşılır bir hale geldi. Şöyleki paylaşımlar konaklama yerlerinin fiyatları dibi süpürürcesine düşük ve sayıları az. Bununla beraber özel odaların 0-100 aralığında oldukça fazla sayıda olduklarını görüyoruz.evin tamamını kiralık olan konaklama yerleri ise 0-500 fiyatı arasında çoğunlukla bulunduklarını üst fiyat çerçevesinde nadir evlerin olduğunu görmekteyiz.
Daha fazla tercih edilen ev tipinin daha fazla incelemesi bulunacaktır bu durumu box plot ile gösterelim.
ggplot(airbnb,aes(x=room_type,y=log(number_of_reviews)))+geom_boxplot(aes(fill=room_type))+labs(x="Konaklama tipi",
y="logaritmik tabanda yorum sayısı",
title = "ev tipine göre yorum sayısı")
Ev tiplerine göre alınan yorumlarda grafik üzerinden anlamlı bir fark olup olmadığını söyleyemiyorum. Bu durumda insanların deneyimlerini paylaşmayı sevdiklerini ifade edebiliriz.
Fiyatları belli aralıklara göre sınırlayalım ve bu durum üzerinden nasıl değişiklikler gözlemleyeceğiz öğrenelim.Sınıflandırmayı veriyi eşit parçalara bölebilmek adına yüzdelik dilimlerine göre yapıyor olacağız.
z<-airbnb[order(airbnb$price),"price"] %>% quantile()
z
## 0% 25% 50% 75% 100%
## 0 69 106 175 10000
Yüzdelik dilimlere göre verimiz. Anlaşılacağı üzere konaklama yerlerinin çok az bir kısmı(%25) 175 dolardan fazla fiyata kiralanıyor. Bu fiyat aralıklarını pricegrup adındaki bir değişkene atayarak devam edelim.
airbnb<-airbnb[order(airbnb$price),] #verilerini sıraladım
airbnb$pricegroup<-NA #değişkeni oluşturdum
#her bir if döngüsünde veriye aralık belirlenerek gözlemin şartı karşılayıp karşılayamadığına bakılır.
#uyan şarta göre dönüşüm işlemi gerçekleştirilir.
for(i in 1:nrow(airbnb)){
if(airbnb$price[i]<=z[[2]] ) {
airbnb$pricegroup[i]=1}
else if(airbnb$price[i]<=z[[3]]){
airbnb$pricegroup[i]=2}
else if(airbnb$price[i]<=z[[4]]){
airbnb$pricegroup[i]=3}
else if(airbnb$price[i]<=z[[5]]){
airbnb$pricegroup[i]=4}
}
Yeni değişkenimizi oluşturduk
is.na(airbnb$pricegroup) %>% sum()
## [1] 0
ggplot(airbnb,aes(x=pricegroup))+geom_bar(aes(fill=neighbourhood_group))+facet_wrap(~neighbourhood_group)+
theme(legend.position="none")+labs(title = "ilçelere göre fiyatların değişim sıkalası",
y="Adet",
x="Fiyat Grupları")
Bronx ve staten island üzerinde diğer konaklama alanlarına kıyaslandığında konaklama alanı neredeyse yoktur.En popüler konaklama alanlarının öncelikle brooklyn sonra manhattan olduğunu görebiliriz. Manhattın diğer ilçelerden farklı olarak yüksek fiyat sıkalasında daha fazla konaklama yeri barındırmaktadır.
ggplot(airbnb,aes(x=pricegroup))+geom_bar(aes(fill=room_type))+facet_wrap(~room_type)+
theme(legend.position="none")+labs(title = "Konak tipine göre fiyatların değişim sıkalası",
y="Adet",
x="Fiyat Grupları")
Ucuz ev arayanlar için en uygun tercih özel odalar iken mahremiyeti önemseyen insanların daha yüksek ödemeler yapması gerketiğini kolay bir şekilde görüyoruz. Son olarak bu 2 grafiği birlikte gösterim.
ggplot(airbnb,aes(x=pricegroup))+geom_bar(aes(fill=room_type))+facet_wrap(~neighbourhood_group)+labs(title = "Konak tipi ve konuma göre fiyatların değişim sıkalası",
y="Adet",
x="Fiyat Grupları")