1 Yol Analizi ve Aracılık Etkisi

Sosyal bilimlerde değişkenler arasındaki ilişkileri yalnızca “var mı, yok mu” düzeyinde sorgulamak çoğu zaman yeterli olmaz. Araştırmacılar giderek daha karmaşık sorular sormaya başlamıştır. Bu etki nasıl işliyor? Hangi mekanizma üzerinden aktarılıyor?

1.1 Yol Analizi

Yol analizi, birden fazla değişken arasındaki nedensel ilişkilerin aynı anda test edilmesine olanak tanıyan çok değişkenli bir istatistiksel tekniktir. Temelde regresyon analizinin genişletilmiş bir biçimi olan yol analizi; bağımsız, bağımlı ve aracı değişkenler arasındaki doğrudan ve dolaylı etkileri tek bir model çerçevesinde ele alır. Her ilişki bir “yol katsayısı” ile temsil edilir ve bu katsayılar söz konusu ilişkinin yönünü ve büyüklüğünü gösterir. Yol analizi, araştırmacının kuramsal olarak önerdiği nedensel yapıyı veriyle sınamasına imkân tanıdığı için doğrulayıcı bir nitelik taşır.

1.2 Aracılık Etkisi

Aracılık etkisi, bir bağımsız değişkenin bağımlı değişken üzerindeki etkisinin en az bir üçüncü değişken (aracı değişken (M)) üzerinden işlediğini öne süren bir modeldir. Başka bir deyişle aracılık analizi, “X, Y’yi etkiliyor” gözleminin ötesine geçerek “X, Y’yi neden ve nasıl etkiliyor?” sorusunu yanıtlamaya çalışır. Aracı değişken, bağımsız değişkenden etkilenen ve aynı zamanda bağımlı değişkeni etkileyen bir köprü konumundadır. Aracılık etkisi tam ya da kısmi olabilir. Bu ayrım, bağımsız değişkenin bağımlı değişken üzerindeki doğrudan etkisinin aracı kontrol edildiğinde ne ölçüde azaldığına göre belirlenir.

1.2.1 Doğrudan Etki

Doğrudan etki, aracı değişken modele dahil edildiğinde bağımsız değişkenin (X) bağımlı değişken (Y) üzerinde kalan etkisidir. Yani X’in Y’yi aracı üzerinden geçmeksizin doğrudan etkileme gücünü ifade eder. Yol diyagramlarında X’ten Y’ye çizilen ve M’yi atlayarak geçen ok ile gösterilir. Aracılık etkisi güçlendikçe doğrudan etki küçülür; tam aracılık durumunda ise sıfıra yaklaşır.

1.2.2 Dolaylı Etki

Dolaylı etki, bağımsız değişkenin (X) bağımlı değişken (Y) üzerindeki etkisinin aracı değişken (M) üzerinden aktarılan kısmıdır. Matematiksel olarak a × b çarpımı ile hesaplanır: a yolu X’in M’yi etkileme gücünü, b yolu ise M’nin Y’yi etkileme gücünü gösterir. Dolaylı etkinin anlamlılığı Sobel testi ya da örnekleme yeniden örnekleme (bootstrap) yöntemiyle sınanır; küçük örneklemlerde normallik varsayımına dayanmayan bootstrap yaklaşımı tercih edilir.

1.2.3 Toplam Etki

Toplam etki, bağımsız değişkenin (X) bağımlı değişken (Y) üzerindeki doğrudan ve dolaylı etkilerinin toplamıdır: c = c’ + ab. Aracı değişken modele eklenmeden önce kurulan sade regresyonda elde edilen katsayı (c yolu) toplam etkiyi verir. Toplam etkinin bileşenlerine ayrıştırılması, bir ilişkinin ne kadarının doğrudan, ne kadarının ise aracı mekanizma üzerinden işlediğini görünür kılar ve araştırmanın kuramsal açıklamasını güçlendirir.

Gerekli kütüphanelerin çağrılması:

library(GGally)
library(lavaan)       
library(broom)       
library(DT)           
library(dplyr)       
library(knitr)        
library(semPlot)      
library(semptools)    
library(stargazer)  
library(multilevel)   
library(bda)          
library(mediation)
library(gvlma)
library(rockchalk)

