library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.5
## ✔ forcats   1.0.0     ✔ stringr   1.5.1
## ✔ lubridate 1.9.3     ✔ tibble    3.2.1
## ✔ purrr     1.0.4     ✔ tidyr     1.3.1
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter()     masks stats::filter()
## ✖ dplyr::group_rows() masks kableExtra::group_rows()
## ✖ dplyr::lag()        masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(dplyr)
library(stevemisc)
## 
## Attaching package: 'stevemisc'
## 
## The following object is masked from 'package:lubridate':
## 
##     dst
## 
## The following object is masked from 'package:dplyr':
## 
##     tbl_df
library(knitr)
library(haven)
library(summarytools)
## 
## Attaching package: 'summarytools'
## 
## The following object is masked from 'package:tibble':
## 
##     view
library(outliers)
library(ggplot2)
library(plotly)
## 
## Attaching package: 'plotly'
## 
## The following object is masked from 'package:ggplot2':
## 
##     last_plot
## 
## The following object is masked from 'package:stats':
## 
##     filter
## 
## The following object is masked from 'package:graphics':
## 
##     layout
library(ggpmisc)
## Loading required package: ggpp
## Registered S3 methods overwritten by 'ggpp':
##   method                  from   
##   heightDetails.titleGrob ggplot2
##   widthDetails.titleGrob  ggplot2
## 
## Attaching package: 'ggpp'
## 
## The following object is masked from 'package:ggplot2':
## 
##     annotate
library(psych)
## 
## Attaching package: 'psych'
## 
## The following object is masked from 'package:outliers':
## 
##     outlier
## 
## The following objects are masked from 'package:ggplot2':
## 
##     %+%, alpha
library(sur)
## 
## Attaching package: 'sur'
## 
## The following object is masked from 'package:psych':
## 
##     skew
library(moments)
library(corrplot)
## corrplot 0.95 loaded
library(olsrr)
## 
## Attaching package: 'olsrr'
## 
## The following object is masked from 'package:datasets':
## 
##     rivers
library(expss)
## Loading required package: maditr
## 
## To select rows from data: rows(mtcars, am==0)
## 
## 
## Attaching package: 'maditr'
## 
## The following objects are masked from 'package:dplyr':
## 
##     between, coalesce, first, last
## 
## The following object is masked from 'package:purrr':
## 
##     transpose
## 
## The following object is masked from 'package:readr':
## 
##     cols
## 
## 
## Attaching package: 'expss'
## 
## The following objects are masked from 'package:haven':
## 
##     is.labelled, read_spss
## 
## The following objects are masked from 'package:stringr':
## 
##     fixed, regex
## 
## The following objects are masked from 'package:dplyr':
## 
##     compute, contains, na_if, recode, vars, where
## 
## The following objects are masked from 'package:purrr':
## 
##     keep, modify, modify_if, when
## 
## The following objects are masked from 'package:tidyr':
## 
##     contains, nest
## 
## The following object is masked from 'package:ggplot2':
## 
##     vars
library(flextable)
## 
## Attaching package: 'flextable'
## 
## The following object is masked from 'package:expss':
## 
##     set_caption
## 
## The following objects are masked from 'package:plotly':
## 
##     highlight, style
## 
## The following object is masked from 'package:purrr':
## 
##     compose
## 
## The following objects are masked from 'package:kableExtra':
## 
##     as_image, footnote
library(naniar)   
## 
## Attaching package: 'naniar'
## 
## The following object is masked from 'package:expss':
## 
##     is_na
library(visdat)  

1 Çoklu Regresyon Analizi ÖDEV -4

  • Veri setinin yüklenmesi, ön kontrolünün yapılması
bsgturm4 <- read_sav("D:/OLC_733/Ödev4/Ödev4/bsgturm4.sav")
# Değişken label'larını kaldırılması
bsgturm4_ <- drop_var_labs(bsgturm4)
str(bsgturm4_)
## 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"
head(bsgturm4_)

#Değişken isimlerinin Türkçe hale getirilmesi

library(dplyr)

