## 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

Çiçeğin taç yaprak uzunluğu 1 cm arttığında, çanak yaprak uzunluğunun beklenen artışı yaklaşık 0.41 cm olur.

İstatistikselolarak anlamlı bir ilişki vardır.

Kesişim: Taç yaprak uzunluğu 0 cm olsaydı, çanak yaprak uzunluğu başlangıç noktası 4.30 cm olurdu.

Tahmin Hatası: Modelin yaptığı tahminler ile gerçek çiçek lçümleri arasında 0.40 cm fark var.

Modelin Başarısı: 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)) +
  geom_jitter()+
  theme_minimal()

ggplot(iris_tr , aes(x = tac_uzunluk, y = canak_uzunluk)) +
  geom_jitter()+
  theme_bw()

geom_point fonksiyonu yerine geom_jitter yazarak üst üste binmiş değerleri de görebilmeyi sağladık.