R Üzerinde Çoklu Doğrusal Regresyon – Bölüm 1: Film Skorlarını Tahminleme

Doğrusal regresyon, aralarında doğrusal ilişki bulunan değişkenlerin arasındaki bu ilişkiyi incelemekte ve bunu kullanarak tahmin yapmakta kullanılır. Bu yazıda, doğrusal regresyonun detaylarına ve kullanımına değinerek, model kurma ve seçmeyi anlatacağım. Doğrusal regresyon, adından da anlaşılabileceği gibi değişkenler arasındaki ilişkiden yola çıkarak bir lineer model kurar ve bu model vasıtasıyla da bağımlı değişkenin gelecekteki değerini tahmin etmeye çalışır.  Bu tahmine yardımcı olan bir veya birden çok bağımsız değişken olabilir. Bağımsız değişken sayısı bir olduğunda, bu işleme basit doğrusal regresyon adını veriyoruz. Bizim burada değinecek olduğumuz ise, birden fazla bağımsız değişken kullanılarak bir bağımlı değişkenin tahmin edilmeye çalışıldığı çoklu doğrusal regresyon. Unutmamak gerekir ki onlarca regresyon çeşidi vardır. Bu blogda diğer regresyon çeşitleriyle de alakalı yazılar yazmaya çalışacağım, fakat bu ve bundan sonraki yazının konusu doğrusal regresyon olacak.

Bağımlı değişkenin bağımsız değişkenler ile ilişkisi üzerinden regresyon denklemi kurulduğunda, ki bu denklem aslında bizim lineer modelimiz oluyor, bu denklemi simgeleyen bir doğru oluşur. Daha detaylı olarak açıklayalım. Çoklu doğrusal regresyon için, lineer model aşağıdaki gibidir.

1

Her denklemin olduğu gibi, bu denklemin de analitik düzlemde karşılık geldiği bir doğru bulunmaktadır. Bu doğru da aslında bizim regresyon modelimizi temsil eder. Üstteki modelde “ß0” ifadesi, doğrunun başlangıç noktasını ifade ederken, ß1 ve ß2 ifadeleri de bağımsız değişkenlerin katsayılarıdır ve bunlar her birinin eğimini belirtir. Örneğin ß1 değeri x1 değişkeninin eğimi iken, ß2 değeri de x2 değişkeninin eğimidir. Üstteki denklemde bir de “e” yani error ifadesi vardır ki bu da bağımlı değişken içerisinde bizim bağımsız değişkenlerimiz tarafından açıklanamayan değişkenliği temsil eder. Buradaki ifadeler regresyon denkleminin parametreleridir ve bunların tahminleri de bağımlı değişkenin tahmininde kullanılacaktır. Bu katsayılar ve denklem hakkındaki yorumlamaları yazının devamında yapacağım.

İlk olarak, bu yazıda ne gibi bir işlem için çoklu doğrusal regresyonu kullanacağımı anlatayım. Rotten Tomatoes adlı bir film eleştirme sitesinde, eleştirmenlerin filme verdiği puanlamayı tahminlemeye çalışacağız. Bu tahminlemede ise 6 tane bağımsız değişken kullanacağız. Başka bir deyişle, Rotten Tomatoes’deki eleştiri puanı, 6 bağımsız değişkenimizi kullanarak modellenebilir ve tahmin edilebilir mi buna bakacağız. Elimizdeki veri seti, 2016’dan önce yayınlanmış 651 adet rastgele örneklenmiş filmden oluşmaktadır. Bu veri setinde kullanacağımız bağımlı ve bağımsız değişkenler aşağıdaki gibidir:

Kaynaklar: IMDB API’leri ve Rotten Tomatoes

Yazıda kullanılan veriyi buradan indirebilirsiniz.

critics_score: Bağımlı değişkenimiz. Rotten Tomatoes sitesinde eleştirmenlerin filme verdiği puan.

audience_score: Bağımsız değişken. Rotten Tomatoes sitesinde, seyircilerin filme verdiği skor. Bu değişkeni modele alırken düşündüğümüz nokta, Rotten Tomatoes’deki eleştirmenler filmin notunu verirken seyircilerin kanaatinden etkileniyor mu bunu da modele dahil etmek.

best_actor_win : Bağımsız değişken. Önemli rollerden birinde oynayan herhangi bir erkek aktör hiç Oscar ödülü kazanmış mı? Oscar kazanmış bir erkek oyuncunun filmde oynamış olması, filmin skorunu etkiler mi yoksa etkilemez mi bunu incelemek için bu değişkeni de analize katacağız.

best_actress_win : Bağımsız değişken. Önemli rollerden birinde oynayan herhangi bir kadın aktör hiç Oscar ödülü kazanmış mı? Üstteki değişkenle aynı nedenden dolayı bu değişkeni de analize katacağız.

 best_dir_win : Bağımsız değişken. Filmin direktörü hiç Oscar ödülü kazanmış mı? Film direktörünün Oscar kazanmış olması da film notunu etkileyebilir, bunu görmek için analizde bu değişkeni kullanacağız.

genre : Bağımsız değişken. Filmin türü(Aksiyon, Macera, Komedi vs.). İnsanların film türlerine göre aldığı zevk ve filmi sevme oranı değişebilieceğinden, tür bilgisinin modele katılması faydalı olacaktır. Çünkü bu değişken skor kararını etkileyebilir.

imdb_rating : Bağımsız değişken. Filmin IMDB ratingi. IMDB saygın bir film sitesi olduğundan, filmin buradaki puanı eleştirmenlerin kararını etkiliyor mu bunu da görmek adına analizde kullanacağız.

