Açıklama: Sınavda altı soru yer almaktadır. 1. ve 2. sorular 10 puan, 3. ve 4. sorular 15 puan, 5. ve 6. sorular 25 puandır. Cevaplarınız AD_SOYAD.Rmd dosyasını ve dosyanın örülmüş hali AD_SOYAD.html olarak yükleyiniz. Lütfen düzgün örülmeyen dosyaları göndermeyiniz. Başarılar dilerim.

❓Soru 1:

Standart sapma R’da sd() fonksiyonu ile hesaplanır. Sizden beklenen (sd1) adlı kişisel bir fonksiyon oluşturmanız. Oluşturduğunuz fonksiyon örneklem için standart sapmayı aşağıdaki denkleme göre hesaplasın ( sd() fonksiyonunu kullanmyınız). Oluşturduğunuz fonksiyonuna yuvarla isminde ondalık sayıları kaç ondalığa yuvarlayacağını belirten bir argüman tanımlayın ve bu argümanın olağan değeri 3 olsun. Fonksiyonu kendi ürettiğiniz üç farklı vektör üzerinde sd() fonksiyonu ile karşılaştırarak test ediniz. Kendiniz vektör oluştururken rep,seq,rnorm gibi fonksiyonlar kullanabilirsiniz.

Örneklem standart sapmasının (s) formülü aşağıdaki gibidir:

\(s = \sqrt{\frac{\sum_{i=1}^{n}(x_i - \bar{x})^2}{n - 1}}\)

Burada:

\(x_i\): Veri setindeki her bir gözlem değeri

\(\bar{x}\): Veri setinin ortalaması (aritmetik ortalama)

\(n\): Örneklem büyüklüğü (veri sayısı)

⌛Cevap 1:

sd1 fonksiyonunu oluşturdum.

sd1 <- function(x){
  x1<- (x)
  x2<- mean(x)
  ortalamafark<- x1-x2
  ortalamafarkkare<-(x1-x2)^2
  ortalamakaretoplami <- sum(ortalamafarkkare)
  varyans<- ortalamakaretoplami/(length(x)-1)
  sqrt(varyans)}

Fonksiyonun içine ondalık sayıları kaç ondalığa yuvarlanacağına dair argüman yazıp bu değeri de 3 olarak atadım. sd1_yuvarla( ) oluşturulmuş oldu.

sd1_yuvarla <- function(x, yuvarla= 3){
  x1<- (x)
  x2<- mean(x)
  ortalamafark<- x1-x2
  ortalamafarkkare<-(x1-x2)^2
  ortalamakaretoplami <- sum(ortalamafarkkare)
  varyans<- ortalamakaretoplami/(length(x)-1)
  sd1<-sqrt(varyans)
  round(sd1, yuvarla)}

Şimdi deneyelim.

💫Vektor Deneme 1

x<- c(98, 89, 97, 80)

Öğrencilerin bir sınavda aldıkları notları temsil edecek dört not yazdım.

sd1(x)
## [1] 8.3666
sd1_yuvarla(x)
## [1] 8.367

Burada da sd(x) fonksiyonu ile test edelim.

sd(x)
## [1] 8.3666

Aynı olduğu görülmektedir. Her iki fonksiyonda da 8.3666 olarak hesaplanmıştır.

Ek fonksiyon deneme: Yeni bir stille sd2( ) denedim. Oluşturduğum sd1( ) ile aynı değerleri vermektedir.

sd2 <- function(x) {
  round(sqrt(sum((x - mean(x))^2) / (length(x) - 1)), 3)}

💫Vektor Deneme 2

set.seed() ile rastgele sayı üretiminde sabitliği sağlamaya çalıştım.

set.seed(123)
x <- sample(1:100, 5)
sample(1:100, 5)
## [1] 42 50 43 14 25

1’den 100’e kadar 5 sayıdan oluşacak bir örneklem seçme komutu yazdım. Sonrasında da oluşturduğum sd1( ) ve sd2( ) fonksiyonları ile sd değerlerini hesapladım

sd1(x)
## [1] 26.34008
sd2(x)
## [1] 26.34

sd( ) ile doğruluğunu test ettim.

sd(x)
## [1] 26.34008

💫Vektor Deneme 3

set.seed(42)
scores <- rnorm(1000, mean = 75, sd = 10)

rnorm( ) ile sd’si 10, ortalaması 75 olan 1000 adet puan üretilmiştir.

sd1_yuvarla(scores)
## [1] 10.025
sd2(scores)
## [1] 10.025

Kontrol edelim.

sd(scores)
## [1] 10.02521

💫Vektor Deneme 4

puan <- seq(1, 100, by = 5)
puan
##  [1]  1  6 11 16 21 26 31 36 41 46 51 56 61 66 71 76 81 86 91 96

1’den 100’e kadar beşer beşer artan bir veri seti oluşturabilmek için seq( ) fonksiyonunu kullandık.

sd1(puan)
## [1] 29.5804
sd1_yuvarla(puan)
## [1] 29.58
sd2(puan)
## [1] 29.58

sd( ) ile teyit edelim.

sd(puan)
## [1] 29.5804

❓Soru 2:

Ölçmenin standart hatasının formülü aşağıdaki gibidir. Kullanıcı test toplam puanlarını vektör olarak girdiğinde ve test güvenirlik değerleri verildiğinde ölçmenin standart hatasını üç ondalıkla hesaplayan bir fonksiyon yazınız. Yazdığınız fonkisyonu aşağıdaki bir puan vektörü ve 0.90 güvenirlik değeri için test ediniz. Puanları kendiniz üretiniz ve nasıl ürettiğinizi açıklayınız.

Ölçmenin Standart Hatası (\(SE_m\)) formülü aşağıdaki gibidir:

\(SE_m\) = \(s_x\) \(\sqrt{1-r_x}\)

Burada:

\(SE_m\): Ölçmenin Standart Hatası

\(s_x\): Test toplam puanlarının standart sapması

\(r_{xx}\): Test puanlarının güvenirliği

⌛Cevap 2:

Fonksiyonu oluşturdum. 1. soruda oluşturduğum standart sapma fonksiyonu üzerinden devam ettim.

sem2<- function(x){
rxx <- 0.90
sem <-(sd1(x) * sqrt(1 - rxx))
round(sem,3)
}

Puan üretelim.

set.seed(123)
x <- sample(1:100, 5)
x
## [1] 31 79 51 14 67

set.seed() fonksiyonu ile 1’den 100’e kadar olan sayılar içerisinden rastgele 5 sayı seçerek bir örneklem oluşturmasını istedim. set.seed() yaptığım için her seferinde aynı seçim gerçekleştirilecektir.