2 Veri Seti Tanıtımı

Veri seti TIMSS 2023 öğrenci veri setinden elde edilmiştir. Yol analizi ve aracılık etkisi analizleri için öğrenci verilerinden elde edilen iki ayrı veri seti ile çalışılmıştır.

Birinci veri seti (ogrenci.sav) üç değişkenden oluşmaktadır: matematik kolaylığına ilişkin tutum (BSBM22D-bağımsız değişken), matematiği sevme (BSBM19E-aracı değişken) ve matematik başarı puanı (BSMMAT01-bağımlı değişken). İkinci veri seti (veri.sav) ise özgüven (OZGUVEN1), matematiği sevme (SEVME1), değer (DEGER1) ve matematik puanı (MAT01) değişkenlerini içermekte olup yol analizi için kullanılmıştır. Kuramsal olarak matematik başarısının, öğrencinin derse yönelik tutumunu şekillendirdiği ve bu tutumun da değer algısına zemin hazırladığı varsayılmaktadır.

3 Varsayımların İncelenmesi

library(haven)
ogrenci <- read_sav("ogrenci.sav")
ogrenci <- expss::drop_var_labs(ogrenci)
head(ogrenci)
## # A tibble: 6 × 3
##   BSBM19E BSBM22D BSMMAT01
##     <dbl>   <dbl>    <dbl>
## 1       1       1     311.
## 2       4       3     400.
## 3       3       4     517.
## 4       4       3     344.
## 5       1       3     479.
## 6       4       4     383.

Kayıp Veri

library(naniar)
ogrenci <- read_sav("ogrenci.sav")
any_na(ogrenci) 
## [1] TRUE
n_miss(ogrenci) 
## [1] 384
prop_miss(ogrenci)
## [1] 0.02598985
miss_var_summary(ogrenci)
## # A tibble: 3 × 3
##   variable n_miss pct_miss
##   <chr>     <int>    <num>
## 1 BSBM22D     194     3.94
## 2 BSBM19E     190     3.86
## 3 BSMMAT01      0     0
na.omit(ogrenci)
## # A tibble: 4,660 × 3
##    BSBM19E               BSBM22D               BSMMAT01 
##    <dbl+lbl>             <dbl+lbl>             <dbl+lbl>
##  1 1 [Agree a lot]       1 [Agree a lot]       311.     
##  2 4 [Disagree a lot]    3 [Disagree a little] 400.     
##  3 3 [Disagree a little] 4 [Disagree a lot]    517.     
##  4 4 [Disagree a lot]    3 [Disagree a little] 344.     
##  5 1 [Agree a lot]       3 [Disagree a little] 479.     
##  6 4 [Disagree a lot]    4 [Disagree a lot]    383.     
##  7 1 [Agree a lot]       1 [Agree a lot]       429.     
##  8 1 [Agree a lot]       2 [Agree a little]    459.     
##  9 1 [Agree a lot]       2 [Agree a little]    537.     
## 10 2 [Agree a little]    3 [Disagree a little] 479.     
## # ℹ 4,650 more rows

Veri setinde BSBM22D değişkeninde %3.94, BSBM19E değişkeninde ise %3.86 oranında kayıp veri tespit edilmiştir. BSMMAT01 değişkeninde kayıp veri bulunmamaktadır. Kayıp veri oranları %5’in altında kaldığından liste bazlı silme (na.omit) yöntemi uygulanmış ve analizler 4.660 gözlem üzerinden yürütülmüştür.

Durbin-Watson testi ile hata terimlerinin ilişkisiz olduğu belirlenebilir.

library(car)
model<-lm(BSMMAT01~BSBM22D+BSBM19E, data=ogrenci)
durbinWatsonTest(model)
##  lag Autocorrelation D-W Statistic p-value
##    1       0.2994299      1.399587       0
##  Alternative hypothesis: rho != 0

Durbin-Watson test istatistiği 1.40 olarak hesaplanmıştır. Bu değer kabul edilebilir sınır olan 1.5’in biraz altında kalmaktadır.

Doğrusallık:

dogrusallik <- plot(model,1)