Analize başlamadan önce her zaman ilk yapılması gerekenin, değişkenleri incelemek ve veri hakkında genel bir bilgiye sahip olmak olduğunu önceki yazılarda söylemiştik. Bunu yapmaya başlamadan önce, gerekli kütüphaneleri yükleyip veriyi kullanıma hazır hale getiriyorum.

2

Bundan sonra kullanacağımız değişkenleri incelemeye başlayabiliriz. Aşağıdaki kod bloğu ile değişkenleri tanıyalım:

3

Veri setinden istediğim değişkenleri “select” komutu ile seçerek, “str” komutu ile yapılarını görmek istiyorum. “%>%” ifadesinin ne iş gördüğünden önceki yazılarda bahsetmiştim. Kodun sonucu aşağıdaki gibi:

4

Sonuçtan da görüldüğü gibi üç tane nümerik dört tane de kategorik değişkene sahibiz. Bağımlı değişkenimiz olan “critics_score” değişkeni nümerik bir değişken. Nümerik değişkenler üzerinde özet istatistikleri hesaplayarak değişkenleri tanıyalım. Aşağıdaki kod bloğu ile bağımlı değişkeni incelemeye başlayalım:

q

“summarise” komutu ile görmek istediğim özet istatistik bilgilerini konsola çektim. Kolon başlıklarını bu komut içerisinde istediğimiz gibi ayarlayabildiğimizi söylemiştim. Sonucu görelim:

6

Önce şunu söylemeliyim ki NA gözlemler bulunsaydı, özet istatistikleri hesaplamadan önce bunları göz ardı etmeliydik aksi takdirde hesaplayamayacaktık. Ortalama değeri 57.68 iken Medyan değerinin 61 olması verinin sola çarpık olduğunun bir işareti. Rotten Tomatoes eleştirmenleri filmlere ortalama olarak 58 skorunu vermektedir ki en büyük ve en küçük arasındaki mesafeye göre baktığımızda da bunun tam bir ortalama olduğunu görebiliyoruz. Standart sapmanın 28 ve varyansın da 806 olduğunu görebiliyoruz. Bunlar değişkenliği belirten değerlerdir ve aynı şekilde IQR yani kartiller arası açıklık da 50 değerini göstermektedir ve bir değişkenlik ölçüsüdür. Sadece göstermek amaçlı diğer sayısal değişkenlerin de özet istatistiklerini hesaplayacağım ve yorumlamadan geçeceğim.

w

Sonuç:

8

Bu kez farklı bir fonksiyon kullanarak özet istatistikleri elde ettik. Dikkat edelim ki “summary” fonksiyonu, “summarise” fonksiyonu kadar esnek değil ve kullanıcıya bıraktığı kısım daha az. Diğer nümerik değişkene gelelim:

9

Bir başka tanımlayıcı komut olarak “describe” komutunu kullanabiliriz. Bu da aynı şekilde özet istatistikleri hesaplayacaktır fakat diğerlerinden daha farklı şekilde.

10

Bu komutun sonucunda diğerlerine nazaran biraz daha farklı istatistikler görebiliyoruz. Öncelikle değişken sayısını “vars” kolonunda 1 olarak görüyoruz ki bu da tek değişkeni incelediğimizi gösteriyor. “Trimmed” kolonunda, baştan ve sondan belli bir miktarda en büyük ve en küçük gözlemlerin çıkarılması sonucunda elde edilen ortalamayı görüyoruz. “mad” kolonu ise “Median Absolute Deviation” değerini verir ve aslında diğerlerine göre daha sağlam bir değişkenlik ölçüsüdür. Detaylara çok fazla girmeden devam edecek olursak “skew” ve “kurtosis” kolonlarında da çarpıklık ve basıklık değerlerini görüyoruz ve bunların desteğini de ortalama ve medyandan alabiliriz.

Özet istatistikler analiz edildikten sonra, yapılması gereken işlemlerden biri de görselleştirmektir. Nümerik değişkenleri görselleştirmek için en uygun yollardan biri de histogramdır. Bağımlı değişkenden başlayalım:

11

“hist” komutu ile bağımlı değişkenin histogramını oluştururken, başlığı, rengi ve x/y eksenlerinin başlıklarını belirttim. Sonuç aşağıdkai gibi:

12

Histogramdan da anlaşılabileceği gibi, değişkenin dağılımı oldukça “uniform” olarak görünmektedir yani belli bir tepesi yoktur. Ayrıca 60 civarında merkezlenmiştir ki bunu zaten özet istatistiklerden de görmüştük. Verinin sola çarpık olduğu da hafifçe görülebilmektedir. Bundan da özet istatistik kısmında bahsetmiştik. Diğer iki nümerik değişkenin de histogramlarını çizelim, fakat açıklamalara girmeyelim.

13

Diğer iki değişkenin histogramını oluşturmak için “ggplot” fonksiyonunu kullandım. İçerisinde histogram rengini, x ve y eksenleri başlıklarını ve grafik başlığını belirttim. Fonksiyon sonucunu aşağıda görelim:

14

15

Nümerik değişkenlerden sonra sıra kategorik olanları incelemeye geldi. Bu konuda bar grafiklerin ne kadar etkili olduğundan daha önce bahsetmiştik. Çok fazla açıklama yapmadan bar grafikleri inceleyelim.

16

Grafikler:

171819

