Üçü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.