Artıklar vs. Tahmin Grafiği incelendiğinde kırmızı çizginin yataya yakın seyrettiği görülmektedir. Bununla birlikte, değişkenlerin Likert ölçeğinden elde edilmiş olması nedeniyle tahmin değerlerinin süreksiz bantlar halinde kümelendiği dikkat çekmektedir. Bu durum verinin yapısından kaynaklanmakta olup doğrusallık varsayımı genel olarak karşılanmaktadır.

Uç Değerler:

ucdegerbsiz<-boxplot(ogrenci$BSBM22D, ylab= "matkolay")

ucdegerbli<-boxplot(ogrenci$BSMMAT01, ylab="matpuan")

ucdegeraraci<-boxplot(ogrenci$BSBM19E, ylab="matsevme")

Kutu grafikleri incelendiğinde matematik başarı puanında (BSMMAT01) tek bir uç değer gözlemlenmiş, diğer değişkenlerde uç değere rastlanmamıştır. Mahalanobis uzaklığı hesaplamasında ise çok değişkenli uç değer bulunmamıştır (integer(0)). Z puanı incelemesinde kayıp veriler nedeniyle BSBM19E ve BSBM22D için hesaplama yapılamamış ancak BSMMAT01 için değerlerin kabul edilebilir aralıkta olduğu görülmüştür.

Tek değişkenli uç değerlerin incelenmesi için z puanları kullanılır.

library(outliers)
z.scores<-scores(ogrenci, type="z")
round(head(z.scores),2)
##   BSBM19E BSBM22D BSMMAT01
## 1      NA      NA    -1.75
## 2      NA      NA    -0.94
## 3      NA      NA     0.12
## 4      NA      NA    -1.44
## 5      NA      NA    -0.22
## 6      NA      NA    -1.10

Çok değişkenli uç değerleri belirlemek için Mahalanobis uzaklığı hesaplanmıştır.

md <- mahalanobis(ogrenci, center = colMeans(ogrenci), cov = cov(ogrenci))
alpha <- .001
cutoff <- (qchisq(p = 1 - alpha, df = ncol(ogrenci)))
ucdegerler<-which(md>cutoff)
ucdegerler
## integer(0)

Normallik:

plot(model,2)

Eş Varyanslılık:

plot(model,3)

Çok Değişkenli Normalliğin İncelenmesi

library(psych)
mardia(ogrenci)

## Call: mardia(x = ogrenci)
## 
## Mardia tests of multivariate skew and kurtosis
## Use describe(x) the to get univariate tests
## n.obs = 4660   num.vars =  3 
## b1p =  0.47   skew =  364.48  with probability  <=  3.4e-72
##  small sample skew =  364.84  with probability <=  2.8e-72
## b2p =  14.32   kurtosis =  -4.22  with probability <=  2.5e-05

Çoklu Bağlantılılık:

coklubag<-cor(ogrenci)
round(coklubag,2)
##          BSBM19E BSBM22D BSMMAT01
## BSBM19E        1      NA       NA
## BSBM22D       NA       1       NA
## BSMMAT01      NA      NA        1

VIF ve Tolerance Değerleri:

library(olsrr)
ols_vif_tol(model)
##   Variables Tolerance      VIF
## 1   BSBM22D 0.5777438 1.730871
## 2   BSBM19E 0.5777438 1.730871

Korelasyon matrisinde kayıp veri nedeniyle değişkenler arası korelasyon katsayıları hesaplanamamıştır. Ancak VIF değerleri BSBM22D ve BSBM19E için 1.73, Tolerance değerleri ise 0.578 olarak bulunmuştur. Her iki değişken de önerilen sınır değerlerin (VIF < 10, Tolerance > 0.10) çok altında kalmaktadır. Modelde çoklu bağlantılılık sorunu bulunmamaktadır.

4 Yol Analizi

Yol analizi, bağımlı değişken ile iki veya daha fazla bağımsız değişken arasındaki ilişkileri inceleyerek nedensel modelleri değerlendirmek için kullanılan bir istatistiksel analiz yöntemidir.

