OLC733 1.ve 2.hafta günlüğü

# gerekli paketleri yükleyelim ve verimizi okutalım
library(haven)
verimiz <- "C:/Users/isila/OneDrive/Belgeler/bsgturm8.sav"
timss_tr8 <- read_sav(verimiz)
library(dplyr)
library(ggplot2)
library(naniar)
library(tidyr)
library(tidyverse)
# veri setinin boyutlarını kontrol edelim
dim(timss_tr8)
## [1] 4925  511

TIMSS verisinin hazırlanması ve değişkenlerin seçilmesi

matematik başarısı ve evdeki olanakları seçelim

analiz_verisi <- timss_tr8 %>%
  select(
    mat_basari = BSMMAT01,
    internet = BSBG05D,
    calisma_masasi = BSBG05E
  )
## Yeni verimizin ilk 6 satırına bakalım
head(analiz_verisi)
## # A tibble: 6 × 3
##   mat_basari internet  calisma_masasi
##   <dbl+lbl>  <dbl+lbl> <dbl+lbl>     
## 1 311.       1 [Yes]   1 [Yes]       
## 2 400.       1 [Yes]   1 [Yes]       
## 3 517.       1 [Yes]   1 [Yes]       
## 4 344.       1 [Yes]   1 [Yes]       
## 5 479.       1 [Yes]   1 [Yes]       
## 6 383.       1 [Yes]   1 [Yes]

verinin yapısı ve betimsel istatistikler

# Değişken isimleri
colnames(analiz_verisi)
## [1] "mat_basari"     "internet"       "calisma_masasi"
# Veri setinin genel yapısını inceleyelim
glimpse(analiz_verisi)
## Rows: 4,925
## Columns: 3
## $ mat_basari     <dbl+lbl> 310.9722, 399.6433, 517.3351, 344.4754, 479.4666, 3…
## $ internet       <dbl+lbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, …
## $ calisma_masasi <dbl+lbl> 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, …
# Değişkenlerin betimsel istatistikleri
summary(analiz_verisi)
##    mat_basari       internet     calisma_masasi 
##  Min.   :216.0   Min.   :1.000   Min.   :1.000  
##  1st Qu.:420.2   1st Qu.:1.000   1st Qu.:1.000  
##  Median :502.9   Median :1.000   Median :1.000  
##  Mean   :504.2   Mean   :1.043   Mean   :1.101  
##  3rd Qu.:587.3   3rd Qu.:1.000   3rd Qu.:1.000  
##  Max.   :851.1   Max.   :2.000   Max.   :2.000  
##                  NA's   :112     NA's   :101
# Eksik veri analizi için gerekli paketleri çağırıyoruz

library(naniar)
library(dplyr)
library(ggplot2)

# 1. Sayısal değişkenlerde min ve max değerleri inceleyelim
analiz_verisi %>% 
  summarise(across(where(is.numeric), list(min = min, max = max), na.rm = TRUE))
## # A tibble: 1 × 6
##   mat_basari_min mat_basari_max internet_min internet_max calisma_masasi_min
##   <dbl+lbl>      <dbl+lbl>      <dbl+lbl>    <dbl+lbl>    <dbl+lbl>         
## 1 216.           851.           1 [Yes]      2 [No]       1 [Yes]           
## # ℹ 1 more variable: calisma_masasi_max <dbl+lbl>
# 2. Kayıp Veri Analizi - Genel Durum
n_miss(analiz_verisi)      # Veri setindeki toplam eksik değer sayısı
## [1] 213
prop_miss(analiz_verisi)   # Veri setindeki toplam eksik değer oranı
## [1] 0.01441624
# 3. Değişken Bazında Eksik Veri Oranları
colSums(is.na(analiz_verisi))
##     mat_basari       internet calisma_masasi 
##              0            112            101
# 4. Eksik Veri Desenini Görselleştirme
gg_miss_var(analiz_verisi) +
  labs(title = "TIMSS 2023 Türkiye - Eksik Veri Dağılımı",
       x = "Değişkenler",
       y = "Eksik Veri Sayısı")

### Eksik veri ile başa çıkma: Kayıp verilerle başa çıkmak için iki farklı yöntem deniyoruz. Eksik satırları tamamen silmek (listwise deletion) ve eksik değerleri ortalama ile doldurmak.

library(tidyr)
# Yöntem 1: Eksik veri içeren satırları tamamen silme
analiz_clean <- analiz_verisi %>%
  drop_na()

# Temizlendikten sonraki satır sayısı
nrow(analiz_clean)
## [1] 4808
# Yöntem 2: Alternatif olarak eksik verileri ortalama ile doldurma
analiz_imputed <- analiz_verisi %>%
  mutate(across(where(is.numeric), ~ ifelse(is.na(.), mean(., na.rm = TRUE), .)))

# Ortalama ile doldurduktan sonra eksik veri kaldı mı kontrol edelim
colSums(is.na(analiz_imputed))
##     mat_basari       internet calisma_masasi 
##              0              0              0

Uç değerleri inceleme:

Veri setimizdeki matematik başarı puanlarındaki (mat_basari) olası uç değerleri görmek için Boxplot (Kutu Grafiği) çiziyoruz. Grafiği çizerken eksik verilerden arındırdığımız analiz_clean verisini kullanıyoruz.

ggplot(analiz_clean, aes(y = mat_basari)) +
  geom_boxplot(fill = "red", alpha = 0.5) +
  theme_minimal() +
  labs(title = "TIMSS 2023 Türkiye - Matematik Başarısında Uç Değerler",
       y = "Matematik Başarı Puanı")