Şimdi ise oluşturduğumuz ölçmenin standart hatası fonksiyonunu deneyelim.

sem2(x)
## [1] 8.329

❓Soru 3:

200 gözlem ve 23 değişkeden oluşan “sinav_veri.csv” dosyasını okuyarak sinav_veri nesnesine atayınız. Değişkenler sırası ile öğrencilerin düzeyleri (1-4 arası), öğrencilerin bulundukları şubeler (A ve B olmak üzere), öğrencilerin cinsiyeti, öğrencilerin 20 maddeye verdikleri cevaplardan oluşmaktadır.

a)sinav_veri nesnesinin değişkenlerini duzey, sube, cinsiyet ve madde_1’den madde_20’ye kadar isimlendiriniz.

b)sinav_veri nesnesinin ilk sütununa id isimde bir değişken ekleyip değerlerini id_1’den id_200’e kadar oluşturunuz.

c)Her bir birey için 20 maddeden toplam puan alarak “toplam” değişkeni veri setine sütun olarak ekleyiniz.

d)A ve B şubelerindeki kız ve erkek öğrencilerin toplam puanlarının ortalamalarını tek bir komutla hesaplayınız.

e)Öğrencileri toplam puana göre 0 ile 6 arasını alt grup, 7 ile 12 arasını orta grup, 13 ile 20 arasını ise ust grup olacak şekilde gruplandırınız. Gruplama değişkeninize grup adını verip “sinav_order” nesnesine yeni bir sütun olarak ekleyiniz. Alt, orta ve ust grupta kaçar öğrenci yer almaktadır. Tek bir komutla hesaplayınız.

⌛Cevap 3:

Veri setini okutalım. .csv formatında olduğu için readr paketi, ile read_csv() fonksiyonu ile komutu yazdım.

library(readr)
sinav_veri <- read_delim("C:/Users/Huawei/Downloads/sinav_veri (1).csv",
    delim = ";",
    escape_double = FALSE,
    trim_ws = TRUE,
    col_names = FALSE)

3 a) sinav_veri nesnesinin değişkenlerini duzey, sube, cinsiyet ve madde_1’den madde_20’ye kadar isimlendirdim.

library(dplyr)
sinav_veri_1 <- sinav_veri %>% rename(duzey=X1, sube=X2, cinsiyet=X3, madde_1=X4, madde_2=X5, madde_3=X6, madde_4=X7, madde_5=X8, madde_6=X9, madde_7=X10, madde_8=X11,madde_9=X12,madde_10=X13, 
              madde_11=X14,madde_12=X15, madde_13=X16,
              madde_14=X17,madde_15=X18, madde_16=X19,
              madde_17=X20,madde_18=X21,madde_19=X22,madde_20=X23)

3 b) ilk sutüna id isminde bir değişken ekledim.

library(dplyr)
sinav_veri_2 <- sinav_veri_1 %>% 
mutate(id=row_number()) %>% 
select(id, everything())

id_1, id_2… şeklinde ekleme işlemi:

sinav_veri_2[, 1] <- paste0("id_", 1:nrow(sinav_veri_2))

3 c) her birey için 20 maddeden toplam değer alınarak toplam değişkeni bir sutün olarak oluşturdum.

sinav_veri_3 <- sinav_veri_2 %>%
  mutate(across(5:24, as.numeric)) %>%
  mutate(toplam = rowSums(.[5:24], na.rm = TRUE))

3 d) hem şube, hem cinsiyet toplam puan ortalamalarını hesaplayan komut aşağıdadır.

ortalama <- sinav_veri_3 %>% 
  group_by(sube, cinsiyet) %>% 
  summarize(ortalama_puan= mean(toplam, na.rm= TRUE),    
            .groups="drop")
ortalama
## # A tibble: 4 × 3
##   sube  cinsiyet ortalama_puan
##   <chr> <chr>            <dbl>
## 1 A     erkek             8.52
## 2 A     kiz               8.64
## 3 B     erkek             9.84
## 4 B     kiz              10.9

3 e) sinav_order nesnesine gruplar yeni bir sütun olarak eklenmiştir. Bu gruplarda yer alan öğrenci sayıları count() fonksiyonu ile hesaplanmıştır.

sinav_order <- sinav_veri_3 %>% 
  mutate(
    grup= case_when(
    toplam <7 ~ "alt grup", 
    toplam >= 7 & toplam<13 ~ "orta grup",
    toplam >=13 & toplam<=20 ~ "ust grup"
    ))
sinav_order %>% 
count(grup)
## # A tibble: 3 × 2
##   grup          n
##   <chr>     <int>
## 1 alt grup     60
## 2 orta grup    86
## 3 ust grup     54

❓Soru 4:

Maddenin ayırt ediciliğinin göstergesi olarak madde puanları ve toplam puanlar arasındaki korelasyon katsayısı hesaplanabilir. İki kategorili puanlanan bir madde için ise değişkenlerden birisi iki kategorili olduğunda, Pearson momentler çarpımı korelasyon katsayısının özel bir durumu olarak kullanılan nokta çift-serili korelasyon katsayısından (point biserial correlation coefficient) veya çift-serili korelasyon katsayısından (biserial correlation coefficient) yararlanılabilir.

Nokta çift-serili korelasyon katsayısı, iki kategorili değişken için gerçekte iki kategori söz konusu olduğu durumda kullanılır. Bir j maddesi için nokta çift serili korelasyon katsayısı ( ) aşağıdaki formül aracılığıyla hesaplanabilir:

\(p_bis = \frac{\mu_+ - \mu_x}{\sigma_x} \sqrt{\frac{p_j}{q_j}}\)

Burada,

\(\mu_+\):maddeyi doğru yantlayan bireylerin ortalama toplam test puanı

\(\mu_X\):tüm grup için ortalama toplam test puanı

\(\sigma_X\):tüm grup için toplam test puanlarının standart sapması

\(p_j\):j maddesi için madde güçlüğü

\(q_j\):j maddesi için

sinav_veri nesnesinde yer alan 20 maddenin (5*6)

  1. tüm grup üzerinden madde ayırt edicilik indeksini (rj) verilen formüle göre hesaplayınız.

  2. kiz ve erkek öğrenciler için madde ayırt edicilik indeksini (rj) verilen formüle göre hesaplayınız.

  3. ilk iki seçenekte yaptığınız işlemler CTT paketinin ilgili fonksiyonlarını kullanarak hesaplayınız.

NOT : CTT paketi düzeltilmiş nokta çift-serili korelasyon katsayısı hesapladığı için sonuçlar aynı çıkmayacaktır.

⌛Cevap 4:

#sinav_order#
#str(sinav_order[, 5:25])#
#kodu uzun gorundugu icin diyezle yazdim#
  1. Tüm grup için madde ayırt edicilik indeksi hesaplama
sd1 <- function(x){
  x1<- (x)
  x2<- mean(x)
  ortalamafark<- x1-x2
  ortalamafarkkare<-(x1-x2)^2
  ortalamakaretoplami <- sum(ortalamafarkkare)
  varyans<- ortalamakaretoplami/(length(x)-1)
  sqrt(varyans)}
rpbis<- function(madde_, toplam){
  madde_ <- as.numeric(as.character(madde_));
  Xt= mean(toplam[madde_==1], na.rm=TRUE);
  Xx= mean(toplam);
  p<-mean(madde_, na.rm=TRUE);
  q<- 1-p;
  rpbis= (Xt-Xx)/(sd1(toplam))*sqrt((p)/(q))
}
rpbis_ms <- sapply(sinav_order[, 5:25], rpbis, toplam = sinav_order$toplam)
rpbis_m1<-(rpbis(sinav_order$madde_1, sinav_order$toplam))
rpbis_m2<-(rpbis(sinav_order$madde_2, sinav_order$toplam))
rpbis_m3<-(rpbis(sinav_order$madde_3, sinav_order$toplam))
rpbis_m4<-(rpbis(sinav_order$madde_4, sinav_order$toplam))
rpbis_m5<-(rpbis(sinav_order$madde_5, sinav_order$toplam))
rpbis_m6<-(rpbis(sinav_order$madde_6, sinav_order$toplam))
rpbis_m7<-(rpbis(sinav_order$madde_7, sinav_order$toplam))
rpbis_m8<-(rpbis(sinav_order$madde_8, sinav_order$toplam))
rpbis_m9<-(rpbis(sinav_order$madde_9, sinav_order$toplam))
rpbis_m10<-(rpbis(sinav_order$madde_10, sinav_order$toplam))
rpbis_m11<-(rpbis(sinav_order$madde_11, sinav_order$toplam))
rpbis_m12<-(rpbis(sinav_order$madde_12, sinav_order$toplam))
rpbis_m13<-(rpbis(sinav_order$madde_13, sinav_order$toplam))
rpbis_m14<-(rpbis(sinav_order$madde_14, sinav_order$toplam))
rpbis_m15<-(rpbis(sinav_order$madde_15, sinav_order$toplam))
rpbis_m16<-(rpbis(sinav_order$madde_16, sinav_order$toplam))
rpbis_m17<-(rpbis(sinav_order$madde_17, sinav_order$toplam))
rpbis_m18<-(rpbis(sinav_order$madde_18, sinav_order$toplam))
rpbis_m19<-(rpbis(sinav_order$madde_19, sinav_order$toplam))
rpbis_m20<-(rpbis(sinav_veri_3$madde_20, sinav_order$toplam))
print(rpbis_m1)
## [1] 0.6107229
print(rpbis_m2)
## [1] 0.5534898
print(rpbis_m3)
## [1] 0.3325593
print(rpbis_m4)
## [1] 0.5254284
print(rpbis_m5)
## [1] 0.4650492
print(rpbis_m6)
## [1] 0.3442804
print(rpbis_m7)
## [1] 0.5421252
print(rpbis_m8)
## [1] 0.4553139
print(rpbis_m9)
## [1] 0.3852311
print(rpbis_m10)
## [1] 0.3775016
#bu sekilde digerleri de hesaplanmaya devam edebilir, kod uzun olmasin diyerek diger yarisini print şeklinde yapmadim. Asagiya sonuclarimi yazdim.

[m1] 0.6107229, [m2] 0.5534898, [m3] 0.3325593, [m4] 0.5254284, [m5] 0.4650492, [m6] 0.3442804, [m7] 0.5421252, [m8] 0.4553139, [m9] 0.3852311, [m10] 0.3775016, [m11] 0.587607, [m12] 0.6028403, [m13] 0.3620551, [m14] 0.5950179, [m15] 0.3507238, [m16] 0.2692847, [m17] 0.5470567, [m18] 0.4784748, [m19] 0.4299598, [m20] 0.5015937

Kız öğrenciler için hesaplama:

kiz_veri<-subset(sinav_order, cinsiyet=="kiz")
rpbis_kiz <- sapply(kiz_veri[, 5:25], rpbis, toplam = kiz_veri$toplam)
print(rpbis_kiz)
##   madde_1   madde_2   madde_3   madde_4   madde_5   madde_6   madde_7   madde_8 
## 0.5872110 0.6497210 0.2721525 0.5786932 0.5319093 0.3997306 0.5905623 0.4751629 
##   madde_9  madde_10  madde_11  madde_12  madde_13  madde_14  madde_15  madde_16 
## 0.3610634 0.3667270 0.6998040 0.6138071 0.3857622 0.6416807 0.4166671 0.2664788 
##  madde_17  madde_18  madde_19  madde_20    toplam 
## 0.5456943 0.5669379 0.4005520 0.5622593       NaN

Erkek öğrenciler için hesaplama:

erkek_veri<-subset(sinav_order, cinsiyet=="erkek")
rpbis_erkek <- sapply(erkek_veri[, 5:25], rpbis, toplam =erkek_veri$toplam)
print(rpbis_erkek)
##   madde_1   madde_2   madde_3   madde_4   madde_5   madde_6   madde_7   madde_8 
## 0.6328106 0.4750751 0.3960679 0.4665142 0.4046936 0.2819558 0.4880214 0.4282748 
##   madde_9  madde_10  madde_11  madde_12  madde_13  madde_14  madde_15  madde_16 
## 0.4221388 0.4150818 0.4426708 0.5874640 0.3580788 0.5591645 0.2539383 0.2583115 
##  madde_17  madde_18  madde_19  madde_20    toplam 
## 0.5465421 0.3688898 0.4632029 0.4340192       NaN

CTT: Burada paket güncelleme ile ilgili bir sorun yaşıyorum hocam. Teknik bir sorun yaşamamak adına buraları diyezledim. Fakat normalde bu kod çalışıyordu.

Tüm işlemleri CTT paketi ile yapalım.

Tüm gruba ait pbis değerleri görülmektedir.

library(dplyr)
library(CTT)
matris <- sinav_order %>%  
  select(starts_with("madde")) %>% 
  mutate(across(everything( ),as.numeric)) %>% 
  as.matrix()

