1 Veri ön incelemesini yapınız

library(haven)
library(dplyr)
library(knitr)
library(broom)
library(GGally)
library(scatterplot3d)
library(rgl)
veri <- read_sav("~/hacettepe/Rders/data/bsgturm4.sav")
veri <- expss::drop_var_labs(veri)

1.1

names(veri)
## [1] "IDSTUD"   "BS4GSEX"  "BSMMAT01" "BSDMPATM" "BSDMSVM"  "BSDMSCM"

Veri setindeki değişkenler:

  • IDSTUD: ID
  • BS4GSEX: Cinsiyet
  • BSMMAT01: Başarı
  • BSDMPATM: Matematiğe değer verme
  • BSDMSVM: Matematiğe karşı tutum
  • BSDMSCM: Matematik öğrenmede kendine güven
ncol(veri)
## [1] 6

Veri seti 6 sütundan veya 6 değişkenden oluşmaktadır.

str(veri)
## tibble [323 × 6] (S3: tbl_df/tbl/data.frame)
##  $ IDSTUD  : num [1:323] 10111 10125 20207 30111 40105 ...
##   ..- attr(*, "format.spss")= chr "F8.0"
##   ..- attr(*, "display_width")= int 9
##  $ BS4GSEX : num [1:323] 1 1 2 2 2 1 1 1 1 1 ...
##   ..- attr(*, "format.spss")= chr "F1.0"
##   ..- attr(*, "display_width")= int 9
##   ..- attr(*, "labels")= Named num [1:3] 1 2 9
##   .. ..- attr(*, "names")= chr [1:3] "GIRL" "BOY" "OMITTED"
##  $ BSMMAT01: num [1:323] 709 661 729 802 374 ...
##   ..- attr(*, "format.spss")= chr "F6.2"
##   ..- attr(*, "display_width")= int 10
##  $ BSDMPATM: num [1:323] 1 1 1 1 3 2 1 2 1 1 ...
##   ..- attr(*, "format.spss")= chr "F1.0"
##   ..- attr(*, "display_width")= int 10
##   ..- attr(*, "labels")= Named num [1:4] 1 2 3 9
##   .. ..- attr(*, "names")= chr [1:4] "HIGH" "MEDIUM" "LOW" "OMITTED"
##  $ BSDMSVM : num [1:323] 1 1 1 1 1 1 2 1 2 1 ...
##   ..- attr(*, "format.spss")= chr "F1.0"
##   ..- attr(*, "display_width")= int 9
##   ..- attr(*, "labels")= Named num [1:4] 1 2 3 9
##   .. ..- attr(*, "names")= chr [1:4] "HIGH" "MEDIUM" "LOW" "OMITTED"
##  $ BSDMSCM : num [1:323] 1 1 1 1 NA 3 1 NA 2 3 ...
##   ..- attr(*, "format.spss")= chr "F1.0"
##   ..- attr(*, "display_width")= int 9
##   ..- attr(*, "labels")= Named num [1:4] 1 2 3 9
##   .. ..- attr(*, "names")= chr [1:4] "HIGH" "MEDIUM" "LOW" "OMITTED"
  • Veri seti tibble şeklindedir.
  • Cinsiyet değişkeni 2 kategorilidir. Bunlar “GIRL” “BOY” “OMITTED”
  • Değer verme, tutum ve kendine güven üç kategorilidir. Bunlar “HIGH” “MEDIUM” “LOW” “OMITTED”
  • Eksik veriler “OMITTED” olarak belirtilip “9” ile kodlanmıştır.
dim(veri)
## [1] 323   6
veri %>%
  count(BS4GSEX)
## # A tibble: 3 × 2
##   BS4GSEX     n
##     <dbl> <int>
## 1       1   153
## 2       2   169
## 3      22     1
veri %>%
  count(BSDMPATM)
## # A tibble: 4 × 2
##   BSDMPATM     n
##      <dbl> <int>
## 1        1   242
## 2        2    38
## 3        3    20
## 4       NA    23
veri %>%
  count(BSDMSVM)
## # A tibble: 5 × 2
##   BSDMSVM     n
##     <dbl> <int>
## 1       1   278
## 2       2    32
## 3       3     5
## 4      11     1
## 5      NA     7
veri %>%
  count(BSDMSCM)
## # A tibble: 4 × 2
##   BSDMSCM     n
##     <dbl> <int>
## 1       1   150
## 2       2    87
## 3       3    65
## 4      NA    21

Cinsiyette 22 şeklinde, tutumda 11 şeklinde yanlış kodlama var. Bunu değiştirmem gerekiyor.

veri <- veri %>%
  mutate(BS4GSEX = ifelse(BS4GSEX == 22, 2, BS4GSEX))

veri <- veri %>%
  mutate(BSDMSVM = ifelse(BSDMSVM == 11, 1, BSDMSVM))

