📌 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.

Soru 1: Bu veri setini etkinleştirerek 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.

Soru 1.1: veri_1 veri setindeki değişkenlerin isimlerini Türkçeleştirin ve bu veri setini veri_2 olarak isimlendirin.

Soru 1.2: veri_2’nin ilk 10 satırını görüntüleyin.

Soru 2: 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.

Soru 3: 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.

Soru 4: veri_son için yas, nabiz ve boy değişkenlerinin

  • min

  • max

  • 1st quarter

  • 3rd quarter

  • mean

  • median

değerlerini açıklayın.

Soru 4.1: Egzersiz sıklığına göre ortalama nabzı hesapladığınız bir tablo oluşturun. Bu tablodaki değerlerin açıklamasını yazın.

Soru 4.2: veri_son için yas değişkenine ait mod, medyan ve aritmetik ortalama değerlerini hesaplayın.

Soru 5: Günlük yaşamınızda veri toplayarak analiz etmek isteyebileceğiniz bir durum düşünün (sosyal medya kullanım süresi, kahve tüketimi, sınav kaygısı…). Bu durumu kısaca açıklayın.

Bu durumla ilgili

  • kimlerden veri toplayabileceğinizi,

  • veri topladığınız kişilerden hangi bilgileri almanın anlamlı olacağını,

  • toplayacağınız bilgiler kapsamında değişkenlerin türlerini

açıklayın.

  • Topladığınız verileri göz önünde bulundurarak frekans tablosu oluşturabileceğiniz üç değişken tanımlayın.

  • Topladığınız verileri göz önünde bulundurarak min, max, quarters, mod, median, mean değerlerini hesaplayabileceğiniz üç değişken tanımlayın. # SSB201_homework.R # Görüntülerdeki ödev sorularını adım adım yapan R script # Yazar: (senin adın) # Not: Bu script MASS paketindeki ‘survey’ veri setini kullanır.

0)

if (!requireNamespace(“MASS”, quietly = TRUE)) install.packages(“MASS”) if (!requireNamespace(“dplyr”, quietly = TRUE)) install.packages(“dplyr”) if (!requireNamespace(“janitor”, quietly = TRUE)) install.packages(“janitor”)

library(MASS) # survey veri seti library(dplyr) library(janitor) # temiz isimlendirme (opsiyonel)

1) Veri setini etkinleştir ve seçilecek değişkenleri al

data(“survey”, package = “MASS”) # veri yükleme # Orijinal veri: survey # Soru: Sex, Age, Pulse, Exer, Height, Smoke veri_1 <- survey %>% select(Sex, Age, Pulse, Exer, Height, Smoke)

Hızlı bakış

cat(“veri_1 boyutları:”); dim(veri_1) cat(“_1 ilk 6 satır:“); print(head(veri_1))

1.1) veri_1’deki değişken isimlerini Türkçeleştir -> veri_2

Değişken çevirileri (öneri):

Sex -> Cinsiyet

Age -> Yas

Pulse -> Nabiz

Exer -> Egzersiz

Height -> Boy

Smoke -> Sigara

veri_2 <- veri_1 %>% rename( Cinsiyet = Sex, Yas = Age, Nabiz = Pulse, Egzersiz = Exer, Boy = Height, Sigara = Smoke )

cat(“_2 ilk 6 satır (isimler Türkçe):“); print(head(veri_2))

1.2) veri_2’nin ilk 10 satırını görüntüleyin

cat(“_2 ilk 10 satır:“); print(slice(veri_2, 1:10))

2) Kategorik değişken etiketlerini (ör. never, some, heavy) Türkçeleştir -> veri_3

Burada Egzersiz ve Sigara gibi faktör etiketlerini Türkçe’ye çeviriyoruz.

Orijinal etiketlerin değişik yazımları olabilir; küçük/büyük harfe göre esnek eşleme yapıyoruz.

Fonksiyon: faktör etiketlerini küçük harfe çevirip yeniden kodluyoruz (güvenlik için NA kontrolü)

recode_exer <- function(x) { x_chr <- as.character(x) x_low <- tolower(x_chr) rec <- dplyr::case_when( grepl(“never|never|no exercise|none”, x_low) ~ “Hiç”, grepl(“some|occas|occasional|sometimes”, x_low) ~ “Ara sıra”, grepl(“frequent|often|freq|frequent exercise|heavy”, x_low) ~ “Sık”, grepl(“light”, x_low) ~ “Hafif”, TRUE ~ NA_character_ ) factor(rec, levels = c(“Hiç”, “Ara sıra”, “Hafif”, “Sık”)) }

