Regresyon Pekiştirme ve Proje Ön Hazırlığı

Bu dosyada Regresyon Pekiştirme ve Proje Ön Hazırlığı ödevi aktarılacaktır.

💬 Teorik Pekiştirme ve Öğrenme Günlüğü

IMS Tutorials-03 Model kaynağı üzerindeki çalışmalar yapılmıştır. İlgili kısımlarda tuttuğum notları aktarmaktayım.

*log-linear model for body weight as a function of brain weight

*lm(log(body_wt) ~ log(brain_wt), data = mammals)

Bazı Fonksiyonlar:

  • lm()

  • coef()

  • summary()

  • fitted.values()

  • residuals()

  • broom paketi ; augment()

  • predict()

Bu bölümde yukarıdaki fonksiyonlar kullanılmıştır.

Sum of squared errors (SSE)

total_tail_mod %>%

augment ( ) %>%

summarize (SSE = sum (.resid^2),

SSE_also = (n()-1)* var (.resid))

The RMSE is a measure of the differences between predicted values by a model or an estimator and the observed values.

#view summary of model

summary(wgt_hgt_mod)

#compute the mean of the residuals

mean(residuals(wgt_hgt_mod))

#compute RMSE

sqrt(sum(residuals(wgt_hgt_mod)^2) / df.residual(wgt_hgt_mod))

“Essentially, all models are wrong, but some are useful”-George BOX

#view model summary

summary(wgt_hgt_mod)

# Compute R-squared

wgt_hgt_augment |>

summarize(var_y = var(wgt), var_e = var(.resid)) |>

mutate(R_squared = 1 - var_e / var_y)

.hat

.cooksd

slice_max()

order_by

Rank points of high leverage

mod_slg_obp |>

augment() |>

slice_max(order_by = .hat, n = 6)

displ

is_newer

plotly

#load plotly package

library(plotly)

#draw the 3D scatterplot

p <- plot_ly(data = mariokart, z = ~ total_pr,x = ~duration, y = ~start_pr, opacity = 0.6) |> add_markers()

#draw the plane

p |> add_surface(x = ~x, y = ~y, z = ~plane, showscale = FALSE)

çizgi ekleme:

model_space +

geom_hline(yintercept = 30, color = “red”)

bir diğer örnek;

model_space +

geom_vline(xintercept = 280, color = “red”)

💬Proje Ön Hazırlığı (Literatür ve Veri Keşfi)

🧩 Makalenin Künyesi: Liu, Y., & Wang, J. (2022). The mediating–moderating model of inquiry-based learning and science self-efficacy: evidence from PISA 2015. International Journal of Science Education, 44(7), 1096–1119. https://doi.org/10.1080/09500693.2022.2067364

Yukarıdaki makale okunmuştur.

Analiz Hayes’in PROCESS Makrosu ile gerçekleştirilmiş.

Kelime olarak iki kelimeyi ingilizce’de çok karıştırdığım için buraya tekrar not alarak başlamak istiyorum.

mediating: aracılık moderating: düzenleyicilik

Değişkenler

X: Sorgulama temelli öğrenme

Y: Fen bilimleri öz yeterliği

Z: Fen bilimleri ilgisi (mediator-aracı)

D: Öğretmen desteği (mediating-düzenleyici)

Makaledeki araştırma soruları:

  1. Sorgulama temelli öğrenme ve fen bilimleri öz yeterliliği arasındaki ilişki ile fen bilimleri ilgisi arasında nasıl bir ilişki vardır?

Not: Buradan hareketle fen bilimleri ilgisinin aracı değişken olduğunu görüyoruz.

  1. Bu ilişkide öğretmen desteğinin düzenleyici rolü nedir?

Not: Buradan hareketle öğretmen desteğinin düzenleyici değişken olduğunu görüyoruz.

Yazarların kullandığı değişkenler ve PISA veri setinde yer aldığı kodlar:

  1. Sorgulama temelli öğrenme: inquiry-based science teaching and learning practices (IBTEACH)

  2. Öğretmen desteği: teacher support in science classes of student’s choice (TEACHSUP)

  3. Fen bilimleri öz-yeterliliği: science self-efficacy (SCIEEFF)

  4. Fen bilimleri ilgisi: interest in broad science topics (INTBRSCI)

    Ek olarak şu değişkenler kontrol edilmiştir: Cinsiyet (gender), Disiplin iklimi (disciplinary climate)

