#veri.dat dosyasının R programına aktarılması ve görülmesi
veri <- read.table(file = "veri1.dat", header = TRUE)
View(veri)

#metaSEM paketinin aktif hale getirilmesi
library("metaSEM")

##VERİNİN HAZIRLANMASI
#Değişken sayısı ve değişken adının belirlenmesi
sdeğ <- 3
değad <- c("B","Y","M")

# Değişken adlarını (değad) etiket olarak oluşturulacak listelere atanması
etiket <- list(değad,değad)


# korver (korelasyonlardan oluşan verilerin bir listesi) adlı bir liste oluşturulması
korver <- list()

# Oluşturulan korver listesinin korelasyon matrisleri ile doldurulması.Bu betikte dikkat edilmesi gereken veri[i, 3:5] kısmıdır. 
#Bu sayılar veri dosyamızda korelasyon katsayılarının 3 ile 5. sütunlar arasında olduğunu göstermektedir.
  for (i in 1:nrow(veri)){	
    korver[[i]] <- vec2symMat(as.matrix(veri[i,3:5]),diag = FALSE)
    dimnames(korver[[i]]) <- etiket
  }

#Her bir korelasyon matrisindeki her bir satır için o satırdaki NA olan korelasyonların toplamı, toplam değişken sayısının bir eksiğine eşit ise köşegen ögenin NA olması gerekmektedir.
#Bu döngüde herhangi bir değişikliğe gerek yoktur.
  for (i in 1:length(korver)){
    for (j in 1:nrow(korver[[i]])){
      if (sum(is.na(korver[[i]][j,]))==sdeğ-1){
        korver[[i]][j,j] <- NA
      }
    }
    }

#Her bir çalışmada her bir kayıp korelasyon için (NA) başka değişkenlerle en az korelasyona sahip değişkenin köşegeninde 1 yerine NA konulmalı.Böylece elde daha fazla korelasyon kalabilir.
#Bu döngüde herhangi bir değişikliğe gerek yoktur.
for (i in 1:length(korver)){
  for (j in 1:nrow(korver[[i]])){
    for (k in 1:sdeğ){
      if (is.na(korver[[i]][j,k])==TRUE
          &is.na(korver[[i]][j,j])!=TRUE
          &is.na(korver[[i]][k,k])!=TRUE){
        if(sum(is.na(korver[[i]])[j,])>sum(is.na(korver[[i]])[k,])){
          korver[[i]][k,k] = NA}
        if(sum(is.na(korver[[i]])[j,])<=sum(is.na(korver[[i]])[k,])){
          korver[[i]][j,j] = NA}
      }
    }
  }
  }

##1. AŞAMA: TOPLAM KORELASYON MATRİSİNİN OLUŞTURULMASI

#Sabit etkiler modeline göre toplam korelasyon matrisinin oluşturulması
SEM1 <- tssem1(Cov=korver, n=veri$N, method="FEM")
summary(SEM1)

#Sabit etkiler modelinde yayın türünün heterojenliği açıklayıp açıklamadığını test etme
MDR <- tssem1(korver, veri$N, method="FEM", cluster=veri$yayın)
summary(MDR)

#Rastgele etkiler modeline göre toplam korelasyon matrisinin oluşturulması
REM1 <- tssem1(Cov=korver, n=veri$N, method="REM", RE.type="Diag")
summary(REM1)

#2.AŞAMA: YAPISAL EŞİTLİK MODELİNİN KURULMASI
#A matrisinin oluşturulması
A <- create.mxMatrix(
  c(0,"0.4*b12","0.4*b13",
    0,0,0,
    0,0,0),
  type = "Full",
  nrow = 3,
  ncol = 3,
  byrow = TRUE,
  name = "A",
  dimnames = list(değad,değad))
A           

#S matrisinin oluşturulması
S <- create.mxMatrix(c("0.4*ey",
                       0, 1,
                       0,"0.4*kov",1),
                     type="Symm", byrow = TRUE, name="S",
                     dimnames=list(değad, değad))
S       

#Rastgele etkiler modeline göre modelin uyum iyiliğinin test edilmesi
REM2 <- tssem2(REM1, Amatrix = A, Smatrix = S, diag.constraints = FALSE)
summary(REM2)    

#Modelin yol grafiğini yapmak için semPlot paketi kurulmalıdır.
install.packages("semPlot")
library("semPlot")     
grafik <- meta2semPlot(REM2)
semPaths(grafik, whatLabels="est", layout = "tree2")   

#Açıklanan varyansı hesaplama
HatVar<-0.83
R2<-1-HatVar
R2  


