İki sayısal değişken arasındaki ilişkiyi göstermek için saçılım grafiği (scatterplot) kullanırız. Bağımlı değişken y ekseninde, bağımsız değişken ise x ekseninde bulunur. Saçılım grafiği oluşturmak için kullanılacak olan fonksiyon: geom_point(). Regresyon eğrisi eklemek için fonksiyon: geom_smooth(method = “lm”), bu iki fonksiyona color ve size argümanları eklenebilir. Regresyon eğrisinin denklemini eklemek için, stat_regline_equation() fonksiyonu kullanmak gerekiyor, labs() fonksiyonu ile x ve y eksenine başlık ekleyebiliriz. Önce ggpubr paketinin yüklenmesi gerekir. Benzer şekilde saçılım grafiğini, ggscatter fonksiyonu ile de yapabiliriz. Bu fonksiyona, regresyon çizgisi, güven aralığı ve korelasyon katsayısı, korelasyon metodu gibi ek argümanları da ekleyebiliriz.Bu argümanlarla beraber, saçılım grafiği ile ikili değişkenlerin özellikleri hakkında bilgi edinmiş oluruz. Biçimine bakıp, doğrusal olup olmadığını, yönüne bakıp pozitif ya da negatif olup olmadığını, ilişkinin gücüne ve aykırı değer olup olmadığını bakabiliriz.
Örnek: ggscatter(ToothGrowth, x = “dose”, y = “len”, add = “reg.line”, conf.int = TRUE, cor.coef = TRUE, cor.method = “pearson”)
Kutu grafikleri ile bağlantı kurmak için, sürekli bir değişkeni kategorilere bölüp gruplandırarak görselleştirebiliriz.Bunun için cut() fonksiyonunu kullanırız. Yani sürekli bir değişken kategorik hale gelir böylece saçılım grafiğini gruplandırılmış halde görebiliriz. Patchwork paketini kullanarak ile hazırladığımız birden fazla grafiği yanyana ve alt alta yerleştirebiliriz. Örnek: p1 + p2 yan yana p1 / p2 alt alta (p1 | p2) / p3 karma yerleşim (üstte 2, altta 1)
Verileri dönüştürmek için kullanabileceğimiz fonksiyonlar: coord_trans(), grafiğin koordinatlarını dönüştürür.scale_x_log10() ve scale_y_log10() , x ve y ekseninin log (taban-10) dönüşümünü gerçekleştirir.Örnekler aşağıdadır:
ggplot(data = mammals,aes(x =body_wt, y = brain_wt)) + geom_point() + coord_trans(x = “log10”,y = “log10”)
ggplot(data = mammals,aes(x = body_wt, y = brain_wt)) + geom_point() + scale_x_log10() + scale_y_log10()
Geom_jitter fonksiyonu ve alpha argümanını kullanarak, noktaların üst üste binmesini engelleyebiliriz ve noktalara şeffaflık eklemiş oluruz.
Korelasyon katsayısı, iki değişken arasındaki ilişkinin gücünü gösterir. -1 ve +1 arasında değer alır. Katsayının önündeki işaret pozitif ya da negatif olması ilişkinin yönünü, katsayının büyüklüğü ise gücünü gösterir. 0’ a yaklaştıkça zayıf güç, -1 ve +1’e yaklaştıkça daha güçlü bir ilişkiyi gösterir.
cor() fonksiyonu, iki değişken arasındaki Pearson çarpım-moment korelasyonunun hesabını bize verir. Değişkenleri hangi sırayla girdiğimiz önemli değildir.Korelasyon katsayısı veride eksik değer olmasından etkilendiği için, use argümanını “pairwise.complete.obs” olarak ayarlamak, cor() fonksiyonunun ve değerlerinin her ikisinin de eksik olmadığı gözlemler için korelasyon katsayısını hesaplamasını sağlar.
corrplot() fonksiyonu ile korelasyon matrisi oluşturabiliriz. Hmics paketinin yüklenmesi gerekir. İçerisindeki şu argümanlarla görselimizi özelleştirebiliriz: method=korelasyon katsayısı hangi sembolle çizileceğini, outline=her kare ve dairenin çerçevesini çizer, addgrid.col= ızgara çizgilerinin rengini, type= korelasyon matrisinin üst alt ya da tamamını gösterip göstermeyeceğini, order=değişkenlerin benzerliklerine göre sıralamayı sağlar.
ggcorrplot fonksiyonu ile de korelasyon matrisini görselleştirebiliriz. Kullanılabilecek argümanlar, hc.order = TRUE, değişkenleri benzerliğe göre gruplama (hiyerarşik kümeleme) yapar, type = “lower”sadece alt üçgeni göster, lab = TRUE, Hücre içine r değerini yazar.
psych paketindeki corPlot fonksiyonu ile korelasyon matrisi anlamlılık düzeyleri ile görselleştirebilir. stars = TRUE argümanı ise, korelasyon katsayısının anlamlılığına göre yıldız ekler p < .05 için tek yıldız, p < .01 için iki yıldız, p < .001 için üç yıldız.
“PerformanceAnalytics” paketi içerisindeki chart.Correlation fonksiyonu ile korelasyon matrisini görselleştirebilir ve değişkenlerin dağılımları incelenebilir. Histogram argümanı TRUE eklenerek histogram çizilir, pch argümanı ile nokta çeşidine karar verilir.
GGally paketi içerisindeki ggpairs fonksiyonu ile korelasyon matrisi oluşturabilir,title argümanı ile başlık eklenebilir.
Veri seti olarak ToothGrowth seçilmiştir.head() fonksiyonu ile birkaç gözlem incelenmiş, str() fonksiyonu ile toplam değişken sayıları, gözlem sayıları,değişken adları ve türleri görülmüş, help fonksiyonu ile veri hakkında bilgi edinilmiştir.Bu veri seti, C vitamini alımının gine domuzlarında diş gelişimine olan etkisinin incelendiği bir deney veri setidir. Veri setinde 60 tane gözlem bulunmakta ve 3 adet değişken bulunmaktadır: “leng”=diş uzunluğu, “supp”=uygulanan vitaminin türü(VC veya OJ), “dose”= verilen günlük C vitamini dozu(mg cinsinden). “len” ve”dose” değişkenleri sayısal değişkenler olup, “supp” değişkeni kategorik bir değişkendir ve 2 düzeyi(VC ve OJ) vardır.
    library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
    data("ToothGrowth")
    ?ToothGrowth
    head(ToothGrowth)