“Yes” yani Oscar alma oranının filmerde beklenildiği gibi düşük olduğunu görebiliyoruz. Son değişkeni farklı bir yöntemle yapalım:

20

Buna benzer bir fonksiyonu daha önce kullanmıştık. “coord_flip” komutu ile bar grafiği yataya çeviriyoruz. x eksenine “genre” değişkenini koyarken, “fill” komutuyla da içini de “genre” değişkeninin seviyelerine göre renklendirmesini söylüyoruz. Sonuç aşağıdaki gibi:

21

Kategorik değişkenleri bu şekilde inceledikten sonra, nümerik bağımsız değişkenlerin bağımlı değişken ile arasında doğrusal bir ilişki olup olmadığına bakacağız. Adından da anlaşılabileceği gibi doğrusal regresyon, bağımlı ve bağımsız değişkenler arasında doğrusal bir ilişki olduğunu varsayar. İki nümerik değişken arasındaki ilişki için en uygun grafiklerden biri “scatter plot” tur. Tek bir grafikte tamamı arasındaki ilişkiyi görebiliriz fakat görsel amaçlarla öncelikle iki tanesi arasındakini tek grafikte görelim. Bu koşulun sağlamasını yazının ilerleyen kısımlarında farklı bir şekilde daha yapacağız fakat öncelikle bu şekilde bakalım.

22

Grafiği görelim:

23

Grafiğe bakılacak olursa “critics_score” ve “audience_score” değişkenleri arasında net bir doğrusal ilişki bulunmaktadır. Bunu, grafikteki noktaların doğrusal bir biçimde hareket etmesinden anlayabiliyoruz. Doğrusallık düzeyi çok yüksek olmasa da(tam bir doğruya yakın hareket etmeseler de) doğrusal ilişkinin var olduğu rahatça söylenebilir. Şimdi tüm nümerik değişkenlerin toplu grafiğini inceleyelim:

24

“ggpairs” komutu, değişkenlerin ikili scatter plot grafiklerini ve korelasyon katsayılarını göstermektedir. “movies” verisetinden “critics_score”, “audience_score” ve “imdb_rating” kolonlarını grafiğe kattık. Bu kolonlar bizim nümerik değişkenlerimize denk gelmektedir. Grafiğin başlığını da ayarladıktan sonra aşağıdaki görüntüyü elde ettik:

25

Görüldüğü gibi bağımlı değişkenimizin iki bağımsız değişkenimizle de doğrusal ilişkisi bulunmaktadır ve korelasyon katsayıları da sırasıyla 0.704 ve 0.765’tir. Fakat burada dikkat edilmesi gereken bir nokta daha var. Bağımsız değişkenlerimizin arasında da kuvvetli bir doğrusal ilişki bulunmakta ve korelasyon katsayısı da 0.865. Bu çok yüksek bir korelasyonu işaret etmektedir ve modele ikisi birden dahil edilecek olursa bir karmaşaya yol açabilir. Bu probleme “multicolinearity” denmektedir. Bir bağımsız değişkeni tahminleyen iki veya daha fazla değişkenin birbiriyle de aralarında kuvvetli bir ilişki olması, ki bu ilişki yüksek korelasyon katsayısıyla temsil edilmektedir, model tahminlerinde kargaşaya yol açabilir. Bunun nedeni, yüksek ilişki içerisindeki değişkenlerden biri modele dahil edildiğinde, diğerinden alınacak olan bilginin zaten büyük bir kısmının dahil edilen değişkenden elde edilmiş olması ve diğerinin de dahil edilmesinin modeli kargaşaya sürükleyecek olmasıdır. Bu durumu ileride en son modele karar verdiğimizde değerlendireceğiz. Şimdi devam edelim.

Bağımlı değişkenin kategorik bağımsız değişkenlerle ilişkisini de incelemekte fayda var. Bir nümerik ve bir kategorik değişken arasındaki ilişkinin en iyi biçimde kutu grafikler vasıtasıyla incelenebileceğine önceki yazıda değinmiştik.

26

Üstteki kod bloğuyla oluşturduğumuz kutu grafiklerin tamamına değinmeyeceğim. Sadece birini inceleyip diğerlerine de benzer yorumlar yapılabileceğini belirtelim.

30

“genre” değişkeni ve bağımlı değişkenimiz arasındaki ilişkiyi inceleyen üstteki kutu grafiğe bakacak olursak grup medyanlarının net olarak değiştiğini görebiliyoruz. Bu film türünün eleştirmen skorunu etkilediğine dair bir işaret olabilir. Fakat tabii ki  sadece kutu grafiğe bakarak böyle bir kanıya varmak doğru olmaz. Regresyon modeli içerisinde böyle bir etkinin olup olmadığı daha net anlaşılacaktır.

Artık modelleme aşamasına geçmenin vakti geldi. Bu aşamayı nasıl gerçekleştireceğimi anlatayım. Bir modelleme metodumuz ve bir de model seçim kriterimiz olacak. Modelleme metodu olarak adım adım ileriye yönelik seçme yöntemi kullanacağım. Model seçim kriteri olarak da düzeltilmiş R kare değerini alacağım. Düzeltilmiş R kare değerini seçmemin sebebi ise daha doğru tahminler vermesi ve normal R kare değeri gibi modele her değişken eklendiğinde artmaması, sadece işe yarayacak bilgiler sağlayan değişkenler eklendiğinde artmasıdır. Modelleme metodu olarak da ileri seçme yöntemi kolay ve anlaşılır olduğundan bunu kullanacağım. Bu yöntem şu şekilde işlemektedir; ilk adımda bağımlı değişken, bağımsız değişkenlerin hepsiyle teker teker bir lineer modele sokulur. Bunlardan en yüksek düzeltilmiş r kare değerine sahip olan seçilir ve devam edilir. Daha sonra ikinci adımda bu modele kalan bağımsız değişkenler birer birer eklenir ve toplamda elimizde kalan bağımsız değişken sayısı kadar ikili lineer model oluşur. Yine en yüksek düzeltilmiş r kare değeri artışını veren modelle devam edilir. Uygulamaya başladığımızda çok daha net olarak anlaşılacaktır. En son aşamada final modelimizi seçtikten sonra, üzerinde gerekli yorumlamaları yapıp tahmin aşamasına geçeceğiz.

