Sunumdaki örnek Roth, Wiebe, Fillingim ve Shay’in (1989) çalışmasından gelmektedir. Çalışmalarında üniversite öğrencilerinde egzersiz, dayanıklılık, form ve stresin hastalık üzerindeki etkilerini incelemişlerdir.
🔗illness.dat adlı veri setinde 5 değişken, 400 birey vardır. Değişkenler egzersiz, dayanıklılık, form, stres ve hastalık değişkenleri olup sürekli değişkenlerdir.
Araştırma hipotezleri:
egzersiz ve dayanıklılık formu etkiler.
egzersiz ve dayanıklılık stresi etkiler.
egzersiz, dayanıklılık, form ve stres hastalığı (illness) etkiler.
Bu üç hipotezin her biri çoklu regresyon modelidir:
form𝑖=𝛽0+𝛽eegzersiz𝑖+𝛽dayanıklılık𝑖+𝑒𝑓𝑖
stres𝑖=𝛽0+𝛽eegzersiz𝑖+𝛽dayanıklılık𝑖+𝑒𝑓𝑖
hastalık𝑖=𝛽0+𝛽eegzersiz𝑖+𝛽dayanıklılık𝑖+𝛽form𝑖+𝛽stres𝑖+𝑒𝑓𝑖
Bu modeller R’da lavaan paketi ile model denklemi oluşturularak kullanılmalıdır.
library(lavaan)
## This is lavaan 0.6-21
## lavaan is FREE software! Please report any bugs.
yol_model <- 'stres ~ egzersiz + dayaniklilik
hastalik ~ egzersiz + dayaniklilik + form + stres
form ~ egzersiz + dayaniklilik'
library(readr)
veri <- read_table("import/illness.dat", col_names = FALSE)
##
## ── Column specification ────────────────────────────────────────────────────────
## cols(
## X1 = col_double(),
## X2 = col_double(),
## X3 = col_double(),
## X4 = col_double(),
## X5 = col_double()
## )
colnames(veri) <- c("form", "stres", "hastalik", "egzersiz", "dayaniklilik")
library(lavaan)
yol_model <- 'stres ~ egzersiz + dayaniklilik
hastalik ~ egzersiz + dayaniklilik + form + stres
form ~ egzersiz + dayaniklilik
egzersiz ~~ dayaniklilik'
yol_fit <- sem(yol_model, veri)
yol_fit
## lavaan 0.6-21 ended normally after 8 iterations
##
## Estimator ML
## Optimization method NLMINB
## Number of model parameters 14
##
## Number of observations 400
##
## Model Test User Model:
##
## Test statistic 12.307
## Degrees of freedom 1
## P-value (Chi-square) 0.000
yol_model
## [1] "stres ~ egzersiz + dayaniklilik\n hastalik ~ egzersiz + dayaniklilik + form + stres\n form ~ egzersiz + dayaniklilik\negzersiz ~~ dayaniklilik"
#bagımlı degsken icsel, bagmsız degskenler dıssal gozlenen degsken. nedenleri bilinmeyen ve modelde gosterilmeyen degiskenler dıssal degsken nedenleri arastrmmada arastırılan, degskenlik gostermekte serbest olmayan dgskenler icsel degsken. her icsel degskenin bozuklugu vardır,hata terimi.icsel degskende acıklanamayan kısım.
bu arastrmada toplam 8 dogrudan etki vardır. dayanıklılık dogrudan hastalıgı dogrudan etkilerken aynı zamanda form üzerinden de dolaylı mediator) etkilemekte. egzersiz stresi etkiler, stres üzerinden de dolaylı hastalıgı etkiler. egzersiz form üzerinden hastalığı, dayanıklılık stres uzeriden hastalıgı etklyr.
library(lavaan)
library(semPlot)
yol_model <- 'stres ~ egzersiz + dayaniklilik
hastalik ~ egzersiz + dayaniklilik + form + stres
form ~ egzersiz + dayaniklilik
egzersiz ~~ dayaniklilik'
yol_fit <- sem(yol_model, veri)
semPaths(yol_fit,rotation=2, curvePivot = TRUE,
sizeMan = 12, sizeInt = 1,
sizeLat = 4,
edge.label.cex = 1.8,
pastel=TRUE,
nCharNodes = 0, nCharEdges = 0)
İCSEL DEGSKENİN DISSAL DEGSENLER TARAFNDAN ACIKLANMAYAN KISMI BOZUKLUK
VARYANSı 8 yol kaytsayısı gozlennen kovaryanns elemanının 15 modeli var
.kurulan modelle 14 model acıklanır. sd 0 olursa moodel tum kestrmleri
mukemmel gosterir.bu istenmez. sd=15-14=1 3 gizil degskenmz var. bagımlı
degskenin acıklanamayan kısmı. gozlem eksikliği tanımlanamayan modele
sebep olur. model veri uyumunun degerlendirileblmesi icin sd>0
olmalı. bir grup iyilik, bir grup da kotuluk uyum degeri yorumlanmalı.sd
1’e yaklaştıkca iyilik, 0’a yakın kotuluk
fitmeasures(yol_fit,fit.measures = c("chisq" ,"df" , "pvalue"))
## chisq df pvalue
## 12.307 1.000 0.000
# summary(yol_fit, fit.measures = TRUE)
fitMeasures(yol_fit, c("rmsea","rmsea.ci.lower",
"rmsea.ci.upper","rmsea.pvalue"))
## rmsea rmsea.ci.lower rmsea.ci.upper rmsea.pvalue
## 0.168 0.093 0.258 0.006
#model veriye uymuyor.alt sınırı 0.093, üst sınır 0,258 cıkmış.RMSEA degeri <0,08 olması istenen durum oldugu icin kabl edilebilir. modelde vernin bir kısmı uyum saglarken bir kısmı uyum saglamıyor.
fitMeasures(yol_fit, "srmr")
## srmr
## 0.043
fitmeasures(yol_fit,fit.measures = c("cfi","tli","nnfi"))
## cfi tli nnfi
## 0.948 0.485 0.485
uyum indekslerinde en azından ki kare, ki-kare/sd, srmr, cfı, rmsea verlmeli.
fitmeasures(yol_fit,fit.measures = c("chisq" ,"df" ,"pvalue",
"cfi","tli","rmsea",
"rmsea.ci.lower","rmsea.ci.upper"
,"srmr"))
## chisq df pvalue cfi tli
## 12.307 1.000 0.000 0.948 0.485
## rmsea rmsea.ci.lower rmsea.ci.upper srmr
## 0.168 0.093 0.258 0.043
model veriye uyum saglamıyorsa bazı degsimler yapılmalı.
# lavResiduals(yol_fit)
# resid(yol_fit)
resid(yol_fit, type='normalized')
## $type
## [1] "normalized"
##
## $cov
## stres hastlk form egzrsz dynkll
## stres 0.002
## hastalik 0.718 0.392
## form -2.950 -1.031 0.006
## egzersiz -0.021 -0.011 0.010 0.000
## dayaniklilik -0.005 -0.005 0.025 0.067 0.000
hastalık ve stres arassı acıklanamayan varyans cok az bunlar arası iliski ok. form ve stres arasında acıklanamyan varyans degeri -2,95 cıkmıs demekki baska degskenler de etki etmiş. >1,96 ise bu modelde acıklanamayan seyler var. modifikasyon indekslerii incelendiğinde form stres arasnda sonuc verecektr mhtemelen.
modindices(yol_fit, sort = TRUE)
## lhs op rhs mi epc sepc.lv sepc.all sepc.nox
## 25 stres ~ form 12.115 -0.326 -0.326 -0.180 -0.180
## 24 stres ~ hastalik 12.115 0.799 0.799 0.693 0.693
## 26 form ~ stres 12.115 -0.093 -0.093 -0.168 -0.168
## 27 form ~ hastalik 12.115 -0.296 -0.296 -0.464 -0.464
ki kare degerimiz 12.3 iken önerilen modellerden birnin eklemek 12.1’e dusuuyor. ancak bu cok anlamlı olmayablr.form stres arası artık maddesinde 2.satırdaki modiifkasyon stresin formdan yordandıgı yol eklenr ancak sd=0 olur ve modelden yorum yapılamaz. stres ve form arasına birsey eklenincce ki-kare de sd de düser. sd =1 oldugu icin baska birsey eklerken modelde islevsz birseyi cıkarmk iyi olablr.
yol_model_v1 <-
'stres ~ egzersiz + dayaniklilik
hastalik ~ egzersiz + dayaniklilik + form + stres
form ~ egzersiz + dayaniklilik
stres ~ form
egzersiz ~~ dayaniklilik'
yol_fit_v1 <- sem(yol_model_v1, veri)
yol_fit_v1
## lavaan 0.6-21 ended normally after 27 iterations
##
## Estimator ML
## Optimization method NLMINB
## Number of model parameters 15
##
## Number of observations 400
##
## Model Test User Model:
##
## Test statistic 0.000
## Degrees of freedom 0
sd 0 oldugu icn mantklı degl.
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
## 0 0
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)
yol_model_v1 <-
'stres ~ egzersiz + dayaniklilik
hastalik ~ egzersiz + dayaniklilik + form + stres
form ~ egzersiz + dayaniklilik
stres ~ form
egzersiz ~~ dayaniklilik'
yol_model_v2 <-
'stres ~ dayaniklilik
hastalik ~ form + stres
form ~ egzersiz + dayaniklilik
stres ~ form
egzersiz ~~ dayaniklilik'
yol_fit_v2 <- sem(yol_model_v2, veri)
anlamlı olmayan yol katsayıları kaldırıldır
fitmeasures(yol_fit_v2,c("df","rmsea","rmsea.ci.lower","rmsea.ci.upper","cfi","srmr"))
## df rmsea rmsea.ci.lower rmsea.ci.upper cfi
## 3.000 0.000 0.000 0.061 1.000
## srmr
## 0.011
yol semasını olustururken bagımsız degskenlerimizi nerde gostermek istyrsak bunun dizaynı layout icin m matrisi olsturup semPath fonksyonu icine layout icinde gosterlrl. degskenin adı neyse matrise onu yazmalı.
m <- matrix(c(NA, NA, "form", NA, NA,
"egzersiz", NA, NA, NA, NA,
NA, NA, NA, NA, "hastalik",
"dayaniklilik", NA, NA, NA, NA,
NA, NA, "stres", NA, NA
), byrow = TRUE, 5, 5)
p_pa <- semPaths(yol_fit_v2, whatLabels = "est",
sizeMan = 10,
edge.label.cex = 1.15,
style = "ram",
nCharNodes = 0, nCharEdges = 0,
layout=m)
p_pa_2 <- semptools::mark_sig(p_pa, yol_fit_v2)
plot(p_pa_2)
egzersz hastalıgı dogrudan etkilemyordu, öncekilerde anlamlı cıkmamıstı
bu yolu kaldırmak tutumlulağa goturdu ve sd’yi yukseltti. formu iyi olan
bireyin stres seviyesi daha dusuk. dayaanıklılıgı yuksek olanın formu
iyi ve anlamlı, egzersiz ile form arasnda anlamlı poztf iliski var.form
ile hastalık arasnda negatf iliski var.
fitmeasures(yol_fit_v2,fit.measures = c("chisq" ,"df" , "pvalue",
"cfi","tli","rmsea",
"rmsea.ci.lower", "rmsea.ci.upper"
,"srmr"))
## chisq df pvalue cfi tli
## 1.354 3.000 0.716 1.000 1.025
## rmsea rmsea.ci.lower rmsea.ci.upper srmr
## 0.000 0.000 0.061 0.011
yeni modelde istenen degerlere ulasıldı.ilk model veriye kotu uyum gosterdi.modifikasyon indeksinde önerilen ilki sd=0 olunca 2.modele gectk.2.model daha iyi uyum sagladı. eğer her iki model de uyum saglasaydı o zaman ki-kare fark testi yapılır. birden fazla model veriye uyum sagladığında ki-kare fark testi ile bakılıp yorumlanır.ki-kare fark testinde modellerin ki kareleri, sd’leri arasındaki farklarda; ki*-kare farkı sd’farkından hangisi anlamlıysa o tercih edilr. buna bakarken es zamanlı olarak aıc ve bıca bakılır aıc ve bıc kucuk olan daha iyi uyum demektir.
fitmeasures(yol_fit_v1,fit.measures = c("AIC","BIC"))
## aic bic
## 21422.85 21482.72
fitmeasures(yol_fit_v2,fit.measures = c("AIC","BIC"))
## aic bic
## 21418.2 21466.1