##    len supp dose
## 1  4.2   VC  0.5
## 2 11.5   VC  0.5
## 3  7.3   VC  0.5
## 4  5.8   VC  0.5
## 5  6.4   VC  0.5
## 6 10.0   VC  0.5
    str(ToothGrowth)
## 'data.frame':    60 obs. of  3 variables:
##  $ len : num  4.2 11.5 7.3 5.8 6.4 10 11.2 11.2 5.2 7 ...
##  $ supp: Factor w/ 2 levels "OJ","VC": 2 2 2 2 2 2 2 2 2 2 ...
##  $ dose: num  0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 ...
Veride eksik veri olup olmadığı kontrol edilmiştir.Eksik veri bulunmamaktadır.
colSums(is.na(ToothGrowth))
##  len supp dose 
##    0    0    0
len() ve dose() değişkenleri arasındaki korelasyon, cor() fonksiyonu ile hesaplanmıştır.
ToothGrowth %>% 
  summarize(N = n(), 
            r = cor(dose, len))
##    N         r
## 1 60 0.8026913
corrplot() fonksiyonu ile len() ve dose() değişkenleri arasındaki ilişki görselleştirilmiştir.İKi değişken arasındaki ilişkini koyu mavi tonla gösterilmesi güçlü pozitif ilişki olduğunu gösterir.
library(Hmisc)
## 
## Attaching package: 'Hmisc'
## The following objects are masked from 'package:dplyr':
## 
##     src, summarize
## The following objects are masked from 'package:base':
## 
##     format.pval, units
library(corrplot)
## corrplot 0.95 loaded
data_num <- ToothGrowth[, c("len", "dose")] # sadece sayısal değişkenler 
corr_res <- rcorr(as.matrix(data_num))
r <- corr_res$r    # korelasyon matrisi
p <- corr_res$P    # p değerleri matrisi
corrplot(r,
         method = "circle", 
         outline = T,
         addgrid.col = "gray", type = "lower",
         order="original") 
         title("C Vitamini Dozu ile Diş Uzunluğu Arasındaki Korelasyon", line=3)
ggcorrplot() fonksiyonu ile len() ve dose() değişkenleri arasındaki ilişki görselleştirilmiştir.Korelasyon katsayısı(r=0.80), görseldeki rengin koyu bir turuncu olması da ilişkinin pozitif ve güçlü olduğunu gösterir.
library(ggcorrplot)
## Loading required package: ggplot2
## Warning: package 'ggplot2' was built under R version 4.5.1
ggcorrplot(r,
           hc.order = TRUE,
           type = "lower",
           lab = TRUE)+