library(dplyr)
library(haven)
ogrenci1 <- read_sav("veri.sav")
colnames(ogrenci1) <- c("ID","TOT","MAT01","MAT02","MAT03","MAT04","MAT05","SEVME0","SEVME1","OZGUVEN0","OZGUVEN1","DEGER0","DEGER1")
ogrenci <- na.omit(ogrenci1)
yol_model <-  'OZGUVEN1 ~ MAT01
               SEVME1   ~ MAT01
              DEGER1 ~ OZGUVEN1 +  SEVME1
              OZGUVEN1 ~~ SEVME1'
library(lavaan)
yol_fit <- sem(yol_model, ogrenci1)
library(semPlot)
semPaths(yol_fit,rotation=2, curvePivot = TRUE,
           sizeMan = 12, sizeInt = 1, 
            sizeLat = 4,
           edge.label.cex = 1.8,
           pastel=TRUE,
           nCharNodes = 0, nCharEdges = 0)

fitmeasures(yol_fit,fit.measures = c("chisq" ,"df" , "pvalue"))
##  chisq     df pvalue 
##  9.438  1.000  0.002
fitMeasures(yol_fit, c("rmsea","rmsea.ci.lower",
                       "rmsea.ci.upper","rmsea.pvalue"))
##          rmsea rmsea.ci.lower rmsea.ci.upper   rmsea.pvalue 
##          0.042          0.021          0.069          0.641
fitMeasures(yol_fit, "srmr")
## srmr 
## 0.01
fitmeasures(yol_fit,fit.measures = c("cfi","tli","nnfi"))
##   cfi   tli  nnfi 
## 0.998 0.990 0.990
fitmeasures(yol_fit,fit.measures = c("chisq" ,"df" ,"pvalue",
                                     "cfi","tli","rmsea",    
                                     "rmsea.ci.lower","rmsea.ci.upper","srmr"))
##          chisq             df         pvalue            cfi            tli 
##          9.438          1.000          0.002          0.998          0.990 
##          rmsea rmsea.ci.lower rmsea.ci.upper           srmr 
##          0.042          0.021          0.069          0.010

Genel olarak modelin veriyle uyumlu olduğu söylenebilir.

resid(yol_fit, type='normalized')
## $type
## [1] "normalized"
## 
## $cov
##          OZGUVE SEVME1 DEGER1 MAT01
## OZGUVEN1   0.00                    
## SEVME1     0.00   0.00             
## DEGER1     0.00   0.00   0.00      
## MAT01      0.00   0.00  -2.23  0.00
modindices(yol_fit, sort = TRUE)
##         lhs op    rhs    mi    epc sepc.lv sepc.all sepc.nox
## 13 OZGUVEN1  ~ DEGER1 9.429 -0.076  -0.076   -0.082   -0.082
## 10 OZGUVEN1 ~~ DEGER1 9.429 -0.033  -0.033   -0.082   -0.082
## 16   DEGER1  ~  MAT01 9.429  0.000   0.000   -0.045    0.000
## 19    MAT01  ~ DEGER1 9.429 -8.953  -8.953   -0.063   -0.063

Modelin Yeniden Tanımlanması

yol_model_v1 <- 'OZGUVEN1 ~ MAT01
              DEGER1 ~ OZGUVEN1 +  SEVME1
              OZGUVEN1 ~~ DEGER1
              OZGUVEN1 ~~ SEVME1'
yol_fit_v1 <- sem(yol_model_v1, ogrenci1)
semPaths(yol_fit_v1,rotation=2, curvePivot = TRUE,
sizeMan = 12, sizeInt = 1, 
sizeLat = 4,
edge.label.cex = 1.8,
pastel=TRUE,
nCharNodes = 0, nCharEdges = 0)

fitmeasures(yol_fit_v1,fit.measures=c("chisq","p","df"))
##   chisq      df 
## 497.812   1.000
p_pa <- 
semPaths(yol_fit_v1, whatLabels = "est",
sizeMan = 10,
edge.label.cex = 1.15,
style = "ram",layout = "spring" ,
nCharNodes = 0, nCharEdges = 0)

p_pa_2 <- semptools::mark_sig(p_pa, yol_fit_v1)
plot(p_pa_2)

