Bu dosyada Regresyon Pekiştirme ve Proje Ön Hazırlığı ödevi aktarılacaktır.
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”)
🧩 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ı:
Not: Buradan hareketle fen bilimleri ilgisinin aracı değişken olduğunu görüyoruz.
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:
Sorgulama temelli öğrenme: inquiry-based science teaching and learning practices (IBTEACH)
Öğretmen desteği: teacher support in science classes of student’s choice (TEACHSUP)
Fen bilimleri öz-yeterliliği: science self-efficacy (SCIEEFF)
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).
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ı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.
!= eşit değil demek ve diğer operatörler mevcut
#if(koşul){
# print(durum cümlesi)
#}
#x<-75
#if(x>=65){
# print("Başarılı")
#}else{
# print("Başarısız")
#}
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(koşul, Doğru ifade, Yanlış ifade)
#switch(ifade, değer1=ifade1, değer2=ifade2, ...)
for(), while(), repeat()
#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
#for(i in vektör1){
# for(j in vektör2){
# komut/kod
# }
#}
#while(koşul){
# komut/kod
#}
#repeat{
# ifade
# if(koşul) break
#}
#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]))
#}
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.
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 :)