bsgturm4_ <- bsgturm4_ %>%
  rename(
    cinsiyet = BS4GSEX,
    basari   = BSMMAT01,
    tutum    = BSDMPATM,
    deger    = BSDMSVM,
    ozguven    = BSDMSCM
  )

2 Verinin Betimsel İstatistiklerinin İncelenmesi

bsgturm4_ozet <- bsgturm4_ %>%
  summarise(
    across(
      everything(),
      list(
        min = ~round(min(., na.rm = TRUE), 2),
        max = ~round(max(., na.rm = TRUE), 2),
        mean = ~round(mean(., na.rm = TRUE), 2),
        median = ~round(median(., na.rm = TRUE), 2)
      )
    )
  ) %>%
  pivot_longer(
    cols = everything(),
    names_to = c("Değişken", ".value"),
    names_sep = "_"
  )

bsgturm4_ozet %>%
  flextable()

Değişken

min

max

mean

median

IDSTUD

10,111.00

1,500,466.00

747,825.67

720,204.00

cinsiyet

1.00

22.00

1.59

2.00

basari

47.88

802.42

446.86

432.21

tutum

1.00

3.00

1.26

1.00

deger

1.00

11.00

1.16

1.00

ozguven

1.00

3.00

1.72

2.00

  • Cinsiyet değişkeni 1-2 şeklinde kodlanmış olup 22 değeri hatalı kdolanmış olabileceği gözükmektedir. Bu değeri silerek analizlere devam edeceğim.
bsgturm4_guncel <- bsgturm4_ %>%
  filter(
    cinsiyet %in% c(1, 2),
    deger %in% c(1, 2)
  )

3 Ters Kodlamaların Düzeltilmesi

bsgturm4_guncel <- bsgturm4_ %>%
  mutate(
    tutum   = 4 - tutum,
    deger   = 4 - deger,
    ozguven = 4 - ozguven
  )

4 Eksik Değerlerin İncelenmesi

bsgturm4_guncel %>%
  summarise(
    across(
      everything(),
      list(
        Kayıp_Adedi = ~sum(is.na(.)),
        Kayıp_Yuzdesi = ~mean(is.na(.)) * 100
      )
    )
  ) %>%
  pivot_longer(
    cols = everything(),
    names_to = c("Değişken", ".value"),
    names_sep = "_"
  )
## Warning: Expected 2 pieces. Additional pieces discarded in 12 rows [1, 2, 3, 4, 5, 6, 7,
## 8, 9, 10, 11, 12].
# Değişken bazında kayıp veri yüzdesini hesapla
missing_summary <- bsgturm4_guncel %>%
  summarise(across(everything(), ~mean(is.na(.))*100)) %>%
  pivot_longer(cols = everything(), names_to = "Değişken", values_to = "Kayıp_Yüzde")

# Grafik oluştur
ggplot(missing_summary, aes(x = reorder(Değişken, -Kayıp_Yüzde), y = Kayıp_Yüzde)) +
  geom_col(fill = "steelblue") +
  geom_text(aes(label = paste0(round(Kayıp_Yüzde,1), "%")), vjust = -0.5, size = 4) +
  labs(title = "Değişken Bazında Kayıp Veri Yüzdesi",
       x = "Değişkenler",
       y = "Kayıp Veri (%)") +
  theme_minimal() +
  ylim(0, max(missing_summary$Kayıp_Yüzde) + 5) +
  coord_flip()

* Tutum, değer ve özgüven değişkenlerinde kayıp verilerin olduğu görülmektedir. En fazla kayıp verinin tutum değişkeninde olduğu görülmüştür.

5 Mcar testi İle Kayıp Verinin Rastgeleliğinin İncelenmesi

library(MissMech)
 TestMCARNormality(bsgturm4_guncel)
## Call:
## TestMCARNormality(data = bsgturm4_guncel)
## 
## Number of Patterns:  3 
## 
## Total number of cases used in the analysis:  312 
## 
##  Pattern(s) used:
##           IDSTUD   cinsiyet   basari   tutum   deger   ozguven
## 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:  3.018441e-28 
## 
##     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.2026463 
## 
##     Reject Normality at 0.05 significance level.
##     There is not sufficient evidence to reject MCAR at 0.05 significance level.
  • Sonuçlar incelendiğinde MCAR reddedilmediği, eksik veriler tamamen rastgele olduğu söylenebilir.

  • Kayıp veriler sürekli değişkenlerin de olduğu düşünüldüğünden ortalama ile veri ataması yapılabilir.