recode_smoke <- function(x) { x_chr <- as.character(x) x_low <- tolower(x_chr) rec <- dplyr::case_when( grepl(“never|non-smoker|no”, x_low) ~ “Hiç”, grepl(“occas|some|sometimes”, x_low) ~ “Ara sıra”, grepl(“daily|regular|heavy|yes”, x_low) ~ “Sürekli”, TRUE ~ NA_character_ ) factor(rec, levels = c(“Hiç”, “Ara sıra”, “Sürekli”)) }

veri_3 <- veri_2 %>% mutate( Egzersiz = recode_exer(Egzersiz), Sigara = recode_smoke(Sigara) )

cat(“_3 ilk 10 satır (kategorik etiketler Türkçe):“); print(slice(veri_3, 1:10))

3) veri_3’te eksik değerleri sorgulayın. Eksik varsa çıkarın ve gözlem sayısındaki farkı açıklayın.

cat(“_3 eksiklik özetleri:“) print(summarise_all(veri_3, ~ sum(is.na(.))))

Gözlem sayısı öncesi

n_before <- nrow(veri_3) cat(“_3 gözlem sayısı (önce):“, n_before,”“)

Eksik değer içeren satırları çıkart

veri_son <- veri_3 %>% drop_na() # janitor veya tidyr::drop_na kullanılabilir

Gözlem sayısı sonrası

n_after <- nrow(veri_son) cat(“veri_son gözlem sayısı (sonra):”, n_after, “”) cat(“Çıkarılan satır sayısı:”, n_before - n_after, “”) cat(“Açıklama: Eksik değerler nedeniyle bazı gözlemler çıkarıldı; veri_son eksiksiz gözlemler içerir.”)

4) veri_son için yas, nabiz ve boy değişkenlerinin istatistiklerini hesaplayın

numeric_vars <- c(“Yas”, “Nabiz”, “Boy”)

summary_stats <- veri_son %>% select(all_of(numeric_vars)) %>% summarise_all(.funs = list( min = ~ min(., na.rm = TRUE), max = ~ max(., na.rm = TRUE), q1 = ~ quantile(., probs = 0.25, na.rm = TRUE), q3 = ~ quantile(., probs = 0.75, na.rm = TRUE), mean = ~ mean(., na.rm = TRUE), median = ~ median(., na.rm = TRUE) ))

Daha okunaklı gösterim

print(summary_stats)

4.1) Egzersiz sıklığına göre ortalama nabız tablosu

mean_pulse_by_exer <- veri_son %>% group_by(Egzersiz) %>% summarise( N = n(), mean_nabiz = mean(Nabiz, na.rm = TRUE), sd_nabiz = sd(Nabiz, na.rm = TRUE) ) %>% arrange(desc(N))

cat(“göre ortalama nabiz:”); print(mean_pulse_by_exer)

4.2) veri_son için Yas değişkenine ait mod, medyan ve aritmetik ortalama

Mod hesap fonksiyonu

get_mode <- function(v) { v <- v[!is.na(v)] if (length(v) == 0) return(NA) uniqv <- unique(v) tab <- tabulate(match(v, uniqv)) uniqv[which.max(tab)] }

yas_mode <- get_mode(veri_son\(Yas) yas_median <- median(veri_son\)Yas, na.rm = TRUE) yas_mean <- mean(veri_son$Yas, na.rm = TRUE)

cat(“için mod:”, yas_mode, ” medyan:“, yas_median,” ortalama:“, yas_mean,”“)

5) Kısa açıklama (örnek veri toplama durumu)

cat(“ için örnek veri toplama durumu (örnek açıklama):”) cat(“Örnek: Sosyal medya kullanım süresi üzerine veri toplamak istiyorum.”) cat(“- Kimlerden veri toplanır: 18-30 yaş aralığındaki üniversite öğrencileri (örneklem).”) cat(“- Hangi bilgiler anlamlı olur: günlük sosyal medya kullanım süresi (dakika), cinsiyet, bölüm, uyku süresi, sınav kaygısı düzeyi (Likert), kahve tüketimi.”) cat(“- Değişken türleri: kullanım süresi (sayısal), cinsiyet (kategorik), bölüm (kategorik), sınav kaygısı (ordinal), kahve (sayısal).”) cat(“Bu verilerle frekans tabloları, ortalamalar/medyanlar, gruplaşmış karşılaştırmalar yapılabilir.”)

Frekans tablosu örneği (örnek üç değişken tanımı)

Kullanıcının toplayacağı veriye göre frekans tablosu örneği:

cat(“frekans tablosu (Egzersiz):”); print(tabyl(veri_son$Egzersiz))

Kaydetme (isteğe bağlı) - çıktı csv olarak kaydet

write.csv(veri_son, “veri_son.csv”, row.names = FALSE)

cat(“veri_son ‘veri_son.csv’ olarak kaydedildi.”)