KTK.guvenirlik <- itemAnalysis(matris)
KTK.guvenirlik$itemReport
##    itemName itemMean      pBis       bis alphaIfDeleted
## 1   madde_1     0.47 0.5354616 0.6717928      0.7959279
## 2   madde_2     0.53 0.4707659 0.5906254      0.7996461
## 3   madde_3     0.55 0.2299700 0.2890531      0.8130042
## 4   madde_4     0.36 0.4430028 0.5683809      0.8013483
## 5   madde_5     0.37 0.3759047 0.4806762      0.8049814
## 6   madde_6     0.82 0.2667077 0.3904945      0.8100274
## 7   madde_7     0.71 0.4664061 0.6182731      0.8003683
## 8   madde_8     0.57 0.3627846 0.4572623      0.8057226
## 9   madde_9     0.30 0.2945506 0.3882166      0.8091346
## 10 madde_10     0.52 0.2775098 0.3479660      0.8104524
## 11 madde_11     0.40 0.5108272 0.6477496      0.7974778
## 12 madde_12     0.58 0.5274432 0.6659712      0.7964787
## 13 madde_13     0.62 0.2640013 0.3365483      0.8109939
## 14 madde_14     0.52 0.5175262 0.6489194      0.7969568
## 15 madde_15     0.38 0.2519119 0.3211368      0.8116347
## 16 madde_16     0.32 0.1701400 0.2219346      0.8155055
## 17 madde_17     0.41 0.4648960 0.5881754      0.8000417
## 18 madde_18     0.32 0.3938428 0.5137379      0.8040463
## 19 madde_19     0.33 0.3402452 0.4417733      0.8068519
## 20 madde_20     0.40 0.4147055 0.5258634      0.8028505

Kız öğrencilere ait pbis değerleri görülmektedir.

library(dplyr)
library(CTT)
matris_k <- kiz_veri %>%  
  select(starts_with("madde")) %>% 
  mutate(across(everything( ),as.numeric)) %>% 
  as.matrix()

KTK.guvenirlik <- itemAnalysis(matris_k)
KTK.guvenirlik$itemReport
##    itemName itemMean      pBis       bis alphaIfDeleted
## 1   madde_1     0.52 0.5157858 0.6467372      0.8295909
## 2   madde_2     0.46 0.5869741 0.7370127      0.8262201
## 3   madde_3     0.58 0.1746733 0.2205496      0.8450213
## 4   madde_4     0.36 0.5094041 0.6535750      0.8300471
## 5   madde_5     0.34 0.4583537 0.5925765      0.8323742
## 6   madde_6     0.82 0.3313992 0.4852111      0.8376120
## 7   madde_7     0.72 0.5276701 0.7038231      0.8295885
## 8   madde_8     0.66 0.3959168 0.5118558      0.8351203
## 9   madde_9     0.28 0.2776219 0.3703009      0.8399589
## 10 madde_10     0.46 0.2738392 0.3438363      0.8407285
## 11 madde_11     0.48 0.6444879 0.8081150      0.8234289
## 12 madde_12     0.62 0.5480758 0.6986860      0.8282223
## 13 madde_13     0.56 0.2946561 0.3708300      0.8397670
## 14 madde_14     0.48 0.5776034 0.7242495      0.8266512
## 15 madde_15     0.46 0.3276021 0.4113417      0.8383031
## 16 madde_16     0.38 0.1704248 0.2172572      0.8450202
## 17 madde_17     0.52 0.4692139 0.5883413      0.8317813
## 18 madde_18     0.34 0.4972932 0.6429189      0.8306447
## 19 madde_19     0.34 0.3150051 0.4072502      0.8386298
## 20 madde_20     0.40 0.4893685 0.6205391      0.8308894

Erkek öğrencilere ait pbis değerleri görülmektedir.

#Erkek ogrenciler icin hesaplama:
library(dplyr)
library(CTT)
matris_e <- erkek_veri %>%  
  select(starts_with("madde")) %>% 
  mutate(across(everything( ),as.numeric)) %>% 
  as.matrix()

KTK.guvenirlik <- itemAnalysis(matris_e)
KTK.guvenirlik$itemReport
##    itemName itemMean      pBis       bis alphaIfDeleted
## 1   madde_1     0.42 0.5567584 0.7029857      0.7553444
## 2   madde_2     0.60 0.3787481 0.4802679      0.7678543
## 3   madde_3     0.52 0.2898619 0.3634541      0.7739481
## 4   madde_4     0.36 0.3714313 0.4765533      0.7683841
## 5   madde_5     0.40 0.3014638 0.3822683      0.7730814
## 6   madde_6     0.82 0.1952509 0.2858725      0.7784454
## 7   madde_7     0.70 0.3998831 0.5270444      0.7666735
## 8   madde_8     0.48 0.3250119 0.4075282      0.7715420
## 9   madde_9     0.32 0.3257611 0.4249305      0.7713891
## 10 madde_10     0.58 0.3119495 0.3938800      0.7723994
## 11 madde_11     0.32 0.3481865 0.4541827      0.7699466
## 12 madde_12     0.54 0.5036155 0.6323466      0.7590273
## 13 madde_13     0.68 0.2565274 0.3346204      0.7757973
## 14 madde_14     0.56 0.4717331 0.5936846      0.7613315
## 15 madde_15     0.30 0.1482463 0.1953880      0.7823553
## 16 madde_16     0.26 0.1575338 0.2130306      0.7813627
## 17 madde_17     0.30 0.4650926 0.6129903      0.7624676
## 18 madde_18     0.30 0.2700372 0.3559080      0.7748730
## 19 madde_19     0.32 0.3707283 0.4835867      0.7684895
## 20 madde_20     0.40 0.3334901 0.4228789      0.7709267

❓Soru 5:

34 bireye bir testin A ve B formları uygulanmıştır. A ve B formlarında yer alan sorular aynı olmakla birlikte, soru numaraları farklıdır. Soru numaraları karşılıkları aşağıda verilmiştir. Örneğin A kitapçığındaki birinci soru, b kitapçığında 2. soru olarak verilmiştir. (15p)

A B
1 2
2 3
3 1
4 5
5 6
6 7
7 8
8 4
9 9
10 11
11 10

FORMAB.xlsx dosyasında her iki kitapçık türünün cevap anahtarı bireylerin idleri, aldıkları kitapçık türleri ve 11 maddeye verdikleri cevaplar yer almaktadır. Sizden istenilen B kitapçığını alan kişilerin madde cevaplarını A kitapçığına dönüştürerek (dplyr paket fonksiyonlarını kullanabilirsiniz), 34 bireyin hepsini A kitapçığını almış gibi veri dosyasını kaydetmenizdir. (20 puan)

  1. Bireylerin puanlarını A kitapçığının cevap anahtarını kullanarak 1-0 dönüştürünüz. FORMAB-10 adı ile “.csv” uzantılı olacak şekilde kaydediniz. (CTT ve ya dplyr paket fonksiyonlarını kullanabilirsiniz. )

  2. Son olarak her bir maddenin doğru cevaplanma oranını/madde güçlüğünü hesaplayınız. (34 kişi üzerinden)