Veri setinde 323 gözlem bulunmaktadır.

sum(is.na(veri))
## [1] 51
colSums(is.na(veri))
##   IDSTUD  BS4GSEX BSMMAT01 BSDMPATM  BSDMSVM  BSDMSCM 
##        0        0        0       23        7       21
23/323
## [1] 0.07120743
7/323
## [1] 0.02167183
21/323
## [1] 0.06501548

Veri setinde toplamda 51 kayıp veri bulunmaktadır. - BSDMPATM değişkeninde 23, - BSDMPATM değişkeninde 7, - BSDMSCM değişkeninde 21 eksik veri bulunmaktadır.

library(mice)
mcar_test_veri <- md.pattern(veri)

Tutum, değer ve özgüven değişkenlerinin üçünde de eksik veri bulunan toplamda 6 gözlem vardır.

eksikler_3 <- veri %>%
  filter(is.na(BSDMPATM) & is.na(BSDMSVM) & is.na(BSDMSCM))

eksikler_3
## # A tibble: 6 × 6
##   IDSTUD BS4GSEX BSMMAT01 BSDMPATM BSDMSVM BSDMSCM
##    <dbl>   <dbl>    <dbl>    <dbl>   <dbl>   <dbl>
## 1 200204       1     308.       NA      NA      NA
## 2 340402       1     234.       NA      NA      NA
## 3 400721       2     287.       NA      NA      NA
## 4 460114       2     411.       NA      NA      NA
## 5 520326       2     374.       NA      NA      NA
## 6 690116       2     296.       NA      NA      NA

Üç eksik verinin de aynı anda görüldüğü gözlemlerde kızların sayısı daha fazladır.

1.2 Eksik verilerin dağılımı

library(MissMech)
TestMCARNormality(veri)
## Call:
## TestMCARNormality(data = veri)
## 
## Number of Patterns:  3 
## 
## Total number of cases used in the analysis:  312 
## 
##  Pattern(s) used:
##           IDSTUD   BS4GSEX   BSMMAT01   BSDMPATM   BSDMSVM   BSDMSCM
## group.1        1         1          1          1         1         1
## group.2        1         1          1          1         1        NA
## group.3        1         1          1         NA         1         1
##           Number of cases
## group.1               288
## group.2                11
## group.3                13
## 
## 
##     Test of normality and Homoscedasticity:
##   -------------------------------------------
## 
## Hawkins Test:
## 
##     P-value for the Hawkins test of normality and homoscedasticity:  4.728382e-07 
## 
##     Either the test of multivariate normality or homoscedasticity (or both) is rejected.
##     Provided that normality can be assumed, the hypothesis of MCAR is 
##     rejected at 0.05 significance level. 
## 
## Non-Parametric Test:
## 
##     P-value for the non-parametric test of homoscedasticity:  0.3562105 
## 
##     Reject Normality at 0.05 significance level.
##     There is not sufficient evidence to reject MCAR at 0.05 significance level.

non parametrik testteki p değeri 0,05’ten büyük olduğu için eksik verilerin belli bir paterni yok. Yani rastgele dağılmışlardır.

1.3 Eksik verileri doldurmak

veri <- veri
for(i in 1:ncol(veri)){
  veri[ , i][is.na(veri[ , i])] <- mean(veri[ , i], na.rm = TRUE)
}
any(is.na(veri))
## [1] FALSE

1.4 Tek değişkenli Uç değerler

z_skoru_mat <- scale(veri$BSMMAT01)
z_skoru_deger <-scale(veri$BSDMPATM)
z_skoru_tutum <-scale(veri$BSDMSVM)
z_skoru_guven <- scale(veri$BSDMSCM)

mat_bas_uc <- veri$BSMMAT01[z_skoru_mat > 3 | z_skoru_mat < -3] 
deger_uc <- veri$BSDMPATM[z_skoru_deger > 3 | z_skoru_deger < -3]
tutum_uc <- veri$BSDMSVM[z_skoru_tutum > 3 | z_skoru_tutum < -3]
guven_uc <- veri$BSDMSCM[z_skoru_guven > 3 | z_skoru_guven < -3]

mat_bas_uc
## [1] 47.87577
veri[which(z_skoru_mat > 3 | z_skoru_mat < -3), ]
## # A tibble: 1 × 6
##   IDSTUD BS4GSEX BSMMAT01 BSDMPATM BSDMSVM BSDMSCM
##    <dbl>   <dbl>    <dbl>    <dbl>   <dbl>   <dbl>
## 1 100235       2     47.9        1       1       2

Başarı değişkeninde bir tane uç değer vardır. Bu uç değer “100235” ID’li başarı puanı “47.87577” olan öğrencidir. Bu öğrenciyi veriden çıkartacağım.

veri <- veri[veri$IDSTUD != 100235, ]
dim(veri)
## [1] 322   6

