📌 Aşağıda 5 soru bulunmaktadır. İlk 4 soruyu ders notlarınızdan faydalanarak yapabilirsiniz. Sadece dosyayı yayınlarken hata aldığınız durumlarda hata kodunu anlamak için yapay zekadan destek alabilirsiniz. Tüm soruları yapay zekaya yaptırdığınız tespit edilirse sınavınız geçersiz sayılacaktır.
📌 Son soru 30 puan değerinde olup kendi deneyimlerinizden yola çıkarak yanıtlayabileceğiniz bir sorudur. Farklı sınav kağıtlarında birbirinin aynısı yanıtlar tespit edilmesi durumunda ilgili öğrencilerin sınavları geçersiz sayılacaktır.
📌 Sınavınızı 29 Kasım 2025 Cumartesi günü saat 11’e kadar Rpubs hesaplarınızda yayınlamanız gerekmektedir. Teslim tarihinden geç yayınlanan dosyalar değerlendirmeye dahil edilmeyecektir.
Soruları yanıtlamak için aşağıdaki paketleri etkinleştirin:
dplyr
MASS
lsr
survey veri seti, bir grup üniversite öğrencisinden toplanmış bilgiler içerir. Değişkenler arasında yaş, cinsiyet, boy, nabız, egzersiz sıklığı gibi psikolojik ve fizyolojik özellikler vardır. Bu veri seti University of Adelaide öğrencilerinden toplanmış bir anket çalışmasından gelir. Veri seti 237 gözlem ve 12 değişkenden oluşur.
Sex
(cinsiyet)“,”Age (yaş)“,”Pulse (nabiz)” ve
“Exer (egzersiz)”, “Height (boy)”,
“Smoke (sigara) değişkenlerini seçin. Seçtiğiniz bu
değişkenlerden oluşan veri setini veri_1 olarak
isimlendirin.library(MASS)
library(dplyr)
##
## Attaching package: 'dplyr'
## The following object is masked from 'package:MASS':
##
## select
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(lsr)
data("survey")
veri1 <- survey %>% dplyr:: select (Sex, Age, Pulse, Exer, Height, Smoke)
veri_1 veri setindeki değişkenlerin
isimlerini Türkçeleştirin ve bu veri setini veri_2 olarak
isimlendirin.veri_2<- veri1 %>%
rename(Cinsiyet = Sex,
Yas = Age,
Boy = Height,
Sigara = Smoke,
Egzersiz = Exer,
Nabiz = Pulse)
veri_2’nin ilk 10 satırını görüntüleyin.head(veri_2, 10)
## Cinsiyet Yas Nabiz Egzersiz Boy Sigara
## 1 Female 18.250 92 Some 173.00 Never
## 2 Male 17.583 104 None 177.80 Regul
## 3 Male 16.917 87 None NA Occas
## 4 Male 20.333 NA None 160.00 Never
## 5 Male 23.667 35 Some 165.00 Never
## 6 Female 21.000 64 Some 172.72 Never
## 7 Male 18.833 83 Freq 182.88 Never
## 8 Female 35.833 74 Freq 157.00 Never
## 9 Male 19.000 72 Some 175.00 Never
## 10 Male 22.333 90 Some 167.00 Never
veri_2 veri setindeki kategorik değişkenlerin
etiketlerini (örn. never, some, heavy) Türkçeleştirin ve bu veri setini
veri_3 olarak isimlendirin.veri_3 <- veri_2 %>%
mutate(
Cinsiyet = recode(Cinsiyet,
"Male" = "Erkek",
"Female" = "Kadın"),
Egzersiz = recode(Egzersiz,
"None" = "Hic",
"Some" = "Bazen",
"Freq" = "Sık"),
Sigara = recode(Sigara,
"Never" = "Hic",
"Occas" = "Ara Sıra",
"Regul" = "Duzenli",
"Heavy" = "Fazla")
)
veri_3 veri setindeki eksik değerleri
sorgulayın. Eksik değer varsa çıkarın ve gözlem sayısındaki farkı
açıklayın. Veri setinin son halini veri_son olarak isimlendirin.colSums(is.na(veri_3))
## Cinsiyet Yas Nabiz Egzersiz Boy Sigara
## 1 0 45 0 28 1
veri_son <- na.omit(veri_3)
#survey veri setinde (dolayısıyla veri_3’te) başlangıçta 237 gözlem yer almaktadır. na.omit() uygulandığında eksik değer barındıran tüm satırlar kaldırıldığı için, veri_son adlı veri setinde gözlem sayısı 170’e düşmektedir. Bu da toplamda 67 gözlemin (237 - 170) veri setinden çıkarıldığı anlamına gelir.
veri_son için yas, nabiz ve boy
değişkenlerininmin
max
1st quarter
3rd quarter
mean
median
summary(veri_son)
## Cinsiyet Yas Nabiz Egzersiz Boy
## Kadın:85 Min. :16.92 Min. : 35.00 Sık :86 Min. :152.0
## Erkek:85 1st Qu.:17.67 1st Qu.: 66.25 Hic :14 1st Qu.:165.0
## Median :18.58 Median : 72.00 Bazen:70 Median :171.0
## Mean :20.46 Mean : 73.92 Mean :172.5
## 3rd Qu.:20.17 3rd Qu.: 80.00 3rd Qu.:180.0
## Max. :70.42 Max. :104.00 Max. :200.0
## Sigara
## Fazla : 7
## Hic :136
## Ara Sıra: 13
## Duzenli : 14
##
##
#yaş (Yas) değişkeninde, dağılım minimum 16.92 ile maksimum 70.42 yıl arasında değişmekte olup, medyan (18.58) değerinin aritmetik ortalamadan (20.46) belirgin şekilde düşük olması, dağılımın pozitif çarpık (sağa çarpık) olduğunu göstermektedir.Yaşın %50’si 17.67 (1st Quarter) ve 20.17 (3rd Quarter) yıl arasındadır.
#nabız (Pulse) değerleri minimum 35.00 ve maksimum 104.00 arasında olup, medyan (72.00) ve ortalama (73.92) değerleri arasındaki yakınlık, dağılımın hafifçe pozitif çarpık olduğunu ima eder. Nabız değerlerinin yayılımı 1. çeyrekte 66.25 ve 3. çeyrekte 80.00’dir.
#boy (Height) değişkeni ise minimum 152.0 cm ile maksimum 200.0 cm arasında değişmektedir; medyan (171.0) ve ortalama (172.5) değerlerinin birbirine oldukça yakın olması, boy dağılımının nispeten simetrik bir yapıya sahip olduğunu göstermektedir. Boy uzunlukları için 1. çeyrek 165.0 cm ve 3. çeyrek 180.0 cm’dir.
veri_son %>%
group_by(Egzersiz) %>%
summarise(ortalama_Nabiz = round(mean(Nabiz), 2))
## # A tibble: 3 × 2
## Egzersiz ortalama_Nabiz
## <fct> <dbl>
## 1 Sık 71.4
## 2 Hic 75.9
## 3 Bazen 76.6
#Egzersiz yapma sıklığına göre hesaplanan ortalama nabız değerlerine bakıldığında, egzersiz sıklığı arttıkça nabız ortalamasının düştüğü görülmektedir. En düşük ortalama nabız, 71.43 ile egzersizi sık yapan grupta bulunmuştur. Buna karşılık, en yüksek ortalama nabız değerleri egzersizi bazen yapanlarda (76.59) ve hiç yapmayanlarda (75.86) ortaya çıkmıştır. Bu sonuçlar, düzenli egzersizin nabız üzerinde belirgin bir etkisi olduğunu göstermektedir.
yas değişkenine ait mod, medyan
ve aritmetik ortalama değerlerini hesaplayın.library (lsr)
cat("Aritmetik Ortalama:", mean(veri_son$Yas), "\n")
## Aritmetik Ortalama: 20.46377
cat("Medyan:", median(veri_son$Yas), "\n")
## Medyan: 18.583
cat("Mod:", modeOf(veri_son$Yas), "\n")
## Mod: 17.5
library(MASS)
library(dplyr)
library(dplyr)
veri_son <- veri_son %>%
mutate(
stres = sample(c("Dusuk", "Orta", "Yuksek"), nrow(veri_son), replace = TRUE),
uyku_kalitesi = sample(c("Kotu", "Orta", "Iyi"), nrow(veri_son), replace = TRUE),
egitim_duzeyi = sample(c("Ilkokul", "Lise", "Universite"), nrow(veri_son), replace = TRUE)
)
# FREKANS TABLOLARI
veri_son %>%
count(stres) %>%
mutate(yuzde = round(n / sum(n) * 100, 2))
## stres n yuzde
## 1 Dusuk 49 28.82
## 2 Orta 59 34.71
## 3 Yuksek 62 36.47
veri_son %>%
count(uyku_kalitesi) %>%
mutate(yuzde = round(n / sum(n) * 100, 2))
## uyku_kalitesi n yuzde
## 1 Iyi 59 34.71
## 2 Kotu 60 35.29
## 3 Orta 51 30.00
veri_son %>%
count(egitim_duzeyi) %>%
mutate(yuzde = round(n / sum(n) * 100, 2))
## egitim_duzeyi n yuzde
## 1 Ilkokul 60 35.29
## 2 Lise 62 36.47
## 3 Universite 48 28.24
set.seed(123)
veri_son <- data.frame(
stres_skor = sample(1:10, 170, replace = TRUE),
uyku_suresi = round(runif(170, 4, 10), 1),
yas_skor = round(rnorm(170, 30, 8), 0)
)
mod <- function(x) {
ux <- unique(x)
ux[which.max(tabulate(match(x, ux)))]
}
ozet <- function(x) {
c(
min = min(x),
Q1 = quantile(x, 0.00),
median = median(x),
mean = mean(x),
Q3 = quantile(x, 0.00),
max = max(x),
mod = mod(x)
)
}
istatistikler <- sapply(veri_son[, c("stres_skor", "uyku_suresi", "yas_skor")], ozet)
istatistikler <- as.data.frame(t(istatistikler))
istatistikler
## min Q1.0% median mean Q3.0% max mod
## stres_skor 1 1 6.0 6.164706 1 10 9.0
## uyku_suresi 4 4 6.7 6.885882 4 10 4.6
## yas_skor 10 10 30.0 30.352941 10 51 31.0