bsgturm4_guncel_imputed <- bsgturm4_guncel %>%
  mutate(
    across(
      c(tutum, deger, ozguven),  
      ~ifelse(is.na(.), mean(., na.rm = TRUE), .)
    )
  )

#Kayıp veri ataması sonrası kontrol
sum(is.na(bsgturm4_guncel_imputed))
## [1] 0

6 Uç Değer Analizleri

z_skorlari <- bsgturm4_guncel_imputed %>%
  mutate(
    z_tutum = scale(tutum),
    z_deger = scale(deger),
    z_ozguven = scale(ozguven)
  )

uc_degerler <- z_skorlari %>%
  mutate(
    uc_tutum = ifelse(abs(z_tutum) > 3, 1, 0),
    uc_deger = ifelse(abs(z_deger) > 3, 1, 0),
    uc_ozguven = ifelse(abs(z_ozguven) > 3, 1, 0)
  )


uc_degerler %>%
  summarise(
    tutum_uc = sum(uc_tutum, na.rm = TRUE),
    deger_uc = sum(uc_deger, na.rm = TRUE),
    ozguven_uc = sum(uc_ozguven, na.rm = TRUE)
  )
z_skorlari_long <- z_skorlari %>%
  select(tutum, deger, ozguven) %>%
  mutate(row_id = row_number()) %>% 
  pivot_longer(
    cols = c(tutum, deger, ozguven),
    names_to = "variable",
    values_to = "value"
  ) %>%
  group_by(variable) %>%
  mutate(z_score = scale(value)) %>%
  ungroup()


uc_deger_tablosu <- z_skorlari_long %>%
  filter(abs(z_score) > 3) %>%
  select(row_id, variable, z_score)
## Warning: Using one column matrices in `filter()` was deprecated in dplyr 1.1.0.
## ℹ Please use one dimensional logical vectors instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
uc_deger_tablosu
  • Tutum değişkeninde 20, değer değişkeninde ise 1 tane uç değer olduğu görülmüştür. Bunların hangi satırda oldukları tablo halinde görülmüştür. Çok değişkenli uç değerleri kontrol ettikten sonra bu veriler silinmeye karar verilmiştir.

7 Uç değerlerin Çıkarılması

uc_row_idler <- uc_deger_tablosu$row_id


bsgturm4_temiz <- bsgturm4_guncel_imputed %>%
  mutate(row_id = row_number()) %>%     
  filter(!row_id %in% uc_row_idler) %>%  
  select(-row_id)                       

# Kontrol 
nrow(bsgturm4_temiz)
## [1] 302

#Mahalonobis Uzaklığı İle Çok değişkenli Uç değerlerin İncelenmesi

veri_numeric <- bsgturm4_temiz %>%
  select(tutum, deger, ozguven)


mahalanobis_mesafe <- mahalanobis(
  x = veri_numeric,
  center = colMeans(veri_numeric, na.rm = TRUE),
  cov = cov(veri_numeric, use = "complete.obs")
)


kritik_esik <- qchisq(0.975, df = ncol(veri_numeric)) 


bsgturm4_temiz_mahal <- bsgturm4_temiz %>%
  mutate(mahalanobis_mesafe = mahalanobis_mesafe,
         uc_deger_mahal = ifelse(mahalanobis_mesafe > kritik_esik, 1, 0))


table(bsgturm4_temiz_mahal$uc_deger_mahal)
## 
##   0   1 
## 292  10
  • 10 tane çok değişkenkli uç değer tespit edildi.
# Uç değerin listelenmesi
bsgturm4_temiz_mahal %>%
  filter(uc_deger_mahal == 1)
bsgturm4_final <- bsgturm4_temiz_mahal %>%
  filter(uc_deger_mahal == 0) %>%
  select(-mahalanobis_mesafe, -uc_deger_mahal)

nrow(bsgturm4_final)
## [1] 292
  • Mevcut durumda 292 tane veri kaldı.

