library(haven)
library(dplyr)
library(knitr)
library(ggplot2)
library(tidyr)
library(naniar)
Başlangıç olarak veri setini yükleyelim. Bu veri seti ICILS2023 İspanya, öğrenci örneklemine ait verileri içermektedir. Veri setinden seçilen bazı maddeler şu şekildedir: (bu açıklamaları copilot önerdi. Bence oldukça faydalı olabilir)
load("BSGESPI3.Rdata")
data <- BSGESPI3 %>%
select(IS3G02, starts_with("IS3G24"),starts_with("IS3G25A")) %>%
rename(CINSIYET = IS3G02) %>%
expss::drop_var_labs() %>%
mutate(across(everything(), ~ ifelse(. %in% c(8, 9), NA, .)))
knitr::kable(miss_var_summary(data),caption = "Kayıp Verilerin Özeti")
variable | n_miss | pct_miss |
---|---|---|
IS3G25AE | 1518 | 12.9 |
IS3G25AF | 1446 | 12.3 |
IS3G25AH | 1434 | 12.2 |
IS3G25AD | 1433 | 12.1 |
IS3G25AG | 1431 | 12.1 |
IS3G25AC | 1400 | 11.9 |
IS3G24F | 1323 | 11.2 |
IS3G25AA | 1318 | 11.2 |
IS3G25AB | 1311 | 11.1 |
IS3G24L | 1276 | 10.8 |
IS3G24M | 1273 | 10.8 |
IS3G24E | 1268 | 10.7 |
IS3G24J | 1264 | 10.7 |
IS3G24I | 1215 | 10.3 |
IS3G24G | 1205 | 10.2 |
IS3G24K | 1182 | 10.0 |
IS3G24H | 1181 | 10.0 |
IS3G24C | 1140 | 9.66 |
IS3G24D | 1057 | 8.96 |
IS3G24B | 1044 | 8.85 |
IS3G24A | 990 | 8.39 |
CINSIYET | 62 | 0.525 |
Cinsiyet değişkeni ile birlikte öğrencilerin bilişim teknolojileriyle ilgili özyeterlik algılarını belirlemek amacıyla hazırlanmış 13 madde ve bilim teknolojilerine yönelik tutumlarını belirlemek için 8 madde yer almaktadır.
mcar_test(data)
## # A tibble: 1 × 4
## statistic df p.value missing.patterns
## <dbl> <dbl> <dbl> <int>
## 1 10757. 8362 0 528
data <- na.omit(data)
Kayıp veriler incelenmiş ve veri setinde rastgele kayıp veri olmadığı tespit edilmiştir. Bu öğrenme günlüğünün odak noktası uç değerlerdir, bu nedenle kayıp veriler ile baş etmek için yalnızca liste bazlı silme yöntemi kullanılmıştır.
library(summarytools)
## Warning: package 'summarytools' was built under R version 4.4.3
freq(data$CINSIYET,round.digits = 2,report.nas = F,style = "rmarkdown")
## setting plain.ascii to FALSE
## ### Frequencies
## #### data$CINSIYET
## **Type:** Numeric
##
## | | Freq | % | % Cum. |
## |----------:|-----:|-------:|-------:|
## | **1** | 3875 | 48.08 | 48.08 |
## | **2** | 4184 | 51.92 | 100.00 |
## | **Total** | 8059 | 100.00 | 100.00 |
Cinsiyet değişkeninde grupların frekansları incelendiğinde, veri setinde kadın ve erkek öğrencilerin neredeyse eşit sayıda olduğu görülmektedir. Bu nedenle tek değişkenli uç değerler söz konusu değildir.
data <- data %>%
mutate(SELFEFF = rowSums(data[2:12])) %>%
mutate(ATTITUDE = rowSums(data[13:22]))
library(outliers)
z_scores <- data %>%
select(23:24) %>% scores(type = "z") %>% round(2)
head(z_scores)
## SELFEFF ATTITUDE
## 1 0.24 0.47
## 2 0.24 -0.02
## 3 0.80 0.96
## 4 -0.31 0.96
## 5 0.06 -0.02
## 6 -1.80 -2.46
library(summarytools)
descr(z_scores,stats = c("min","max"),transpose = T,headings = F) %>% kable()
Min | Max | |
---|---|---|
ATTITUDE | -2.46 | 4.87 |
SELFEFF | -1.80 | 4.32 |
library(DT)
DT::datatable(z_scores)
İnteraktif tablo incelendiğinde toplam puan bazında z-değerleri için kabul edilebilecek aralık [-3,3] varsayıldığında uç değerlerin olduğu görülmektedir.
ggplot(data, aes(x = SELFEFF)) +
geom_histogram(bins = 30, fill = "lightblue") +
papaja::theme_apa()
ggplot(data, aes(x = ATTITUDE)) +
geom_histogram(bins = 30, fill = "orange") +
papaja::theme_apa()
ggplot(data, aes(y = SELFEFF)) +
geom_boxplot() +
papaja::theme_apa()
ggplot(data, aes(y = ATTITUDE)) +
geom_boxplot() +
papaja::theme_apa()
Kutu grafikleri incelendiğinde özyeterlik ve tutum puanlarında uç
değerlerin olduğu görülmektedir. Bu uç değerleri veri setinden
çıkaralım.
out_z <- which(abs(z_scores) > 3)
data_nooutlier <- data[-out_z,]
library(psych)
## Warning: package 'psych' was built under R version 4.4.2
##
## Attaching package: 'psych'
## The following object is masked from 'package:outliers':
##
## outlier
## The following objects are masked from 'package:ggplot2':
##
## %+%, alpha
veri <- data[,23:24]
md <- mahalanobis(veri,center = colMeans(veri), cov = cov(veri))
alpha = 0.001
cutoff <- qchisq(p = 1-alpha,df = ncol(veri))
ucdegerler <- which(md > cutoff)
veri_noout <- veri[-(ucdegerler),]
veri <- data_nooutlier[,23:24]
md <- mahalanobis(veri,center = colMeans(veri), cov = cov(veri))
alpha = 0.001
cutoff <- qchisq(p = 1-alpha,df = ncol(veri))
ucdegerler <- which(md > cutoff)
veri_noout <- veri[-(ucdegerler),]
Çok değişkenli uç değerler Mahalanobis Uzaklığına göre (p < 0.001) belirlenmiştir. Uç değerler veri setinden çıkarılmıştır.
nrow(data_nooutlier)
## [1] 7984
nrow(veri_noout)
## [1] 7933
Yalnızca tek değişkenli uç değerler için z-değerleri incelendiğinde 75 kişi uç değer, çok değişkenli uç değer belirleme yöntemlerine göre uç değerler incelendiğinde ise 97 kişi uç değer olarak belirlenmiştir. Hem tek hem de çok değişkenli uç değerlerin çıkarılması sonucunda veri setinde 126 kişi uç değer olarak belirlenmiştir. Bu bağlamda tek değişkenli uç değer ile çok değişkenli uç değerlerin farklılık gösterebileceği belirlenen uç değer sayısı bazında gösterilmiştir.