
Bu eğitimde, bir dizi veri görselleştirme yöntemini ve bunların altında yatan istatistikleri inceleyeceksiniz. Özellikle bir veri çerçevesindeki değişkenler arasındaki eğilimleri ve ilişkileri belirlemeye odaklanarak.
Evet, korelasyon ve regresyon gibi kavramlara odaklanacaksınız! Önce R’de korelasyona giriş yapacaksınız. Ardından, ggplot2 ve GGally gibi paketleri kullanarak R’de korelasyon matrislerini nasıl çizebileceğinizi göreceksiniz. Son olarak, hangi tür korelasyonların mevcut olduğunu ve bunların ileri analizleriniz için neden önemli olduğunu inceleyeceksiniz.
Bu konuya daha derinlemesine dalmak isterseniz, DataCamp’in Correlation and Regression kursunu almayı düşünebilirsiniz.
Arka Plan
Bugünkü eğitimde, Kaggle’dan alınmış bir film veri setiyle çalışarak, değişkenler arasındaki ilişkileri nasıl daha iyi anlayabileceğinizi keşfedeceksiniz.
Analizimizin “elmaları elmalarla” kıyaslayacak şekilde olması için, örneğin para birimlerinin aynı birimleri kullanmasını sağlayarak veriyi hafifçe düzenledim. Bu adım olmadan, gross, budget ve profit gibi değişkenlerin istatistiksel analizi yanıltıcı olurdu. Orijinal veri setine erişebilirsiniz.
Veriyi İçe Aktarma
movies veri setine erişip kullanıma hazır hale getirmek için, verinizi bir veri çerçevesine aktarmak ve son derece özgün bir isim olan movies değişkeninde saklamak üzere read.csv() fonksiyonunu kullanabilirsiniz!
movies <- read.csv(url("http://s3.amazonaws.com/dcwoods2717/movies.csv"))
Başlamak için gereken tek şey bu!
Verinizin Temel İncelenmesi
Bir veri çerçevesi içe aktarıldıktan sonra, veriniz hakkında genel bir fikir edinmek iyi bir fikirdir. Önce, incelenen verinin yapısına bakın. Aşağıda, bu son derece basit ve faydalı str() fonksiyonunu kullanmanın sonuçlarını görebilirsiniz:
str(movies)
## 'data.frame': 2961 obs. of 11 variables:
## $ title : Factor w/ 2907 levels "10 Cloverfield Lane",..: 1560 2143 34 2687 1405 1896 2633 894 1604 665 ...
## $ genre : Factor w/ 17 levels "Action","Adventure",..: 6 12 5 5 5 3 2 8 3 8 ...
## $ director : Factor w/ 1366 levels "Aaron Schneider",..: 474 472 781 828 175 1355 1328 1328 968 747 ...
## $ year : int 1920 1929 1933 1935 1936 1937 1939 1939 1940 1946 ...
## $ duration : int 110 100 89 81 87 83 102 226 88 144 ...
## $ gross : int 3000000 2808000 2300000 3000000 163245 184925485 22202612 198655278 84300000 20400000 ...
## $ budget : int 100000 379000 439000 609000 1500000 2000000 2800000 3977000 2600000 8000000 ...
## $ cast_facebook_likes: int 4 109 995 824 352 229 2509 1862 1178 2037 ...
## $ votes : int 5 4546 7921 13269 143086 133348 291875 215340 90360 6304 ...
## $ reviews : int 2 107 162 164 331 349 746 863 252 119 ...
## $ rating : num 4.8 6.3 7.7 7.8 8.6 7.7 8.1 8.2 7.5 6.9 ...
Bu veri çerçevesinde, konsoldan 11 değişkene ait 2961 gözlemin bulunduğunu görebilirsiniz.
Bir kenar notu olarak, her film sadece bir saat uzunluğunda olsa bile, hepsini izlemek için dört aydan fazla süre boyunca durmaksızın film izlemeniz gerekirdi!
Konsol ayrıca her değişkeni adıyla, sınıfıyla ve birkaç örnek değeriyle listeler. Bu, veri çerçevesinde neler olduğuna dair oldukça iyi bir fikir verir; bu anlayış, analitik çabalarımız için kritik önemdedir.
Veri çerçevemize hızlı, üst düzey bir genel bakış yapmamıza yardımcı olacak bir başka harika fonksiyon da summary(). str() çalıştırıldığında üretilen çıktıya benzerliklere ve farklara dikkat edin.
summary(movies)
## title genre
## Home : 3 Comedy :848
## A Nightmare on Elm Street : 2 Action :738
## Across the Universe : 2 Drama :498
## Alice in Wonderland : 2 Adventure:288
## Aloha : 2 Crime :202
## Around the World in 80 Days: 2 Biography:135
## (Other) :2948 (Other) :252
## director year duration
## Steven Spielberg : 23 Min. :1920 Min. : 37.0
## Clint Eastwood : 19 1st Qu.:1999 1st Qu.: 95.0
## Martin Scorsese : 16 Median :2004 Median :106.0
## Tim Burton : 16 Mean :2003 Mean :109.6
## Spike Lee : 15 3rd Qu.:2010 3rd Qu.:119.0
## Steven Soderbergh: 15 Max. :2016 Max. :330.0
## (Other) :2857
## gross budget cast_facebook_likes
## Min. : 703 Min. : 218 Min. : 0
## 1st Qu.: 12276810 1st Qu.: 11000000 1st Qu.: 2241
## Median : 34703228 Median : 26000000 Median : 4604
## Mean : 58090401 Mean : 40619384 Mean : 12394
## 3rd Qu.: 75590286 3rd Qu.: 55000000 3rd Qu.: 16926
## Max. :760505847 Max. :300000000 Max. :656730
##
## votes reviews rating
## Min. : 5 Min. : 2.0 Min. :1.600
## 1st Qu.: 19918 1st Qu.: 199.0 1st Qu.:5.800
## Median : 55749 Median : 364.0 Median :6.500
## Mean : 109308 Mean : 503.3 Mean :6.389
## 3rd Qu.: 133348 3rd Qu.: 631.0 3rd Qu.:7.100
## Max. :1689764 Max. :5312.0 Max. :9.300
##
Tek bir komutla, R size veri çerçevemizdeki her değişken için bazı temel istatistiksel bilgileri döndürdü. Artık neyle çalıştığınızı bildiğinize göre, hadi biraz daha derine inelim ve veriyi keşfedelim!
Özellik Mühendisliği: Kârın Hesaplanması
Kullanılabilir değişkenleri incelediğinizde, bazı sayısal değişkenlerin veri çerçevemiz hakkında yeni içgörüler sağlayacak şekilde dönüştürülebileceği anlaşılıyor.
Örneğin, gross ve budget değişkenlerine sahipsiniz; o halde neden biraz alt kümeye ayırma kullanarak her film için kârı hesaplamayasınız?
Kârı profit = gross - budget formülüyle hesaplayabilirsiniz. Aşağıdaki DataCamp Light parçasında deneyin!
Harika!
Veri çerçevemizde oldukça fazla sayıda para kazanan ve para kaybettiren film olduğunu görebilirsiniz.
Filmlerimizin profit değeri muhtemelen ileride ilginç analizler için kullanılabilir; o halde profit’i veri çerçevemize yeni bir sütun olarak ekleyelim.
Korelasyon
profit veri çerçevemize yeni bir sütun olarak eklendiğine göre, veri setinizdeki değişkenler arasındaki ilişkilere daha yakından bakmanın zamanı geldi.
Hadi profit’in her filmin rating değerine göre nasıl değiştiğine bakalım.
Bunun için R’nin yerleşik plot ve abline fonksiyonlarını kullanabilirsiniz; burada plot bir saçılım grafiği üretirken, abline aşağıda göreceğiniz üzere doğrusal model argümanını eklediğimiz için bir regresyon çizgisi veya “en iyi uyum çizgisi” oluşturur.
Çıktı aşağı yukarı beklediğiniz gibi miydi?