8 Normallik ve Varyans Homojenliği Test Edilmesi

# Skewness ve kurtosis değerlerini hesaplanması
tek_degisk_normallik <- bsgturm4_final %>%
  summarise(
    tutum_skew = skewness(tutum, na.rm = TRUE),
    tutum_kurt = kurtosis(tutum, na.rm = TRUE),
    deger_skew = skewness(deger, na.rm = TRUE),
    deger_kurt = kurtosis(deger, na.rm = TRUE),
    ozguven_skew = skewness(ozguven, na.rm = TRUE),
    ozguven_kurt = kurtosis(ozguven, na.rm = TRUE)
  )

tek_degisk_normallik
tek_degisk_normallik_long <- tek_degisk_normallik %>%
  pivot_longer(
    cols = everything(),
    names_to = c("Değişken", "Özellik"),
    names_sep = "_"
  ) %>%
  mutate(
    Özellik = dplyr::recode(Özellik,  
                     skew = "Çarpıklık",
                     kurt = "Basıklık")
  )


# 1. Veriyi uzun formata getiriyoruz (pivot_longer)
veri_long <- bsgturm4_final %>%
  pivot_longer(
    cols = c(tutum, deger, ozguven),
    names_to = "Değişken",
    values_to = "Değer"
  )

# 2. Grafik: Histogram + Normal dağılım eğrisi
ggplot(veri_long, aes(x = Değer)) +
  geom_histogram(aes(y = ..density..), bins = 30, fill = "skyblue", color = "black", alpha = 0.7) +
  stat_function(fun = dnorm,
                args = list(mean = mean(veri_long$Değer, na.rm = TRUE),
                            sd = sd(veri_long$Değer, na.rm = TRUE)),
                color = "red", size = 1.2) +
  facet_wrap(~Değişken, scales = "free") +
  labs(
    title = "Değişken Bazında Normal Dağılım Eğrisi ve Histogram",
    x = "Değer",
    y = "Yoğunluk"
  ) +
  theme_minimal()
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
## Warning: The dot-dot notation (`..density..`) was deprecated in ggplot2 3.4.0.
## ℹ Please use `after_stat(density)` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

9 Çok değişkenli İnceleme

library(MVN)


mvn_sonuc <- mvn(
  data = bsgturm4_final[, c("tutum", "deger", "ozguven")],
  mvnTest = "hz",         # Henze-Zirkler testi
  univariateTest = "AD",  # Anderson-Darling testi
  univariatePlot = "none",# Grafik istemiyoruz
  multivariatePlot = "none" # Grafik istemiyoruz
)

mvn_sonuc
## $multivariateNormality
##            Test       HZ p value MVN
## 1 Henze-Zirkler 57.25261       0  NO
## 
## $univariateNormality
##               Test  Variable Statistic   p value Normality
## 1 Anderson-Darling   tutum     78.2718  <0.001      NO    
## 2 Anderson-Darling   deger     96.0184  <0.001      NO    
## 3 Anderson-Darling  ozguven    27.8531  <0.001      NO    
## 
## $Descriptives
##           n     Mean   Std.Dev   Median Min Max 25th 75th       Skew   Kurtosis
## tutum   292 2.874247 0.3094699 3.000000   2   3    3    3 -2.3446884  3.7864547
## deger   292 2.920713 0.2644706 3.000000   2   3    3    3 -3.1554588  8.0744603
## ozguven 292 2.341729 0.7466935 2.281457   1   3    2    3 -0.6795308 -0.9028807

10 Varyansların Homojenliğinin Test Edilmesi

library(car)
## Loading required package: carData
## 
## Attaching package: 'carData'
## The following objects are masked from 'package:sur':
## 
##     Anscombe, States
## 
## Attaching package: 'car'
## The following object is masked from 'package:expss':
## 
##     recode
## The following object is masked from 'package:psych':
## 
##     logit
## The following object is masked from 'package:dplyr':
## 
##     recode
## The following object is masked from 'package:purrr':
## 
##     some
bsgturm4_final <- bsgturm4_final %>%
  mutate(cinsiyet = as.factor(cinsiyet))

