İçindekiler

1.Veri Seti

Bu çalışmada R programında yer alan, 1973 yılı Mayıs–Eylül ayları arasında New York’ta yapılan hava kalitesi ölçümlerini içeren “airquality” Veri seti kullanılmıştır. Veri seti, ozon miktarı, güneş radyasyonu, rüzgar hızı ve sıcaklık gibi değişkenlerin günlere göre nasıl değiştiğini göstermektedir.

data("airquality")
head(airquality)
##   Ozone Solar.R Wind Temp Month Day
## 1    41     190  7.4   67     5   1
## 2    36     118  8.0   72     5   2
## 3    12     149 12.6   74     5   3
## 4    18     313 11.5   62     5   4
## 5    NA      NA 14.3   56     5   5
## 6    28      NA 14.9   66     5   6

2. Değişkenler Arası İlişkileri Görselleştirme

# 1. corrplot() ile korelasyon matrisini görselleştirme

library(corrplot)
## corrplot 0.95 loaded
airquality_1 <-na.omit(airquality) #veri seti eksik verilerden temizlendi
corrplot(cor(airquality_1),    #korelasyon matrisini hesaplayıp çizdirme
         method = "color",    # hücreleri renk tonlarına göre gösterme
         tl.col = "navy",   # değişken isimleri lacivert renk
        type = "upper",      # sadece matrisin üst üçgenini
         tl.srt = 45,       # değişken adlarını 45° açıyla döndür
         )

# 2. ggcorrplot() ile daha açklayıcı bir korelasyon matrisi oluşturma

library(ggcorrplot)
## Zorunlu paket yükleniyor: ggplot2
ggcorrplot(cor(airquality_1),  # korelasyon matrisini hesaplayıp çizdirme
           hc.order = TRUE,    # değişkenleri hiyerarşik kümelenmeye göre sırala
           type = "lower",     # alt üçgeni göster
           lab = TRUE)          # her hücreye korelasyon katsayısını yaz
## 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.

# 3. chart.Correlation() ile değişkenler arası ilişkileri grafiksel olarak inceleme

library(PerformanceAnalytics)
## Zorunlu paket yükleniyor: xts
## Zorunlu paket yükleniyor: zoo
## 
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
## 
## Attaching package: 'PerformanceAnalytics'
## The following object is masked from 'package:graphics':
## 
##     legend
chart.Correlation(airquality_1, 
                  histogram = TRUE,   # diyagonal eksenlerde histogramları gösterme
                  pch=20,              # nokta biçimi: dolu daire
                  method = "pearson"   # Pearson korelasyon katsayısı kullan


 # 4. pairs() fonksiyonu ile basit bir saçılım (scatter) matrisi oluşturma                 
                  
)

pairs(~ Ozone + Solar.R + Wind + Temp, data = airquality_1,  # ilişkisi incelenecek değişkenler
      main = "Airquality Değişkenleri Arasındaki İlişkiler", 
      pch = 20, col = "red")  # nokta biçimi, rengi

** 1. Grafik, değişkenler arasındaki korelasyon katsayılarını renk tonlarıyla göstermektedir. Buna göre, Ozone ile Temp arasında güçlü pozitif (koyu mavi), Ozone ile Wind arasında ise belirgin negatif (kırmızıya yakın) bir ilişki görülmektedir. Bu desen, sıcaklık arttıkça ozon düzeyinin yükseldiğini, rüzgar hızlandıkça ozonun azaldığını göstermektedir. Grafiğin üst üçgen biçiminde verilmesi, değişkenlerin karşılıklı korelasyonlarını sade biçimde incelemeyi kolaylaştırır.

** 2. Grafikte değişkenler arasındaki Pearson korelasyon katsayılarını göstermektedir. En yüksek ilişki Ozone–Temp (r = 0.70) değişken çifti arasında görülmektedir. Ayrıca Wind–Temp arasında orta düzeyde negatif ilişki (r = -0.50) bulunmaktadır. Ay (Month) ve gün (Day) değişkenlerinin diğer değişkenlerle korelasyonu oldukça düşüktür; bu da zaman değişkenlerinin atmosfer bileşenleriyle doğrudan ilişkili olmadığını göstermektedir.