Genel olarak, daha yüksek rating değerine sahip filmlerin daha yüksek profit eğiliminde olduğu görülüyor. Bu ifadeyi, en azından veri çerçevemizde, rating ile profit arasında pozitif bir korelasyon var şeklinde de ifade edebiliriz.
Öte yandan, grafiğe üstünkörü bir bakış bile, yüksek puan alan ancak gişede büyük başarı elde edemeyen çok sayıda film olduğunu ve oldukça kârlı olup nispeten düşük puan alan filmlerin de bulunduğunu ortaya koyuyor.
Korelasyon, nedensellik anlamına GELMEZ!
Korelasyon ile nedenselliği ayırt etmenize yardımcı olacak bir anekdot şöyle: Plajda bir dondurma tezgâhı işletiyorum. Şehirdeki yaya geçidi ihlali yapanların ortalama sayısı, dondurma satışlarım arttığında artma eğiliminde oluyor; ancak dondurmam insanları trafik kurallarını görmezden gelmeye mi itiyor, yoksa başka bir etken mi rol oynuyor? Dondurmamın harika olduğunu kabul ediyorum ama muhtemelen güneşli hava, insanların hem dondurma istemesinde hem de yaya geçitlerinde bekleyip güneşte yanmak istememesinde etkili. Dondurma satışlarımla yaya geçidi ihlali sayısı arasında bir ilişki (korelasyon) var, ancak bunun nedensel bir ilişki olduğunu kesin olarak söyleyemezsiniz.
Bu düşünceyi eğitim boyunca aklınızda bulundurun!
R’de Korelasyonun Hesaplanması
O halde movies içindeki değişkenler arasında hangi tür ilişkiler var ve bu ilişkileri nicel olarak nasıl değerlendirebilirsiniz?
İlk yol, cor() ile korelasyonlar ve korelasyon matrisleri üretmektir:
Not: Hangi korelasyon katsayısını hesaplamak istediğinizi belirtmek için yöntemi de belirtebilirsiniz. Dikkatli olun; bu korelasyonlar belirli varsayımlarla çalışır: Kendall ve Spearman yöntemleri yalnızca sıralı girdiler için anlamlıdır. Bu da, korelasyon katsayısını hesaplamadan önce verilerinizi sıralamanız gerektiği anlamına gelir.
Ayrıca varsayılan yöntem olan Pearson korelasyonu, değişkenlerinizin normal dağılıma sahip olduğunu, değişkenlerin her bir çifti arasında doğrusal bir ilişki bulunduğunu ve verinin regresyon çizgisi etrafında normal dağıldığını varsayar.
Ayrıca Hmisc paketinin bir parçası olan rcorr() fonksiyonunu da kullanarak Pearson ve Spearman korelasyonları için anlamlılık düzeylerini hesaplayabilirsiniz.
Ayrıca göreceksiniz ki korelasyon matrisi, değişken kümeleri arasındaki korelasyon katsayılarını gösteren bir tablodur. Bu, veri setinizdeki değişkenler arasında hangi ilişkilerin bulunduğuna dair ilk fikir edinmek için zaten harika bir yöntemdir; ancak bir sonraki bölümde bunu biraz daha derinlemesine inceleyelim.
Korelasyonu Görsel Olarak Keşfetme: R Korelasyon Matrisi
Bu sonraki keşifte, movies veri çerçevenizdeki kullanılabilir değişkenleri kullanarak bir korelasyon matrisi çizeceksiniz. Bu basit grafik, hangi değişkenlerin diğer değişkenlerle negatif, pozitif, zayıf veya güçlü korelasyona sahip olduğunu hızlıca görselleştirmenizi sağlar.
Bunu başarmak için GGally adlı kullanışlı bir paketi ve ggcorr() adlı bir fonksiyonu kullanacaksınız.
Bu fonksiyon çağrısının biçimi ggcorr(df) olacaktır; burada df, fonksiyonu çağırdığınız veri çerçevesinin adıdır. Bu fonksiyonun çıktısı, değişken adlarımızla etiketlenmiş, üçgen biçimli, renk kodlu bir matris olacaktır. Her değişkenin diğerlerine göre korelasyon katsayısını, değişkenin matris içindeki konumuna bağlı olarak matriste yatay ve/veya dikey okuyarak bulabilirsiniz.
Kulağa kafa karıştırıcı gelebilir ama pratikte gerçekten basit, o yüzden aşağıdaki kod parçasında deneyin!