summary(yol_fit)
## lavaan 0.6-21 ended normally after 22 iterations
## 
##   Estimator                                         ML
##   Optimization method                           NLMINB
##   Number of model parameters                         8
## 
##                                                   Used       Total
##   Number of observations                          4713        4925
## 
## Model Test User Model:
##                                                       
##   Test statistic                                 9.438
##   Degrees of freedom                                 1
##   P-value (Chi-square)                           0.002
## 
## Parameter Estimates:
## 
##   Standard errors                             Standard
##   Information                                 Expected
##   Information saturated (h1) model          Structured
## 
## Regressions:
##                    Estimate   Std.Err  z-value  P(>|z|)
##   OZGUVEN1 ~                                           
##     MAT01             -0.004    0.000  -44.429    0.000
##   SEVME1 ~                                             
##     MAT01             -0.002    0.000  -22.914    0.000
##   DEGER1 ~                                             
##     OZGUVEN1           0.095    0.016    5.806    0.000
##     SEVME1             0.483    0.015   32.123    0.000
## 
## Covariances:
##                    Estimate   Std.Err  z-value  P(>|z|)
##  .OZGUVEN1 ~~                                          
##    .SEVME1             0.232    0.007   31.477    0.000
## 
## Variances:
##                    Estimate   Std.Err  z-value  P(>|z|)
##    .OZGUVEN1           0.367    0.008   48.544    0.000
##    .SEVME1             0.553    0.011   48.544    0.000
##    .DEGER1             0.432    0.009   48.544    0.000
standardizedsolution(yol_fit)
##        lhs op      rhs est.std    se       z pvalue ci.lower ci.upper
## 1 OZGUVEN1  ~    MAT01  -0.543 0.009 -57.320      0   -0.562   -0.525
## 2   SEVME1  ~    MAT01  -0.317 0.013 -24.786      0   -0.342   -0.292
## 3   DEGER1  ~ OZGUVEN1   0.088 0.015   5.818      0    0.058    0.117
## 4   DEGER1  ~   SEVME1   0.485 0.014  34.931      0    0.457    0.512
## 5 OZGUVEN1 ~~   SEVME1   0.516 0.011  48.266      0    0.495    0.537
## 6 OZGUVEN1 ~~ OZGUVEN1   0.705 0.010  68.429      0    0.685    0.725
## 7   SEVME1 ~~   SEVME1   0.900 0.008 111.242      0    0.884    0.916
## 8   DEGER1 ~~   DEGER1   0.708 0.011  63.618      0    0.686    0.730
## 9    MAT01 ~~    MAT01   1.000 0.000      NA     NA    1.000    1.000

Standartlaştırılmış Artık

fitted(yol_fit)$cov
##             OZGUVE    SEVME1    DEGER1     MAT01
## OZGUVEN1     0.520                              
## SEVME1       0.330     0.615                    
## DEGER1       0.209     0.328     0.610          
## MAT01      -43.294   -27.420   -17.351 12206.404
inspectSampleCov(yol_fit,data=ogrenci1)
## $cov
##             OZGUVE    SEVME1    DEGER1     MAT01
## OZGUVEN1     0.520                              
## SEVME1       0.330     0.615                    
## DEGER1       0.209     0.328     0.610          
## MAT01      -43.294   -27.420   -20.078 12206.404
parameterEstimates(yol_fit,standardized = TRUE)
##        lhs op      rhs       est    se       z pvalue  ci.lower  ci.upper
## 1 OZGUVEN1  ~    MAT01    -0.004 0.000 -44.429      0    -0.004    -0.003
## 2   SEVME1  ~    MAT01    -0.002 0.000 -22.914      0    -0.002    -0.002
## 3   DEGER1  ~ OZGUVEN1     0.095 0.016   5.806      0     0.063     0.127
## 4   DEGER1  ~   SEVME1     0.483 0.015  32.123      0     0.454     0.512
## 5 OZGUVEN1 ~~   SEVME1     0.232 0.007  31.477      0     0.218     0.247
## 6 OZGUVEN1 ~~ OZGUVEN1     0.367 0.008  48.544      0     0.352     0.381
## 7   SEVME1 ~~   SEVME1     0.553 0.011  48.544      0     0.531     0.575
## 8   DEGER1 ~~   DEGER1     0.432 0.009  48.544      0     0.415     0.450
## 9    MAT01 ~~    MAT01 12206.404 0.000      NA     NA 12206.404 12206.404
##      std.lv std.all   std.nox
## 1    -0.004  -0.543    -0.005
## 2    -0.002  -0.317    -0.003
## 3     0.095   0.088     0.088
## 4     0.483   0.485     0.485
## 5     0.232   0.516     0.516
## 6     0.367   0.705     0.705
## 7     0.553   0.900     0.900
## 8     0.432   0.708     0.708
## 9 12206.404   1.000 12206.404
inspect(yol_fit, "rsquare")
## OZGUVEN1   SEVME1   DEGER1 
##    0.295    0.100    0.292
library(knitr)
library(dplyr)

