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)
names(veri)
## [1] "IDSTUD" "BS4GSEX" "BSMMAT01" "BSDMPATM" "BSDMSVM" "BSDMSCM"
Veri setindeki değişkenler:
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"
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.
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.
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
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
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)
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.
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")
Df | F value | Pr(>F) | |
---|---|---|---|
group | 2 | 215.2542 | 0 |
885 | NA | NA |
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.
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)
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.