Az önce oluşturduğunuz korelasyon matrisinde (bu arada harika iş çıkardınız!), year gibi bir değişkenle ilişkili satıra veya sütuna gidip, başka bir değişkenle eşleşen hücrenin rengine bakarak korelasyon katsayısını görebilirsiniz.
Örneğin year değişkenini incelediğinizde, budget ile zayıf, pozitif bir korelasyon ve rating ile benzer şekilde zayıf, negatif bir korelasyon olduğunu görebilirsiniz.
Korelasyon katsayıları her zaman -1 ile 1 arasındadır (uç değerler dahil). -1’lik bir korelasyon katsayısı, x-değerleri artarken y-değerlerinin aynı oranda azaldığı mükemmel bir negatif uyumu gösterir. 1’lik bir korelasyon katsayısı ise y-değerlerinin x-değerleriyle aynı oranda arttığı mükemmel bir pozitif uyumu gösterir.
Çoğu durumda, yukarıdaki year örneğinde olduğu gibi, korelasyon katsayısı -1 ile 1 arasında bir yerde olacaktır.
Korelasyon matrisinde gösterilen değişkenler hakkında biraz tuhaf bir şey fark ettiniz mi?
movies içindeki değişkenlerin hepsi mevcut değil!
Bunun nedeni, movies içindeki değişkenlerin hepsinin sayısal olmamasıdır. ggcorr fonksiyonu sayısal olmayan değişkenleri otomatik olarak göz ardı eder; bu da, matrisi oluşturmadan önce bu tür değişkenleri “alt kümeye ayırma” zahmetinden kullanıcıyı kurtararak zaman kazandırır.
Korelasyon matrisinizin gerçekten “göze çarpmasını” istiyorsanız (ya da benim gibi biraz renk körüyseniz), daha görsel açıdan etkileyici ve veri yüklü matrisler üretmek için yapabileceğiniz birkaç basit ayar var.
İzleyen kod parçasında, label argümanını dahil ettiniz; bu argüman TRUE veya FALSE olabilir. Varsayılan ayar FALSE’tur; ancak label = TRUE eklerseniz, her ilişkinin korelasyon katsayısı ilgili hücreye dahil edilir. Bu da, her katsayının değerini renk skalasına bakarak tahmin etme gereğini ortadan kaldırır.
label_alpha argümanı, korelasyon katsayısının gücüne bağlı olarak her bir etiketin opaklığını artırıp azaltmanıza olanak tanır. Bu, hızlı ve görsel veri analizinde son derece kullanışlıdır.
Sözümüze güvenmeyin, kendiniz deneyin!
Şimdi daha iyi bir korelasyon matrisi çizelim:

İzleyen grafiklerde, “güçlü” bir korelasyona sahip bir grafik oluşturulduğunda, regresyon çizgisinin (x/y) eğiminin 1/1 veya -1/1’e daha yakın olduğunu; “zayıf” bir korelasyonda ise regresyon çizgisinin neredeyse hiç eğime sahip olmayabileceğini göreceksiniz. Eğim 1/1 veya -1/1’e ne kadar yakınsa, çizilen iki değişken o kadar yakından ilişkilidir.
movies veri çerçevemiz özelinde, böyle bir regresyon çizgisi değişkenlerinizin doğası hakkında güçlü içgörüler sağlayabilir ve bu değişkenler arasında bir karşılıklı bağımlılığa işaret edebilir.
Örneğin, daha önce rating üzerindeki profit grafiğinizde, regresyon çizgimizin orta düzeyde, pozitif bir eğime sahip olduğunu gördünüz. Korelasyon matrisinize geri baktığınızda, bu iki değişkenin korelasyon katsayısının 0,3 olduğunu görüyorsunuz.
Makuldür, değil mi?
Korelasyon Türleri
Şimdi önceki bölümde gördüğünüz farklı korelasyon türlerini gösteren ek grafiklere bakalım!
Güçlü Korelasyon: Oylar ve İncelemelerin Grafiği
Güçlü, pozitif korelasyona sahip iki değişkeni çizerek başlayalım.
Korelasyon matrisimize baktığımızda, votes ile reviews değişkenlerinin 0,8’lik bir korelasyon değeriyle kriterlerinize uyduğunu görüyoruz. Bu, eğimimizin 1/1’e nispeten yakın olması gerektiği anlamına gelir.
Bu alıştırmada ve sonraki alıştırmalarda ggplot2 paketini kullanacaksınız. ggplot2 paketi, etkileyici veri görselleştirmeleri oluşturmak için kullanılabilen çok yönlü bir araç setidir.
Bu durumda, ggplot2 paketindeki qplot fonksiyonundan yararlanacaksınız; bu fonksiyon, geom (geometri) argümanına iletilen grafik türüne bağlı olarak birçok farklı grafiği üretebilir.
Aşağıdaki kod parçasında, geom iki tür geometri içeren bir vektöre ayarlanmıştır: point ve smooth. point bir saçılım grafiği, smooth ise bir eğilim çizgisi üretir. Ayrıca method’un lm olarak ayarlandığını da fark edeceksiniz; bu, eğilim çizgisinin daha önce profit ile years grafiğimizde oluşturulan tanıdık düz regresyon çizgisi olacağı anlamına gelir.
Kısacası, etkileyici veri görselleştirmelerini bir çırpıda oluşturmanın ne kadar kolay olduğunu öğreneceksiniz!

