1- geom_jitter() fonksiyonu, grafikteki noktaların üst üste binmesini engellemek için kullanılır. Eğer veride aynı veya çok yakın değerlere sahip çok sayıda gözlem varsa, geom_point() ile çizilen noktalar tam aynı yere düşer ve kaç tane gözlem olduğunu görmek zorlaşır. geom_jitter() ise bu noktaları çok küçük rastgele miktarlarda sağa-sola ve yukarı-aşağı kaydırarak çizer, böylece noktalar birbirinden ayrılır ve grafik daha okunabilir hâle gelir. Bu sayede veri yoğunluğu ve dağılımı daha net şekilde görülebilir.
2-
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")
names(penguins)
## [1] "species" "island" "bill_length_mm"
## [4] "bill_depth_mm" "flipper_length_mm" "body_mass_g"
## [7] "sex" "year"
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…
penguins_tr <- penguins %>%
rename(
tur = species,
ada = island,
gaga_uzunluk = bill_length_mm,
gaga_derinlik = bill_depth_mm,
yuzgec_uzunluk = flipper_length_mm,
kilo = body_mass_g,
cinsiyet = sex,
yil = year
)
names(penguins_tr)
## [1] "tur" "ada" "gaga_uzunluk" "gaga_derinlik"
## [5] "yuzgec_uzunluk" "kilo" "cinsiyet" "yil"
penguins_tr <- penguins_tr |>
select(kilo, yuzgec_uzunluk) |>
na.omit()
ggplot(penguins_tr, aes(x = yuzgec_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")
ggplot(penguins_tr, aes(x = yuzgec_uzunluk, y = kilo)) +
geom_point() +
theme_classic()
ggplot(penguins_tr, aes(x = yuzgec_uzunluk, y = kilo)) +
geom_point() +
theme_minimal()
ggplot(penguins_tr, aes(x = yuzgec_uzunluk, y = kilo)) +
geom_point() +
theme_dark()
ggplot(penguins_tr, aes(x = yuzgec_uzunluk, y = kilo)) +
geom_point() +
theme_bw()
Bu çalışmada theme_classic() dışında başka grafik temaları da denendi.
theme_minimal() daha sade ve az çizgili bir görünüm verirken,
theme_dark() koyu arka planlı bir grafik oluşturdu. theme_bw() ise
siyah-beyaz bir görünüm sağladı. Bu temalar sadece grafiğin görünümünü
değiştirir, veriyi veya sonucu değiştirmez. Bu yüzden hangi temanın
grafiği daha anlaşılır yaptığı karşılaştırılabildi. yani bu fonksiyonlar
grafiğin sadece görünümünü değiştirdi anladığım kadarıyla.
3-
data("cars")
names(cars)
## [1] "speed" "dist"
glimpse(cars)
## Rows: 50
## Columns: 2
## $ speed <dbl> 4, 4, 7, 7, 8, 9, 10, 10, 10, 11, 11, 12, 12, 12, 12, 13, 13, 13…
## $ dist <dbl> 2, 10, 4, 22, 16, 10, 18, 26, 34, 17, 28, 14, 20, 24, 28, 26, 34…
cars_tr <- cars %>%
rename(
hiz = speed,
mesafe = dist
)
names(cars_tr)
## [1] "hiz" "mesafe"
cars_tr <- cars_tr %>%
select(hiz, mesafe) %>%
na.omit()
ggplot(cars_tr, aes(x = hiz, y = mesafe)) +
geom_point() +
labs(x = "Hız", y = "Durma mesafesi", title = "Hız ve durma mesafesi ilişkisi")
cars_mod <- lm(mesafe ~ hiz, data = cars_tr)
summary(cars_mod)
##
## Call:
## lm(formula = mesafe ~ hiz, data = cars_tr)
##
## Residuals:
## Min 1Q Median 3Q Max
## -29.069 -9.525 -2.272 9.215 43.201
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -17.5791 6.7584 -2.601 0.0123 *
## hiz 3.9324 0.4155 9.464 1.49e-12 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 15.38 on 48 degrees of freedom
## Multiple R-squared: 0.6511, Adjusted R-squared: 0.6438
## F-statistic: 89.57 on 1 and 48 DF, p-value: 1.49e-12
coef(cars_mod)
## (Intercept) hiz
## -17.579095 3.932409
ggplot(cars_tr, aes(x = hiz, y = mesafe)) +
geom_point() +
geom_smooth(method = "lm", se = FALSE, color = "red") +
labs(x = "Hız", y = "Durma mesafesi", title = "Basit doğrusal regresyon")
## `geom_smooth()` using formula = 'y ~ x'
new_cars <- data.frame(
hiz = c(10, 15, 20),
mesafe = c(5, 10, 20)
)
4- Bu çalışmada arabaların hızı ile durma mesafesi arasındaki ilişki incelenmiştir. Amaç, hız arttıkça arabanın durmak için daha uzun bir mesafeye ihtiyaç duyup duymadığını anlamaktır. Bunun için cars veri seti kullanılmıştır.İlk olarak veriye bakılmış ve hız ile durma mesafesinin sayısal değerler olduğu görülmüştür. Daha sonra bu iki değişkenin birbiriyle ilişkili olup olmadığını görmek için saçılım grafiği çizilmiştir. Grafikte noktaların genel olarak yukarı doğru bir eğilim gösterdiği görülmüş ve bu da hız arttıkça durma mesafesinin arttığını düşündürmüştür. Bu gözleme dayanarak basit doğrusal regresyon modeli kurulmuştur. Bu model sayesinde hızdaki artışın durma mesafesini ne kadar etkilediği hesaplanmıştır. Modelin eğimi pozitif çıkmıştır, yani hız arttıkça durma mesafesi de artmaktadır. Modelin ne kadar iyi çalıştığını anlamak için R² değeri incelenmiştir. Bu değer, durma mesafesindeki değişimin ne kadarının hız tarafından açıklandığını göstermektedir. Ayrıca residual standard error değeri ile modelin tahminlerinin ortalama olarak ne kadar hatalı olduğu değerlendirilmiştir. Sonuç olarak, yapılan analiz hız ile durma mesafesi arasında pozitif bir ilişki olduğunu ve hız arttıkça arabanın durmak için daha uzun mesafeye ihtiyaç duyduğunu göstermektedir.