Üçüncü dersin başında önceki hafta öğrendiğimiz çoklu regresyon ile ilgili bir çalışma gerçekleştirdik. Bu yugulama kapsamında Evals veri setinden değişkenleri ele alarak çoklu regresyon uygulaması yaptık. Burada çoklu regresyon modeli kurduktan sonra değişkenler arasındaki etkileşimi analiz etmek amacıyla etkileşim modeli kurup çıkan sonuçları yorumladık. Bu kapsamda ben de farklı bir veri seti kullanarak önce veri setindeki kayıp veriler inceledim sonra da çoklu regresyon modeli kurdum. sonrasında değişkenler arasındaki etkileşimi incelemek amacıyla etkileşim modeli kurdum ve yorumladım.
Çoklu Regresyon Uygulaması
knitr::opts_chunk$set(echo = TRUE)
knitr::opts_chunk$set(message = FALSE)
knitr::opts_chunk$set(warning = FALSE)
library(dplyr)
library(UpSetR)
library(naniar)
library(mice)
data("airquality")
head(airquality)
## Ozone Solar.R Wind Temp Month Day
## 1 41 190 7.4 67 5 1
## 2 36 118 8.0 72 5 2
## 3 12 149 12.6 74 5 3
## 4 18 313 11.5 62 5 4
## 5 NA NA 14.3 56 5 5
## 6 28 NA 14.9 66 5 6
Veri setini yükledikten sonra kayıp veri sayısını ve oranını tespit ettim.
n_miss(airquality)
## [1] 44
prop_miss(airquality)
## [1] 0.04793028
airquality %>% is.na() %>% colSums()
## Ozone Solar.R Wind Temp Month Day
## 37 7 0 0 0 0
Kayıp verilerin hangi değişkenlerde olduğunu tespit etmek amacıyla md_pattern() fonksiyonunu kullandım.
md.pattern(airquality)
## Wind Temp Month Day Solar.R Ozone
## 111 1 1 1 1 1 1 0
## 35 1 1 1 1 1 0 1
## 5 1 1 1 1 0 1 1
## 2 1 1 1 1 0 0 2
## 0 0 0 0 7 37 44
Veri setinde yer alan kayıp veri oranının fazla olması nedeniyle çoklu atama yöntemi gerçekleştirdim. Sonrasında tamamlanmış veri setini elde ettim.
imputed_data<- mice(airquality, m=5, maxit=50, method='pmm', seed = 500)
completed_data <- complete(imputed_data)
İmputed_data ile çoklu regresyon denklemini kurdum ve yorumladım.
reg_1<- with(imputed_data, lm(Ozone~Solar.R+ Wind + Temp))
summary(pool(reg_1))
## term estimate std.error statistic df p.value
## 1 (Intercept) -52.237350 21.1226520 -2.473049 49.06986 1.690748e-02
## 2 Solar.R 0.064219 0.0208497 3.080091 74.62811 2.896411e-03
## 3 Wind -3.278801 0.6549458 -5.006218 27.23670 2.928026e-05
## 4 Temp 1.483978 0.2217896 6.690928 83.61672 2.363819e-09
Kurulan çoklu regresyon modeli sonuçlarına göre Solar.R, Wind ve Temp değişkenleri istatistiksel olarak anlamlı bulunmuştur (p < 0.05). Sıcaklık (Temp) ve güneş radyasyonu (Solar.R) ozon seviyesini pozitif yönde etkilerken, rüzgar (Wind) negatif yönde etkilemiştir. Özellikle sıcaklık değişkeninin ozon üzerindeki etkisinin daha güçlü olduğu görülmektedir.
Sonrasında etkileşim modeli kurdum ve çıkan sonuçları yorumladım.
model_etkilesim<- lm(Ozone ~ Wind * Temp, data = completed_data)
summary(model_etkilesim)
##
## Call:
## lm(formula = Ozone ~ Wind * Temp, data = completed_data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -40.120 -11.267 -2.787 9.740 99.999
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -232.4991 39.7092 -5.855 2.93e-08 ***
## Wind 13.3407 3.4097 3.913 0.000138 ***
## Temp 3.8589 0.4897 7.880 6.34e-13 ***
## Wind:Temp -0.2085 0.0436 -4.782 4.13e-06 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 19.05 on 149 degrees of freedom
## Multiple R-squared: 0.6075, Adjusted R-squared: 0.5996
## F-statistic: 76.88 on 3 and 149 DF, p-value: < 2.2e-16
Çoklu regresyon modelinde Ozone seviyeleri, Wind ve Temp değişkenlerinin hem ana etkileri hem de etkileşimi ile incelenmiştir. Modelin R² değeri 0.6075 olup, anlamlıdır (F = 76.88, p < 0.001). Analiz sonucunda Wind ve Temp değişkenleri arasında anlamlı negatif bir etkileşim bulunmuş, bu da rüzgar ve sıcaklığın Ozone üzerindeki etkilerinin birbirine bağlı olduğunu göstermektedir. Sıcaklık artışı Ozone seviyesini artırırken, rüzgarın bu artış üzerindeki etkisi etkileşim sayesinde azalmakta veya ters yönde değişmektedir.
YOL ANALİZİ
Üçüncü dersin ikinci bölümünde yol analizi konusuna geçtik. Yol analizi temel olarak bir yapısal eşitlik modeli türüdür. Yol analizinde sadece gözlenen değişlenler modele dahil edilir. Amaç bir grup değişken arasındaki ilişkiyi ortaya çıkarmaktır. Yol analizinde birden fazla çoklu regresyonun tek seferde yapılma işlemi söz konusudur. gözlenen değişkenlerin varyans-kovaryans ilişkileri incelenir. Derste illnes.dat veri setini kullanarak yol analizimizi gerçekleştirdik. Analiz için ilk olarak çoklu regresyon modellerini kuruyoruz. Analizde yol şeması için bağımlı değişken olarak kullanmadığımız iki değişkeni kullanıp ilişki oluşturuyoruz. Bu veri seti için egzersiz ve dayanıklılık bağımsız değişkenlerdir. Bu değişkenler aynı zamanda dışsal değişken olarak adlandırılır. Bağımlı değişkenlerimiz olan stres, form ve hastalık ise içsel değişkenlerdir. Yol analizinde içsel değişkenlerin nedenlerini araştırırız. İçsel değişkenlerin açıklanamayan kısımlarına bozukluk adı verilir (artıklar). -Artık değer ne kadar küçükse o kadar iyidir. Bunun nedeni üretilmiş kovaryans matrisi ile gözlenen kovaryans matrisi arasındaki farkın az olmasının istendik bir durum olmasıdır.- Değişkenler doğrudan ve dolayı olarak birbirini etkiler. Arabulucu etki ise içsel değişkenlerin bir önceki değişkene ait özellikleri bir diğer içsel değişkene aktarmasıdır. Ek olarak serbestlik derecesi önemlidir. Modelin iyi ve yeterli tanımlanabilmesi için serbestlik derecesi 0’dan büyük olmalıdır (Gözlem sayımız parametre sayımızdan büyük olmalıdır).
Bu bağlamda swiss veri setini kullanarak doğurganlık ve doğurganlığı etkileyen değişkneler arasındaki ilişkiyi incelemek amacıyla yol analizi yaptım.
Veri setinin yüklenmesi
data("swiss")
head(swiss)
## Fertility Agriculture Examination Education Catholic
## Courtelary 80.2 17.0 15 12 9.96
## Delemont 83.1 45.1 6 9 84.84
## Franches-Mnt 92.5 39.7 5 5 93.40
## Moutier 85.8 36.5 12 7 33.77
## Neuveville 76.9 43.5 17 15 5.16
## Porrentruy 76.1 35.3 9 7 90.57
## Infant.Mortality
## Courtelary 22.2
## Delemont 22.2
## Franches-Mnt 20.2
## Moutier 20.3
## Neuveville 20.6
## Porrentruy 26.6
Analiz
Modelin tanımlanması
library(lavaan)
yol_model_1 <- 'Infant.Mortality ~ Education + Catholic
Agriculture ~ Education + Catholic
Fertility ~ Education + Catholic + Agriculture + Infant.Mortality
Education ~~ Catholic'
yol_fit_1<- sem(yol_model_1, data = swiss)
summary(yol_fit_1)
## lavaan 0.6-21 ended normally after 32 iterations
##
## Estimator ML
## Optimization method NLMINB
## Number of model parameters 14
##
## Number of observations 47
##
## Model Test User Model:
##
## Test statistic 3.069
## Degrees of freedom 1
## P-value (Chi-square) 0.080
##
## Parameter Estimates:
##
## Standard errors Standard
## Information Expected
## Information saturated (h1) model Structured
##
## Regressions:
## Estimate Std.Err z-value P(>|z|)
## Infant.Mortality ~
## Education -0.022 0.044 -0.511 0.609
## Catholic 0.011 0.010 1.132 0.258
## Agriculture ~
## Education -1.398 0.246 -5.686 0.000
## Catholic 0.169 0.057 2.979 0.003
## Fertility ~
## Education -0.980 0.137 -7.164 0.000
## Catholic 0.125 0.027 4.663 0.000
## Agriculture -0.155 0.062 -2.478 0.013
## Infant.Mortlty 1.078 0.349 3.087 0.002
##
## Covariances:
## Estimate Std.Err z-value P(>|z|)
## Education ~~
## Catholic -60.386 57.922 -1.043 0.297
##
## Variances:
## Estimate Std.Err z-value P(>|z|)
## .Infant.Mortlty 8.003 1.651 4.848 0.000
## .Agriculture 250.980 51.773 4.848 0.000
## .Fertility 45.916 9.472 4.848 0.000
## Education 90.489 18.666 4.848 0.000
## Catholic 1702.288 351.155 4.848 0.000
Yol şeması
library(semPlot)
semPaths(yol_fit_1,rotation=2, curvePivot = TRUE,
sizeMan = 12, sizeInt = 1,
sizeLat = 4,
edge.label.cex = 1.8,
pastel=TRUE,
nCharNodes = 0, nCharEdges = 0)
fitmeasures(yol_fit_1,fit.measures = c("chisq" ,"df" ,"pvalue",
"cfi","tli","rmsea",
"rmsea.ci.lower","rmsea.ci.upper"
,"srmr"))
## chisq df pvalue cfi tli
## 3.069 1.000 0.080 0.976 0.757
## rmsea rmsea.ci.lower rmsea.ci.upper srmr
## 0.210 0.000 0.495 0.048
Uyum indeksleri incelendiğinde CFI ve SRMR değerleri modelin iyi uyum gösterirken, RMSEA ve TLI değerleri model uyumunun zayıf olduğunu göstermektedir. Bu durum modelin bazı ilişkileri yeterince açıklayamadığını ve iyileştirilmesi gerektiğini göstermektedir.
Bu nedenle modifikasyon indekslerini incelememiz gerekir.Öncesinde artıklardan bilgi eedinebiliriz.
resid(yol_fit_1, type='normalized')
## $type
## [1] "normalized"
##
## $cov
## Infn.M Agrclt Frtlty Eductn Cathlc
## Infant.Mortality 0.000
## Agriculture -1.191 0.000
## Fertility 0.310 -0.283 0.119
## Education 0.000 0.000 0.000 0.000
## Catholic 0.000 0.000 0.000 0.000 0.000
modindices(yol_fit_1, sort. = TRUE, maximum.number = 5)
## lhs op rhs mi epc sepc.lv sepc.all sepc.nox
## 25 Infant.Mortality ~ Fertility 2.971 0.290 0.290 1.230 1.230
## 27 Agriculture ~ Fertility 2.971 -1.306 -1.306 -0.709 -0.709
## 24 Infant.Mortality ~ Agriculture 2.971 -0.045 -0.045 -0.350 -0.350
## 26 Agriculture ~ Infant.Mortality 2.971 -1.408 -1.408 -0.181 -0.181
## 15 Infant.Mortality ~~ Agriculture 2.971 -11.269 -11.269 -0.251 -0.251
Burada 2,97 değerinin 10’un altında olduğunu görüyoruz. Bu nedenle güçlü bir modifikasyon indeksi yok diyebiliriz. Artık kovaryans matrisi de incelendiğinde infant.mortalitiy~~agriculture ilişkisi ele alınabilir. -Burada agriculture ve fertility de yüksek fakat mantıken baktığımızda doğurganlık tarımı belirlemez.- Infant.mortality ve agricultur ise tarım->yaşam koşulları-> bebek ölümü şeklinde düşünülebilir ve korelasyon olabilir.
Yeniden tanımlanmış model
yol_model_2 <- ' Infant.Mortality ~ Education + Catholic
Agriculture ~ Education + Catholic
Fertility ~ Education + Catholic + Agriculture + Infant.Mortality
Education ~~ Catholic
Infant.Mortality ~~ Agriculture'
yol_fit_2 <- sem(yol_model_2, data = swiss)
summary(yol_fit_2)
## lavaan 0.6-21 ended normally after 45 iterations
##
## Estimator ML
## Optimization method NLMINB
## Number of model parameters 15
##
## Number of observations 47
##
## Model Test User Model:
##
## Test statistic 0.000
## Degrees of freedom 0
##
## Parameter Estimates:
##
## Standard errors Standard
## Information Expected
## Information saturated (h1) model Structured
##
## Regressions:
## Estimate Std.Err z-value P(>|z|)
## Infant.Mortality ~
## Education -0.022 0.044 -0.511 0.609
## Catholic 0.011 0.010 1.132 0.258
## Agriculture ~
## Education -1.398 0.246 -5.686 0.000
## Catholic 0.169 0.057 2.979 0.003
## Fertility ~
## Education -0.980 0.140 -7.000 0.000
## Catholic 0.125 0.027 4.564 0.000
## Agriculture -0.155 0.064 -2.399 0.016
## Infant.Mortlty 1.078 0.361 2.988 0.003
##
## Covariances:
## Estimate Std.Err z-value P(>|z|)
## Education ~~
## Catholic -60.386 57.922 -1.043 0.297
## .Infant.Mortality ~~
## .Agriculture -11.269 6.741 -1.672 0.095
##
## Variances:
## Estimate Std.Err z-value P(>|z|)
## .Infant.Mortlty 8.003 1.651 4.848 0.000
## .Agriculture 250.980 51.773 4.848 0.000
## .Fertility 45.916 9.472 4.848 0.000
## Education 90.489 18.666 4.848 0.000
## Catholic 1702.288 351.155 4.848 0.000
Yeniden tanımlanmış modele ait uyum indeksleri
fitmeasures(yol_fit_2,fit.measures = c("chisq" ,"df" ,"pvalue",
"cfi","tli","rmsea",
"rmsea.ci.lower","rmsea.ci.upper"
,"srmr"))
## chisq df pvalue cfi tli
## 0 0 NA 1 1
## rmsea rmsea.ci.lower rmsea.ci.upper srmr
## 0 0 0 0
Uyum indeksleri ve test istatistiği incelendiğinde ilk olarak serbestlik derecesinin 0 olduğu görülmektedir. Bu da modele ait uyum indekslerinin yorumlanamayacağını göstermektedir.
Özet olarak; Kurulan il modelde, Fertility bağımlı değişken olarak ele alınmış Education ve Catholic değişkenlerinin hem doğrudan hem de dolaylı etkileri incelenmiştir. Bu kapsamda Agriculture ve Infant.Mortality değişkenleri ara değişkenler (mediatör) olarak modele dahil edilmiştir. Ayrıca bağımsız değişkenler arasında kovaryans incelenmiştir.
Modelin uyum iyiliği indeksleri incelendiğinde ise, bazı indekslerin iyi uyum gösterdiği (CFI = 0.976, SRMR = 0.048), ancak RMSEA (0.210) ve TLI (0.757) değerlerinin model uyumunun yeterli olmadığı belirlenmiştir. Bu durum modelin bazı ilişkileri yeterince açıklayamadığını göstermketedir.
Modelin iyileştirilmesi amacıyla modification indices incelenmiş, ancak yüksek düzeyde bir iyileştirme önerisi bulunmamıştır(mi>10). Teorik açıdan yola çıkılarak anlamlı olduğu düşünülen Infant.Mortality ve Agriculture değişkenleri arasına kovaryans eklenerek model yeniden tahmin edilmiştir.
Yapılan bu düzenleme sonucunda modelin serbestlik derecesi sıfıra düşmüştür. Bu nedenle modelin uyum iyiliği istatistikleri yorumlanamaz hale gelmiştir. Ancak parametre tahminleri üzerinden değerlendirme yapılmıştır.
Buna göre, Education değişkeninin Fertility üzerinde negatif ve istatistiksel olarak anlamlı bir etkisi bulunmuştur. Bu durum eğitim düzeyi arttıkça doğurganlık oranının azaldığını göstermektedir. Catholic değişkeninin Fertility üzerindeki etkisi ise pozitif ve anlamlı olduğu görülmektedir. Ayrıca Infant.Mortality değişkeninin Fertility üzerinde pozitif ve anlamlı bir etkisi olduğu belirlenmiştir. Buna göre, bebek ölüm oranlarının arttığı bölgelerde doğurganlık oranlarının da arttığı yorumu yapılabilir. Agriculture değişkeninin Fertility üzerindeki etkisi negatif ve anlamlı bulunduğundan, tarımsal faaliyetlerin yoğun olduğu bölgelerde doğurganlık oranlarının daha düşük olabileceği düşünülebilir. Bunun yanında Education değişkeninin Agriculture üzerinde negatif, Catholic değişkeninin ise pozitif etkisi olduğu tespit edilmiştir.