** 3. Grafikte, değişkenlerin hem ikili ilişkilerini (scatter) hem de tekil dağılımlarını (histogram) aynı panelde göstermektedir

** 4. Grafikte, değişkenlerin ilişkileri saçılım grafiğinde gösterilmiştir.

Dört grafik birlikte incelendiğinde,

  Sıcaklık (Temp) değişkeni ozon düzeyini artıran,
  Rüzgar hızı (Wind) değişkeni ozon düzeyini azaltan,
  Güneş radyasyonu (Solar.R) ozonla pozitif ilişkili bir değişken olarak görülmektedir.
  Zaman değişkenleri (Day, Month) atmosferik ölçümlerle anlamlı korelasyon göstermemektedir.

İlişki Grafikleri

Yukarıdaki değişkenler arası ilişkileri dikkate alarak farklı ilişki modelleri 2*2 olarak görselleştirilmişti

library(ggplot2)
library(dplyr)
## 
## ######################### 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: 'dplyr'
## The following objects are masked from 'package:xts':
## 
##     first, last
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(patchwork)


# 1. Negatif, hafif doğrusal olmayan ilişki (Ozone ~ Wind)


p1 <- ggplot(airquality_1, aes(x = Wind, y = Ozone)) +
  geom_point(color = "steelblue", alpha = 0.7, pch = 17) +
  geom_smooth(method = "loess", se = FALSE, color = "black") +
  labs(
    title = "Negatif, Hafif Doğrusal Olmayan",
    x = "Rüzgar (mph)",
    y = "Ozon (ppb)"
  ) +
  theme_minimal()

# 2. İlişki kanıtı yok (Ozone ~ Day)

p2 <- ggplot(airquality_1, aes(x = Day, y = Ozone)) +
  geom_point(color = "green", alpha = 0.8, pch = 19) +
  labs(
    title = "İlişki Kanıtı Yok",
    x = "Gün",
    y = "Ozon (ppb)"
  ) +
  theme_minimal()

# 3. Doğrusal olmayan ilişki (Ozone ~ Tem)

p3 <- ggplot(airquality_1, aes(x = Temp, y = Ozone)) +
geom_smooth(method = "lm", formula = y ~ poly(x, 2), se = FALSE, color = "black") +
  geom_point(color = "red", size = 1) +
  labs(
    title = "Doğrusal Olmayan (Karesel) İlişki",
    x = "Sıcaklık (°F)",
    y = "Ozon (ppb)"
  ) +
  theme_minimal()

# 4. Yelpaze Şekli (Ozone ~ Temp)

p4 <- ggplot(airquality_1, aes(x = Temp, y = Ozone)) +
  geom_point(color = "purple", alpha = 0.6, pch = 19) +
  geom_smooth(method = "lm", se = FALSE, color = "black") +
  labs(
    title = "Yelpaze Şekli (Sabit Olmayan Varyans)",
    x = "Sıcaklık (°F)",
    y = "Ozon (ppb)"
  ) +
  theme_minimal()

#2×2 yerleşim 
(p1 | p2) / (p3 | p4)
## `geom_smooth()` using formula = 'y ~ x'
## `geom_smooth()` using formula = 'y ~ x'

3.Sıcaklık ile Ozon Düzeyi Arasındaki İlişki Scatter Grafiği

library(ggpubr)
library(ggExtra)

p <- ggscatter(
  airquality_1,
  x = "Temp",
  y = "Ozone",
  color = "Wind",    # Noktalar, rüzgar hızına göre renklendirildi            
  add = "reg.line",
  add.params = list(color = "orange", linetype = "solid"), 
  cor.coef = TRUE,
  cor.method = "pearson",
  shape=17)+         # Nokta biçimi: Üçgen

  labs(
  title = "Sıcaklık ile Ozon Düzeyi Arasındaki İlişki",
  subtitle =  "(Rüzgar Hızına Göre)",
  x = "Sıcaklık (°F)",
  y = "Ozon (ppb)"
) +
 
  scale_color_gradient(low = "lightblue", high = "darkblue") +# Düşük ve yüksek rüzgar hızlarını temsil   eden renkler 
  theme_minimal(base_size = 12) +
  labs(color = "Rüzgar (mph)")