standardizedsolution(yol_fit) %>%
  filter(op == "~") %>%
  dplyr::select(lhs, rhs, est.std, se, z, pvalue) %>%
  dplyr::rename('Değişkenler' = lhs, 
                'Gösterge' = rhs, 
                'B' = est.std, 
                'SE' = se, 
                'Z' = z, 
                'p-value' = pvalue) %>%
  knitr::kable(digits = 3, booktabs = TRUE, format = "markdown",
               caption = "Yol Katsayıları")
Yol Katsayıları
Değişkenler Gösterge B SE Z p-value
OZGUVEN1 MAT01 -0.543 0.009 -57.320 0
SEVME1 MAT01 -0.317 0.013 -24.786 0
DEGER1 OZGUVEN1 0.088 0.015 5.818 0
DEGER1 SEVME1 0.485 0.014 34.931 0

5 Aracılık Analizi

Aracılık etkisinin istatistiksel olarak ispatlanmasına ilişkin iki temel yaklaşım bulunmaktadır: Baron ve Kenny’nin nedensellik yaklaşımı ve çağdaş yaklaşım. Birinci yaklaşım uzun zamandır kullanılan ve oldukça popüler olan bir yaklaşımdır. Ancak son yıllarda öne sürülen çağdaş yaklaşım geleneksel yaklaşıma önemli eleştiriler getirmiştir.

Yöntem 1: Baron & Kenny

ogrenci <- read_sav("ogrenci.sav")
library(stargazer)

fit <- lm(BSMMAT01 ~ BSBM22D, data=ogrenci)

fita <- lm(BSBM19E ~ BSBM22D, data=ogrenci)

fitb <- lm(BSMMAT01 ~ BSBM19E + BSBM22D, data=ogrenci)

fitc <- lm(BSBM22D ~ BSMMAT01 + BSBM19E, data=ogrenci)

stargazer(fit, fita, fitb, fitc, type = "text", title = "Baron and Kenny Yöntemi ile Aracılık Etkisi",digits = 2,
          font.size ="tiny")
## 
## Baron and Kenny Yöntemi ile Aracılık Etkisi
## ===========================================================================================================================
##                                                               Dependent variable:                                          
##                     -------------------------------------------------------------------------------------------------------
##                             BSMMAT01                  BSBM19E                   BSMMAT01                  BSBM22D          
##                               (1)                       (2)                       (3)                       (4)            
## ---------------------------------------------------------------------------------------------------------------------------
## BSMMAT01                                                                                                 -0.002***         
##                                                                                                           (0.0001)         
##                                                                                                                            
## BSBM19E                                                                        -13.73***                  0.53***          
##                                                                                  (1.69)                    (0.01)          
##                                                                                                                            
## BSBM22D                    -42.41***                  0.71***                  -32.90***                                   
##                              (1.40)                    (0.01)                    (1.84)                                    
##                                                                                                                            
## Constant                   620.01***                  0.40***                  626.36***                  2.45***          
##                              (4.03)                    (0.03)                    (4.09)                    (0.07)          
##                                                                                                                            
## ---------------------------------------------------------------------------------------------------------------------------
## Observations                 4,731                     4,660                     4,660                     4,660           
## R2                            0.16                      0.42                      0.18                      0.46           
## Adjusted R2                   0.16                      0.42                      0.18                      0.46           
## Residual Std. Error    101.16 (df = 4729)         0.87 (df = 4658)         100.25 (df = 4657)         0.77 (df = 4657)     
## F Statistic         917.10*** (df = 1; 4729) 3,404.40*** (df = 1; 4658) 496.66*** (df = 2; 4657) 1,978.44*** (df = 2; 4657)
## ===========================================================================================================================
## Note:                                                                                           *p<0.1; **p<0.05; ***p<0.01