levene_sonuclar <- list(
  tutum = leveneTest(tutum ~ cinsiyet, data = bsgturm4_final),
  deger = leveneTest(deger ~ cinsiyet, data = bsgturm4_final),
  ozguven = leveneTest(ozguven ~ cinsiyet, data = bsgturm4_final)
)


levene_ozet <- data.frame(
  Degisken = names(levene_sonuclar),
  F_degeri = sapply(levene_sonuclar, function(x) round(x$`F value`[1], 3)),
  p_degeri = sapply(levene_sonuclar, function(x) round(x$`Pr(>F)`[1], 3))
)

print(levene_ozet)
##         Degisken F_degeri p_degeri
## tutum      tutum    0.131    0.878
## deger      deger    0.151    0.860
## ozguven  ozguven    0.834    0.435
  • Levene testi sonuçlarına göre, tutum, deger ve ozguven değişkenlerinin varyansları arasında anlamlı bir fark bulunmamıştır (p > 0.05). Bu nedenle varyans homojenliği varsayımı sağlanmış olduğu söylenebilir.

11 Korelasyon ile Değişkenler Arası İlişkilerin İncelenmesi

library(ggcorrplot)

korelasyon_matrisi <- cor(bsgturm4_final[, c("tutum", "deger", "ozguven")], use = "complete.obs")

ggcorrplot(
  korelasyon_matrisi,
  lab = TRUE,       
  lab_size = 5,     
  colors = c("blue", "white", "red"), 
  outline.color = "black",  
  ggtheme = ggplot2::theme_minimal()
)

* Yapılan korelasyon analizi sonucunda, değişkenler arasındaki ilişkilerin oldukça zayıf düzeyde olduğu görülmüştür. Tutum ile özgüven arasında pozitif yönlü ve zayıf bir ilişki bulunmuştur (r = .22). Tutum ile değer arasında ise negatif yönlü, ancak çok zayıf bir ilişki gözlemlenmiştir (r = -.08). Benzer şekilde, değer ile özgüven arasındaki ilişki de pozitif yönde ve oldukça zayıf düzeydedir (r = .06). Genel olarak, değişkenler arasında anlamlı ve güçlü bir ilişki bulunmamaktadır.

12 Çoklu Bağlantılılık Testleri

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


vif_model <- lm(basari ~ tutum + deger + ozguven, data = bsgturm4_final)


vif_values <- vif(vif_model)
tolerance_values <- 1 / vif_values

vif_results <- data.frame(
  Degisken = names(vif_values),
  VIF = round(vif_values, 2),
  Tolerans = round(tolerance_values, 2)
)

vif_results %>%
  kable(caption = "VIF ve Tolerans Değerleri", align = "c") %>%
  kable_styling(full_width = TRUE, position = "center") %>%
  column_spec(1, bold = TRUE) %>%
  column_spec(2, color = "red") %>%
  column_spec(3, color = "blue") %>%
  kable_styling(latex_options = c("striped", "hold_position")) %>%
  row_spec(0, bold = TRUE, background = "#D9EAD3") %>%
  row_spec(1:nrow(vif_results), background = "#F6F6F6")
Table 12.1: Table 12.2: VIF ve Tolerans Değerleri
Degisken VIF Tolerans
tutum tutum 1.06 0.94
deger deger 1.01 0.99
ozguven ozguven 1.06 0.95

*Yapılan çoklu doğrusal bağlantı analizine göre, tüm değişkenlerin VIF değerleri 5’in oldukça altında kalmıştır (tutum VIF = 1.06, değer VIF = 1.01, özgüven VIF = 1.06). Benzer şekilde, tolerans değerlerinin tamamı 0.10 eşik değerinin üzerinde bulunmuştur (tutum = 0.94, değer = 0.99, özgüven = 0.95). Bu sonuçlar, modelde çoklu doğrusal bağlantı (multicollinearity) sorununun bulunmadığını ve değişkenler arasında yüksek bir doğrusal ilişki olmadığını göstermektedir.

13 Regresyon Analizi

  • Öncelikle tüm değişkenler modele dahil edilerek, analizler yapılacaktır.