ggMarginal(
  p,
  type = "boxplot",   
  margins = "both",    # Hem üst hem sağ kenara eklendi
  size = 5,
  fill = "orange",  # Kutu grafiklerinin dolgu rengi
  colour = "grey40",   # Kutu kenar çizgilerinin rengi
  alpha = 0.6          # Kutu grafikleri saydamlık
)

Grafikte sıcaklık (°F) ile ozon düzeyi (ppb) arasındaki ilişki incelenmiştir. Grafik noktalarının renkleri, her gözlemdeki rüzgar hızını (mph) temsil etmektedir. Renk skalasında koyu tonlar yüksek rüzgar hızlarını, açık tonlar düşük rüzgar hızlarını göstermektedir.

Grafikte pozitif yönlü ve güçlü bir doğrusal ilişki gözlemlenmektedir (r = 0.7, p < 0.001). Yani sıcaklık arttıkça ozon düzeyi de artma eğilimindedir.

Ayrıca üst ve yan taraftaki kutu grafikleri, değişkenlerin tekil dağılımlarını göstermektedir. Sıcaklık kutu grafiği, değerlerin çoğunlukla 70–90°F arasında yoğunlaştığını; ozon kutu grafiği ise bazı uç değerlerin bulunduğunu göstermektedir.

Renk dağılımı incelendiğinde, düşük rüzgar hızlarında (açık mavi üçgenler) ozon değerlerinin daha yüksek olduğu dikkat çekmektedir.

Öğrenme Günlüğü

Bu ödevde R da değişkenler arası ilişkilerı ilişkileri analiz etme ve görselleştirme konusunda biraz daha bilgi edindim. Üstelik çok da keyif aldım çalışırken.
Bu süreçte, ggplot2, ggpubr, ggExtra, corrplot, PerformanceAnalytics ve patchwork paketlerini kullandım.

Korelasyon yapısını incelemek için corrplot(), ggcorrplot(), chart.Correlation() ve pairs() fonksiyonlarını kullandım. corrplot() ve ggcorrplot() fonksiyonları, korelasyon katsayılarını renklerle göstermeyi sağlarken; chart.Correlation() fonksiyonu hem histogram hem saçılım grafiği hem de korelasyon katsayısını tek grafikte birleştirdi. Bu fonksiyonların her biri, değişkenler arasındaki ilişkileri farklı yönleriyle analiz etmemi sağladı. Özellikle Ozone–Temp arasındaki güçlü pozitif ilişki ve Ozone–Wind arasındaki negatif ilişkiyi bu görsellerde açıkça görebildim.

Değişkenler arası korelasyonları inceledikten sonra ek olarak derste ilgimi çeken patchwork paketi ile farklı ilişki biçimlerini aynı ekranda göstermeyi denedim.

3.Soru kapsamıda ggscatter() fonksiyonunu kullanarak x = “Temp” ve y = “Ozone” biçiminde bir grafik oluşturarak sıcaklık ile ozon düzeyi arasındaki ilişkiyi görselleştirdim. Ayrıca add = “reg.line” komutuyla grafiğe regresyon doğrusunu, cor.coef = TRUE argümanıyla da korelasyon katsayısını eklemeyi öğrendim. Grafiğe üçüncü bir değişken eklemeyi denedim. color = “Wind” komutunu kullanarak rüzgar hızını renklerle temsil ettim. scale_color_gradient(low = “lightblue”, high = “darkblue”) fonksiyonu ile düşük rüzgar hızlarını açık, yüksek rüzgar hızlarını koyu tonlarda gösterdim. Bu şekilde renklerin, üçüncü değişkenin değerini yansıtarak grafiğe anlam kazandırdığını öğrendim. ggMarginal() fonksiyonunu kullanarak saçılım grafiğine üst ve yan kutu grafikleri (boxplot) eklemeyi öğrendim. Bu kutu grafiklerin değişkenlerin tek başına nasıl dağıldığını, hangi aralıkta yoğunlaştığını ve uç değerlerin nerelerde bulunduğunu görmeyi sağladı.

Katkılarınız için teşekkür ederim 💐