Baron & Kenny’nin dört adımlı yaklaşımı uygulandığında tüm adımların koşullarını karşıladığı görülmektedir.

#Sobel Test
library(multilevel)
sobel(ogrenci$BSBM22D, ogrenci$BSBM19E, ogrenci$BSMMAT01)
## $`Mod1: Y~X`
##              Estimate Std. Error   t value      Pr(>|t|)
## (Intercept) 620.81288   4.058061 152.98265  0.000000e+00
## pred        -42.60032   1.408482 -30.24555 1.237287e-183
## 
## $`Mod2: Y~X+M`
##              Estimate Std. Error    t value     Pr(>|t|)
## (Intercept) 626.35702   4.087670 153.230815 0.000000e+00
## pred        -32.90007   1.840279 -17.877757 3.445747e-69
## med         -13.73138   1.692788  -8.111691 6.328481e-16
## 
## $`Mod3: M~X`
##              Estimate Std. Error  t value     Pr(>|t|)
## (Intercept) 0.4037568 0.03488319 11.57454 1.447716e-30
## pred        0.7064299 0.01210735 58.34721 0.000000e+00
## 
## $Indirect.Effect
## [1] -9.700255
## 
## $SE
## [1] 1.207338
## 
## $z.value
## [1] -8.034419
## 
## $N
## [1] 4660

Sobel testi dolaylı etkinin anlamlı olduğunu doğrulamaktadır.

Yöntem 2: mediate Yöntemi

library(mediation)
library(gvlma)

fitM <- lm(BSBM19E ~ BSBM22D, data=ogrenci)
fitY <- lm(BSMMAT01 ~ BSBM22D + BSBM19E, data=ogrenci)
gvlma(fitM)
## 
## Call:
## lm(formula = BSBM19E ~ BSBM22D, data = ogrenci)
## 
## Coefficients:
## (Intercept)      BSBM22D  
##      0.4038       0.7064  
## 
## 
## ASSESSMENT OF THE LINEAR MODEL ASSUMPTIONS
## USING THE GLOBAL TEST ON 4 DEGREES-OF-FREEDOM:
## Level of Significance =  0.05 
## 
## Call:
##  gvlma(x = fitM) 
## 
##                     Value   p-value                   Decision
## Global Stat        191.37 0.000e+00 Assumptions NOT satisfied!
## Skewness            19.16 1.203e-05 Assumptions NOT satisfied!
## Kurtosis            43.19 4.972e-11 Assumptions NOT satisfied!
## Link Function      116.36 0.000e+00 Assumptions NOT satisfied!
## Heteroscedasticity  12.66 3.728e-04 Assumptions NOT satisfied!
gvlma(fitY)
## 
## Call:
## lm(formula = BSMMAT01 ~ BSBM22D + BSBM19E, data = ogrenci)
## 
## Coefficients:
## (Intercept)      BSBM22D      BSBM19E  
##      626.36       -32.90       -13.73  
## 
## 
## ASSESSMENT OF THE LINEAR MODEL ASSUMPTIONS
## USING THE GLOBAL TEST ON 4 DEGREES-OF-FREEDOM:
## Level of Significance =  0.05 
## 
## Call:
##  gvlma(x = fitY) 
## 
##                      Value   p-value                   Decision
## Global Stat        60.9928 1.794e-12 Assumptions NOT satisfied!
## Skewness           46.3744 9.768e-12 Assumptions NOT satisfied!
## Kurtosis            9.6823 1.861e-03 Assumptions NOT satisfied!
## Link Function       4.5599 3.273e-02 Assumptions NOT satisfied!
## Heteroscedasticity  0.3762 5.397e-01    Assumptions acceptable.
plot(gvlma(fitM),1)