Kurulan modelin açıklaması: Sorgulama temelli öğrenme ile fen bilimleri öz yeterliliği arasındaki ilişkide fen bilimleri ilgisinin aracı rolü incelenmiştir. Bununla birlikte bu ilişkide öğretmen desteğinin düzenleyici rolü incelenmiştir. Sorgulama temelli öğrenme fen bilimi ilgisine sebep olur ve fen bilimi ilgisi fen bilimi öz-yeterliliğini etkiler. Bu ilişkide fen bilimleri ilgisi toplam etkinin %20.1’ini oluşturmaktadır. Bu da anlamlı bir orandır. Öğretmen desteği arttıkça sorgulama temelli öğrenme ile fen bilimleri öz yeterliliği arasında ilişki güçlenir. Öğretmen detesği arttıkça öz yeterlilik artar.

Model:

🧩 Örnek bir diğer çalışma: Peker, C. (2025). Relations among parenting stress, parent-teacher relationship and parent engagement: A mediation model (Master’s thesis, Middle East Technical University).

Ebeveynlik stresi, ebeveyn-öğretmen ilişkisi ve ebeveyn katılımı arasındaki ilişkiler: bir aracılık modeli başlıklı yüksek lisans tezi incelenmiştir. Daha öğrenme aşamasında olduğum için karmaşık olmayan bir çalışmayı incelemeyi tercih ettim.

Değişkenler:

X: parenting stress (ebeveyn stresi) (independent variable-bağımsız değişken)

Y: parent engagement in early childhood education (erken çocukluk eğitiminde ebeveyn katılımı) (dependent variable-bağımlı değişken)

Z: parent-teacher relationship (aile-öğretmen ilişkisi) (mediator variable-aracı değişken)

Kayıp veri analizi için R programındaki mice paketinin kullanıldığından bahsedilmiştir.

Modele bakıldığında; (Peker, 2025). aracılık analizi sonuçları, ebeveyn stresinin anlamlı ve negatif bir biçimde erken çocukluk eğitiminde aile bağlılığını (β =-.14, p <.01) ve ebeveyn-öğretmen ilişkisini (β =-.13, p <.05) yordadığını göstermiĢtir. Ek olarak, ebeveyn-öğretmen ilişkisi erken çocukluk eğitiminde aile bağlılığının anlamlı ve pozitif yordayıcısıdır (β = .55, p <.001). Sonuçlara göre tüm değişkenler arasındaki doğrudan ilişkilerinin anlamlı olduğunu ortaya koymuş olup modeldeki dolaylı ilişki anlamlı bulunmuştur (β =-.07, 95% CI [-.14,-.00]). Ebeveyn-öğretmen ilişkisinin kısmi ya da tam aracılık rolünü belirlemek için, toplam etki ve doğrudan etkiye bakılmıştır. Aracı modele eklendiğinde, doğrudan etki yine anlamlı bulunduğundan, ebeveyn-öğretmen ilişkisinin modelde kısmi aracılık rolü benimsediği ortaya konulmuştur. Son olarak, model anlamlı bulunmuş (F (2, 230) = 60.2171, p<.001) ve varyansın %34‘ünü açıkladığı sonucuna ulaşılmıştır (R2= .34).

💬 Deneme Fikri

PISA 2022 verisindeki “Student Questionnaire Data File” veri set indirilmiş ve R ortamına aktarılmıştır.

library(haven)
veri <- read_sav("CY08MSP_STU_QQQ.SAV")

Model olarak aracılık modeli oluşturulmaya karar verilmiştir. Modeldeki değişkenler ve değişkenlerin türleri aşağıda sunulmuştur:

Bağımsız değişken: Öğretmen desteği (TEACHSUP)

Bağımlı değişken: Matematik başarısı (PV1MATH)

Aracı değişken 1: Matematik kaygısı (ANXMAT)

Aracı değişken 2: Okula aidiyet (BELONG)

Birinci Araştırma Sorusu: Öğretmen desteği ile matematik başarısı arasındaki ilişkide matematik kaygısı ve okula aidiyetin aracılık rolü nedir?

İkinci Araştırma Sorusu: Bu rol ülkelere göre nasıldır? (Türkiye, Güney Kore, Kanada, Estonya)

library(haven)
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(lavaan) 
## This is lavaan 0.6-20
## lavaan is FREE software! Please report any bugs.
analysis_data <- veri %>%
  filter(CNT %in% c("TUR","KOR")) %>%
  select(CNT, TEACHSUP, ANXMAT, BELONG, PV1MATH, W_FSTUWT) %>%
  na.omit()