İşleme ilk modelimizle başlayalım:

31

“lm” komutu, lineer modelin kısaltmasıdır. Bağımlı değişken solda olmak üzere model formülünü komuta verdikten sonra veri setini de tanıtıyoruz. En son da “summary” komutunu kullanarak kurulan modelin içeriğini görebiliriz.

32

Üstteki çıktının tüm detaylarını final modelimizi kurduğumuzda açıklayacağım. Final modeli seçene kadar dikkat etmemiz gereken tek nokta “Adjusted R-squared” noktası yani düzeltilmiş R kare. Burada 0.4952. Diğer bağımsız değişkenlerle de model kurmadan önce, görsel amaçlarla bu basit regresyon denkleminin doğrusunu çizip üzerinde birkaç yorum yapmak istiyorum.

33

“ggplot” fonksiyonuna artık aşinayız. “geom_point()” fonksiyonu da bildiğimiz gibi “scatter plot” üretiyor. En son aşamadaki “geom_smooth” komutunun içerisine ise lineer model metodunu tanıtarak regresyon doğrusunun grafiğe eklenmesini sağlıyorum. Grafik aşağıdaki gibi:

34

Burada mavi doğru regresyon doğrusunu temsil etmektedir. Etrafındaki hafif karaltı şeklindeki taralı alan ise güven aralığıdır. Regresyon doğrusu üzerindeki noktalar, bizim tahminlerimizdir. Bu noktalar ile kendilerine karşılık gelen siyah noktalar arasındaki fark, kalıntılar olarak adlandırılır. Regresyon doğrusu üzerindeki her nokta, aslında siyah noktalardan birinin tahminidir. Bu yüzden, siyah nokta regresyon doğrusunun yukarısındaysa, lineer modelimizin tahmini o noktanın altında kalmış demektir. Tam tersi altındaysa da, lineer modelimizin tahmini o noktanın üstüne çıkmıştır. Siyah noktalar regresyon doğrusuna ne kadar yakınsa ve ne kadar etrafında toplanmışsa, lineer model o kadar kuvvetlidir. Devam edelim ve ilk adımdaki diğer modelleri kuralım.

35

Üstte gördüğünüz gibi diğer bağımsız değişkenlerle de birer model kurdum ve alttaki komutlarla da bu modellerin özetleri içerisinden sadece düzeltilmiş R kare değerlerini çıkarttım. Sonuçları görelim:

36

Bu noktada en yüksek düzeltilmiş R kare değerini veren model 0.584 değeri ile 6. model, yani “imdb_rating” değişkeni ile kurulmuş olan. Bu yüzden ikinci adıma bu modelle geçeceğiz.

37

2. adımın modellerini üstteki komutlarla oluşturduk. Düzeltilmiş R kare değerlerini görelim:

38

Hatırlayalım birinci adımda seçtiğimiz modelin düzeltilmiş R kare değeri 0.584 idi. Üstteki modellerden en yüksek düzeltilmiş R kare artışını veren modelin 5. model olduğunu görebiliyoruz. Bu değer 0.592’ye çıkmış durumda. Şu halde üçüncü adıma “imdb_rating” ve “audience_score” değişkenlerinden oluşan doğrusal modelle devam ediyoruz.

39

Değerlere bakacak olursak:

40

Son adımda da en yüksek düzeltilmiş R kare değeri artışını veren 0.598 değeriyle 4.model oldu. Yani “genre” değişkeni ile kurulan model. Üçüncü adımda da modelimizi seçtiğimize göre, dördüncü adımla devam edelim.

41

Sonuçlar:

42

Bu noktada en yüksek artışı veren model 0.599 değeriyle 3. model oldu. Fakat aslına bakarsanız bu çok ufak bir artış. Yine de artış olduğu için bu modeli seçiyoruz. Bundan sonra beşinci adımı uygulamaya gerek yok çünkü uygulasak da geriye kalan iki değişkenin düzeltilmiş R kare artışı vermeyeceği açık. Bu yüzden final model olarak 4.adımın 3.modelini seçiyoruz. Yani:

Final Model = critics_score ~ imdb_rating + audience_score + genre + best_dir_win

Final modeli belirlediğimize göre, sıra geldi bu modelin çoklu doğrusal regresyon varsayımlarını sağlayıp sağlamadığını kontrol etmeye. Başlayalım:

  1. Nümerik bağımsız değişkenler ve Bağımlı Değişken Arasında Doğrusal İlişkiler

