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.
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ı)
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
Ö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
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
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.
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
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)
tüm grup üzerinden madde ayırt edicilik indeksini (rj) verilen formüle göre hesaplayınız.
kiz ve erkek öğrenciler için madde ayırt edicilik indeksini (rj) verilen formüle göre hesaplayınız.
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.
#sinav_order#
#str(sinav_order[, 5:25])#
#kodu uzun gorundugu icin diyezle yazdim#
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
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)
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. )
Son olarak her bir maddenin doğru cevaplanma oranını/madde güçlüğünü hesaplayınız. (34 kişi üzerinden)
Ö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
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.