## geom_jitter() ggplot2 paketinde kullanılan ve üst üste binen gözlemleri ayırt edilebilmesi amacıyla küçük sapmalarla gösteren veri setidir.

library(tidyverse)
## Warning: package 'dplyr' was built under R version 4.5.2
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.5
## ✔ forcats   1.0.1     ✔ stringr   1.5.2
## ✔ ggplot2   4.0.0     ✔ tibble    3.3.0
## ✔ lubridate 1.9.4     ✔ tidyr     1.3.1
## ✔ purrr     1.1.0     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(broom)
library(dplyr)
library(ggplot2)
data("iris")
names(iris)
## [1] "Sepal.Length" "Sepal.Width"  "Petal.Length" "Petal.Width"  "Species"
glimpse(iris)
## Rows: 150
## Columns: 5
## $ Sepal.Length <dbl> 5.1, 4.9, 4.7, 4.6, 5.0, 5.4, 4.6, 5.0, 4.4, 4.9, 5.4, 4.…
## $ Sepal.Width  <dbl> 3.5, 3.0, 3.2, 3.1, 3.6, 3.9, 3.4, 3.4, 2.9, 3.1, 3.7, 3.…
## $ Petal.Length <dbl> 1.4, 1.4, 1.3, 1.5, 1.4, 1.7, 1.4, 1.5, 1.4, 1.5, 1.5, 1.…
## $ Petal.Width  <dbl> 0.2, 0.2, 0.2, 0.2, 0.2, 0.4, 0.3, 0.2, 0.2, 0.1, 0.2, 0.…
## $ Species      <fct> setosa, setosa, setosa, setosa, setosa, setosa, setosa, s…
iris_tr <- iris %>%
  rename(
    canak_uzunluk = Sepal.Length,
    canak_genislik = Sepal.Width,
    tac_uzunluk = Petal.Length,
    tac_genislik = Petal.Width,
    tur = Species)
    # isimler rename() fonksiyonu ile Türkçeleştirildi.
names(iris_tr)
## [1] "canak_uzunluk"  "canak_genislik" "tac_uzunluk"    "tac_genislik"  
## [5] "tur"
iris_tr <- iris_tr |>
  select(canak_uzunluk, tac_uzunluk) |>
  na.omit()
# çanak uzunluk ve taç uzunluk arasındaki ilişkiyi inceleyeceğiz.
ggplot(iris_tr , aes( x= canak_uzunluk, y=tac_uzunluk)) +
  geom_point()+
  labs(x= "Taç Uzunluğu (cm)",
       y= "Çanak Uzunluğu (cm)",
       title=" Taç Uzunluğu ile Çanak Uzunluğu İlişkisi")

### Çanak Uzunluğu arttıkça Taç Uzunluğu da artıyor, bu grafik aralarındaki ilişkiyi görmeyi sağlar.
iris_mod <- lm(canak_uzunluk ~ tac_uzunluk , data = iris_tr)
summary(iris_mod)
## 
## Call:
## lm(formula = canak_uzunluk ~ tac_uzunluk, data = iris_tr)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1.24675 -0.29657 -0.01515  0.27676  1.00269 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  4.30660    0.07839   54.94   <2e-16 ***
## tac_uzunluk  0.40892    0.01889   21.65   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.4071 on 148 degrees of freedom
## Multiple R-squared:   0.76,  Adjusted R-squared:  0.7583 
## F-statistic: 468.6 on 1 and 148 DF,  p-value: < 2.2e-16

EĞİM (0.40892)

Çiçeğin taç yaprak uzunluğu 1 cm arttığında, çanak yaprak uzunluğunun beklenen artışı yaklaşık 0.41 cm olur. İstatistikse lolarak anlamlı ve pozitif bir ilişki vardır.

KESİŞİM (4.30660)

Taç yaprak uzunluğu 0 cm olsaydı, çanak yaprak uzunluğu başlangıç noktası 4.30 cm olurdu. Bu da modelin koordinat sistemindeki başlangıç noktasıdır.

TAHMİN HATASI (0.4071)

Modelimiz bir çiçeğin çanak uzunluğunu tahmin ederken ortalama 0.41 cm yanılma payına sahiptir.

R-SQUARED (0.76)

Multiple R-Squared 0.76 modelin oldukça yüksek açıklayıcılık gücüne sahip olduğunu gösteriyor. Değişimin %76’sı taç yaprak uzunluğu ile açıklanabiliyor.

coef(iris_mod)
## (Intercept) tac_uzunluk 
##   4.3066034   0.4089223
# bu değerler kesişim ve eğim değerlerini verir.
ggplot( iris_tr , aes(x = canak_uzunluk , y= tac_uzunluk)) +
  geom_point() +
  geom_smooth( method = "lm", se = FALSE, color = "pink") +
  labs(x= "Taç Uzunluğu (cm)",
       y= "Çanak Uzunluğu (cm)",
       title="Basit Doğrusal Regresyon Çizgisi")
## `geom_smooth()` using formula = 'y ~ x'

yeni_cicek <- data.frame(tac_uzunluk = 5)
predict(iris_mod , newdata = yeni_cicek)
##        1 
## 6.351215

Taç uzunluğu 5 olan bir çiçeğin beklenen çanak uzunluğunu hesaplar.

Şimdi ise theme_classic fonksiyonunun alternatiflerini deneyelim.

ggplot(iris_tr, aes(x = tac_uzunluk, y = canak_uzunluk)) +
  # Noktaların üst üste binmesini önlemek ve derinlik katmak için jitter ve alpha kullanımı
  geom_jitter(width = 0.1, alpha = 0.5, color = "pink", size = 2) +
 geom_smooth(method = "lm", se = FALSE, color = "darkmagenta", size = 1.2) +

  labs(
    x = "Taç Yaprak Uzunluğu (cm)",
    y = "Çanak Yaprak Uzunluğu (cm)",
    title = "Iris Çiçeklerinde Yaprak Uzunlukları İlişkisi",
    subtitle = "Taç yaprak uzunluğu arttıkça çanak yaprak uzunluğu da artmaktadır.",
    caption = "Veri Kaynağı: iris_tr"
  ) +
  
  theme_minimal() +
  theme(
    plot.title = element_text(size = 18, face = "bold", color = "black"),
    plot.subtitle = element_text(size = 12, italic = TRUE, color = "gray30"),
    axis.title = element_text(size = 13, face = "bold"),
    axis.text = element_text(size = 11),
    panel.grid.major.y = element_line(color = "gray90", linetype = "dotted") 
  )
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
## Warning in element_text(size = 12, italic = TRUE, color = "gray30"): `...` must be empty.
## ✖ Problematic argument:
## • italic = TRUE
## `geom_smooth()` using formula = 'y ~ x'