Başlıktan da anlaşılabileceği gibi model içerisindeki nümerik bağımsız değişkenler ve bağımlı değişken arasında doğrusal ilişki bulunmalıdır. Çünkü zaten finalde kurmuş olduğumuz model doğrusal regresyon modeli olduğu için, bu önemli bir varsayımdır. Bu varsayımı iki şekilde kontrol edeceğiz; birincisi bağımlı değişkenin bağımsız değişkenler ile sırasıyla scatter plot’larına bakarak, diğeri de modelin kalıntılarını bağımsız değişkenlere karşı scatter plot üzerinde çizdirerek. Birincisinde doğrusal ilişki ararken, ikincisinde tamamen rastgele nokta dağılımı arıyor olacağız.

43

Grafiklere bakacak olursak:

4445

Görüleceği üzere bazı ufak sapmalar olsa da bağımlı değişkenimiz ve bağımsız nümerik değişkenlerimiz arasında net bir biçimde doğrusal ilişki olduğu gözükmektedir. Alttaki grafikte sol tarafa doğru hafif sapmalara neden olan noktalar doğrusallığa olumsuz etki yapmaktadır. Bu noktaların miktarı daha da fazla olsaydı veri ikiye ayrılarak doğrusal ve doğrusal olmayan regresyon modelleriyle ayrı ayrı modellenebilirdi. İkinci yönteme geçelim:

46

Burada da “plot” komutunu kullanarak model içindeki kalıntılarla ana veri setinden bağımsız değişkenlerimizi karşılıklı scatter plot içerisine yerleştirdik. Grafikler aşağıdaki gibi:

4748

Görüldüğü gibi iki grafikte de noktalar rastgele dağılmış biçimde. Bu da aslında ilk varsayımımızın yerine geldiğini gösteriyor. ikinci varsayıma geçelim.

2. Yaklaşık Normal Kalıntılar

Regresyon kalıntıları 0 ortalamayla yaklaşık olarak normal dağılmalıdır ki bu da kalıntı grafiğinde sıfır etrafında rastgele noktalar görmek istediğimizi anlatıyor. Kalıntıların histogramı, q-q grafiği ve scatter plot’ları bize bu konuda yardımcı olacaktır.

49

İlk kontrol adımında kalıntıların histogramını çiziyoruz.

50

Histograma bakacak olursak yaklaşık olarak 0 etrafında kümelenmiş normal dağılım görüyoruz. Burada hiçbir sıkıntı yok. q-q grafiğe geçelim.

51

Q-Q grafikler normallik kontrolü için elverişli grafiklerdir. Bir normallik çizgisi üzerinde verinin nasıl dağıldığını gösterirler. Eğer verinin dağılımı normallik çizgisi etrafındaysa ve çok fazla sapma yoksa normal dağıldıklarını söyleyebiliriz. “qqnorm” komutu grafiği çizerken, “qqline” komutu da normallik çizgisini ekler.

52

Grafiğe bakacak olursak normallik çizgisinden çok fazla sapma olmadığını görebiliriz. Burada da endişe edilecek herhangi bir durum yok. Son aşamaya geçelim:

53

Burada da kalıntıların scatter plot’unu çizdikten sonra, 0 çizgisi üzerinde yatay bir doğru çizip kalıntıların bu doğru etrafında rastgele dağılıp dağılmadıklarına bakıyoruz.

54

Evet herhangi bir sıkıntı görünmüyor, kalıntılar 0 çizgisi etrafında rastgele dağılmış durumda. Buradan da bu varsayımın doğru kabul edilebileceğini görebiliyoruz. Geçelim diğer varsayıma.

3. Sabit Değişkenlik(Varyans)

Kalıntılar, bağımlı değişkenin düşük ve yüksek tahminleri için aynı değişkenlik seviyesinde kalmaya devam etmelidir. Yani kalıntıların varyansı sabit olmalıdır. Bu varsayımı da tahmin edilen değerler ve kalıntılar grafiği ile kontrol edebiliriz.

55

Burada “ggplot” komutuna veri seti olarak final modelimizi verdik. Daha sonra içerisinden kalıntılar ve tahminleri çıkartarak bunlardan oluşan bir scatter plot çizmesini söyledik. Sonuç aşağıdaki gibi:

56

Burada da varyansın genel olarak sabit olduğu söylenebilir. Ufak değişkenlikler olsa da bunları göz ardı etmek mümkün görünüyor. Sıradışı gözlemleri rahatça tespit edebilmek için kalıntıların mutlak değerlerini de tahmin edilen değerlere karşı grafiğe dökebiliriz:

57

Grafiğe bakacak olursak:

58

Son varsayımı da kontrol edelim.

4. Bağımsız Kalıntılar

Model kalıntıları birbirinden bağımsız olmalıdır, bir diğer deyişle aralarında otokorelasyon olmamalıdır. Eğer kalıntılar arasında otokorelasyon bulunuyorsa, veri içerisinde modelin kapsaması gereken bilgilerin hala bulunduğunu ve tüm bilginin modele aktarılamadığını düşünmeliyiz. Bu varsayımı kalıntıların scatter plot’u üzerinden görebiliriz. Unutmamak gerekir ki burada da kalıntıların tamamen rastgele dağılmasını istiyoruz. Eğer bir zaman serisini andıran şüpheli bir pattern bulunuyorsa, otokorelasyonun varlığının göstergesidir.

59

Sonuca bakalım:

60

Gördüğümüz üzere kalıntılar tamamen rastgele bir biçimde dağılmış ve otokorelasyona dair hiçbir iz yok.