library(mediation)
fitMed <- mediation::mediate(fitM, fitY, treat="BSBM22D", mediator="BSBM19E")
summary(fitMed)
## 
## Causal Mediation Analysis 
## 
## Quasi-Bayesian Confidence Intervals
## 
##                 Estimate 95% CI Lower 95% CI Upper   p-value    
## ACME            -9.78205    -12.29697     -7.39086 < 2.2e-16 ***
## ADE            -32.81100    -36.44982    -28.81973 < 2.2e-16 ***
## Total Effect   -42.59306    -45.20380    -39.66323 < 2.2e-16 ***
## Prop. Mediated   0.22883      0.17293      0.29192 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Sample Size Used: 4660 
## 
## 
## Simulations: 1000
library(mediation)
fitMedBoot <- mediation::mediate(fitM, fitY, boot=TRUE, sims=999, treat="BSBM22D", mediator="BSBM19E")
summary(fitMedBoot)
## 
## Causal Mediation Analysis 
## 
## Nonparametric Bootstrap Confidence Intervals with the Percentile Method
## 
##                 Estimate 95% CI Lower 95% CI Upper   p-value    
## ACME            -9.70026    -12.31981     -7.43315 < 2.2e-16 ***
## ADE            -32.90007    -36.65409    -29.00091 < 2.2e-16 ***
## Total Effect   -42.60032    -45.42958    -39.86897 < 2.2e-16 ***
## Prop. Mediated   0.22770      0.17146      0.29324 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Sample Size Used: 4660 
## 
## 
## Simulations: 999

Aracılık oranı yaklaşık %22.7’dir. Yani matematik kolaylık algısının başarı üzerindeki toplam etkisinin yaklaşık beşte biri, matematiği sevme değişkeni aracılığıyla işlemektedir. Bootstrap analizi (999 tekrar) bu sonuçları neredeyse aynı değerlerle doğrulamaktadır (ACME = −9.70, p < .001). gvlma varsayım testlerinin bazı koşulları ihlal ettiğini göstermesi, bootstrap tercihini hem metodolojik hem de pratik açıdan güçlü biçimde desteklemektedir.

6 Genel Değerlendirme ve Öğrenme Yansıması

Bu çalışmada yol analizi ve aracılık etkisi kavramlarını hem kuramsal hem de uygulamalı düzeyde ele alma fırsatı buldum. Analizlerin teknik boyutunun ötesinde değişkenler arasındaki ilişkilerin nasıl ve neden işlediğini sorgulamanın istatistiksel bir yönteme nasıl dönüştüğünü daha net kavradım.

Varsayım kontrollerinin analizin belki de en kritik aşaması olduğunu bu çalışmayı yaparken bir kez daha gördüm. Normallik, eş varyanslılık ve çoklu bağlantılılık gibi koşulların karşılanıp karşılanmadığını yalnızca test istatistikleriyle değil, grafik araçlarıyla da değerlendirmek, verilere daha bütünsel bakmayı gerektiriyor.

Baron & Kenny’nin dört adımlı yöntemi, aracılık mantığını adım adım kurmak açısından öğretici olmakla birlikte, dolaylı etkinin anlamlılığını doğrudan test edememesi önemli bir sınırlılık. Bu noktada mediation paketinin sunduğu bootstrap yaklaşımının neden tercih edilmesi gerektiği, özellikle küçük örneklemlerde ve normallik varsayımının tam sağlanamadığı durumlarda pratikte daha iyi anlaşılıyor. İki yöntemi aynı veri üzerinde uygulayarak sonuçların nasıl örtüştüğünü ya da ayrıştığını görmek, yalnızca bir yöntemi ezberlemekten çok daha fazlasını öğretti. Teknik açıdan lavaan ve semPlot paketlerinin yol diyagramlarını görselleştirmedeki pratikliği dikkat çekiciydi. Modeli bir diyagram olarak görmek, katsayı tablolarına bakmaktan çok daha hızlı bir şekilde “bu model ne söylüyor?” sorusunu yanıtlıyor.

Sonuç olarak bu görev istatistiksel bir tekniği öğrenmekten ziyade nedensellik ve aracılık üzerine düşünmeyi öğrenmek gibi hissettirdi. Bir değişkenin diğerini ne kadar etkilediğini sormak kadar, bu etkinin hangi mekanizma üzerinden işlediğini sormak da en az o kadar anlamlı bir araştırma sorusu.