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
# 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.
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'
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.
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 💐