⌛Cevap 5:

Öncelikle veri setimi okutuyorum. Veri setim excel olduğu için “readxl” kütüphanesindeki read_excel( ) komutunu kullanıyorum. İlk iki satır cevap anahtarı olduğu için skip=2 komutu ile ilk iki satırı atlayarak işleme başlamasını sağlıyorum.

library(readxl)
formab <- read_excel("C:/Users/Huawei/Desktop/OLC731/FORMAB.xlsx", skip=2)

Elimdeki veri setindeki A kitapçıklarından oluşan bir veri seti oluşturuyorum ve formab_a şeklinde tanımlıyorum.

formab_a <- subset(formab, kitapcik == "A")

Elimdeki veri setindeki B kitapçıkları için ise formab_b adlı bir nesne tanımlıyorum. Sonrasında tanımladığım nesnenin içindeki sorulara ait sutünlarını A kitapçığındaki yerlerine göre değiştiriyorum. Daha sonrasında ise maddeleri aynı A kitapçığında olduğu sırasıyla rename() fonksiyonu ile yeniden isimlendiriyorum.

formab_b <- subset(formab, kitapcik == "B")
formab_bd <- formab_b[,c("id","kitapcik", "m2","m3","m1","m5","m6","m7","m8","m4","m9","m11","m10")]


formab_bd_2<-formab_bd%>% 
rename("id"="id", "kitapcik"="kitapcik", "m1"="m2","m2"="m3","m3"="m1","m4"="m5",                    "m5"="m6","m6"="m7","m7"="m8","m8"="m4","m9"="m9","m10"="m11","m11"="m10")

formab_bd_2
## # A tibble: 15 × 13
##    id    kitapcik m1    m2    m3    m4    m5    m6    m7    m8    m9    m10  
##    <chr> <chr>    <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
##  1 id1   B        B     D     C     A     E     E     D     B     A     D    
##  2 id2   B        B     D     C     A     B     E     D     B     A     E    
##  3 id6   B        B     D     C     A     E     E     B     B     A     C    
##  4 id7   B        B     D     C     A     D     E     E     B     A     D    
##  5 id9   B        B     D     C     A     E     E     E     B     A     E    
##  6 id10  B        B     D     C     A     E     E     B     B     A     E    
##  7 id11  B        B     D     C     A     E     E     D     B     A     D    
##  8 id13  B        B     D     C     A     A     E     <NA>  B     A     C    
##  9 id14  B        B     D     C     A     E     E     B     B     A     B    
## 10 id16  B        B     D     C     A     E     E     D     B     A     D    
## 11 id18  B        B     D     C     A     A     E     B     B     A     E    
## 12 id19  B        <NA>  D     C     A     C     E     B     B     A     <NA> 
## 13 id26  B        B     D     C     A     E     E     <NA>  B     A     <NA> 
## 14 id28  B        B     D     C     A     E     E     D     B     A     C    
## 15 id31  B        B     D     C     A     C     E     D     B     A     E    
## # ℹ 1 more variable: m11 <chr>

B kitapçıklarından oluşan veri setimiz de aslında soru dizilimi formatı bakımında A kitapçığı formuna dönüşmüş oldu. Sadece eski veri setinde Kitapçık B olarak görünüyor. Şimdi ise bu durumu çözelim. Kitapçık kısmında B gördüğünde, A yap şeklindeki işlem aşağıdadır.

formab_bd_2<-formab_bd_2 %>% 
  mutate(kitapcik=case_when(kitapcik %in% c("B") ~ "A"))

formab_bd_2
## # A tibble: 15 × 13
##    id    kitapcik m1    m2    m3    m4    m5    m6    m7    m8    m9    m10  
##    <chr> <chr>    <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
##  1 id1   A        B     D     C     A     E     E     D     B     A     D    
##  2 id2   A        B     D     C     A     B     E     D     B     A     E    
##  3 id6   A        B     D     C     A     E     E     B     B     A     C    
##  4 id7   A        B     D     C     A     D     E     E     B     A     D    
##  5 id9   A        B     D     C     A     E     E     E     B     A     E    
##  6 id10  A        B     D     C     A     E     E     B     B     A     E    
##  7 id11  A        B     D     C     A     E     E     D     B     A     D    
##  8 id13  A        B     D     C     A     A     E     <NA>  B     A     C    
##  9 id14  A        B     D     C     A     E     E     B     B     A     B    
## 10 id16  A        B     D     C     A     E     E     D     B     A     D    
## 11 id18  A        B     D     C     A     A     E     B     B     A     E    
## 12 id19  A        <NA>  D     C     A     C     E     B     B     A     <NA> 
## 13 id26  A        B     D     C     A     E     E     <NA>  B     A     <NA> 
## 14 id28  A        B     D     C     A     E     E     D     B     A     C    
## 15 id31  A        B     D     C     A     C     E     D     B     A     E    
## # ℹ 1 more variable: m11 <chr>

Böldüğüm veri setini alt alta birleştireceğim için rbind() fonksiyonunu kullandım.

formab_all_a<- rbind(formab_bd_2, formab_a)
formab_all_a
## # A tibble: 34 × 13
##    id    kitapcik m1    m2    m3    m4    m5    m6    m7    m8    m9    m10  
##    <chr> <chr>    <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
##  1 id1   A        B     D     C     A     E     E     D     B     A     D    
##  2 id2   A        B     D     C     A     B     E     D     B     A     E    
##  3 id6   A        B     D     C     A     E     E     B     B     A     C    
##  4 id7   A        B     D     C     A     D     E     E     B     A     D    
##  5 id9   A        B     D     C     A     E     E     E     B     A     E    
##  6 id10  A        B     D     C     A     E     E     B     B     A     E    
##  7 id11  A        B     D     C     A     E     E     D     B     A     D    
##  8 id13  A        B     D     C     A     A     E     <NA>  B     A     C    
##  9 id14  A        B     D     C     A     E     E     B     B     A     B    
## 10 id16  A        B     D     C     A     E     E     D     B     A     D    
## # ℹ 24 more rows
## # ℹ 1 more variable: m11 <chr>

dat. uzantılı kayıt için:

save(formab_all_a, file = "C:/Users/Huawei/Desktop/OLC731/duzenlenmis.dat")

csv. uzantılı kayıt için:

write.csv(formab_all_a, "C:/Users/Huawei/Desktop/OLC731/duzenlenmis.csv")

“openxlsx” paketi için de yine güncelleme istedi ve teknik bir sorun yaşamamak için bu şekilde kaydettim.

#install.packages("openxlsx")
#library(openxlsx)
#write.xlsx(formab_all_a, "C:/Users/Huawei/Desktop/OLC731/duzenlenmis.xlsx")

Cevap anahtarını şıkları 1-0 olarak kodlayacak şekilde oluşturan kod aşağıdadır. Öncelikle cevap anahtarını ilk satırlarda tanımlıyorum. Sonra ise her bir madde için olan durumu tanımlamış oluyoruz.

cevap_anahtari <- c(m1 = "B", m2 = "D", m3= "C", m4= "A", m5= "E",
                    m6= "E", m7= "D", m8="B", m9="A", m10="E", m11= "E")

formab_all_a$m1 <- ifelse(formab_all_a$m1 == cevap_anahtari["m1"], 1, 0)
formab_all_a$m2 <- ifelse(formab_all_a$m2 == cevap_anahtari["m2"], 1, 0)
formab_all_a$m3 <- ifelse(formab_all_a$m3 == cevap_anahtari["m3"], 1, 0)
formab_all_a$m4 <- ifelse(formab_all_a$m4 == cevap_anahtari["m4"], 1, 0)
formab_all_a$m5 <- ifelse(formab_all_a$m5 == cevap_anahtari["m5"], 1, 0)
formab_all_a$m6 <- ifelse(formab_all_a$m6 == cevap_anahtari["m6"], 1, 0)
formab_all_a$m7 <- ifelse(formab_all_a$m7 == cevap_anahtari["m7"], 1, 0)
formab_all_a$m8 <- ifelse(formab_all_a$m8 == cevap_anahtari["m8"], 1, 0)
formab_all_a$m9 <- ifelse(formab_all_a$m9 == cevap_anahtari["m9"], 1, 0)
formab_all_a$m10 <- ifelse(formab_all_a$m10 == cevap_anahtari["m10"], 1, 0)
formab_all_a$m11 <- ifelse(formab_all_a$m11 == cevap_anahtari["m11"], 1, 0)
formab_all_a
## # A tibble: 34 × 13
##    id    kitapcik    m1    m2    m3    m4    m5    m6    m7    m8    m9   m10
##    <chr> <chr>    <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
##  1 id1   A            1     1     1     1     1     1     1     1     1     0
##  2 id2   A            1     1     1     1     0     1     1     1     1     1
##  3 id6   A            1     1     1     1     1     1     0     1     1     0
##  4 id7   A            1     1     1     1     0     1     0     1     1     0
##  5 id9   A            1     1     1     1     1     1     0     1     1     1
##  6 id10  A            1     1     1     1     1     1     0     1     1     1
##  7 id11  A            1     1     1     1     1     1     1     1     1     0
##  8 id13  A            1     1     1     1     0     1    NA     1     1     0
##  9 id14  A            1     1     1     1     1     1     0     1     1     0
## 10 id16  A            1     1     1     1     1     1     1     1     1     0
## # ℹ 24 more rows
## # ℹ 1 more variable: m11 <dbl>

FORMAB-10 adı ile “.csv” uzantılı olacak şekilde kaydetmek için kullandığımız komut aşağıda yer almaktadır.

write.csv(formab_all_a, "C:/Users/Huawei/Desktop/OLC731/FORMAB10.csv")

Bireylerin her bir maddeyi doğru cevaplanma oranını/madde güçlüğünü hesaplama:

library(tidyr)
madde_guclugu <- formab_all_a %>%
  summarise(across(m1:m11, ~ mean(.x, na.rm = TRUE))) %>%
  pivot_longer(everything(), names_to = "madde", values_to = "gucluk")

madde_guclugu
## # A tibble: 11 × 2
##    madde gucluk
##    <chr>  <dbl>
##  1 m1     0.909
##  2 m2     1    
##  3 m3     1    
##  4 m4     0.941
##  5 m5     0.676
##  6 m6     0.941
##  7 m7     0.517
##  8 m8     1    
##  9 m9     1    
## 10 m10    0.333
## 11 m11    0.970

❓Soru 6:

pisa2015.csv dosyasını okuyunuz. Okuduğunuz dosyanın ST001D01T:ST129Q08TA arasındaki değişkenler ve PV1SCIE (fen okuryazarlık) değişkeninden oluşan yeni bir veri seti oluşturunuz.

  1. Oluşturduğunuz nesnede ST094 ile başlayan maddelerin türünü numeric’ten factor’e dönüştürünüz. Faktör düzeylerini 1-4’den “Kesinlikle katılmıyorum”, “Katılmıyorum”, “Katılıyorum”, ”Kesinlikle katılıyorum” olacak şekilde yeniden isimlendiriniz.

  2. Oluşturduğunuz nesnedeki değişkenleri Türkçe değişken isimleri ile değiştiriniz. (dplyr paketi rename ve varyasyonlarını kullanınız. Tüm değişken isimlerini büyük harflerden oluşturunuz. Değişken adları aşağıda yer alan tabloda bulunmaktadır.

  3. STRATUM BOLGE değişkenin değerleri aşağıdaki tablodaki gibidir. Değişkenin 36 değeri bulunmaktadır. Ancak bu değişken içerisinde tanımlı 12 bölge bulunmaktadır. 36 kategorili değişkeni kullanılarak 12 kategorili BOLGE2 değişkeni düzeyleri ile oluşturunuz.

  4. CINSIYET değişkenini kullanarak, öğrencilerin FEN_OKURYAZARLIK (PV1SCIE) puanlarının dağılımını gösteren bir kutu grafiği (Box Plot) oluşturunuz. Her bir kutu grafiğine ek olarak, ortalama fen okuryazarlık puanını gösteren bir nokta ekleyiniz.

  5. BOLGE2 değişkenini kullanarak, her bir bölgenin ortalama FEN_OKURYAZARLIK (PV1SCIE) puanını hesaplayınız. Bu ortalamaları büyükten küçüğe sıralayarak gösteren ve bölgeleri X ekseninde, ortalama puanı Y ekseninde gösteren bir çubuk grafiği (Bar Plot) oluşturunuz.

  6. FEN_OKURYAZARLIK (PV1SCIE) ile SOSYO_EKONOMIK_DUZEY (ESCS) değişkenleri arasındaki Pearson korelasyon katsayısını hesaplayınız. Ayrıca, bu iki değişken ve ANNE_EGITIMI (MISCED) ile BABA_EGITIMI (FISCED) değişkenlerini de içeren bir korelasyon matrisi oluşturup bu matrisi yuvarlayarak gösteriniz.

  7. Basit doğrusal regresyon analizi kullanarak, SOSYO_EKONOMIK_DUZEY (ESCS) değişkeninin FEN_OKURYAZARLIK (PV1SCIE) puanını ne ölçüde yordadığını inceleyiniz. Elde ettiğiniz regresyon modelinin özetini (summary) görüntüleyiniz ve regresyon denklemini yorumlayınız.

⌛Cevap 6:

Veri setimizi read.csv komutu ile yüklüyoruz.

veri <- read.csv("C:/Users/Huawei/Desktop/OLC731/pisa2015.csv", 
                 header = TRUE,  
                 sep = ",",      
                 stringsAsFactors = FALSE)

dplyr paketinden faydalanacağımız için dplyr’ı çağırıyoruz. İstenilen verilerin olduğu sütunları seçerek yeni bir veri seti oluşturuyoruz.

library(dplyr)
veri_1 <- veri %>% select(108, 198:220)  

6.soru a) Oluşturulan nesnede “ST094” ile başlayan maddelerin bulunması için starts_with( ) fonksiyonu ile yazılan kod:

d1<-select(veri_1, starts_with("ST094"))

5 adet “ST094” ile başlayan madde olduğu görülmektedir. Veri türümüz ise int yani sayı.

Şimdi ise numeric’ten factor’e dönüştürüp isimlendirme yapıyoruz.

2.yol:

#d2 <-
#mutate_if(is.numeric, as.factor) %>% 
#mutate_all(funs(recode_factor(., '1'="Kesinlikle katilmiyorum",
#                             '2'="Katiliyorum",
#                             '3'="Katiliyorum",
#                             '4'="Kesinlikle katiliyorum,"
#                             )))  
#ciktisi uzun oldugu icin diyezledim.

2.yol:

library(dplyr)
veri_1 <- veri_1 %>% 
        mutate(across(
        c(ST094Q01NA,ST094Q02NA,ST094Q03NA,ST094Q04NA,ST094Q05NA),
        ~factor(.x,
                levels = c(1,2,3,4),
                labels = c("Kesinlikle Katilmiyorum","Katİlmiyorum", 
                           "Katiliyorum","Kesinlikle Katiliyorum"))))

6.soru b)

rename ( ) fonksiyonu aracılığıyla değişkenlerin isimlerini değiştiriyoruz.

veri_2 <- veri_1 %>% rename(FEN_OKURYAZARLIK=PV1SCIE, SINIF_DUZEYI=ST001D01T,
                            CINSIYET=ST004D01T, 
                            ISTATISTIKI_BOLGE_BIRIMLERI=STRATUM, 
                            ANNE_EGITIM_DUZEYI=MISCED, 
                            BABA_EGITIM_DUZEYI=FISCED, 
                            GOCMENLIK_STATUSU=IMMIG,
                            EVDE_KONUSULAN_DIL=LANGN, 
                            SOSYO_EKONOMIK_DUZEY=ESCS,
                            FEN_ZEVK_1=ST094Q01NA,
                            FEN_ZEVK_2=ST094Q02NA,
                            FEN_ZEVK_3=ST094Q03NA,
                            FEN_ZEVK_4=ST094Q04NA,
                            FEN_ZEVK_5=ST094Q05NA,
                            FEN_OZYETERLIK_1=ST129Q01TA,
                            FEN_OZYETERLIK_2=ST129Q02TA,
                            FEN_OZYETERLIK_3=ST129Q03TA,
                            FEN_OZYETERLIK_4=ST129Q04TA,
                            FEN_OZYETERLIK_5=ST129Q05TA,
                            FEN_OZYETERLIK_6=ST129Q06TA,
                            FEN_OZYETERLIK_7=ST129Q07TA,
                            FEN_OZYETERLIK_8=ST129Q08TA,
                            FEN_ZEVK_OLC=JOYSCIE,
                            FEN_OZYETERLIK_OLC=SCIEEFF)

6.soru c) BOLGE2 değişken düzeylerini oluşturuyoruz.

veri_3 <- veri_2 %>% 
  mutate(BOLGE2 = case_when(
ISTATISTIKI_BOLGE_BIRIMLERI %in% c("TUR0101","TUR0102","TUR0103") ~ "TR1: İstanbul",
ISTATISTIKI_BOLGE_BIRIMLERI %in% c("TUR0104","TUR0105","TUR0106") ~ "TR2: Batı Marmara",
ISTATISTIKI_BOLGE_BIRIMLERI %in% c("TUR0107","TUR0108","TUR0109") ~ "TR3: Ege",
ISTATISTIKI_BOLGE_BIRIMLERI %in% c("TUR0110","TUR0111","TUR0112") ~ "TR4: Dogu Marmara",
ISTATISTIKI_BOLGE_BIRIMLERI %in% c("TUR0213","TUR0214","TUR0215") ~ "TR5: Batı Anadolu",
ISTATISTIKI_BOLGE_BIRIMLERI %in% c("TUR0216","TUR0217","TUR0218") ~ "TR6: Akdeniz",
ISTATISTIKI_BOLGE_BIRIMLERI %in% c("TUR0219","TUR0220","TUR0221") ~ "TR7: Orta Anadolu",
ISTATISTIKI_BOLGE_BIRIMLERI %in% c("TUR0222","TUR0223","TUR0224") ~ "TR8: Batı Karadeniz",
ISTATISTIKI_BOLGE_BIRIMLERI %in% c("TUR0225","TUR0226","TUR0227") ~ "TR9: Dogu Karadeniz", 
ISTATISTIKI_BOLGE_BIRIMLERI %in% c("TUR0228","TUR0229","TUR0230") ~ "TRA: Kuzeydoğu Anadolu",
ISTATISTIKI_BOLGE_BIRIMLERI %in% c("TUR0231","TUR0232","TUR0233") ~ "TRB: Ortadogu Anadolu",
ISTATISTIKI_BOLGE_BIRIMLERI %in% c("TUR0234","TUR0235","TUR0236") ~ "TRC: Guneydogu Anadolu"))

6.soru d) FEN_OKURYAZARLIK (PV1SCIE) puanlarının cinsiyete göre dağılımını gösteren bir kutu grafiği çiziyoruz.

veri_3$CINSIYET <- factor(veri_3$CINSIYET,
                          levels= c(1,2),
                          labels=c("kiz","erkek"))

library(ggplot2)