labs(title = "C Vitamini Dozu ile Diş Uzunluğu \n Arasındaki Korelasyon")
## Warning: `aes_string()` was deprecated in ggplot2 3.0.0.
## ℹ Please use tidy evaluation idioms with `aes()`.
## ℹ See also `vignette("ggplot2-in-packages")` for more information.
## ℹ The deprecated feature was likely used in the ggcorrplot package.
##   Please report the issue at <https://github.com/kassambara/ggcorrplot/issues>.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
corPlot() fonksiyonu ile len() ve dose() değişkenleri arasındaki ilişkiye ait korelasyon matrisi görselleştirilmiştir. Görsele göre, c vitamini dozu ile diş uzunluğu arasında pozitif güçlü bir ilişki vardır(r=0.80, p < .001)
library(psych)
## 
## Attaching package: 'psych'
## The following objects are masked from 'package:ggplot2':
## 
##     %+%, alpha
## The following object is masked from 'package:Hmisc':
## 
##     describe
corPlot(ToothGrowth[, c("len", "dose")],
        stars = TRUE, main="C Vitamini Dozu ile Diş Uzunluğu Arasındaki Korelasyon") 
chart.Correlation fonksiyonu ile de korelasyon matrisini görselleştirilmiştir. Bu görselde sağ üst köşede seçilen iki değişken arasında pozitif güçlü bir ilişki olduğunu görebiliyoruz(r=0.80, p < .001), sol altta dağılım grafiğini görebiliyoruz yukarı doğru bir eğilim oluşturuyor yani doz artışıyla birlikte diş uzunluğu artıyor, histogramlar incelendiğinde len değişkeni, sürekli bir dağılım gösteriyor (yaklaşık normal), dose değişkeni, üç belirgin seviye içeriyor; 0.5, 1, 2.
library(PerformanceAnalytics)
## Loading required package: xts
## Loading required package: zoo
## 
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
## 
## ######################### Warning from 'xts' package ##########################
## #                                                                             #
## # The dplyr lag() function breaks how base R's lag() function is supposed to  #
## # work, which breaks lag(my_xts). Calls to lag(my_xts) that you type or       #
## # source() into this session won't work correctly.                            #
## #                                                                             #
## # Use stats::lag() to make sure you're not using dplyr::lag(), or you can add #
## # conflictRules('dplyr', exclude = 'lag') to your .Rprofile to stop           #
## # dplyr from breaking base R's lag() function.                                #
## #                                                                             #
## # Code in packages is not affected. It's protected by R's namespace mechanism #
## # Set `options(xts.warn_dplyr_breaks_lag = FALSE)` to suppress this warning.  #
## #                                                                             #
## ###############################################################################
## 
## Attaching package: 'xts'
## The following objects are masked from 'package:dplyr':
## 
##     first, last
## 
## Attaching package: 'PerformanceAnalytics'
## The following object is masked from 'package:graphics':
## 
##     legend
chart.Correlation(ToothGrowth[, c("len", "dose")], histogram=TRUE, pch=19)
title(main = "C Vitamini Dozu ile Diş Uzunluğu Arasındaki Korelasyon", line=3)
ggpairs fonksiyonu ile de korelasyon matrisini görselleştirilmiştir. Korelasyon katsayısı: 0.803, bu değer, güçlü pozitif bir ilişki olduğunu gösterir.Üç yıldız, ilişki istatistiksel olarak anlamlı olduğunu gösterir (p < 0.001). Alt sol panel dağılım grafiğinde,noktalar açık bir şekilde doğrusal pozitif eğilim gösteriyor,doz arttıkça diş uzunluğu da artıyor. Histogramlar da her değişkenin kendi dağılımını gösteriyor. Diş uzunlukları yaklaşık normal dağılıma sahip.Dose değişkeni üç belirgin seviye içeriyor (0.5, 1, 2)
library(GGally)
## Warning: package 'GGally' was built under R version 4.5.1
ggpairs(ToothGrowth[, c("len", "dose")],title="C Vitamini Dozu ile Diş Uzunluğu Arasındaki Korelasyon")  
“Len” ve “dose” değişkenleri arasındaki ilişkiyi incelemek için dağılım grafiği oluşturulmuştur. Regresyon eğrisini eklemek için (geom_smooth(method = “lm”)) fonksiyonu kullanılmıştır. Korelasyon katsayını eklemek için stat_cor() fonksiyonu eklenmiştir. labs fonksiyonu ile başlıklar eklenmiştir. Bu grafiğe baktığımızda,her C vitamini doz düzeyi için bir grup gözlem dikey olarak sıralanmıştır.Bunun nedeni, veri setinde doz değişkeninin yalnızca üç farklı değere (0.5, 1.0, 2.0 mg) sahip olması olabilir. Aynı doz değerine sahip bireylerin diş uzunlukları farklı olduğundan noktalar dikey dizilmiştir. Regresyon çizgisi, doz arttıkça diş uzunluğunun da arttığını göstermektedir. Korelasyon katsayısı (r = 0.80) bu ilişkinin güçlü ve pozitif olduğunu, p < 0.05 değeri ise ilişkinin istatistiksel olarak anlamlı olduğunu göstermektedir.
library(ggplot2)
library(ggpubr)
## Warning: package 'ggpubr' was built under R version 4.5.1
ggplot(ToothGrowth, aes(x=dose, y=len)) +
  geom_point(size=3, color="black", alpha=0.5)+
  geom_smooth(method="lm", color="red", se=FALSE)+
  stat_cor() +
  labs(x="Uygulanan C vitamini dozu(mg)", y="Diş uzunluğu(µm)", title = "C Vitamini Dozu ile Diş Uzunluğu Arasındaki İlişki")+
