#VERİNİN R PROGRAMINA AKTARILMASI
veri <- read.table(file = "veri4.dat", header = TRUE)
View(veri)
library(metaSEM)

#VERİNİN HAZIRLANMASI
sdeğ <- 6
değad <- c("m1","m2","m3","m4","m5","m6")
etiket <- list(değad,değad)
korver <- list()

for (i in 1:nrow(veri)){
  korver[[i]] <- vec2symMat(as.matrix(veri[i,3:17]),diag = FALSE)
  dimnames(korver[[i]]) <- etiket
}
korver

#Bu aşamada korelasyon matrislerin homojen olup olmadığını belirlemek için sabit etkiler modeline göre analiz yapılmıştır. 
SEM1 <- tssem1(korver, veri$N, method="FEM")
summary(SEM1)

#Sabit etkiler modeli altında heterojenliğin sebebinin araştırılması
MDR <- tssem1(korver, veri$N, method="FEM",cluster=veri$Kademe)
summary(MDR)

#Rastgele etkiler modeline göre korelasyon matrislerini birleştirilmesi
REM1 <- tssem1(Cov=korver, n=veri$N, method="REM", RE.type="Diag")
summary(REM1)

#S matrisinin hazırlanması: Bunun için Phi ve Psi matrislerinin hazırlanması gerekir.
Phi <- matrix(c(1,"0.4*cor","0.4*cor",1), nrow=2, ncol=2)
Psi <- Diag(c("0.4*e1","0.4*e2","0.4*e3","0.4*e4","0.4*e5", "0.4*e6"))

#Phi ve Psi matrisleri oluşturduktan sonra bu iki matrisin birleştirilerek adlandırılması gerekmektedir. 
S1 <- bdiagMat(list(Psi, Phi))
dimnames(S1)[[1]] <- c("M1","M2","M3","M4","M5","M6","Fakör1","Faktör2")
dimnames(S1)[[2]] <- dimnames(S1)[[1]]
S1

#S1 matrisi oluşturulduktan sonra bu matrisin MxMatrix sınıfına dönüştürülmesi gerekmektedir.
S1 <- as.mxMatrix(S1)

##A Matrisinin Oluşturulması
Lambda <- matrix(c("0.4*M1", 0,
                   "0.4*M2", 0,
                   "0.4*M3", 0,
                   0, "0.4*M4",
                   0, "0.4*M5",
                   0, "0.4*M6"),
                 nrow=6, ncol=2, byrow=TRUE) 
Lambda

#A matrisin 8x8 lik olmalıdır. Bu nedenle 6x2 lik Lambda matrisine sıfırkardan oluşan 6x6 ve 2x8 lik matrisler eklenmelidir.
sıfır6x6 <- matrix(0, nrow=6, ncol=6)
sıfır6x6

sıfır2x8 <- matrix(0, nrow=2, ncol=8)
sıfır2x8

#Oluşturulan sıfır matrisleri lambda matris ile birleştirilmelidir.
A1 <- rbind(cbind(sıfır6x6, Lambda),sıfır2x8)

#A1 matrisi oluşturulduktan sonra bu matrisin MxMatrix sınıfına dönüştürülmesi gerekmektedir. 
A1 <- as.mxMatrix(A1)
A1
#F Matrisinin oluşturulması
F1 <- create.Fmatrix(c(1,1,1,1,1,1,0,0), name="F1",
                     as.mxMatrix=FALSE)
dimnames(F1)[[1]] <- c("M1","M2","M3","M4","M5","M6")
dimnames(F1)[[2]] <- c("M1","M2","M3","M4","M5","M6", "Faktör1","Faktör2")

#F1 matrisi oluşturulduktan sonra bu matrisin MxMatrix sınıfına dönüştürülmesi gerekmektedir.
F1 <- as.mxMatrix(F1)
F1
#Modelin uyum iyiliğini incelenmesi
REM2 <- tssem2(REM1, Amatrix=A1, Smatrix=S1, Fmatrix=F1, diag.constraints=FALSE)
summary(REM2) 
plot(REM2)

##iKİNCİ YÖNTEM (Bu yöntemle diğer örneklerdeki A ve S matrisleri de hazırlanabilir)

#Rastgele etkiler modelinin ikinci aşamasını gerçekleştirebilmek için gerekli olan A, S ve F matrislerini oluşturmanın daha pratik bir yöntemi vardır. 
#Bu yöntemde birincil araştırmalarda yapısal eşitlik modeli oluşturmak için kullanılan lavaan paketi gerekmektedir.

install.packages(lavaan)
library(lavaan)

#Paketi kurup çalıştırdıktan sonra modeli oluşturabiliriz. Model şu söz dizimi ile oluşturulabilir:
  model<-"
  Faktör1=~M1+M2+M3
  Faktör2=~M4+M5+M6
  Faktör1~~Faktör2"

#RAM (Responsibility Assignment Matrix) matrisi oluşturulması
RAM <- lavaan2RAM(model, obs.variables=c("M1","M2","M3","M4","M5","M6"),
                  A.notation="on",
                  S.notation="with")
RAM
  
#Kurulan modelin uyum iyiliğinin test edilmesi
REM2 <- tssem2(REM1, RAM=RAM, intervals="LB")
summary(REM2)

#Yol grafiğinin hazırlanması
library(semPlot)
grafik <- meta2semPlot(REM2)

semPaths(grafik, whatLabels="est", layout = "tree2")



plot(REM2, color = "green")


  