Çoklu doğrusal regresyon için gerekli varsayımların sağlandığını gördük. Artık tahminleme yapma aşamasına geçebiliriz. Fakat bu aşamaya geçmeden önce, üstte bahsettiğimiz ve sonradan bu konuya geleceğiz dediğimiz bir noktaya değinelim. Bağımlı değişkeni tahmin eden bağımsız değişken ya da değişken grupları arasında da kuvvetli lineer ilişkiler varsa bu “multicolinearity” dediğimiz ilişki problemine sebep olup tahminlerin karışmasına yol açabilir. Hatırlarsanız “audience_score” ve “imdb_rating” değişkenleri arasında böyle bir ilişkinin varlığını tespit etmiştik. Tekrar bakalım:

61

“cor” komutu ile iki değişken arasındaki korelasyon katsayısına bakarken, “plot” ile de scatter plot’larını oluşturuyoruz. Korelasyon katsayısı, iki değişken arasındaki doğrusal ilişkinin kuvvetini ve yönünü belirtir. -1 ile +1 arasında değişir ve bu iki sınıra yaklaştıkça da ilişkinin kuvveti artar. Bunlardan herhangi birine ulaşırsa bu mükemmel ilişki olur. Eğer negatif yöne doğru gidiyorsa ilişki negatif, pozitif yöne doğru gidiyorsa da ilişki pozitif olacaktır. Komutun sonucuna bakacak olursak:

62

Korelasyon katsayısının değeri 0.865. Yani pozitif yönde kuvvetli bir ilişki var diyebiliriz. Unutmamak gerekir ki korelasyon katsayısı eksenlerden etkilenmez. Yani x’e diğer değişkeni, y’ye de diğer değişkeni atsaydık da değişmeyecekti. Aynı zamanda birimsizdir. İki değişken farklı ölçeklerde ölçüldüğünde de aynı sonucu verir. Bu yüksek korelasyonu bir de grafikle teyit edelim:

63

Görüleceği üzere değişkenler arasındaki kuvvetli doğrusal ilişki net olarak gözükmektedir. Bu ilişki bahsettiğimiz probleme neden olacağından, değişkenlerden birini modelden çıkarabiliriz. Çünkü bu durumda bu değişkenlerin birinden alacağımız bilginin büyük bir kısmını diğeri sağlayacağından dolayı sadece bir tanesini modele almak yeterlidir. Unutmamak gerekir ki en az değişkenle en anlamlı tahminleri veren model, her zaman en iyi modeldir. Bu yüzden bir tanesini modelden çıkaracağız. Peki hangisi çıkacak? İkisiyle de birer model kurup, düzeltilmiş R kare değeri daha yüksek hangisininse o değişkeni modelde tutup, diğerini atacağız.

64

Düzeltilmiş R kare değerlerine bakalım:

65

Görüyoruz ki “imdb_rating” değişkeni daha yüksek düzeltilmiş R kare değeri çıkarıyor. Bu durumda “audience_score” değişkenini modelden çıkartalım. En son modelimiz şu şekilde olacak:
66

En son modeli belirledikten sonra, şimdi model çıktısını yorumlayabiliriz:

67

En üst kısımda çoklu doğrusal regresyon modelimizin nasıl çağrıldığı belirtiliyor. Bu, bizim modeli oluştururken girdiğimiz formül. Bir altında kalıntıların bazı özet istatistikleri gösterilmiş. Bunlar, minimum ve maksimum değerler, 1. ve 3. kartiller ve medyan değeri(2.kartil). Altta katsayılar bölümünde ise regresyon doğrusunun başladığı noktanın ve her değişkenin eğimlerinin tahmini yer almaktadır. “Intercept” yani aslında en yukarıda verdiğimiz denklemde “ß0” değerine karşılık gelen katsayının, ki bu doğrunun başlangıç noktasını belirtiyor, tahmin değerinin -70.8932 olduğunu görebiliyoruz. Standart hata kısmında, “intercept” değerinin örnekleme dağılımının standart sapması gösterilir, ki buna standart hata denir. Bu tahminin anlamlı olup olmadığının testi, t-testi vasıtasıyla yapıldığı için buradaki “t-value” kolonunda t istatistiği, diğer adıyla t test istatistiği vardır. Bu istatistik, “intercept” değeri standartlaştırıldığında t-dağılımı içerisinde hangi noktaya karşılık geliyorsa onu verir. t istatistiği ne kadar büyükse, p-değeri o kadar küçük olacak ve bu da anlamlı bir sonuç verecektir. p-değerinin ne olduğunu önceki yazılarımda anlatmıştım. Çok detaya girmeden “intercept” tahminini yorumlayacak olursak, tüm bağımsız değişkenlerin değeri 0 olduğunda, bağımlı değişkenin yani “critics_score” değişkeninin değerinin -70.89 olacağını söyler. Yani Rotten Tomatoes eleştirmenleri bu puanı verecektir. Bu aslında mantıklı bir çıkarım değildir. Çünkü bir filmin türünün olmaması mümkün değildir. Bu yüzden bu değişkenin değeri 0 olamaz. Zaten genelde, “intercept” tahmininden çıkarım yapılması mantıklı sonuçlar vermez bu yüzden yapılmaz. Fakat bu tahmin, doğrunun düzlemdeki yerini düzeltmek ve belirlemek açısından gereklidir.