library(MASS)
## 
## Attaching package: 'MASS'
## The following object is masked from 'package:olsrr':
## 
##     cement
## The following object is masked from 'package:plotly':
## 
##     select
## The following object is masked from 'package:dplyr':
## 
##     select
model1 <- lm(basari ~ tutum + deger + ozguven + cinsiyet, data = bsgturm4_final)


step_model <- stepAIC(model1, direction = "both")
## Start:  AIC=2722.68
## basari ~ tutum + deger + ozguven + cinsiyet
## 
##            Df Sum of Sq     RSS    AIC
## - cinsiyet  2     34825 3175399 2721.9
## - deger     1     20873 3161448 2722.6
## <none>                  3140575 2722.7
## - tutum     1     31597 3172171 2723.6
## - ozguven   1    874335 4014910 2792.4
## 
## Step:  AIC=2721.9
## basari ~ tutum + deger + ozguven
## 
##            Df Sum of Sq     RSS    AIC
## - deger     1     19333 3194733 2721.7
## <none>                  3175399 2721.9
## + cinsiyet  2     34825 3140575 2722.7
## - tutum     1     32198 3207598 2722.8
## - ozguven   1    880332 4055732 2791.4
## 
## Step:  AIC=2721.68
## basari ~ tutum + ozguven
## 
##            Df Sum of Sq     RSS    AIC
## <none>                  3194733 2721.7
## + deger     1     19333 3175399 2721.9
## - tutum     1     27955 3222688 2722.2
## + cinsiyet  2     33285 3161448 2722.6
## - ozguven   1    905253 4099986 2792.5
summary(step_model)
## 
## Call:
## lm(formula = basari ~ tutum + ozguven, data = bsgturm4_final)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -376.45  -67.18   -1.54   65.57  301.58 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  173.971     58.009   2.999  0.00294 ** 
## tutum         32.442     20.401   1.590  0.11287    
## ozguven       76.514      8.455   9.049  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 105.1 on 289 degrees of freedom
## Multiple R-squared:  0.2476, Adjusted R-squared:  0.2424 
## F-statistic: 47.56 on 2 and 289 DF,  p-value: < 2.2e-16
  • Başlangıçta modele tutum, değer, özgüven ve cinsiyet değişkenleri dahil edilmiştir.
    Yürütülen aşamalı regresyon (stepwise regression) analizi sonucunda, değer ve cinsiyet değişkenleri modele anlamlı katkı sağlamadıkları için çıkarılmıştır.

Sonuç olarak, tutum ve özgüven değişkenleri birlikte matematik başarısını yordamaktadır.
Model genel olarak istatistiksel olarak anlamlı bulunmuştur (F(2, 289) = 47.56, p < .001).

Modele göre, tutum ve özgüven değişkenleri birlikte başarı değişkenindeki varyansın yaklaşık %25’ini açıklamaktadır ( = .2476, Adj. R² = .2424).
Özellikle, özgüven değişkeninin başarı üzerindeki etkisi istatistiksel açıdan anlamlı ve güçlü bulunmuştur (p < .001).
Buna karşılık, tutum değişkeninin etkisi istatistiksel olarak anlamlı bulunmamıştır (p = .113).

13.0.1 Sonuçların Özeti

  • Özgüven değişkeni matematik başarısının anlamlı bir yordayıcısıdır.
  • Tutum değişkeni ise modele dahil edilmekle birlikte anlamlı bir yordayıcı değildir.

14 Aracılık Analizi

model_araci1 <- lm(ozguven ~ cinsiyet, data = bsgturm4_final)
summary(model_araci1)
## 
## Call:
## lm(formula = ozguven ~ cinsiyet, data = bsgturm4_final)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1.35489 -0.35489 -0.04248  0.65285  0.67607 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  2.32393    0.06213  37.406   <2e-16 ***
## cinsiyet2    0.03096    0.08771   0.353    0.724    
## cinsiyet22   0.67607    0.75068   0.901    0.369    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.7481 on 289 degrees of freedom
## Multiple R-squared:  0.00311,    Adjusted R-squared:  -0.003789 
## F-statistic: 0.4508 on 2 and 289 DF,  p-value: 0.6376
  • Cinsiyet değişkenleri (cinsiyet2 ve cinsiyet22) özgüven üzerinde istatistiksel olarak anlamlı bir etkiye sahip değildir (p = .724 ve p = .369).

