#Basit Doğrusal Regresyon

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
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.5.2
aslanlar <- data.frame(

  species = sample(c("Afrika Aslani", "Asya Aslani"), 344, replace = TRUE),

  region = sample(c("Savana", "Milli Park"), 344, replace = TRUE),

  paw_width_mm = rnorm(344, 120, 10),

  paw_depth_mm = rnorm(344, 50, 5),

  body_length_cm = rnorm(344, 200, 20),

  body_mass_kg = (rnorm(344, 200, 20) * 0.85) + 30,

  sex = sample(c("Erkek", "Disi"), 344, replace = TRUE),

  year = sample(2020:2024, 344, replace = TRUE)

)
library(dplyr)
aslanlar_tr <- aslanlar %>% 
  rename(
    tur = species,
    bolge = region,
    pance_genislik = paw_width_mm,
    pance_derinlik = paw_depth_mm,
    govde_uzunluk = body_length_cm,
    kilo = body_mass_kg,
    cinsiyet = sex,
    yil = year
  )
names(aslanlar_tr)
## [1] "tur"            "bolge"          "pance_genislik" "pance_derinlik"
## [5] "govde_uzunluk"  "kilo"           "cinsiyet"       "yil"
glimpse(aslanlar_tr)
## Rows: 344
## Columns: 8
## $ tur            <chr> "Asya Aslani", "Asya Aslani", "Afrika Aslani", "Afrika …
## $ bolge          <chr> "Savana", "Savana", "Savana", "Savana", "Milli Park", "…
## $ pance_genislik <dbl> 104.8736, 118.9158, 122.1887, 119.3549, 112.5816, 112.2…
## $ pance_derinlik <dbl> 46.01271, 48.48530, 49.67333, 48.48747, 46.53967, 49.88…
## $ govde_uzunluk  <dbl> 204.3992, 208.8614, 255.8311, 194.8438, 224.1154, 209.1…
## $ kilo           <dbl> 248.7726, 215.4227, 221.2781, 157.2114, 219.0867, 206.7…
## $ cinsiyet       <chr> "Erkek", "Erkek", "Erkek", "Erkek", "Erkek", "Erkek", "…
## $ yil            <int> 2024, 2021, 2024, 2020, 2023, 2024, 2024, 2020, 2020, 2…
names(aslanlar)
## [1] "species"        "region"         "paw_width_mm"   "paw_depth_mm"  
## [5] "body_length_cm" "body_mass_kg"   "sex"            "year"

##Analizde Kullanacağımız İki Değişkeni Seçme

aslanlar_analiz <- aslanlar_tr |> 
  select(kilo, govde_uzunluk) |> 
  na.omit()
ggplot(aslanlar_analiz, aes(x = govde_uzunluk, y = kilo)) +
  geom_point() +
  labs(x = "Gövde Uzunluğu (cm)",
       y = "Vücut Ağırlığı (kg)",
       title = "Aslanlarda Gövde Uzunluğu ile Vücut Ağırlığı İlişkisi")

##Regresyon Modeli Kurma

aslan_mod <- lm(kilo ~ govde_uzunluk, data = aslanlar_analiz)
summary(aslan_mod)
## 
## Call:
## lm(formula = kilo ~ govde_uzunluk, data = aslanlar_analiz)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -42.998 -10.785  -0.525  10.395  47.781 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   184.25035    8.62963   21.35   <2e-16 ***
## govde_uzunluk   0.08191    0.04287    1.91   0.0569 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 16.43 on 342 degrees of freedom
## Multiple R-squared:  0.01056,    Adjusted R-squared:  0.007666 
## F-statistic:  3.65 on 1 and 342 DF,  p-value: 0.05692
coef(aslan_mod)
##   (Intercept) govde_uzunluk 
##   184.2503473     0.0819058
ggplot(aslanlar_analiz, aes(x = govde_uzunluk, y = kilo)) +
  geom_point() +
  geom_smooth(method = "lm", se = FALSE, color = "red") +
  labs(x = "Gövde Uzunluğu (cm)",
       y = "Vücut Ağırlığı (kg)",
       title = "Aslanlar İçin Basit Doğrusal Regresyon Çizgisi")
## `geom_smooth()` using formula = 'y ~ x'

yeni_aslan <- data.frame(govde_uzunluk = 210)


predict(aslan_mod, newdata = yeni_aslan)
##        1 
## 201.4506
  1. geom_jitter Kullanım Amacı geom_jitter, verideki noktaların birbirinin tam üzerine binmesini (overplotting) önlemek için kullanılır. Özellikle büyük veri setlerinde veya veriler birbirine çok yakın değerler aldığında, noktalar tek bir kütle gibi görünür. geom_jitter, her noktaya çok küçük miktarda rastgele “gürültü” (kayma) ekleyerek, o bölgede aslında kaç tane veri noktası olduğunu görmemizi sağlar