Yukarıdaki qplot fonksiyonunda dahil edilen alpha argümanını fark etmiş olabilirsiniz. qplot içindeki alpha kullanımı, ggcorr’de korelasyon katsayısı etiketlerinin opaklığını değiştirdiği gibi, saçılım grafiğindeki noktalara opaklık gradyanı uygular.
Kurduğunuz yapılandırmada, bir noktanın tam opaklığa ulaşması için üzerine 5 başka noktanın binmesi gerekir. alpha paydasındaki sayıyı artırıp azaltmak, bir noktanın opaklığının değişmesi için gereken üst üste binme sayısını etkiler. Bu estetiği kullanmanın bir nedeni, kullanıcıların grafiklerindeki veri noktası yoğunlaşmalarını hızla belirlemesine yardımcı olmasıdır; bu da sırf bir bakışla verilerimize dair yeni içgörüler ortaya çıkarabilir.
Devam edin, kodla oynayın ve nasıl çalıştığını kendiniz görün!
Zayıf Korelasyon: Yıllara Göre Kârın Grafiği
Şimdi profit ile years’ı çizerek “zayıf”, negatif korelasyonun nasıl göründüğüne bakalım. Bu kez herhangi bir method belirtilmedi, dolayısıyla eğilim çizgimiz bu fonksiyonun varsayılanı olan eğri uydurma (kıvrımlı bir eğri) biçiminde veriye göre değişecek. Eğilim çizgisinin belirli bölümleri boyunca, eğrinin güven aralığına göre boyutu artıp azalan açık gri bir alan olduğunu fark edeceksiniz.
Güven aralığı kavramına aşina değilseniz endişelenmeyin! İşi R yapacak ve bu kavram bu alıştırmadan sonra daha iyi açıklanacaktır.
Şimdilik, boşlukları gerekli kodla doldurun ve gözlemleyin!