Gelelim diğer katsayılara. “Estimate” kolonunda “intercept” dışındaki tüm değerler, karşılık gelen değişkenlerin eğim değerini göstermektedir. Bu değer en baştaki çoklu doğrusal regresyon denklemimizde “ß1, ß2” gibi değerlere denk gelmektedir. Örneğin “imdb_rating” değerinin eğimini yorumlayacak olursak; diğer tüm değişkenlerin etkisi sabit tutulduğunda, bir filmin IMDB skorundaki her 1 puan artışa karşılık, Rotten Tomatoes sitesinde eleştirmenlerin filme verdiği puan 18.76 artmaktadır. Ayrıca “imdb_rating” değişkeninin p-değeri de 0.05’ten küçük olduğu için, bir filmin IMDB puanı, Rotten Tomatoes’deki eleştirmen puanının anlamlı bir tahmincisidir diyebiliriz. Kategorik bağımsız değişkenler için bakacak olursak, dikkat ederseniz kategorik değişkenlerin her seviyesinin kendine has bir eğimi var ve denklemde yer almakta. Örneğin bir filmin türü animasyon olduğunda, çoklu doğrusal regresyon denkleminde “genreAnimation” değişkeninin değerine 1 verilirken, “genre” değişkeninin diğer tüm seviyelerinin değeri 0 olur ve böylece o değişkenin etkisi hesaplanır. Dikkat ederseniz “genre” değişkeninin bir seviyesi yukarıdaki çıktıda gözükmemektedir. Aynı şekilde “best_dir_win” değişkeninin de “No” seviyesi çıktıda yoktur. Kategorik değişkenlerin bir seviyesi her zaman “referans seviyesi” seçilir ve regresyon çıktısında yer almaz. Eğim değerlerinin yorumu da bu referans seviyesine göre yapılır. Örneğin; yine animasyon üzerinden gidecek olursak, diğer tüm değişkenlerin etkisi sabit tutulduğunda, animasyon filmlere Rotten Tomatoes eleştirmenleri tarafından verilen puan, “Action & Adventure” yani aksiyon ve macera kategorisindeki filmlere verilen puanlara nazaran 10.4 puan daha fazladır. Buradaki “Action & Adventure” kategorisi regresyon çıktısında yoktur ve “referans” seviyesidir. Kategorik değişken eğimlerinin yorumlamasının bu seviyeye göre yapıldığını söylemiştik. Aynı şekilde diğer değişkenlerin etkileri sabit iken, direktörü Oscar almış olan filmlerin, direktörü Oscar almamış filmlerden ortalama 4.6 puan daha fazla aldığını söyleyebiliriz. Burada kategorik değişkenlerin bazı seviyelerinin p-değerlerinin 0.05’ten büyük olduğunu görüyoruz. Bu durumda, bunlar, Rotten Tomatoes eleştirmenlerinin filmlere verdiği puanların anlamlı tahmincileridir diyemeyiz. Fakat bazı seviyelerin (Örn:genreDocumentary) anlamlı tahminciler olduğunu söyleyebiliriz. Bu noktada neden anlamsız tahmincilerin modelde bulunduğunu sorguluyor olabilirsiniz. Hatırlarsınız ki model seçim kriteri olarak düzeltilmiş R kare değerini almıştık. Bu kriter, istatistiksel anlamlılıktan çok, tahminlerin doğruluğuna bakar. Bu yüzden kriter olarak düzeltilmiş R kare seçildiğinde modelde anlamsız değişkenlerin de bulunması mümkündür. Eğer başka bir model seçim kriteri kullanmış olsaydık bu durum değişebilirdi. Bu biraz da araştırmacının kararına bağlı bir durum.

Regresyon çıktısının son kısmında ise kalıntıların standart hatası ve serbestlik derecesi yer almaktadır. Serbestlik derecesi dağılımın şeklini belirler. Bir alt satırda R kare ve düzeltilmiş R kare değerleri yer alıyor. Buradaki düzeltilmiş R kare değerini, “multicolinearity” problemini çözmeden önceki modelimizin R kare değeriyle karşılaştıralım. O modelinki 0.599 idi, bununki ise 0.593. Arada ne kadar ufak bir fark olduğunu görüyorsunuz. “audience_score” ve “imdb_rating” değişkenlerinin birinden alacağımız bilginin büyük bir kısmını, diğerinden de alabileceğimizi söylemiştik. Bu küçük fark da bize bunu anlatıyor. Sadece 0.05’lik bir puandan feragat ederek, modelden bir değişken çıkardık ve daha sade hale getirdik. Bu da değişkeni çıkartma kararımızın doğru olduğunu bize gösterdi. Bu noktaya gelmişken R kare değerini de yorumlayalım. Bu değer 0.601’i gösteriyor. Yani biz bu modeldeki bağımsız değişkenleri kullanarak, bağımlı değişkenimizdeki genel değişkenliğin %60’ını açıklayabiliyoruz. Geriye kalan %40 ise bu modelde bulunmayan başka değişkenlerle açıklanıyor. Bir de son satıra bakalım. Burada da F-istatistiği yer alıyor. Bu istatistiğin değerinin 80.08 olduğu ve F dağılımının şeklini belirleyen serbestlik derecesinin de 638 olduğunu görebiliyoruz. Böyle büyük bir F-istatistiğine karşılık tabii ki p-değeri de(bu istatistiğin sağında kalan alan olduğu için) çok küçük olmalıdır, ki nitekim de öyle. Bu satırdaki p-değerinin 0.05’ten küçük olması, modelin bir bütün olarak anlamlı olduğunu gösteriyor. Unutmamak gerekir ki modelin bir bütün olarak anlamlı olması, içindeki tüm değişkenlerin anlamlı olmasını gerektirmez. Zaten öyle de değiller. Yine aynı şekilde modeldeki tüm değişkenler anlamlı olsa bile, bu modelin bir bütün olarak anlamlı olacağının garantisini vermez.

