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)
library(palmerpenguins)
##
## Attaching package: 'palmerpenguins'
## The following objects are masked from 'package:datasets':
##
## penguins, penguins_raw
data(penguins)
# Bu satır, palmerpenguins paketinde yer alan penguins veri setini aktif hâle getirir. Artık R bu veri setini tanır.
names (penguins)
## [1] "species" "island" "bill_length_mm"
## [4] "bill_depth_mm" "flipper_length_mm" "body_mass_g"
## [7] "sex" "year"
# veri setindeki değişken isimlerine bakalım
glimpse(penguins)
## Rows: 344
## Columns: 8
## $ species <fct> Adelie, Adelie, Adelie, Adelie, Adelie, Adelie, Adel~
## $ island <fct> Torgersen, Torgersen, Torgersen, Torgersen, Torgerse~
## $ bill_length_mm <dbl> 39.1, 39.5, 40.3, NA, 36.7, 39.3, 38.9, 39.2, 34.1, ~
## $ bill_depth_mm <dbl> 18.7, 17.4, 18.0, NA, 19.3, 20.6, 17.8, 19.6, 18.1, ~
## $ flipper_length_mm <int> 181, 186, 195, NA, 193, 190, 181, 195, 193, 190, 186~
## $ body_mass_g <int> 3750, 3800, 3250, NA, 3450, 3650, 3625, 4675, 3475, ~
## $ sex <fct> male, female, female, NA, female, male, female, male~
## $ year <int> 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007~
# veri setini inceleyelim
penguins_tr <- penguins %>%
rename(
tür = species,
ada = island,
gaga_uzunluk = bill_length_mm,
gaga_derinlik = bill_depth_mm,
yüzgec_uzunluk = flipper_length_mm,
kilo = body_mass_g,
cinsiyet = sex,
yil = year
)
# rename() fonksiyonu değişken isimlerini değiştirir; eşitliğin solu yeni isimdir, sağı eski isimdir.
names(penguins_tr)
## [1] "tür" "ada" "gaga_uzunluk" "gaga_derinlik"
## [5] "yüzgec_uzunluk" "kilo" "cinsiyet" "yil"
# değişkenlerin isimlerini değiştirdiğimiz veri setini "penguins_tr" olarak isimlendirdik ve şimdi de Türkçe isimlere bakalım
penguins_tr <- penguins_tr |>
select(kilo, yüzgec_uzunluk) |>
na.omit()
Bu satırlar şunları yapar:
• select(kilo, yüzgec_uzunluk) bu kod kilo ve yüzgeç uzunluğu değişkenlerini seçer.
• na.omit() Eksik veri içeren satırları çıkarır çünkü regresyon analizi eksik veri ile çalışamaz.
ggplot(penguins_tr, aes(x = yüzgec_uzunluk, y = kilo)) +
geom_point() +
labs(x = "Yüzgeç Uzunluğu (mm)",
y = "Vücut Ağırlığı (gram)",
title = "Yüzgeç Uzunluğu ile Vücut Ağırlığı İlişkisi")
Bu grafikte;
• her bir nokta bir pengueni temsil eder
• yatay eksen: yüzgeç uzunluğu
• dikey eksen: kilo
Yüzgeç uzunluğu arttıkça, penguenlerin kilosu da artıyor mu?
Bu grafik doğrusal bir ilişki olup olmadığını görmemizi sağlar.
peng_mod <- lm(kilo ~ yüzgec_uzunluk, data = penguins_tr)
summary(peng_mod)
##
## Call:
## lm(formula = kilo ~ yüzgec_uzunluk, data = penguins_tr)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1058.80 -259.27 -26.88 247.33 1288.69
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -5780.831 305.815 -18.90 <2e-16 ***
## yüzgec_uzunluk 49.686 1.518 32.72 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 394.3 on 340 degrees of freedom
## Multiple R-squared: 0.759, Adjusted R-squared: 0.7583
## F-statistic: 1071 on 1 and 340 DF, p-value: < 2.2e-16
🔹 Eğim (slope): yüzgec_uzunluk katsayısı
Bu değer:
Yüzgeç uzunluğu 1 mm arttığında, penguenin beklenen kilosu kaç gram artar?
Pozitif ise ilişki pozitif demektir.
🔹 Kesişim (intercept)
Bu değer:
Yüzgeç uzunluğu 0 mm olsaydı beklenen kilo ne olurdu?
Gerçekte 0 mm yüzgeç olmaz ama bu matematiksel bir başlangıç noktasıdır.
🔹 Residual Standard Error (Artık Standart Hatası)
Bu değer:
Modelin tahmin ettiği değer ile penguenin gerçek kilosu arasında, ortalama kaç gram fark var? Yani tahmin hatasının büyüklüğünü ölçer.
🔹 R-squared
Bu değer:
Kilodaki değişimin yüzde kaçı yüzgeç uzunluğu ile açıklanıyor?
Örneğin:
• R² = 0.50 → değişimin %50’si açıklanıyor • R² = 0.10 → değişimin %10’u açıklanıyor
coef(peng_mod)
## (Intercept) yüzgec_uzunluk
## -5780.83136 49.68557
Bu kod:
• b0 (kesişim)
• b1 (eğim)
değerlerini verir.
Bunlar regresyon denklemine yerleşir.
ggplot(penguins_tr, aes(x = yüzgec_uzunluk, y = kilo)) +
geom_point() +
geom_smooth(method = "lm", se = FALSE, color = "red") +
labs(x = "Yüzgeç Uzunluğu (mm)",
y = "Vücut Ağırlığı (gram)",
title = "Basit Doğrusal Regresyon Çizgisi")
## `geom_smooth()` using formula = 'y ~ x'
new_peng <- data.frame(yüzgec_uzunluk = 200)
predict(peng_mod, newdata = new_peng)
## 1
## 4156.282
Modelimizi, orijinal veri setinde olmayan (“örneklem dışı”) yeni gözlemler için tahminler yapmak amacıyla kullanabiliriz. Bunun için predict() fonksiyonuna tahmin yapılacak yeni veriyi newdata argümanıyla bir veri seti olarak iletmeliyiz. Bu yeni veri seti, modelde kullanılan bağımsız değişkenle aynı isme sahip bir sütun içermelidir.
Yukarıdaki satır yüzgeç uzunluğu 200 mm olan bir penguenin beklenen kilosunu hesaplar.
Bu bir ortalama tahmindir tek tek bireyleri değil, beklenen değeri verir.
Ödevler
##1.soru #veri noktalarının gerçek dağılımlarını daha net görebilmek için #aynı değere sahip gözlemlerin kaç tane olduğunu sezgisel olarak göstermek için #saçılım grafiğini daha okunabilir yapmak için #aynı değere sahip gözlemlerin üst üste binmesini önlemek amacıyla veri noktalarını küçük rastgele kaymalara dağıtarak daha okunabilir saçılım grafikleri oluşturmak için kullanılır
##2. soru
ggplot(penguins_tr,aes(x=yüzgec_uzunluk,y=kilo))+
geom_jitter(width = 0.3,height = 0.3,alpha=0.5,color="steelblue")+
geom_point(alpha=0.5,size=3,color="steelblue")+
geom_smooth(method = "lm",se=FALSE,color="red")+
labs(
x="Yüzgeç Uzunluğu(mm)",
y="Vücut Ağırlığı(gram)",
title="Basit Doğrusal Regresyon"
)+
theme_classic()+
theme_dark()
## `geom_smooth()` using formula = 'y ~ x'
ggplot(penguins_tr,aes(x=yüzgec_uzunluk,y=kilo))+
geom_jitter(width=0.3,height=0.3,alpha=0.5,color="steelblue")+
geom_smooth(method="lm",se=FALSE,color="red")+
labs(
x="Yüzgeç Uzunluğu(mm)",
y="Vücut Ağırlığı(gram)",
title="Basit Doğrusal Regresyon"
)+
theme_bw()+
theme_classic()
## `geom_smooth()` using formula = 'y ~ x'
## SORU 3
data(mtcars)
head(mtcars)
## mpg cyl disp hp drat wt qsec vs am gear carb
## Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
## Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
## Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
## Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
## Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
## Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1
tail(mtcars)
## mpg cyl disp hp drat wt qsec vs am gear carb
## Porsche 914-2 26.0 4 120.3 91 4.43 2.140 16.7 0 1 5 2
## Lotus Europa 30.4 4 95.1 113 3.77 1.513 16.9 1 1 5 2
## Ford Pantera L 15.8 8 351.0 264 4.22 3.170 14.5 0 1 5 4
## Ferrari Dino 19.7 6 145.0 175 3.62 2.770 15.5 0 1 5 6
## Maserati Bora 15.0 8 301.0 335 3.54 3.570 14.6 0 1 5 8
## Volvo 142E 21.4 4 121.0 109 4.11 2.780 18.6 1 1 4 2
names(mtcars)
## [1] "mpg" "cyl" "disp" "hp" "drat" "wt" "qsec" "vs" "am" "gear"
## [11] "carb"
#mtcars veri setinde bulunulan değişkenlerin isimlerini görmek için kullanılmıştır.
summary(mtcars)
## mpg cyl disp hp
## Min. :10.40 Min. :4.000 Min. : 71.1 Min. : 52.0
## 1st Qu.:15.43 1st Qu.:4.000 1st Qu.:120.8 1st Qu.: 96.5
## Median :19.20 Median :6.000 Median :196.3 Median :123.0
## Mean :20.09 Mean :6.188 Mean :230.7 Mean :146.7
## 3rd Qu.:22.80 3rd Qu.:8.000 3rd Qu.:326.0 3rd Qu.:180.0
## Max. :33.90 Max. :8.000 Max. :472.0 Max. :335.0
## drat wt qsec vs
## Min. :2.760 Min. :1.513 Min. :14.50 Min. :0.0000
## 1st Qu.:3.080 1st Qu.:2.581 1st Qu.:16.89 1st Qu.:0.0000
## Median :3.695 Median :3.325 Median :17.71 Median :0.0000
## Mean :3.597 Mean :3.217 Mean :17.85 Mean :0.4375
## 3rd Qu.:3.920 3rd Qu.:3.610 3rd Qu.:18.90 3rd Qu.:1.0000
## Max. :4.930 Max. :5.424 Max. :22.90 Max. :1.0000
## am gear carb
## Min. :0.0000 Min. :3.000 Min. :1.000
## 1st Qu.:0.0000 1st Qu.:3.000 1st Qu.:2.000
## Median :0.0000 Median :4.000 Median :2.000
## Mean :0.4062 Mean :3.688 Mean :2.812
## 3rd Qu.:1.0000 3rd Qu.:4.000 3rd Qu.:4.000
## Max. :1.0000 Max. :5.000 Max. :8.000
is.na(mtcars)
## mpg cyl disp hp drat wt qsec vs am gear
## Mazda RX4 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## Mazda RX4 Wag FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## Datsun 710 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## Hornet 4 Drive FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## Hornet Sportabout FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## Valiant FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## Duster 360 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## Merc 240D FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## Merc 230 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## Merc 280 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## Merc 280C FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## Merc 450SE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## Merc 450SL FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## Merc 450SLC FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## Cadillac Fleetwood FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## Lincoln Continental FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## Chrysler Imperial FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## Fiat 128 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## Honda Civic FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## Toyota Corolla FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## Toyota Corona FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## Dodge Challenger FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## AMC Javelin FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## Camaro Z28 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## Pontiac Firebird FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## Fiat X1-9 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## Porsche 914-2 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## Lotus Europa FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## Ford Pantera L FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## Ferrari Dino FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## Maserati Bora FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## Volvo 142E FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## carb
## Mazda RX4 FALSE
## Mazda RX4 Wag FALSE
## Datsun 710 FALSE
## Hornet 4 Drive FALSE
## Hornet Sportabout FALSE
## Valiant FALSE
## Duster 360 FALSE
## Merc 240D FALSE
## Merc 230 FALSE
## Merc 280 FALSE
## Merc 280C FALSE
## Merc 450SE FALSE
## Merc 450SL FALSE
## Merc 450SLC FALSE
## Cadillac Fleetwood FALSE
## Lincoln Continental FALSE
## Chrysler Imperial FALSE
## Fiat 128 FALSE
## Honda Civic FALSE
## Toyota Corolla FALSE
## Toyota Corona FALSE
## Dodge Challenger FALSE
## AMC Javelin FALSE
## Camaro Z28 FALSE
## Pontiac Firebird FALSE
## Fiat X1-9 FALSE
## Porsche 914-2 FALSE
## Lotus Europa FALSE
## Ford Pantera L FALSE
## Ferrari Dino FALSE
## Maserati Bora FALSE
## Volvo 142E FALSE
#veri setinde eksik değerlerin olup olmadığını kontrol etmek için kullanılmıştır.
any(is.na(mtcars))
## [1] FALSE
colSums(is.na(mtcars))
## mpg cyl disp hp drat wt qsec vs am gear carb
## 0 0 0 0 0 0 0 0 0 0 0
glimpse(mtcars)
## Rows: 32
## Columns: 11
## $ mpg <dbl> 21.0, 21.0, 22.8, 21.4, 18.7, 18.1, 14.3, 24.4, 22.8, 19.2, 17.8,~
## $ cyl <dbl> 6, 6, 4, 6, 8, 6, 8, 4, 4, 6, 6, 8, 8, 8, 8, 8, 8, 4, 4, 4, 4, 8,~
## $ disp <dbl> 160.0, 160.0, 108.0, 258.0, 360.0, 225.0, 360.0, 146.7, 140.8, 16~
## $ hp <dbl> 110, 110, 93, 110, 175, 105, 245, 62, 95, 123, 123, 180, 180, 180~
## $ drat <dbl> 3.90, 3.90, 3.85, 3.08, 3.15, 2.76, 3.21, 3.69, 3.92, 3.92, 3.92,~
## $ wt <dbl> 2.620, 2.875, 2.320, 3.215, 3.440, 3.460, 3.570, 3.190, 3.150, 3.~
## $ qsec <dbl> 16.46, 17.02, 18.61, 19.44, 17.02, 20.22, 15.84, 20.00, 22.90, 18~
## $ vs <dbl> 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0,~
## $ am <dbl> 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0,~
## $ gear <dbl> 4, 4, 4, 3, 3, 3, 3, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 4, 4, 4, 3, 3,~
## $ carb <dbl> 4, 4, 1, 1, 2, 1, 4, 2, 2, 4, 4, 3, 3, 3, 4, 4, 4, 1, 2, 1, 1, 2,~
mtcars2<-mtcars %>%
rename(
silindir_sayisi=cyl,
motor_hacmi=disp,
yakit_tuketimi=mpg,
agirlik=wt,
hizlanma=qsec,
vites_sayisi=gear,
karaburator_sayisi=carb,
vites_tipi=am,
motor_tipi=vs,
arka_aks_orani=drat,
beygir_gucu=hp,
)
#değişken isimleri Türkçeleştirilmiştir.
names(mtcars2)
## [1] "yakit_tuketimi" "silindir_sayisi" "motor_hacmi"
## [4] "beygir_gucu" "arka_aks_orani" "agirlik"
## [7] "hizlanma" "motor_tipi" "vites_tipi"
## [10] "vites_sayisi" "karaburator_sayisi"
#değişkenlerin isimlerini görmek için kullanılmıştır
model<-lm(yakit_tuketimi~agirlik,data=mtcars2)
model<-lm(yakit_tuketimi~agirlik,data=mtcars2)
summary(model)
##
## Call:
## lm(formula = yakit_tuketimi ~ agirlik, data = mtcars2)
##
## Residuals:
## Min 1Q Median 3Q Max
## -4.5432 -2.3647 -0.1252 1.4096 6.8727
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 37.2851 1.8776 19.858 < 2e-16 ***
## agirlik -5.3445 0.5591 -9.559 1.29e-10 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 3.046 on 30 degrees of freedom
## Multiple R-squared: 0.7528, Adjusted R-squared: 0.7446
## F-statistic: 91.38 on 1 and 30 DF, p-value: 1.294e-10
#bu kod ile basit doğrusal regresyon modeli kurulmuştur.bağımlı değişken olarak yakıt tüketimi bağımsız değişken olarak araç ağırlığı kullanılmıştır. #Amaç araç ağırlığının yakıt tüketimi üzerindeki etkisini incelemektir.
ggplot(mtcars2,aes(x=agirlik,y=yakit_tuketimi))+
geom_point()+
geom_smooth(method="lm",se=FALSE)+
theme_classic()+
theme_dark()
## `geom_smooth()` using formula = 'y ~ x'
#Araç ağırlığı ile yakıt tüketimi arasındaki ilişkiyi göstermek için
saçıım diyagramı oluşturulmuştur. #Araç ağırlığı arttıkça yakıt
tüketiminin azaldığı görülmektedir. #Negatif yönlü ilişki vardır.
#Kesişim değeri, araç ağırlığı sıfır olduğunda yakıt tüketiminin alacağı
değeri göstermektedir. #R-Squared değeri,yakıt tükeetimindeki değişimin
büyük bir kısmının araç ağırlığı ile açıklanabileceğini
göstermektedir.
names(mtcars2)
## [1] "yakit_tuketimi" "silindir_sayisi" "motor_hacmi"
## [4] "beygir_gucu" "arka_aks_orani" "agirlik"
## [7] "hizlanma" "motor_tipi" "vites_tipi"
## [10] "vites_sayisi" "karaburator_sayisi"
coef(mtcars2)
## NULL