1.5 Çok değişkenli Uç değer

Burayı Samet hocadan baktım

cov_mat <- cov(veri[, 3:5], use = "pairwise.complete.obs")
center <- colMeans(veri[, 3:5], na.rm = TRUE)
mahal <- mahalanobis(veri[, 3:5], center, cov_mat)
cutoff <- qchisq(0.975, df = ncol(veri[, 3:5]))
veri$multivariate_outlier <- mahal > cutoff
sum(veri$multivariate_outlier, na.rm = TRUE)
## [1] 26

26 tane çok değişkenli uç değer bulunuyor. Bunları veri setinden çıkaracağım.

veri<- veri %>%
  filter(!multivariate_outlier) %>%
  dplyr::select(-multivariate_outlier)

1.6 Normallik

library(moments)
hist(veri$BSMMAT01, main = "Matematik Başarısı Dağılımı", col = "skyblue")

hist(z_skoru_mat, main = "Matematik Başarısı Dağılımı", col = "skyblue")

skewness(veri$BSMMAT01, na.rm = TRUE)
## [1] 0.347555
kurtosis(veri$BSMMAT01, na.rm = TRUE)
## [1] 2.766699

matematik başarısı değişkenindeki değerler normal dağılım göstermektedir.

hist(veri$BSDMPATM, main = "Deger verme Dagılımı", col = "skyblue")

hist(z_skoru_deger, main = "Deger verme Dagılımı", col = "skyblue")

skewness(veri$BSDMPATM, na.rm = TRUE)
## [1] 2.15586
kurtosis(veri$BSDMPATM, na.rm = TRUE)
## [1] 5.859448

Sağa çarpık bir dağılım göstermektedir.

hist(veri$BSDMSVM, main = "Tutum Dagılımı", col = "skyblue")

hist(z_skoru_tutum, main = "Tutum Dagılımı", col = "skyblue")

skewness(veri$BSDMSVM, na.rm = TRUE)
## [1] 2.887545
kurtosis(veri$BSDMSVM, na.rm = TRUE)
## [1] 9.385835

Sağa çarpık bir dağılım gösteriyor.

hist(veri$BSDMSCM, main = "Güven Dagılımı", col = "skyblue")

hist(z_skoru_guven, main = "Güven Dagılımı", col = "skyblue")

skewness(veri$BSDMSCM, na.rm = TRUE)
## [1] 0.6901696
kurtosis(veri$BSDMSCM, na.rm = TRUE)
## [1] 2.124077

Tutum ve değer dağılımına göre daha az bir sağa çarpıklık gösteriyor.

1.7 Varyansların Homojenliği

Hocam yine burayı da samet hocadan bakarak yaptım.

library(car)
library(dplyr)
library(tidyr)
library(knitr)
library(kableExtra)

long_data1 <- veri %>%
  pivot_longer(
    cols = c(BSDMSVM, BSDMPATM, BSDMSCM),
    names_to = "grup",
    values_to = "puan")
levene_test <- leveneTest(puan ~ grup, data = long_data1)
kable(levene_test, caption = "Levene Testi Sonuçları") %>%
  kable_styling(full_width = T, position = "center")
Levene Testi Sonuçları
Df F value Pr(>F)
group 2 215.2542 0
885 NA NA

2 Çoklu regresyon analizini gerçekleştirin

2.1 Değişkenler arası korelasyon

library(ggcorrplot)
correlation_matrix <- cor(veri[, c("BSDMSVM", "BSDMPATM", "BSDMSCM", "BSMMAT01")], use = "pairwise.complete.obs")
ggcorrplot(correlation_matrix, 
           method = "circle", 
           type = "lower", 
           lab = TRUE)

Matematik başarısı ile en ilişkili değişkenler sırasıyla kendine güven, değer verme ve tutumdur. Bu yüzden ilk olarak güven ve mat. başarısı arasında bir regresyon analizi kuracağım.

2.2 Regresyon modelleri

library(MASS)
basari_guv <- rlm(veri$BSMMAT01 ~ veri$BSDMSCM, data = veri)
basari_guv_deger <- rlm(veri$BSMMAT01 ~ veri$BSDMSCM + veri$BSDMPATM, data = veri)
basari_guv_deger_tut <- rlm(veri$BSMMAT01 ~ veri$BSDMSCM + veri$BSDMPATM + veri$BSDMSVM, data = veri)

2.3 Modellerin karşılaştırması

basari_guv$s
## [1] 99.63319
basari_guv_deger$s
## [1] 96.64397
basari_guv_deger_tut$s
## [1] 97.07366

Residual standard error (artıkların standart hataları) en küçük değeri basari~güven+değer modelinde almıştır. Bu nedenle Başarıyı yordayan değişkenlerin kendine güven ve değer verme olduğu yorumu yapılabilir.