theme_classic()
## `geom_smooth()` using formula = 'y ~ x'
Kutu grafikleri eklemek için x eksenindeki doz değişkeni, cut() fonksiyonu ile 2 grup haline getirilip, mutate () fonksiyonu ile veri setine eklenmiştir. geom_boxplot() ile kutu grafiği oluşturulmuş, outlier.alpha = 0 fonksiyonu ile,aykırı noktaların çizilmemesi sağlanmış, geom_jitter() ile noktaların üst üste gelmesi engellenip, daha iyi görüntü elde edilmiş oldu. Elde edilen grafikte, C vitamini dozu iki aralıkta gruplanmış ve C vitamini dozunun artmasıyla diş uzunluğu da artmıştır.
ToothGrowth<- ToothGrowth %>% mutate(dose_cut=cut(dose, breaks=2))
ggplot(ToothGrowth, aes(x =dose_cut, y=len)) +  
  geom_boxplot(outlier.alpha = 0) + 
  geom_jitter(color = "red", width = 0.3) +
  labs(
    x = "C vitamini dozu (gruplar halinde)",
    y = "Diş uzunluğu (µm)",
    title = "Gruplara Göre C Vitamini Dozu ve Diş Uzunluğu"
  ) +
  theme_classic()
Notlarım kısmında neler öğrendiğimi not ettiğim için burda tekrar yazmıyorum, ama dikkatimi çekenleri paylaşacağım.Dağılım grafiğine korelasyon katsayısı eklemek için stat_cor() fonksiyonunu eklemeyi öğrendim, aslıda geom_point yerine ggscatter () kullansam tüm argümanları fonksiyonda kolayca ekleyebildiğim için daha pratik olurdu gibi duruyor. Kutu grafikleri ile bu veriyi görselleştirmek bana pek anlamlı gelmedi; zaten ilk oluşturduğum saçılım grafiğinde doz kısmı çok açıktı, tekrar o kısmı gruplayınca bana ekstra bir bilgi sağladığını düşünmüyorum; ama bence bu veri seti ile ilgili zaten orjinalinde doz değişkeni 0.5,1,ve 2 olarak girildiği için zaten kendi içinde gruplandırılmış gibi bir halde, bu veride yapmaya gerek yoktu diye düşünüyorum. /n ile uzun başlıkların bir kısmının alt satıra geçtiğini öğrendim. Ödev boyunca ggplot2, ggpubr, corrplot, ggcorrplot, psych, GGally ve PerformanceAnalytics paketlerini kullanarak, corrplot, ggcorrplot, corPlot, chart.Correlation ve ggpairs fonksiyonlarını kullanarak korelasyon matrislerini görselleştirdim. Her biri aynı sonucu farklı biçimler sunmuş oldu, özellikle ggcorplot ve corrplot ile olan görseller hoşuma gitti. Daha sonra, ggplot2 ile bir saçılım grafiği (scatter plot) oluşturdum. Grafiğe regresyon çizgisi (geom_smooth(method=“lm”)) ve korelasyon katsayısı (stat_cor()) ekledim. Ek olarak, geom_boxplot() ve geom_jitter() fonksiyonlarını kullanarak kutu grafiği oluşturdum. Bu adımda, cut() ve mutate() fonksiyonlarıyla sürekli bir değişkeni kategorik hale getirmeyi öğrenmiş oldum.