Artık güven aralığını ve yumuşatma eğrisini iş başında görme fırsatı bulduğunuza göre, hangi gözlemleri yapabilirsiniz?
- İlk olarak, grafiğin başlangıç kısmında
profit’in heryearile birlikte artıyor gibi göründüğünü görüyorsunuz. - İkincisi, yumuşatma eğrisinden ayrılan gri alanın başlangıçta oldukça büyük olduğunu ve veri noktalarının (veya gözlemlerin) sayısının oldukça az olduğunu fark ediyorsunuz.
- Üçüncüsü, eğri daha yoğun bir gözlem grubuna doğru ilerledikçe, gri alan küçülüyor ve neredeyse eğriye yapışıyor; bu arada eğri daha sonraki
year’larda düşüşe geçiyor.
Sonuç olarak, güven aralığını yumuşatma eğrisiyle birlikte çizmek, regresyon çizgimize eşlik eden belirsizlik miktarını görmemizi sağlar. Bu belirsizlik, daha az gözlemle artar ve daha çok gözlemle azalır.
Bu, değişkenlerimiz arasındaki ilişkinin veri çerçevesi boyunca nasıl değiştiğini görselleştirmede ve gözlem yoğunluklarının çizilen eğriyi nasıl değiştirdiğini ortaya koymada oldukça yardımcıdır.
Buradaki uyarı, grafiğin biraz yanıltıcı olabilmesidir; çünkü değişkenleriniz arasında pozitif mi yoksa negatif mi bir korelasyon olduğunu görsel olarak ayırt etmek zor olabilir.
Şimdi profit ile year’ı, votes ile reviews’ı çizdiğiniz şekilde çizelim: her argümandaki “…..” yerine yıllar x ekseninde, profit ise y ekseninde olacak şekilde uygun ifadeleri yerleştirin. “data”nın hangi veri çerçevesine eşit olduğunu belirtmeyi unutmayın!

Korelasyon matrisinize geri baktığınızda, profit ile year’ın korelasyon katsayısının -0,1 olduğunu görüyorsunuz; bu, en iyi uyum çizgisi içeren grafikte, eğri uydurma kullanılan grafiğe kıyasla daha kolay görselleştirilebilir.
Hepsini Bir Araya Getirmek
GGally içinde kullanılabilen bir diğer güçlü fonksiyon olan ggpairs’a şimdi göz atalım. Bu fonksiyon harikadır; çünkü kullanıcıların, birden fazla değişkenin korelasyon katsayısını, bir saçılım grafiği (güven aralığıyla birlikte bir en iyi uyum çizgisi dahil) ve bir yoğunluk grafiğiyle birlikte gösteren bir matris oluşturmasına olanak tanır.
Bu tek fonksiyonu kullanarak, bu eğitimde ele aldığınız her şeyi özlü ve kolay anlaşılır bir şekilde etkili biçimde birleştirebilirsiniz.
Aşağıdaki kod parçasında, veri çerçevesinden en sevdiğiniz üç değişkeni seçin (alt kümeye ayırma gerekmez!), yerleştirin ve oynayın!

Tahmin edebileceğiniz gibi, bir tür grafiğin ideal olduğu pek çok senaryo vardır — kilit nokta, hangi görselleştirme tekniklerinin mevcut olduğunu, bunların nasıl kullanılacağını ve nihai sonucun ne anlama geldiğini öğrenmektir!
İleriye Bakış
Bu eğitimde çok şey öğrendiniz; sonuna kadar geldiğiniz için tebrikler!
Umarım bu kavramları kendi analitik yolculuklarınızda kullanabilirsiniz! Bunlar R’de veri keşfinin gerçekten temelleridir ve verinizi analiz edip modellemeye başlamadan önce onu iyi tanıdığınızdan emin olmak için yapabileceğiniz çok daha fazla şey var. Neden çabalarınızı bir adım öteye taşımayıp DataCamp’in Exploratory Data Analysis kursuna başlamayasınız?
Bu arada, eğer movies veri setiyle devam etmek istemiyorsanız, Kaggle’a uğrayıp keşfetmek için zengin ve ilgi çekici bir veri seti bulmanızı öneririm!