model_syntax <- '
  # Regresyonlar
  ANXMAT ~ a1 * TEACHSUP
  BELONG ~ a2 * TEACHSUP
  PV1MATH ~ b1 * ANXMAT + b2 * BELONG + c * TEACHSUP

  # Dolaylı Etkiler
  indirect_anxiety := a1 * b1
  indirect_belong  := a2 * b2
  total_indirect := (a1 * b1) + (a2 * b2)
  total_effect := c + (a1 * b1) + (a2 * b2)
  
  # Hata kovaryansı
  ANXMAT ~~ BELONG 
'


fit_multigroup <- sem(model_syntax, 
                      data = analysis_data, 
                      group = "CNT", 
                      estimator = "MLR", 
                      sampling.weights = "W_FSTUWT")

#"W_FSTUWT" örnekleme ağırlıklarını kullanmak içinmiş, burayı chat'e sordum hocam ağırlık hesabını nasıl alacağımı bilemediğim için. "MLR" kestirim yöntemi maximum likelihood bu kısmı da chat'e sordum.

summary(fit_multigroup, standardized = TRUE, fit.measures = TRUE)
## lavaan 0.6-20 ended normally after 9 iterations
## 
##   Estimator                                         ML
##   Optimization method                           NLMINB
##   Number of model parameters                        12
## 
##   Number of observations                          7004
##   Sampling weights variable                   W_FSTUWT
## 
## Model Test User Model:
##                                               Standard      Scaled
##   Test Statistic                                 0.000       0.000
##   Degrees of freedom                                 0           0
## 
## Model Test Baseline Model:
## 
##   Test statistic                               335.591     268.534
##   Degrees of freedom                                 6           6
##   P-value                                        0.000       0.000
##   Scaling correction factor                                  1.250
## 
## User Model versus Baseline Model:
## 
##   Comparative Fit Index (CFI)                    1.000       1.000
##   Tucker-Lewis Index (TLI)                       1.000       1.000
##                                                                   
##   Robust Comparative Fit Index (CFI)                            NA
##   Robust Tucker-Lewis Index (TLI)                               NA
## 
## Loglikelihood and Information Criteria:
## 
##   Loglikelihood user model (H0)             -62283.575  -62283.575
##   Loglikelihood unrestricted model (H1)             NA          NA
##                                                                   
##   Akaike (AIC)                              124591.151  124591.151
##   Bayesian (BIC)                            124673.401  124673.401
##   Sample-size adjusted Bayesian (SABIC)     124635.268  124635.268
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.000          NA
##   90 Percent confidence interval - lower         0.000          NA
##   90 Percent confidence interval - upper         0.000          NA
##   P-value H_0: RMSEA <= 0.050                       NA          NA
##   P-value H_0: RMSEA >= 0.080                       NA          NA
##                                                                   
##   Robust RMSEA                                               0.000
##   90 Percent confidence interval - lower                     0.000
##   90 Percent confidence interval - upper                     0.000
##   P-value H_0: Robust RMSEA <= 0.050                            NA
##   P-value H_0: Robust RMSEA >= 0.080                            NA
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.000       0.000
## 
## Parameter Estimates:
## 
##   Standard errors                             Sandwich
##   Information bread                           Observed
##   Observed information based on                Hessian
## 
## Regressions:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   ANXMAT ~                                                              
##     TEACHSUP  (a1)   -0.100    0.015   -6.492    0.000   -0.100   -0.093
##   BELONG ~                                                              
##     TEACHSUP  (a2)    0.110    0.012    9.308    0.000    0.110    0.127
##   PV1MATH ~                                                             
##     ANXMAT    (b1)   -9.001    0.905   -9.942    0.000   -9.001   -0.123
##     BELONG    (b2)    5.295    1.128    4.695    0.000    5.295    0.058
##     TEACHSUP   (c)   -1.748    0.997   -1.753    0.080   -1.748   -0.022
## 
## Covariances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##  .ANXMAT ~~                                                             
##    .BELONG           -0.070    0.017   -4.245    0.000   -0.070   -0.060
## 
## Intercepts:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .ANXMAT            0.570    0.016   36.673    0.000    0.570    0.468
##    .BELONG           -0.267    0.013  -20.680    0.000   -0.267   -0.274
##    .PV1MATH         462.469    1.336  346.231    0.000  462.469    5.201
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .ANXMAT            1.470    0.027   53.707    0.000    1.470    0.991
##    .BELONG            0.936    0.023   40.881    0.000    0.936    0.984
##    .PV1MATH        7754.680  128.911   60.155    0.000 7754.680    0.981
## 
## Defined Parameters:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##     indirect_anxty    0.897    0.168    5.351    0.000    0.897    0.011
##     indirect_belng    0.581    0.140    4.140    0.000    0.581    0.007
##     total_indirect    1.478    0.221    6.677    0.000    1.478    0.019
##     total_effect     -0.270    0.990   -0.273    0.785   -0.270   -0.003
if(!require(lavaanPlot)) install.packages("lavaanPlot")
## Zorunlu paket yükleniyor: lavaanPlot
library(lavaanPlot)