g1<-ggplot(veri_3, aes(x=CINSIYET,y=FEN_OKURYAZARLIK)) +
  geom_boxplot(fill= "skyblue", alpha= 0.7)+
  stat_summary(fun = mean, geom = "point", shape = 20, 
               size = 3,color = "red") +
  labs(
    x= "CINSIYET",
    y="FEN OKURYAZARLIK PUANI",
    title = "KUTU GRAFIGI: FEN OKURYAZARLIK & CINSIYET"
  )+
  theme_minimal() 
g1

6.soru e)

library(dplyr)
library(ggplot2)

bolge_ortalama <- veri_3 %>%
  group_by(BOLGE2) %>%
  summarise(ortalama_fen = mean(FEN_OKURYAZARLIK, na.rm = TRUE)) %>%
  arrange(desc(ortalama_fen))

g2<-ggplot(bolge_ortalama, aes(x = reorder(BOLGE2, -ortalama_fen), y = ortalama_fen)) +
  geom_bar(stat = "identity", fill = "skyblue") +
  labs(
    x = "Bolge",
    y = "Ortalama Fen Okuryazarlik Puani",
    title = "Bolgelere Gore Ortalama Fen Okuryazarlik Puanlari"
  ) +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 90, hjust = 1))
g2

6.soru f)

veri_3$FEN_OKURYAZARLIK[is.na(veri_3$FEN_OKURYAZARLIK)] <- 
  mean(veri_3$FEN_OKURYAZARLIK, na.rm = TRUE)

veri_3$SOSYO_EKONOMIK_DUZEY[is.na(veri_3$SOSYO_EKONOMIK_DUZEY)] <- 
  mean(veri_3$SOSYO_EKONOMIK_DUZEY, na.rm = TRUE)

veri_3 |>
  summarise(N = n(), 
            r = cor(FEN_OKURYAZARLIK, SOSYO_EKONOMIK_DUZEY))
##      N         r
## 1 5895 0.2889619

Korelasyon matrisi oluşturuyoruz.

veri_3$FEN_OKURYAZARLIK[is.na(veri_3$FEN_OKURYAZARLIK)] <- 
  mean(veri_3$FEN_OKURYAZARLIK, na.rm = TRUE)

veri_3$SOSYO_EKONOMIK_DUZEY[is.na(veri_3$SOSYO_EKONOMIK_DUZEY)] <- 
  mean(veri_3$SOSYO_EKONOMIK_DUZEY, na.rm = TRUE)

veri_3$ANNE_EGITIM_DUZEYI[is.na(veri_3$ANNE_EGITIM_DUZEYI)] <- 
  mean(veri_3$ANNE_EGITIM_DUZEYI, na.rm = TRUE)

veri_3$BABA_EGITIM_DUZEYI[is.na(veri_3$BABA_EGITIM_DUZEYI)] <- 
  mean(veri_3$BABA_EGITIM_DUZEYI, na.rm = TRUE)

matris <- data.frame(veri_3$FEN_OKURYAZARLIK, veri_3$SOSYO_EKONOMIK_DUZEY,
                     veri_3$ANNE_EGITIM_DUZEYI, veri_3$BABA_EGITIM_DUZEYI)

kor_matris <- cor(matris,  use = "complete.obs", method = "pearson")
round(kor_matris,2)
##                             veri_3.FEN_OKURYAZARLIK veri_3.SOSYO_EKONOMIK_DUZEY
## veri_3.FEN_OKURYAZARLIK                        1.00                        0.29
## veri_3.SOSYO_EKONOMIK_DUZEY                    0.29                        1.00
## veri_3.ANNE_EGITIM_DUZEYI                      0.10                        0.66
## veri_3.BABA_EGITIM_DUZEYI                      0.17                        0.78
##                             veri_3.ANNE_EGITIM_DUZEYI veri_3.BABA_EGITIM_DUZEYI
## veri_3.FEN_OKURYAZARLIK                          0.10                      0.17
## veri_3.SOSYO_EKONOMIK_DUZEY                      0.66                      0.78
## veri_3.ANNE_EGITIM_DUZEYI                        1.00                      0.56
## veri_3.BABA_EGITIM_DUZEYI                        0.56                      1.00

6.soru g)

library(ggpubr)
g3<-ggplot(veri_3, aes(x=SOSYO_EKONOMIK_DUZEY,y=FEN_OKURYAZARLIK))+
  geom_point(size=0.5) +
  geom_smooth(method="lm") +
  stat_regline_equation() 
g3

library(ggpubr)
g4<-ggscatter(veri_3, x = "SOSYO_EKONOMIK_DUZEY", y = "FEN_OKURYAZARLIK",
          add = "reg.line",
          size= 1,
          conf.int = TRUE, 
          cor.coef = TRUE, 
          cor.method = "pearson")+
          labs(
                x = "sosyo-ekonomik duzey",
                y = "fen okuryazarlik puani"
          )+
          theme_minimal()
g4

veri_3 |>
  summarise(N = n(), 
            r = cor(SOSYO_EKONOMIK_DUZEY, FEN_OKURYAZARLIK))
##      N         r
## 1 5895 0.2889619
model <- lm(FEN_OKURYAZARLIK ~ SOSYO_EKONOMIK_DUZEY, data = veri_3)
summary(model)
## 
## Call:
## lm(formula = FEN_OKURYAZARLIK ~ SOSYO_EKONOMIK_DUZEY, data = veri_3)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -254.024  -51.305   -2.822   51.476  241.368 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          450.2076     1.5362  293.06   <2e-16 ***
## SOSYO_EKONOMIK_DUZEY  19.1735     0.8275   23.17   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 73.84 on 5893 degrees of freedom
## Multiple R-squared:  0.0835, Adjusted R-squared:  0.08334 
## F-statistic: 536.9 on 1 and 5893 DF,  p-value: < 2.2e-16

Regresyon denklemini yazacak olursak;

\[FENOKURYAZARLIK= 450.2076+19.1735*SOSYOEKONOMIKDUZEY\]

R square değerine bakıldığında; sosyo ekonomik düzey fen okuryazarlık puanlarının toplam varyansının %8.35’ini açıklamaktadır. Fen okuryazarlık puanında etkili olabilecek başka birçok faktör olacağı için bu oranın düşük olması anlaşılırdır.

Not

Hocam öğrettikleriniz ve emekleriniz için çok teşekkür ederim. Elimden geleni yaptım umarım hesaplamalarım ve işlemlerim doğrudur. Data camp ödevleri sayesinde tüm yoğunluğa rağmen R’da pratik yapma imkanı buldum. R çok geniş bir alan o sebeple bu yolculukta bu ders aracılığıyla bir adım atmış olduğum için mutluyum. Güncelleme yapmaya korktuğum için CTT paketim çalışmıyor hocam. Kodlar giderse diye endişelendim.