Paketleri yükleme
##
## 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
##
## Attaching package: 'sjlabelled'
## The following objects are masked from 'package:haven':
##
## as_factor, read_sas, read_spss, read_stata, write_sas, zap_labels
## The following object is masked from 'package:dplyr':
##
## as_label
Veri setlerini yükleme
miniPISA veri setini yükleme
Bu bölümde, betimleyici istatistiklerin önemini ve veri analiz sürecindeki rollerine dair bilgiler öğrendim. Ayrıca, R dilinde bu istatistiklerin nasıl hesaplandığını örneklerle gördüm.
miniPISA$ODOKUMA1
değişkeni için minimum ve maksimum
değerler hesaplanmıştır.Minimum ve maksimum değer hesaplama
## [1] 175.608
## [1] 771.508
Alternatif olarak range()
fonksiyonu da doğrudan minimum
ve maksimum değerleri verir.
miniPISA$ODOKUMA1 <- as.numeric(miniPISA$ODOKUMA1)
min <- range(miniPISA$ODOKUMA1, na.rm = TRUE)[1]
min
## [1] 175.608
## [1] 771.508
Bu değerler, veri setinin en düşük ve en yüksek okuma performansını temsil eder ve aşırı uçların belirlenmesinde kullanılır. Aşırı uçlar varsa, bu durum analiz sonuçlarını etkileyebilir.
Ortalama, bir veri setindeki merkezi eğilimi ölçmenin yaygın bir yoludur. Ancak, aşırı uç değerler ortalamayı etkileyebilir.
Örnek:
## [1] 464.2299
Bu sonuç, örneklemin okuma performansına dair genel bir bakış sunar. Ayrıca, eksik veriler bulunduğunda na.rm = TRUE kullanılarak analizden hariç tutulabilir.
Medyan, verilerin sıralanması sonucu ortadaki değeri temsil eder ve aşırı uçlardan etkilenmez.
Medyan hesaplama örneği:
## [1] 463.403
Bu yöntem, veri setinin gerçek merkezi eğilimini anlamak için faydalıdır, özellikle de dağılım simetrik değilse.
## 25%
## 402.5635
## 75%
## 525.7188
Bu istatistikler, veri setindeki dağılımın yayılımını anlamak için kritik öneme sahiptir.
Standart sapma ve varyans, veri setindeki değişkenliği ölçmek için kullanılır.
Örneğin
## [1] 87.78006
## [1] 7705.339
Bu değerler, veri setinin ne kadar geniş bir aralıkta dağıldığını gösterir.
summary()
fonksiyonu, betimleyici istatistikleri
özetler.
Örneğin;
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 175.6 402.6 463.4 464.2 525.7 771.5
Bu sonuç, hızlı bir şekilde temel betimleyici istatistiklere erişim sağlar.
Değişkenlik katsayısı, standart sapmanın ortalamaya oranıdır ve
farklı birimler veya ölçeklerdeki veri setlerini karşılaştırmak için
kullanılır.
Örneğin;
## [1] 0.1890875
Bu değer, veri setinin ne kadar tutarlı olduğunu anlamaya yardımcı olur.
Mod, bir veri setindeki en sık rastlanan
değeri ifade eder.
Örneğin:
mod_table <- table(miniPISA$Anne_Egitim)
mod_value <- names(sort(mod_table, decreasing = TRUE)[1])
mod_value
## [1] "1"
Bu örnekte, anne eğitim değişkenindeki en sık rastlanan değer 1’dir.
Frekans tablosu, kategorik verilerin dağılımını gösterir.
Örneğin;
Bu tablo, örneklemin demografik özelliklerini hızlı bir şekilde anlamayı sağlar.
NOT: Bu bölümde ele alınan yöntemler, bir veri setindeki merkezi eğilim ve yayılımın farklı yönlerini anlamada kritik rol oynar. R dilinin sunduğu işlevler, bu analizlerin hızlı ve etkili bir şekilde gerçekleştirilmesini sağlar. Analitik süreçlerin temel taşları olan betimleyici istatistikler, veriyi anlamlandırma yolunda ilk adımdır.
Bu bölümde veriyi daha kolay anlaşılır hale getirmek
için görselleştirmenin gücünü fark ettim. Grafikler, karmaşık veri
setlerindeki örüntüleri hızlıca anlamamızı sağlıyor ve görsel destekle
sonuçların daha etkili bir şekilde aktarılmasına yardımcı oluyor.
Özellikle ggplot2
gibi güçlü bir paketin veri
görselleştirme sürecinde sunduğu esnekliğin önemini kavradım.
##
## Attaching package: 'ggplot2'
## The following object is masked from 'package:sjlabelled':
##
## as_label
ggplot(miniPISA, aes(x = ODOKUMA1, y = OKUMA_ZEVK)) +
geom_point() +
labs(title = "Okuma Puanı ve Zevk İlişkisi",
x = "Okuma Puanları",
y = "Okuma Zevki") +
theme_minimal()
Bu süreçte, grafiklerin anlamlı ve estetik hale gelmesinde doğru
etiketleme ve düzenlemelerin ne kadar önemli olduğunu anladım.
Örneğin;
ggplot(miniPISA, aes(x = ODOKUMA1)) +
geom_density(fill = "lightblue", alpha = 0.5) +
labs(title = "Okuma Puanlarının Yoğunluğu", x = "Okuma Puanları", y = "Yoğunluk")
Bu grafiklerin, özellikle zamana dayalı olmayan sürekli verilerde kullanılmasının etkili bir yaklaşım olduğunu fark ettim.
Örneğin:
ggplot(miniPISA, aes(x = ODOKUMA1)) +
geom_histogram(binwidth = 50, fill = "orange", color = "black") +
labs(title = "Okuma Puanlarının Histogramı", x = "Okuma Puanları", y = "Frekans")
Bu tür grafiklerin, özellikle büyük veri setlerinde dağılımı görmek için ilk adım olduğunu fark ettim.
Örnek;
Örnek;
Bu tür grafiklerin, özellikle bir veri setinde gruplar arasındaki
farklılıkları analiz etmek için etkili bir araç olduğunu fark
ettim.
ggplot2
paketinde estetik özelliklerin (color,
size, shape, alpha) grafiklerin anlamını ne kadar
değiştirdiğini gördüm.library(haven)
library(scales)
miniPISA <- as.data.frame(lapply(miniPISA, function(x) {
if (inherits(x, "haven_labelled")) {
x <- as.character(x)
as.numeric(x)
} else if (is.character(x)) {
as.numeric(as.factor(x))
} else {
x
}
}))
str(miniPISA)
## 'data.frame': 6890 obs. of 11 variables:
## $ SINIF : num 10 10 10 9 9 10 10 10 10 10 ...
## $ CINSIYET : num 2 2 1 2 2 2 1 2 1 2 ...
## $ KITAPSAYISI : num 2 3 1 1 2 2 3 3 3 4 ...
## $ SES : num -2.4521 -2.1042 -2.27 0.0324 -0.0674 ...
## ..- attr(*, "label")= chr "Sosyo-ekonomik duzey indeksi"
## ..- attr(*, "format.spss")= chr "F7.4"
## ..- attr(*, "display_width")= int 7
## $ Anne_Egitim : num 2 2 1 6 4 4 5 5 1 0 ...
## $ Baba_Egitim : num 2 2 2 6 4 6 5 5 4 2 ...
## $ OKUMA_ZEVK : num -0.289 0.604 0.638 -1.154 0.667 ...
## ..- attr(*, "label")= chr "Okumaya karsi duyulan zevk"
## ..- attr(*, "format.spss")= chr "F7.4"
## ..- attr(*, "display_width")= int 9
## $ OK_YETERLIK : num -0.671 1.237 -0.409 -0.825 1.884 ...
## ..- attr(*, "label")= chr "Okuma oz kavrami: Yeterlilik algisi"
## ..- attr(*, "format.spss")= chr "F7.4"
## ..- attr(*, "display_width")= int 12
## $ Okuloncesi_yil: num 1 1 1 1 NA NA 2 1 2 1 ...
## $ OKUL_TUR : num NA NA NA NA NA NA NA NA NA NA ...
## $ ODOKUMA1 : num 376 512 396 393 552 ...
if ("ODOKUMA1" %in% colnames(miniPISA)) {
miniPISA$ODOKUMA1_rescaled <- rescale(miniPISA$ODOKUMA1, na.rm = TRUE)
}
if ("ODOKUMA1" %in% colnames(miniPISA) & "OKUMA_ZEVK" %in% colnames(miniPISA)) {
ggplot(miniPISA, aes(x = ODOKUMA1, y = OKUMA_ZEVK)) +
geom_point() +
labs(title = "Okuma Puanı ve Zevk İlişkisi",
x = "Okuma Puanları",
y = "Okuma Zevki") +
theme_minimal()
} else {
message("ODOKUMA1 veya OKUMA_ZEVK sütunları bulunamadı.")
}
NOT: Üstteki kodda hata aldım ancak sebebini çözemediğim için chat gpt desteği aldım.
Size parametresi ile büyüklük, shape parametresi ile şekil düzenlemesi yapılabilmektedir. Default değerleri sırasıyla 1 ve noktadır.
Örneğin;
Bu tür estetik özelliklerin veriyi daha açıklayıcı hale getirdiğini anladım.
ggplot2
paketinde büyük bir esneklik sunduğunu fark
ettim.Örneğin;
library(ggplot2)
library(dplyr)
library(sjlabelled)
#tekrar yazmaya gerek yok ama bu kısımdan sonra restart yapsam da arka arkaya hatalar aldığım için yazdım.
miniPISA <- miniPISA %>%
mutate(across(where(~ inherits(., "haven_labelled")), ~ as_numeric(.)))
sapply(miniPISA, class)
## SINIF CINSIYET KITAPSAYISI SES
## "numeric" "numeric" "numeric" "numeric"
## Anne_Egitim Baba_Egitim OKUMA_ZEVK OK_YETERLIK
## "numeric" "numeric" "numeric" "numeric"
## Okuloncesi_yil OKUL_TUR ODOKUMA1 ODOKUMA1_rescaled
## "numeric" "numeric" "numeric" "numeric"
ggplot(miniPISA, aes(x = as.numeric(ODOKUMA1), y = as.numeric(OK_YETERLIK), color = as.factor(SINIF))) +
geom_point() +
labs(
title = "Okuma Puanları ve Yeterlik İlişkisi",
x = "Okuma Puanları",
y = "Okuma Yeterlik Puanları",
color = "Sınıf"
)
## Warning: Removed 199 rows containing missing values or values outside the scale range
## (`geom_point()`).
Bu yaklaşımın, grafiklerin modüler bir şekilde oluşturulmasını sağladığını ve her seferinde yeni bir grafik oluşturmak yerine mevcut bir grafiği geliştirmek için harika bir yol olduğunu öğrendim.
Şeffaflık parametresinin, karmaşık veri kümelerinde okunabilirliği artırdığı sonucuna vardım.
geom_text()
fonksiyonuyla grafiklere açıklama veya
etiket eklemenin, özellikle küçük veri setlerinde veri noktalarını
anlamlandırmada etkili bir yöntem olduğunu öğrendim.Bu tür özelleştirmelerle, grafiklerin okuyucular için daha anlamlı hale geldiğini fark ettim.
(scale_*())
özelleştirmenin,
grafiklerin görsel tutarlılığı ve estetiği için önemli olduğunu fark
ettim.Örneğin;
sekiller <- data.frame(sekil = 0:24)
ggplot(sekiller, aes(0, 0, shape = sekil)) +
geom_point(aes(shape = sekil), size = 5, fill = 'red') +
scale_shape_identity() +
facet_wrap(~sekil) +
theme_void()
Bu özellikler, özellikle birden fazla değişken içeren grafiklerde görsel karmaşıklığı azaltmada büyük bir avantaj sağlıyor.
(breaks)
ayarlanmasının, grafiklerde odaklanmak istediğimiz
aralıklara dikkat çekmek için kritik olduğunu fark ettim.library(ggplot2)
miniPISA$CINSIYET <- factor(miniPISA$CINSIYET, labels = c("KIZ", "ERKEK"))
ggplot(miniPISA, aes(x = ODOKUMA1, y = OK_YETERLIK, color = CINSIYET)) +
geom_point(position = "jitter") +
scale_x_continuous("Okuma Puanları", limits = c(100, 900)) +
scale_color_discrete("Cinsiyet")
ggplot(miniPISA, aes(x = ODOKUMA1,y = OK_YETERLIK,color = CINSIYET)) +
geom_point(position = "jitter") +
scale_x_continuous("Okuma Puanları",limits = c(100,900)) +
scale_color_discrete("Cinsiyet",labels=c("KIZ","ERKEK"))
Bu yöntem, analiz edilen veri aralığını özelleştirme imkanı sunarak grafiklerin netliğini artırıyor.
ggplot(data = miniPISA, mapping = aes(x = CINSIYET)) +
geom_bar(aes(y = (..count..)/sum(..count..))) +
scale_y_continuous(name = "Yüzde", labels = scales::percent)
Bar grafiklerinde, y ekseninde yüzde değerlerini kullanarak veriyi daha anlaşılır hale getirme fikrinin çok etkili olduğunu öğrendim. Bu grafikler, veriyi sade bir şekilde özetlemek için ideal bir araçtır.
library(tuev)
PISA2009 <-PISA_STU_2009 %>%
select(PV1READ,ESCS) %>%
mutate(YIL=2009)
PISA2012 <-PISA_STU_2012 %>%
select(PV1READ,ESCS) %>%
mutate(YIL=2012)
PISA2015 <-PISA_STU_2015 %>%
select(PV1READ,ESCS) %>%
mutate(YIL=2015)
PISA2018 <-PISA_STU_2018 %>%
select(PV1READ,ESCS) %>%
mutate(YIL=2018)
dat <-rbind(PISA2009, PISA2012, PISA2015, PISA2018)
dat1 <- dat %>%
group_by(YIL ) %>%
summarise( ortalama = mean(PV1READ,na.rm=TRUE)) %>%
ungroup()
ggplot(dat1 , aes(x=YIL,y= ortalama)) +
geom_line(linetype = 2 , color = "blue") +
theme_minimal()
dat2 <- dat %>% mutate(ESCS_kategorik =
case_when(
ESCS > -4 & ESCS <= -2 ~ "Dusuk",
ESCS > -2 & ESCS <= 0 ~ "Orta",
ESCS > 0 ~ "Yuksek"))
dat3 <- dat2 %>% group_by(YIL, ESCS_kategorik) %>%
summarise(ortalamaSES= mean(ESCS,na.rm=TRUE),
ortalamaPV1= mean(PV1READ,na.rm=TRUE)) %>%
arrange(desc(ortalamaSES)) %>% ungroup()
## `summarise()` has grouped output by 'YIL'. You can override using the `.groups`
## argument.
## # A tibble: 6 × 4
## YIL ESCS_kategorik ortalamaSES ortalamaPV1
## <dbl> <chr> <dbl> <dbl>
## 1 2009 Yuksek 0.697 521.
## 2 2018 Yuksek 0.620 520.
## 3 2012 Yuksek 0.560 547.
## 4 2015 Yuksek 0.543 474.
## 5 2009 Orta -1.10 468.
## 6 2015 Orta -1.10 428.
library(ggpubr)
ggplot(dat3, aes(x=ortalamaSES , y=ortalamaPV1)) +
geom_line() +
facet_wrap(vars(YIL)) +
geom_smooth(method='lm', formula= y~x)+
stat_regline_equation() +
xlab("Ortalama ESCS") + ylab("Ortalama PV1") +
theme_bw()
Zamana bağlı eğilimleri belirlemek için çizgi grafiklerinin etkili
bir yöntem olduğunu ve theme_*()
fonksiyonlarıyla
görselliğin sadeleştirilebileceğini fark ettim.
ggplot2
paketinin sunduğu geniş
görselleştirme olanaklarını ve her bir katmanın nasıl işlevsellik
kattığını derinlemesine anladım.scale_*()
, limits ve
breaks gibi estetik düzenleme parametrelerinin grafiklere
derinlik kattığını fark ettim.