fit_tur_only <- sem(model_syntax, 
                    data = analysis_data %>% filter(CNT == "TUR"), 
                    sampling.weights = "W_FSTUWT",
                    estimator = "MLR")

lavaanPlot(model = fit_tur_only, 
           node_options = list(shape = "box", fontname = "Helvetica"), 
           edge_options = list(color = "black"),
           coefs = TRUE,      
           stand = TRUE,       
           stars = c("regress"))

Sadece öğretmen desteği doğrudan matematik başarısını istatistiksel açıdan anlamlı bir şekilde yordamamaktadır (r=-0,02, p>0.01).

Öğretmen desteği matematik kaygısı aracılığıyla matematik başarısını etkilemektedir. Öğretmen desteği arttıkça matematik kaygısı istatistiksel açıdan anlamlı bir şekilde azalmaktadır (r=-0,09, p<0.01). Matematik kaygısı azaldıkça da matematik başarısı artmaktadır(r=-0,12, p<0.01).

Öğretmen desteği arttıkça öğrencinin aidiyet duygusu artmaktadır(r=0,13, p<0.01). Öğretmen desteği aynı şekilde aracı bir biçimde öğrencinin aidiyet duygusunu arttırarak matematik başarısını artırmaktadır (r=0,06, p<0.01).

Şekil 1. Türkiye’de öğretmen desteği ile matematik başarısı matematik kaygısı ve okula aidiyet aracı rolü

Güney Kore’de nasıl olduğunu analiz etmek için “KOR” filtresi kullanılmıştır.

———– “KOR” için kod kısmı (sistemsel bir hata aldığım için chunk dışında verdim)——————

if(!require(lavaanPlot)) install.packages(“lavaanPlot”)

library(lavaanPlot)

fit_tur_only <- sem(model_syntax,

data = analysis_data %>% filter(CNT == “KOR”),

sampling.weights = “W_FSTUWT”,

estimator = “MLR”)

lavaanPlot(model = fit_tur_only,

node_options = list(shape = “box”, fontname = “Helvetica”),

edge_options = list(color = “black”),

coefs = TRUE,

stand = TRUE,

stars = c(“regress”))


Güney Korede ise öğretmen desteği doğrudan matematik başarısını istatistiksel açıdan anlamlı bir şekilde yordamaktadır (r=0,07, p>0.01).

Öğretmen desteği matematik kaygısı aracılığıyla matematik başarısını etkilemektedir. Öğretmen desteği arttıkça matematik kaygısı istatistiksel açıdan anlamlı bir şekilde azalmaktadır (r=-0,11, p<0.01). Matematik kaygısı azaldıkça da matematik başarısı artmaktadır(r=-0,18, p<0.01).

Öğretmen desteği arttıkça öğrencinin aidiyet duygusu artmaktadır(r=0,23, p<0.01). Öğretmen desteği aynı şekilde aracı bir biçimde öğrencinin aidiyet duygusunu arttırarak matematik başarısını artırmaktadır (r=0,05, p<0.01).

Şekil 2. Güney Kore’de öğretmen desteği ile matematik başarısı matematik kaygısı ve okula aidiyet aracı rolü

💬 Fonksiyonlar ve Döngüler Öğrenme Günlüğü

Fonksiyonların genel yazımı aşağıdaki gibidir.

#fonksiyon_adı <- function (argüman) {
#       gövde
#       return(gövde)
#}

ls() fonksiyonuyla çalışma alanındaki nesneleri sorgulayabiliyoruz.

Satırlara ve sütunlara işlemler uygulamak için aşağıdaki fonksiyonlar kullanılabilmektedir.

apply(), lapply(), sapply(), vapply()

identical() sonuçlar aynı mı incelemek için kullanıyoruz.

📌 KOŞULLU ÖNERMELER

💫 mantıksal operatörler

!= eşit değil demek ve diğer operatörler mevcut

💫 if() durum cümlesi

#if(koşul){
# print(durum cümlesi)
#}

💫 else() durum cümlesi

#x<-75
#if(x>=65){
# print("Başarılı")
#}else{
# print("Başarısız")
#}

💫 else if() durum cümlesi

Olası durumlar ikiden daha fazla ise else if() fonksiyonu kullanılabilir.