Model genel olarak istatistiksel açıdan anlamlı bulunmamıştır (p = .638).

Bu sonuçlar, aracılık analizi açısından ilk koşulun — yani bağımsız değişkenin (cinsiyet) aracı değişkeni (özgüven) anlamlı şekilde etkilemesi koşulunun — sağlanmadığını göstermektedir.

model_araci2 <- lm(basari ~ cinsiyet + ozguven, data = bsgturm4_final)
summary(model_araci2)
## 
## Call:
## lm(formula = basari ~ cinsiyet + ozguven, data = bsgturm4_final)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -382.18  -71.05   -4.78   67.45  293.12 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  250.196     21.120  11.846   <2e-16 ***
## cinsiyet2     21.373     12.339   1.732   0.0843 .  
## cinsiyet22   -17.327    105.733  -0.164   0.8699    
## ozguven       79.245      8.274   9.578   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 105.2 on 288 degrees of freedom
## Multiple R-squared:  0.2491, Adjusted R-squared:  0.2412 
## F-statistic: 31.84 on 3 and 288 DF,  p-value: < 2.2e-16

Yapılan analizler sonucunda, cinsiyet ve özgüven değişkenlerinin birlikte matematik başarısını anlamlı şekilde yordadığı bulunmuştur (F(3, 288) = 31.84, p < .001).
Model, matematik başarısındaki varyansın yaklaşık %25’ini açıklamaktadır ( = .2491, Adj. R² = .2412).

Özgüven değişkeni, matematik başarısının güçlü ve anlamlı bir yordayıcısıdır (p < .001).
Buna karşın, cinsiyet değişkeninin doğrudan etkisi istatistiksel olarak anlamlı bulunmamıştır (p = .0843 ve p = .8699).

15 Düzenleyici Etki

  • İlk olarak, cinsiyet ile özgüven değişkenlerinin çarpımı alınarak bir etkileşim değişkeni (etkilesim) oluşturulmuştur.
bsgturm4_final <- bsgturm4_final %>%
  mutate(etkilesim = as.numeric(cinsiyet) * ozguven)

model_duzenleyici <- lm(basari ~ ozguven + cinsiyet + etkilesim, data = bsgturm4_final)
summary(model_duzenleyici)
## 
## Call:
## lm(formula = basari ~ ozguven + cinsiyet + etkilesim, data = bsgturm4_final)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -378.39  -67.21   -2.82   67.32  286.22 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   271.88      27.71   9.813   <2e-16 ***
## ozguven        49.90      25.67   1.944   0.0529 .  
## cinsiyet2     -25.48      40.70  -0.626   0.5318    
## cinsiyet22   -131.12     141.55  -0.926   0.3551    
## etkilesim      20.02      16.57   1.208   0.2281    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 105.1 on 287 degrees of freedom
## Multiple R-squared:  0.2529, Adjusted R-squared:  0.2424 
## F-statistic: 24.28 on 4 and 287 DF,  p-value: < 2.2e-16
  • Etkileşim (moderasyon) anlamlı çıkmadı (p = .2281).
  • Dolayısıyla **cinsiyet özgüvenin başarı üzerindeki etkisini değiştirmediği söylenebilir.
  • Özgüvenin etkisi ise sınırda anlamlı (p = .0529) olduğu söylenebilir.
  • Model genel olarak anlamlı ve güçlü bir açıklama gücüne sahip denebilir (R² ≈ %25).
DeBruine, L., & Barr, D. (2022). Data skills for reproducible research. Zenodo. https://doi.org/10.5281/zenodo.6527194
R Core Team. (2022). R: A language and environment for statistical computing. R Foundation for Statistical Computing. https://www.R-project.org/
Xie, Y. (2016). Bookdown: Authoring books and technical documents with R markdown. Chapman; Hall/CRC. https://bookdown.org/yihui/bookdown
Xie, Y. (2022). Bookdown: Authoring books and technical documents with r markdown. https://github.com/rstudio/bookdown