Evet çoklu doğrusal regresyon çıktısının yorumu bitti. Sıra makalenin son kısmına, yani tahmin yapmaya geldi. Regresyon modellerinde tahminlemeler genel olarak ikiye ayrılır. “Ex-ante” ve “ex-post” tahminlemeler. Ex-post tahminlemelerde, bağımsız değişkenlerin gelecekteki değerleri önceden bilinmektedir ve bu değerler modele sokularak bağımlı değişkenin gelecekteki tahmin değeri elde edilir. Ex-ante tahminlemelerde ise bağımsız değişkenlerin gelecekteki değerleri de belli değildir. Bu yüzden bu tarz tahminlemelerde bağımlı değişkenin gelecekteki değerini tahmin etmek için, önce bağımsız değişkenlerin gelecekteki değerleri tahmin edilmeye çalışılır. Bazen bu tahminler, bağımlı değişkeni tahminlemekten daha zor olabilir. Biz burada ex-post yöntemi ile tahmin yapacağız.

Tahmin edeceğimiz film, “Deadpool” olacak. Bu film, elimizdeki örneklemin dışında olduğu için tahminlenmeye uygun bir film. Tahmin işlemine başlayalım:

68

Öncelikle tahmin edeceğim filmin özelliklerini, ki bu özellikler modele aldığımız değişkenlerin değerleri oluyor, içeren bir data frame nesnesi oluşturup adına da “Deadpool” diyorum. Daha sonra tahminleme işlemini gerçekleştiriyorum:

69

Evet buradaki “predict” komutu tahminleme işlemini gerçekleştiren komut. İlk argüman olarak işlemi hangi model ile gerçekleştireceğimi, sonrasında ise hangi nesneyi modelde kullanacağımı belirttim. Güven aralığını istedikten sonra da anlamlılık seviyesinin 0.2 olmasını, ya da başka bir deyişle %80 güven aralığı vermesini istedim. Sonuç:

70

Evet sonuç yukarıda. “fit” kolonu altındaki nokta tahmini yani tahmin ettiğimiz sayı 91.59 olarak gözüküyor. %80 güven aralığı ise 67.00 ve 116.19 değerleri arasında. Yani bu şu anlama geliyor; %80 eminiz ki “Deadpool” filminin Rotten Tomatoes eleştirmenlerinden aldığı skor bu aralıkta olacak. Şimdi modelin ürettiği tahmini kontrol etmek için bakalım Rotten Tomatoes eleştirmenleri gerçekten bu filme kaç skor vermiş.

Buradan bilgiye ulaşabilirsiniz. Eleştirmenler filme 83 vermiş. Modelimiz ise 91 tahmin etmişti. Değeri güven aralığı içinde yakaladık ve aslında 91 tahmini ile de yaklaştık sayılır. Bu tahmin, elimizdeki modele göre gayet iyi. Neden derseniz, R kare değerini hatırlayacak olursanız 0.60 idi. Yani eleştirmen skorlarındaki değişkenliğin sadece %60’ını biz bu modeldeki değişkenler ile açıklayabiliyorduk. Eğer R kare değeri daha yüksek olup da daha çok değişkenliği açıklayabilseydik, nokta tahminimiz de daha çok yaklaşacaktı.

Bundan sonraki yazımda farklı bir model seçim kriteri, farklı değişkenler ve farklı bir modelleme yöntemiyle bir çoklu doğrusal regresyon örneği daha yazacağım. Aynı şekilde veri seti de farklı olacak.

R Üzerinde Çoklu Doğrusal Regresyon – Bölüm 1: Film Skorlarını Tahminleme” için 6 yorum

  1. Gayet bilgilendirici ve ogretici olmus, veri analiz tekniklerine ek olarak yazilariniz veri gorsellestirme yonunden de cok faydali ve aciklayici. Bu analize ozel olarak ileri secme yontemi amiyane tabirle biraz hantallasmis ve kod tekrarina yol acmis, acaba bu ve diger ‘stepwise’ yontemleri R ya da Python’da daha pratik uyarlama yontemleri var midir? (Yazidan sonra okuyucunun aklina yeni sorular gelmesi de ayri guzel bir sey 🙂 )

    Mesela 2. adimda en iyi adj. R-sq degerini sizinde yazdiginiz gibi 5. model, yani ‘genre’ degiskeni vermis ama hafif bir gozden kacma ile onun yerine izleyici puanini ekleyip devam etmissiniz; gerci sonunda uc asagi bes yukari model zaten olacagina varmis.

    Beğen

    1. Selamlar,
      Bilgilendirmeler için teşekkür ederim. Bazen ufak tefek şeyler gözden kaçabiliyor. Bahsettiğiniz yöntemi R veya Python’da döngü yazarak otomatik bir biçimde gerçekleştirebilirsiniz. Ayrıca ek olarak kendine has bir fonksiyonu var mıydı hatırlayamadım. Fakat ufak bir araştırmayla ortaya çıkacaktır.

      Beğen

    1. Selam,
      Veri setini herhangi bir programda açabilirsiniz. Yazdığım kodlarla R üzerine yükleyin. CSV dosyası olduğu için, bilgisayarınızda onu direkt açacacak bir program bulunmuyor olabilir.

      Beğen

  2. nitel değişkenlerde yazdığınız diğer modeller kısmında dummy değişkenler nasıl oluşuyor ve referans grubunu nasıl belirtiyoruz.

    Beğen

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google fotoğrafı

Google hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s