#x <- 75
#if(x>=90){
# print("AA")
#}else if(x>=80){
# print("BA")
#}else if(x>=70){
# print("BB")
#}else if(x>=65){
# print("CB")
#}else if(x>=60){
# print("CC")
#}else if(x>=50){
# print("DD")
#}else if(x>=30){
# print("FD")
#}else{
# print("FF")
#}

💫 ifelse() durum cümlesi

#ifelse(koşul, Doğru ifade, Yanlış ifade)

💫 switch() durum cümlesi

#switch(ifade, değer1=ifade1, değer2=ifade2, ...)

📌 DÖNGÜLER

for(), while(), repeat()

💫 for() döngüsü

#for(i in (liste, vektör ya da matris)){
#  komut/kod
#}

Döngülerin içinde yeni nesneler tanımlamak mümkün değildir. Dolayısıyla döngülerde bir değişken yeniden tanımlanacak ise mutlaka döngü öncesinde tanımlanmalıdır.

array() boş olarak oluşturulur

💫 iç içe döngüler (nested loop)

#for(i in vektör1){
# for(j in vektör2){
#   komut/kod
# }
#}

💫 while döngüsü

#while(koşul){
# komut/kod
#}

💫 repeat döngüsü

#repeat{
# ifade
# if(koşul) break
#}

💫 mesaj ekleme

#olcekleme1 <- function(x, max=1, min=0){
# if(max>2){
# stop("En büyük değer 2'den büyük olamaz", call.=FALSE)  
# }
# ranj <- range(x)
# (max-min)*((x-mean(x)/ranj[2]-ranj[1]))
#}

📌5.7.1. Sıra sizde

fonksiyon_adi<-function(sayi=5,satir=c(5,4,3,5,5), sutun=c(10,5,4,3,4)){
  df_list <- list()
  for(i in 1:sayi){
  df_list[[i]] <- data.frame(matrix(0,nrow=satir[i], ncol=sutun[i]))  
  for(j in 1:sutun[i]){
  df_list[[i]][,j]<- round(rnorm(satir[i],0,1),2)
   writexl::write_xlsx(df_list[[i]],paste("veri",i,".xlsx", sep=""))
  }}
}

Derste yaptığımız örneği toplam şeklinde denedim.

X <- cbind(1:10, 11:22)
## Warning in cbind(1:10, 11:22): number of rows of result is not a multiple of
## vector length (arg 1)
X
##       [,1] [,2]
##  [1,]    1   11
##  [2,]    2   12
##  [3,]    3   13
##  [4,]    4   14
##  [5,]    5   15
##  [6,]    6   16
##  [7,]    7   17
##  [8,]    8   18
##  [9,]    9   19
## [10,]   10   20
## [11,]    1   21
## [12,]    2   22
toplam <- c()
for(i in 1:nrow(X)){
  toplam[i] <- X[i,1]+X[i,2]
  cat(i, "satirdaki degerlerin toplami", toplam[i], "olarak hesaplanmistir.\n")
}  
## 1 satirdaki degerlerin toplami 12 olarak hesaplanmistir.
## 2 satirdaki degerlerin toplami 14 olarak hesaplanmistir.
## 3 satirdaki degerlerin toplami 16 olarak hesaplanmistir.
## 4 satirdaki degerlerin toplami 18 olarak hesaplanmistir.
## 5 satirdaki degerlerin toplami 20 olarak hesaplanmistir.
## 6 satirdaki degerlerin toplami 22 olarak hesaplanmistir.
## 7 satirdaki degerlerin toplami 24 olarak hesaplanmistir.
## 8 satirdaki degerlerin toplami 26 olarak hesaplanmistir.
## 9 satirdaki degerlerin toplami 28 olarak hesaplanmistir.
## 10 satirdaki degerlerin toplami 30 olarak hesaplanmistir.
## 11 satirdaki degerlerin toplami 22 olarak hesaplanmistir.
## 12 satirdaki degerlerin toplami 24 olarak hesaplanmistir.

💬 Öğrenme Notu

Ağırlıklandırılmış olabilirlik kestirimleri (WLE) dönüşümü nasıl yapılır bilmiyorum. Aracı ve düzenleyicilik modellerini R üzerinden kurarak bilimsel bir çalışma üretmek için heyecanlıyım. Aracılık modeli üzerine bir model kurdum fakat bu konudaki R analizi ve komutlarında yetersizim. Daha çok çalışmam gerekiyor :(((

Ders çalışırken minik kuzenlerim beni bu şekilde çizmişler. Hatıra olarak bırakmak istedim :)