diff --git a/.gitignore b/.gitignore
index 36fcaa3..8f8d0f4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,3 @@
 *.csv
+*.xls
 .Rproj.user
diff --git a/RProject/pcm.R b/RProject/pcm.R
index b831698..7fcd065 100644
--- a/RProject/pcm.R
+++ b/RProject/pcm.R
@@ -19,7 +19,6 @@ lastChar <- function(str){
 ############################# ANALYSIS FUNCTIONS #############################
 #----------------------------------------------------------------------------#
 ##############################################################################
-
 pcm_analysis <- function(df=NULL,treatment='TT',irtmodel='PCM2',method='MML') {
   nbitems <- sum(sapply(1:20,function(x) paste0('item',x)) %in% colnames(df))
   resp <- df[,sapply(seq(1,nbitems),function(x) paste0('item',x))]
@@ -43,19 +42,19 @@ replicate_pcm_analysis_m4 <- function(df=NULL,treatment='TT',irtmodel='PCM2',met
   if (method=='MML') {
     n <- max(df[,sequence])
     print(n)
-    tam1 <- pbmclapply(seq(1,n),
+    tam1 <- lapply(seq(1,n),
                    function(x) pcm_analysis(df=df[df[,sequence]==x,],treatment=treatment,irtmodel=irtmodel)
-                   )
+    )
   }
   listitems <- c(sapply(c('_1','_2','_3'),function(x) paste0(sapply(seq(1,nbitems),function(x) paste0('item',x)),x)))
   returndat <- data.frame(matrix(nrow=max(df[,sequence]),ncol=length(listitems)))
   colnames(returndat) <- listitems
   for (s in seq(1,max(df[,sequence]))) {
-  for (k in seq(1,nbitems)) {
-    returndat[s,paste0('item',k,'_1')] <- tam1[[s]]$item[k,'AXsi_.Cat1']
-    returndat[s,paste0('item',k,'_2')] <- tam1[[s]]$item[k,'AXsi_.Cat2']-tam1[[s]]$item[k,'AXsi_.Cat1']
-    returndat[s,paste0('item',k,'_3')] <- tam1[[s]]$item[k,'AXsi_.Cat3']-tam1[[s]]$item[k,'AXsi_.Cat2']
-  }
+    for (k in seq(1,nbitems)) {
+      returndat[s,paste0('item',k,'_1')] <- tam1[[s]]$item[k,'AXsi_.Cat1']
+      returndat[s,paste0('item',k,'_2')] <- tam1[[s]]$item[k,'AXsi_.Cat2']-tam1[[s]]$item[k,'AXsi_.Cat1']
+      returndat[s,paste0('item',k,'_3')] <- tam1[[s]]$item[k,'AXsi_.Cat3']-tam1[[s]]$item[k,'AXsi_.Cat2']
+    }
   }
   returndat <- returndat[,sort_by(listitems, lastChar)]
   returndat$beta <- sapply(seq(1,max(df[,sequence])),function(k) tam1[[k]]$beta[2])
@@ -91,8 +90,8 @@ replicate_pcm_analysis_m2 <- function(df=NULL,treatment='TT',irtmodel='PCM2',met
   if (method=='MML') {
     n <- max(df[,sequence])
     print(n)
-    tam1 <- pbmclapply(seq(1,n),
-                       function(x) pcm_analysis(df=df[df[,sequence]==x,],treatment=treatment,irtmodel=irtmodel)
+    tam1 <- lapply(seq(1,n),
+                   function(x) pcm_analysis(df=df[df[,sequence]==x,],treatment=treatment,irtmodel=irtmodel)
     )
   }
   listitems <- sapply(seq(1,nbitems),function(x) paste0('item',x))
@@ -126,12 +125,12 @@ replicate_pcm_analysis_m2 <- function(df=NULL,treatment='TT',irtmodel='PCM2',met
 }
 
 
-replicate_pcm_analysis<- function(df=NULL,treatment='TT',irtmodel='PCM2',method='MML',sequence='replication',truebeta=0,eff.size=0,difsize=NA,nbdif=0) {
+replicate_pcm_analysis<- function(df=NULL,treatment='TT',irtmodel='PCM2',method='MML',sequence='replication',eff.size=0,difsize=NA,nbdif=0) {
   j <- max(df$item1)
   if(j==1) {
-    return(replicate_pcm_analysis_m2(df=NULL,treatment='TT',irtmodel='PCM2',method='MML',sequence='replication',truebeta=0,eff.size=0,difsize=NA,nbdif=0))
+    return(replicate_pcm_analysis_m2(df=df,treatment=treatment,irtmodel=irtmodel,method=method,sequence=sequence,eff.size=eff.size,difsize=difsize,nbdif=nbdif))
   } else {
-    return(replicate_pcm_analysis_m4(df=NULL,treatment='TT',irtmodel='PCM2',method='MML',sequence='replication',truebeta=0,eff.size=0,difsize=NA,nbdif=0))
+    return(replicate_pcm_analysis_m4(df=df,treatment=treatment,irtmodel=irtmodel,method=method,sequence=sequence,eff.size=eff.size,difsize=difsize,nbdif=nbdif))
   }
 }
 
diff --git a/Scripts/Analysis/NoDIF/pcm_dif.do b/Scripts/Analysis/NoDIF/pcm_dif.do
new file mode 100644
index 0000000..8137974
--- /dev/null
+++ b/Scripts/Analysis/NoDIF/pcm_dif.do
@@ -0,0 +1,1040 @@
+  *=================================================================================================================================================
+  * Date : 2024-01-23
+  * Stata version : Stata 18 SE
+  *
+  * This program analyses simulated data accounting for DIF through a partial credit model
+  *
+  * ado-files needed : - pcm (version 5.5 October 25, 2023, available on gitea)
+  *
+  * outputs :  for N=100
+  *
+  *
+  *================================================================================================================================================
+
+  * Load pcm.ado
+  adopath+"/home/corentin/Documents/These/Recherche/Simulations/Modules/"
+
+  *==========================
+  * Scenarios with : J=4
+  *==========================
+
+  ****** Scenarios with DIF on 1 item
+
+  ** Scenario 5: J = 4 items / M = 2 modalities / DIF size 0.3
+  local N = "100 200 300"
+  foreach Nnn in `N' {
+  local Nn =  `Nnn'
+  local path_data = "/home/corentin/Documents/These/Recherche/Simulations/Data/DIF/N`Nn'"
+  local path_res = "/home/corentin/Documents/These/Recherche/Simulations/Analysis/DIF/N`Nn'"
+  local scenarios = "A B C D E F G"
+  foreach scen in `scenarios' {
+  clear
+  import delim "`path_data'/scenario_5`scen'_`Nn'.csv", encoding(ISO-8859-2)  case(preserve) clear
+  rename TT tt
+
+  * Matrice de taille 1000 * 4 items + 1 DIF + beta + std beta + 1 dif
+  local nbitems = 4
+  local nbdif = 1
+  local taillemat = `nbitems'+`nbdif'+3
+  mat outmat = J(1000,`taillemat',.)
+  mat colnames outmat = "item1" "item2" "item3" "item4" "dif1" "beta" "se_beta" "dif_item_1"
+  di "Scenario 5`scen' / N=`Nnn'"
+  forvalues k=1/1000 {
+    if (mod(`k',100)==0) {
+      di "`k'/1000"
+    }
+    preserve
+    qui keep if replication==`k'
+    local difitems1=dif1
+    local mod "gsem "
+    forvalues i=1/`nbitems' {
+      if (`i'==`difitems1') {
+        local mod = "`mod'"+"(1.item`i'<-THETA@1 tt)"
+      }
+      else {
+        local mod = "`mod'"+"(1.item`i'<-THETA@1)"
+      }
+    }
+    local mod = "`mod'" + "(THETA<-tt), mlogit tol(0.01) iterate(500) latent(THETA) nocapslatent"
+    qui `mod'
+    mat V=r(table)
+    mat W=V[1..2,1...]
+    forvalues j=1/`nbitems' {
+      if (`j'<`difitems1') {
+        mat outmat[`k',`j'] = W[1,3*`j'] // items avant le premier dif
+      }
+      else {
+        mat outmat[`k',`j'] = W[1,1+3*`j'] // items après le premier dif
+      }
+    }
+    mat outmat[`k',`nbitems'+1] = W[1,3*`difitems1'-1] // coef de dif
+    mat outmat[`k',`nbitems'+2] = W[1,3*`nbitems'+2] // beta
+    mat outmat[`k',`nbitems'+3] = W[2,3*`nbitems'+2] // se beta
+    mat outmat[`k',`nbitems'+4] = `difitems1' // numéro item de dif
+    restore
+  }
+  putexcel set "`path_res'/out/5`scen'_`Nn'.xls", sheet("outmat") replace
+  putexcel A1=matrix(outmat), colnames
+}
+}
+
+
+** Scenario 6: J = 4 items / M = 4 modalities / DIF size 0.3
+local N = "100 200 300"
+foreach Nnn in `N' {
+local Nn =  `Nnn'
+local path_data = "/home/corentin/Documents/These/Recherche/Simulations/Data/DIF/N`Nn'"
+local path_res = "/home/corentin/Documents/These/Recherche/Simulations/Analysis/DIF/N`Nn'"
+local scenarios = "A B C D E F G"
+foreach scen in `scenarios' {
+clear
+import delim "`path_data'/scenario_6`scen'_`Nn'.csv", encoding(ISO-8859-2)  case(preserve) clear
+rename TT tt
+
+* Matrice de taille 1000 * 4 items + 1 DIF + beta + std beta + 1 dif
+local nbitems = 4
+local nbdif = 1
+local taillemat = 3*`nbitems'+`nbdif'+3+2
+mat outmat = J(1000,`taillemat',.)
+mat colnames outmat = "item1_1" "item1_2" "item1_3" "item2_1" "item2_2" "item2_3" "item3_1" "item3_2" "item3_3" "item4_1" "item4_2" "item4_3" "dif1_1" "dif1_2" "dif1_3" "beta" "se_beta" "dif_item_1"
+di "Scenario 6`scen' / N=`Nnn'"
+forvalues k=1/1000 {
+  if (mod(`k',100)==0) {
+    di "`k'/1000"
+  }
+  preserve
+  qui keep if replication==`k'
+  local difitems1=dif1
+  forvalues i=1/`nbitems' {
+    if (`i'==`difitems1') {
+      local constrnt = "constraint 1 2*([1.item`i']_cons-([1.item`i']_cons+[1.item`i'] tt))=([2.item`i']_cons-([2.item`i']_cons+[2.item`i'] tt))"
+      local constrnt2 = "constraint 2 3*([1.item`i']_cons-([1.item`i']_cons+[1.item`i'] tt))=([3.item`i']_cons-([3.item`i']_cons+[3.item`i'] tt))"
+    }
+  }
+  local mod "gsem "
+  forvalues i=1/`nbitems' {
+    if (`i'==`difitems1') {
+      local mod = "`mod'"+"(1.item`i'<-THETA@1 tt)(2.item`i'<-THETA@2 tt)(3.item`i'<-THETA@3 tt)"
+    }
+    else {
+      local mod = "`mod'"+"(1.item`i'<-THETA@1)(2.item`i'<-THETA@2)(3.item`i'<-THETA@3)"
+    }
+  }
+  local mod = "`mod'" + "(THETA<-tt), mlogit tol(0.01) iterate(500) latent(THETA) nocapslatent constraint(1 2)"
+  qui `constrnt'
+  qui `constrnt2'
+  qui `mod'
+  mat V=r(table)
+  mat W=V[1..2,1...]
+  forvalues j=1/`nbitems' {
+  if (`j'<`difitems1') {
+      mat outmat[`k',3*`j'-2] = W[1,7*(`j'-1)+3] // items avant le premier dif
+      mat outmat[`k',3*`j'-1] = W[1,7*(`j'-1)+5] // items avant le premier dif
+      mat outmat[`k',3*`j'] =   W[1,7*(`j'-1)+7] // items avant le premier dif
+      }
+  else if (`j'==`difitems1') {
+      mat outmat[`k',3*`j'-2] = W[1,7*(`j'-1)+4] // items du le premier dif
+      mat outmat[`k',3*`j'-1] = W[1,7*(`j'-1)+7] // items du le premier dif
+      mat outmat[`k',3*`j'] =   W[1,7*(`j'-1)+10] // items du le premier dif    }
+    }
+  else {
+      mat outmat[`k',3*`j'-2] = W[1,7*(`j'-1)+6] // items avant le premier dif
+      mat outmat[`k',3*`j'-1] = W[1,7*(`j'-1)+8] // items avant le premier dif
+      mat outmat[`k',3*`j'] =   W[1,7*(`j'-1)+10] // items avant le premier dif
+    }
+  }
+    mat outmat[`k',3*`nbitems'+1] = W[1,7*(`difitems1'-1)+2] // coef de dif
+    mat outmat[`k',3*`nbitems'+2] = W[1,7*(`difitems1'-1)+5] // coef de dif
+    mat outmat[`k',3*`nbitems'+3] = W[1,7*(`difitems1'-1)+8] // coef de dif
+    mat outmat[`k',3*`nbitems'+4] = W[1,7*`nbitems'+4] // beta
+    mat outmat[`k',3*`nbitems'+5] = W[2,7*`nbitems'+4] // se beta
+    mat outmat[`k',3*`nbitems'+6] = `difitems1' // numéro item de dif
+    restore
+}
+putexcel set "`path_res'/out/6`scen'_`Nn'.xls", sheet("outmat") replace
+putexcel A1=matrix(outmat), colnames
+}
+}
+
+
+** Scenario 7: J = 4 items / M = 2 modalities / DIF size 0.5
+  local N = "100 200 300"
+  foreach Nnn in `N' {
+  local Nn =  `Nnn'
+  local path_data = "/home/corentin/Documents/These/Recherche/Simulations/Data/DIF/N`Nn'"
+  local path_res = "/home/corentin/Documents/These/Recherche/Simulations/Analysis/DIF/N`Nn'"
+  local scenarios = "A B C D E F G"
+  foreach scen in `scenarios' {
+  clear
+  import delim "`path_data'/scenario_7`scen'_`Nn'.csv", encoding(ISO-8859-2)  case(preserve) clear
+  rename TT tt
+
+  * Matrice de taille 1000 * 4 items + 1 DIF + beta + std beta + 1 dif
+  local nbitems = 4
+  local nbdif = 1
+  local taillemat = `nbitems'+`nbdif'+3
+  mat outmat = J(1000,`taillemat',.)
+  mat colnames outmat = "item1" "item2" "item3" "item4" "dif1" "beta" "se_beta" "dif_item_1"
+  di "Scenario 7`scen' / N=`Nnn'"
+  forvalues k=1/1000 {
+    if (mod(`k',100)==0) {
+      di "`k'/1000"
+    }
+    preserve
+    qui keep if replication==`k'
+    local difitems1=dif1
+    local mod "gsem "
+    forvalues i=1/`nbitems' {
+      if (`i'==`difitems1') {
+        local mod = "`mod'"+"(1.item`i'<-THETA@1 tt)"
+      }
+      else {
+        local mod = "`mod'"+"(1.item`i'<-THETA@1)"
+      }
+    }
+    local mod = "`mod'" + "(THETA<-tt), mlogit tol(0.01) iterate(500) latent(THETA) nocapslatent"
+    qui `mod'
+    mat V=r(table)
+    mat W=V[1..2,1...]
+    forvalues j=1/`nbitems' {
+      if (`j'<`difitems1') {
+        mat outmat[`k',`j'] = W[1,3*`j'] // items avant le premier dif
+      }
+      else {
+        mat outmat[`k',`j'] = W[1,1+3*`j'] // items après le premier dif
+      }
+    }
+    mat outmat[`k',`nbitems'+1] = W[1,3*`difitems1'-1] // coef de dif
+    mat outmat[`k',`nbitems'+2] = W[1,3*`nbitems'+2] // beta
+    mat outmat[`k',`nbitems'+3] = W[2,3*`nbitems'+2] // se beta
+    mat outmat[`k',`nbitems'+4] = `difitems1' // numéro item de dif
+    restore
+  }
+  putexcel set "`path_res'/out/7`scen'_`Nn'.xls", sheet("outmat") replace
+  putexcel A1=matrix(outmat), colnames
+}
+}
+
+
+** Scenario 8: J = 4 items / M = 4 modalities / DIF size 0.5
+local N = "100 200 300"
+foreach Nnn in `N' {
+local Nn =  `Nnn'
+local path_data = "/home/corentin/Documents/These/Recherche/Simulations/Data/DIF/N`Nn'"
+local path_res = "/home/corentin/Documents/These/Recherche/Simulations/Analysis/DIF/N`Nn'"
+local scenarios = "A B C D E F G"
+foreach scen in `scenarios' {
+clear
+import delim "`path_data'/scenario_8`scen'_`Nn'.csv", encoding(ISO-8859-2)  case(preserve) clear
+rename TT tt
+
+* Matrice de taille 1000 * 4 items + 1 DIF + beta + std beta + 1 dif
+local nbitems = 4
+local nbdif = 1
+local taillemat = 3*`nbitems'+`nbdif'+3+2
+mat outmat = J(1000,`taillemat',.)
+mat colnames outmat = "item1_1" "item1_2" "item1_3" "item2_1" "item2_2" "item2_3" "item3_1" "item3_2" "item3_3" "item4_1" "item4_2" "item4_3" "dif1_1" "dif1_2" "dif1_3" "beta" "se_beta" "dif_item_1"
+di "Scenario 8`scen' / N=`Nnn'"
+forvalues k=1/1000 {
+  if (mod(`k',100)==0) {
+    di "`k'/1000"
+  }
+  preserve
+  qui keep if replication==`k'
+  local difitems1=dif1
+  forvalues i=1/`nbitems' {
+    if (`i'==`difitems1') {
+      local constrnt = "constraint 1 2*([1.item`i']_cons-([1.item`i']_cons+[1.item`i'] tt))=([2.item`i']_cons-([2.item`i']_cons+[2.item`i'] tt))"
+      local constrnt2 = "constraint 2 3*([1.item`i']_cons-([1.item`i']_cons+[1.item`i'] tt))=([3.item`i']_cons-([3.item`i']_cons+[3.item`i'] tt))"
+    }
+  }
+  local mod "gsem "
+  forvalues i=1/`nbitems' {
+    if (`i'==`difitems1') {
+      local mod = "`mod'"+"(1.item`i'<-THETA@1 tt)(2.item`i'<-THETA@2 tt)(3.item`i'<-THETA@3 tt)"
+    }
+    else {
+      local mod = "`mod'"+"(1.item`i'<-THETA@1)(2.item`i'<-THETA@2)(3.item`i'<-THETA@3)"
+    }
+  }
+  local mod = "`mod'" + "(THETA<-tt), mlogit tol(0.01) iterate(500) latent(THETA) nocapslatent constraint(1 2)"
+  qui `constrnt'
+  qui `constrnt2'
+  qui `mod'
+  mat V=r(table)
+  mat W=V[1..2,1...]
+  forvalues j=1/`nbitems' {
+  if (`j'<`difitems1') {
+      mat outmat[`k',3*`j'-2] = W[1,7*(`j'-1)+3] // items avant le premier dif
+      mat outmat[`k',3*`j'-1] = W[1,7*(`j'-1)+5] // items avant le premier dif
+      mat outmat[`k',3*`j'] =   W[1,7*(`j'-1)+7] // items avant le premier dif
+      }
+  else if (`j'==`difitems1') {
+      mat outmat[`k',3*`j'-2] = W[1,7*(`j'-1)+4] // items du le premier dif
+      mat outmat[`k',3*`j'-1] = W[1,7*(`j'-1)+7] // items du le premier dif
+      mat outmat[`k',3*`j'] =   W[1,7*(`j'-1)+10] // items du le premier dif    }
+    }
+  else {
+      mat outmat[`k',3*`j'-2] = W[1,7*(`j'-1)+6] // items avant le premier dif
+      mat outmat[`k',3*`j'-1] = W[1,7*(`j'-1)+8] // items avant le premier dif
+      mat outmat[`k',3*`j'] =   W[1,7*(`j'-1)+10] // items avant le premier dif
+    }
+  }
+    mat outmat[`k',3*`nbitems'+1] = W[1,7*(`difitems1'-1)+2] // coef de dif
+    mat outmat[`k',3*`nbitems'+2] = W[1,7*(`difitems1'-1)+5] // coef de dif
+    mat outmat[`k',3*`nbitems'+3] = W[1,7*(`difitems1'-1)+8] // coef de dif
+    mat outmat[`k',3*`nbitems'+4] = W[1,7*`nbitems'+4] // beta
+    mat outmat[`k',3*`nbitems'+5] = W[2,7*`nbitems'+4] // se beta
+    mat outmat[`k',3*`nbitems'+6] = `difitems1' // numéro item de dif
+    restore
+}
+putexcel set "`path_res'/out/8`scen'_`Nn'.xls", sheet("outmat") replace
+putexcel A1=matrix(outmat), colnames
+}
+}
+
+
+****** Scenarios with DIF on 2 items
+
+
+** Scenario 9: J = 4 items / M = 2 modalities / DIF size 0.3 x2
+  local N = "100 200 300"
+  foreach Nnn in `N' {
+  local Nn =  `Nnn'
+  local path_data = "/home/corentin/Documents/These/Recherche/Simulations/Data/DIF/N`Nn'"
+  local path_res = "/home/corentin/Documents/These/Recherche/Simulations/Analysis/DIF/N`Nn'"
+  local scenarios = "A B C D E F G"
+  foreach scen in `scenarios' {
+  clear
+  import delim "`path_data'/scenario_9`scen'_`Nn'.csv", encoding(ISO-8859-2)  case(preserve) clear
+  rename TT tt
+
+  * Matrice de taille 1000 * 4 items + 1 DIF + beta + std beta + 1 dif
+  local nbitems = 4
+  local nbdif = 2
+  local taillemat = `nbitems'+`nbdif'+4
+  mat outmat = J(1000,`taillemat',.)
+  mat colnames outmat = "item1" "item2" "item3" "item4" "dif1" "dif2" "beta" "se_beta" "dif_item_1" "dif_item_2"
+  di "Scenario 9`scen' / N=`Nnn'"
+  forvalues k=1/1000 {
+    if (mod(`k',100)==0) {
+      di "`k'/1000"
+    }
+    preserve
+    qui keep if replication==`k'
+    local difitems1=dif1
+    local difitems2=dif2
+    if (`difitems1'<`difitems2') {
+      local difitemsmin `difitems1'
+      local difitemsmax `difitems2'
+    }
+    else {
+      local difitemsmin `difitems2'
+      local difitemsmax `difitems1'
+    }
+    local mod "gsem "
+    forvalues i=1/`nbitems' {
+      if (`i'==`difitemsmin' | `i'==`difitemsmax') {
+        local mod = "`mod'"+"(1.item`i'<-THETA@1 tt)"
+      }
+      else {
+        local mod = "`mod'"+"(1.item`i'<-THETA@1)"
+      }
+    }
+    local mod = "`mod'" + "(THETA<-tt), mlogit tol(0.01) iterate(500) latent(THETA) nocapslatent"
+    qui `mod'
+    mat V=r(table)
+    mat W=V[1..2,1...]
+    forvalues j=1/`nbitems' {
+      if (`j'<`difitemsmin') {
+        mat outmat[`k',`j'] = W[1,3*`j'] // items avant le premier dif
+      }
+      else if (`j'<`difitemsmax') {
+        mat outmat[`k',`j'] = W[1,1+3*`j'] // items après le premier dif
+      }
+      else {
+        mat outmat[`k',`j'] = W[1,2+3*`j'] // items après le deuxieme dif
+      }
+    }
+    mat outmat[`k',`nbitems'+1] = W[1,3*`difitemsmin'-1] // coef de dif
+    mat outmat[`k',`nbitems'+2] = W[1,3*`difitemsmax'] // coef de dif
+    mat outmat[`k',`nbitems'+3] = W[1,3*`nbitems'+3] // beta
+    mat outmat[`k',`nbitems'+4] = W[2,3*`nbitems'+3] // se beta
+    mat outmat[`k',`nbitems'+5] = `difitemsmin' // numéro item de dif
+    mat outmat[`k',`nbitems'+6] = `difitemsmax' // numéro item de dif
+    restore
+  }
+  putexcel set "`path_res'/out/9`scen'_`Nn'.xls", sheet("outmat") replace
+  putexcel A1=matrix(outmat), colnames
+}
+}
+
+
+
+** Scenario 10: J = 4 items / M = 4 modalities / DIF size 0.3 x2
+local N = "100 200 300"
+foreach Nnn in `N' {
+local Nn =  `Nnn'
+local path_data = "/home/corentin/Documents/These/Recherche/Simulations/Data/DIF/N`Nn'"
+local path_res = "/home/corentin/Documents/These/Recherche/Simulations/Analysis/DIF/N`Nn'"
+local scenarios = "A B C D E F G"
+foreach scen in `scenarios' {
+clear
+import delim "`path_data'/scenario_10`scen'_`Nn'.csv", encoding(ISO-8859-2)  case(preserve) clear
+rename TT tt
+
+* Matrice de taille 1000 * 4 items + 1 DIF + beta + std beta + 1 dif
+local nbitems = 4
+local nbdif = 2
+local taillemat = 3*`nbitems'+6+2+`nbdif'
+mat outmat = J(1000,`taillemat',.)
+mat colnames outmat = "item1_1" "item1_2" "item1_3" "item2_1" "item2_2" "item2_3" "item3_1" "item3_2" "item3_3" "item4_1" "item4_2" "item4_3" "dif1_1" "dif1_2" "dif1_3" "dif2_1" "dif2_2" "dif2_3" "beta" "se_beta" "dif_item_1" "dif_item_2"
+di "Scenario 10`scen' / N=`Nnn'"
+forvalues k=1/1000 {
+  if (mod(`k',100)==0) {
+    di "`k'/1000"
+  }
+  preserve
+  qui keep if replication==`k'
+  local difitems1=dif1
+  local difitems2=dif2
+  if (`difitems1'<`difitems2') {
+    local difitemsmin `difitems1'
+    local difitemsmax `difitems2'
+  }
+  else {
+    local difitemsmin `difitems2'
+    local difitemsmax `difitems1'
+  }
+  forvalues i=1/`nbitems' {
+    if (`i'==`difitemsmin') {
+      local constrnt = "constraint 1 2*([1.item`i']_cons-([1.item`i']_cons+[1.item`i'] tt))=([2.item`i']_cons-([2.item`i']_cons+[2.item`i'] tt))"
+      local constrnt2 = "constraint 2 3*([1.item`i']_cons-([1.item`i']_cons+[1.item`i'] tt))=([3.item`i']_cons-([3.item`i']_cons+[3.item`i'] tt))"
+    }
+  }
+  forvalues i=1/`nbitems' {
+    if (`i'==`difitemsmax') {
+      local constrn3 = "constraint 3 2*([1.item`i']_cons-([1.item`i']_cons+[1.item`i'] tt))=([2.item`i']_cons-([2.item`i']_cons+[2.item`i'] tt))"
+      local constrnt4 = "constraint 4 3*([1.item`i']_cons-([1.item`i']_cons+[1.item`i'] tt))=([3.item`i']_cons-([3.item`i']_cons+[3.item`i'] tt))"
+    }
+  }
+  local mod "gsem "
+  forvalues i=1/`nbitems' {
+    if (`i'==`difitemsmin' | `i'==`difitemsmax') {
+      local mod = "`mod'"+"(1.item`i'<-THETA@1 tt)(2.item`i'<-THETA@2 tt)(3.item`i'<-THETA@3 tt)"
+    }
+    else {
+      local mod = "`mod'"+"(1.item`i'<-THETA@1)(2.item`i'<-THETA@2)(3.item`i'<-THETA@3)"
+    }
+  }
+  local mod = "`mod'" + "(THETA<-tt), mlogit tol(0.01) iterate(500) latent(THETA) nocapslatent constraint(1 2)"
+  qui `constrnt'
+  qui `constrnt2'
+  qui `constrnt3'
+  qui `constrnt4'
+  `mod'
+  mat V=r(table)
+  mat W=V[1..2,1...]
+  forvalues j=1/`nbitems' {
+  if (`j'<`difitemsmin') {
+      mat outmat[`k',3*`j'-2] = W[1,7*(`j'-1)+3] // items avant le premier dif
+      mat outmat[`k',3*`j'-1] = W[1,7*(`j'-1)+5] // items avant le premier dif
+      mat outmat[`k',3*`j'] =   W[1,7*(`j'-1)+7] // items avant le premier dif
+      }
+  else if (`j'==`difitemsmin') {
+      mat outmat[`k',3*`j'-2] = W[1,7*(`j'-1)+4] // items du le premier dif
+      mat outmat[`k',3*`j'-1] = W[1,7*(`j'-1)+7] // items du le premier dif
+      mat outmat[`k',3*`j'] =   W[1,7*(`j'-1)+10] // items du le premier dif    }
+    }
+  else if (`j'<`difitemsmax') {
+      mat outmat[`k',3*`j'-2] = W[1,7*(`j'-1)+6] // items avant le premier dif
+      mat outmat[`k',3*`j'-1] = W[1,7*(`j'-1)+8] // items avant le premier dif
+      mat outmat[`k',3*`j'] =   W[1,7*(`j'-1)+10] // items avant le premier dif
+    }
+  else if (`j'==`difitemsmax') {
+      mat outmat[`k',3*`j'-2] = W[1,7*(`j'-1)+7] // items avant le premier dif
+      mat outmat[`k',3*`j'-1] = W[1,7*(`j'-1)+10] // items avant le premier dif
+      mat outmat[`k',3*`j'] =   W[1,7*(`j'-1)+13] // items avant le premier dif
+    }
+  else {
+    mat outmat[`k',3*`j'-2] = W[1,7*(`j'-1)+9] // items avant le premier dif
+    mat outmat[`k',3*`j'-1] = W[1,7*(`j'-1)+11] // items avant le premier dif
+    mat outmat[`k',3*`j'] =   W[1,7*(`j'-1)+13] // items avant le premier dif
+  }
+  }
+    mat outmat[`k',3*`nbitems'+1] = W[1,7*(`difitemsmin'-1)+2] // coef de dif
+    mat outmat[`k',3*`nbitems'+2] = W[1,7*(`difitemsmin'-1)+5] // coef de dif
+    mat outmat[`k',3*`nbitems'+3] = W[1,7*(`difitemsmin'-1)+8] // coef de dif
+    mat outmat[`k',3*`nbitems'+4] = W[1,7*(`difitemsmax'-1)+5] // coef de dif
+    mat outmat[`k',3*`nbitems'+5] = W[1,7*(`difitemsmax'-1)+8] // coef de dif
+    mat outmat[`k',3*`nbitems'+6] = W[1,7*(`difitemsmax'-1)+11] // coef de dif
+    mat outmat[`k',3*`nbitems'+7] = W[1,7*`nbitems'+7] // beta
+    mat outmat[`k',3*`nbitems'+8] = W[2,7*`nbitems'+7] // se beta
+    mat outmat[`k',3*`nbitems'+9] = `difitemsmin' // numéro item de dif
+    mat outmat[`k',3*`nbitems'+10] = `difitemsmax' // numéro item de dif
+    restore
+}
+putexcel set "`path_res'/out/10`scen'_`Nn'.xls", sheet("outmat") replace
+putexcel A1=matrix(outmat), colnames
+}
+}
+
+
+
+** Scenario 11: J = 4 items / M = 2 modalities / DIF size 0.5 x2
+  local N = "100 200 300"
+  foreach Nnn in `N' {
+  local Nn =  `Nnn'
+  local path_data = "/home/corentin/Documents/These/Recherche/Simulations/Data/DIF/N`Nn'"
+  local path_res = "/home/corentin/Documents/These/Recherche/Simulations/Analysis/DIF/N`Nn'"
+  local scenarios = "A B C D E F G"
+  foreach scen in `scenarios' {
+  clear
+  import delim "`path_data'/scenario_11`scen'_`Nn'.csv", encoding(ISO-8859-2)  case(preserve) clear
+  rename TT tt
+
+  * Matrice de taille 1000 * 4 items + 1 DIF + beta + std beta + 1 dif
+  local nbitems = 4
+  local nbdif = 2
+  local taillemat = `nbitems'+`nbdif'+4
+  mat outmat = J(1000,`taillemat',.)
+  mat colnames outmat = "item1" "item2" "item3" "item4" "dif1" "dif2" "beta" "se_beta" "dif_item_1" "dif_item_2"
+  di "Scenario 11`scen' / N=`Nnn'"
+  forvalues k=1/1000 {
+    if (mod(`k',100)==0) {
+      di "`k'/1000"
+    }
+    preserve
+    qui keep if replication==`k'
+    local difitems1=dif1
+    local difitems2=dif2
+    if (`difitems1'<`difitems2') {
+      local difitemsmin `difitems1'
+      local difitemsmax `difitems2'
+    }
+    else {
+      local difitemsmin `difitems2'
+      local difitemsmax `difitems1'
+    }
+    local mod "gsem "
+    forvalues i=1/`nbitems' {
+      if (`i'==`difitemsmin' | `i'==`difitemsmax') {
+        local mod = "`mod'"+"(1.item`i'<-THETA@1 tt)"
+      }
+      else {
+        local mod = "`mod'"+"(1.item`i'<-THETA@1)"
+      }
+    }
+    local mod = "`mod'" + "(THETA<-tt), mlogit tol(0.01) iterate(500) latent(THETA) nocapslatent"
+    qui `mod'
+    mat V=r(table)
+    mat W=V[1..2,1...]
+    forvalues j=1/`nbitems' {
+      if (`j'<`difitemsmin') {
+        mat outmat[`k',`j'] = W[1,3*`j'] // items avant le premier dif
+      }
+      else if (`j'<`difitemsmax') {
+        mat outmat[`k',`j'] = W[1,1+3*`j'] // items après le premier dif
+      }
+      else {
+        mat outmat[`k',`j'] = W[1,2+3*`j'] // items après le deuxieme dif
+      }
+    }
+    mat outmat[`k',`nbitems'+1] = W[1,3*`difitemsmin'-1] // coef de dif
+    mat outmat[`k',`nbitems'+2] = W[1,3*`difitemsmax'] // coef de dif
+    mat outmat[`k',`nbitems'+3] = W[1,3*`nbitems'+3] // beta
+    mat outmat[`k',`nbitems'+4] = W[2,3*`nbitems'+3] // se beta
+    mat outmat[`k',`nbitems'+5] = `difitemsmin' // numéro item de dif
+    mat outmat[`k',`nbitems'+6] = `difitemsmax' // numéro item de dif
+    restore
+  }
+  putexcel set "`path_res'/out/11`scen'_`Nn'.xls", sheet("outmat") replace
+  putexcel A1=matrix(outmat), colnames
+}
+}
+
+
+
+** Scenario 12: J = 4 items / M = 4 modalities / DIF size 0.5 x2
+local N = "100 200 300"
+foreach Nnn in `N' {
+local Nn =  `Nnn'
+local path_data = "/home/corentin/Documents/These/Recherche/Simulations/Data/DIF/N`Nn'"
+local path_res = "/home/corentin/Documents/These/Recherche/Simulations/Analysis/DIF/N`Nn'"
+local scenarios = "A B C D E F G"
+foreach scen in `scenarios' {
+clear
+import delim "`path_data'/scenario_12`scen'_`Nn'.csv", encoding(ISO-8859-2)  case(preserve) clear
+rename TT tt
+
+* Matrice de taille 1000 * 4 items + 1 DIF + beta + std beta + 1 dif
+local nbitems = 4
+local nbdif = 2
+local taillemat = 3*`nbitems'+6+2+`nbdif'
+mat outmat = J(1000,`taillemat',.)
+mat colnames outmat = "item1_1" "item1_2" "item1_3" "item2_1" "item2_2" "item2_3" "item3_1" "item3_2" "item3_3" "item4_1" "item4_2" "item4_3" "dif1_1" "dif1_2" "dif1_3" "dif2_1" "dif2_2" "dif2_3" "beta" "se_beta" "dif_item_1" "dif_item_2"
+di "Scenario 12`scen' / N=`Nnn'"
+forvalues k=1/1000 {
+  if (mod(`k',100)==0) {
+    di "`k'/1000"
+  }
+  preserve
+  qui keep if replication==`k'
+  local difitems1=dif1
+  local difitems2=dif2
+  if (`difitems1'<`difitems2') {
+    local difitemsmin `difitems1'
+    local difitemsmax `difitems2'
+  }
+  else {
+    local difitemsmin `difitems2'
+    local difitemsmax `difitems1'
+  }
+  forvalues i=1/`nbitems' {
+    if (`i'==`difitemsmin') {
+      local constrnt = "constraint 1 2*([1.item`i']_cons-([1.item`i']_cons+[1.item`i'] tt))=([2.item`i']_cons-([2.item`i']_cons+[2.item`i'] tt))"
+      local constrnt2 = "constraint 2 3*([1.item`i']_cons-([1.item`i']_cons+[1.item`i'] tt))=([3.item`i']_cons-([3.item`i']_cons+[3.item`i'] tt))"
+    }
+  }
+  forvalues i=1/`nbitems' {
+    if (`i'==`difitemsmax') {
+      local constrn3 = "constraint 3 2*([1.item`i']_cons-([1.item`i']_cons+[1.item`i'] tt))=([2.item`i']_cons-([2.item`i']_cons+[2.item`i'] tt))"
+      local constrnt4 = "constraint 4 3*([1.item`i']_cons-([1.item`i']_cons+[1.item`i'] tt))=([3.item`i']_cons-([3.item`i']_cons+[3.item`i'] tt))"
+    }
+  }
+  local mod "gsem "
+  forvalues i=1/`nbitems' {
+    if (`i'==`difitemsmin' | `i'==`difitemsmax') {
+      local mod = "`mod'"+"(1.item`i'<-THETA@1 tt)(2.item`i'<-THETA@2 tt)(3.item`i'<-THETA@3 tt)"
+    }
+    else {
+      local mod = "`mod'"+"(1.item`i'<-THETA@1)(2.item`i'<-THETA@2)(3.item`i'<-THETA@3)"
+    }
+  }
+  local mod = "`mod'" + "(THETA<-tt), mlogit tol(0.01) iterate(500) latent(THETA) nocapslatent constraint(1 2)"
+  qui `constrnt'
+  qui `constrnt2'
+  qui `constrnt3'
+  qui `constrnt4'
+  `mod'
+  mat V=r(table)
+  mat W=V[1..2,1...]
+  forvalues j=1/`nbitems' {
+  if (`j'<`difitemsmin') {
+      mat outmat[`k',3*`j'-2] = W[1,7*(`j'-1)+3] // items avant le premier dif
+      mat outmat[`k',3*`j'-1] = W[1,7*(`j'-1)+5] // items avant le premier dif
+      mat outmat[`k',3*`j'] =   W[1,7*(`j'-1)+7] // items avant le premier dif
+      }
+  else if (`j'==`difitemsmin') {
+      mat outmat[`k',3*`j'-2] = W[1,7*(`j'-1)+4] // items du le premier dif
+      mat outmat[`k',3*`j'-1] = W[1,7*(`j'-1)+7] // items du le premier dif
+      mat outmat[`k',3*`j'] =   W[1,7*(`j'-1)+10] // items du le premier dif    }
+    }
+  else if (`j'<`difitemsmax') {
+      mat outmat[`k',3*`j'-2] = W[1,7*(`j'-1)+6] // items avant le premier dif
+      mat outmat[`k',3*`j'-1] = W[1,7*(`j'-1)+8] // items avant le premier dif
+      mat outmat[`k',3*`j'] =   W[1,7*(`j'-1)+10] // items avant le premier dif
+    }
+  else if (`j'==`difitemsmax') {
+      mat outmat[`k',3*`j'-2] = W[1,7*(`j'-1)+7] // items avant le premier dif
+      mat outmat[`k',3*`j'-1] = W[1,7*(`j'-1)+10] // items avant le premier dif
+      mat outmat[`k',3*`j'] =   W[1,7*(`j'-1)+13] // items avant le premier dif
+    }
+  else {
+    mat outmat[`k',3*`j'-2] = W[1,7*(`j'-1)+9] // items avant le premier dif
+    mat outmat[`k',3*`j'-1] = W[1,7*(`j'-1)+11] // items avant le premier dif
+    mat outmat[`k',3*`j'] =   W[1,7*(`j'-1)+13] // items avant le premier dif
+  }
+  }
+    mat outmat[`k',3*`nbitems'+1] = W[1,7*(`difitemsmin'-1)+2] // coef de dif
+    mat outmat[`k',3*`nbitems'+2] = W[1,7*(`difitemsmin'-1)+5] // coef de dif
+    mat outmat[`k',3*`nbitems'+3] = W[1,7*(`difitemsmin'-1)+8] // coef de dif
+    mat outmat[`k',3*`nbitems'+4] = W[1,7*(`difitemsmax'-1)+5] // coef de dif
+    mat outmat[`k',3*`nbitems'+5] = W[1,7*(`difitemsmax'-1)+8] // coef de dif
+    mat outmat[`k',3*`nbitems'+6] = W[1,7*(`difitemsmax'-1)+11] // coef de dif
+    mat outmat[`k',3*`nbitems'+7] = W[1,7*`nbitems'+7] // beta
+    mat outmat[`k',3*`nbitems'+8] = W[2,7*`nbitems'+7] // se beta
+    mat outmat[`k',3*`nbitems'+9] = `difitemsmin' // numéro item de dif
+    mat outmat[`k',3*`nbitems'+10] = `difitemsmax' // numéro item de dif
+    restore
+}
+putexcel set "`path_res'/out/12`scen'_`Nn'.xls", sheet("outmat") replace
+putexcel A1=matrix(outmat), colnames
+}
+}
+
+
+
+*==========================
+* Scenarios with : J=4
+*==========================
+
+
+****** Scenarios with DIF on 2 items
+
+
+** Scenario 13: J = 7 items / M = 2 modalities / DIF size 0.3 x2
+  local N = "100 200 300"
+  foreach Nnn in `N' {
+  local Nn =  `Nnn'
+  local path_data = "/home/corentin/Documents/These/Recherche/Simulations/Data/DIF/N`Nn'"
+  local path_res = "/home/corentin/Documents/These/Recherche/Simulations/Analysis/DIF/N`Nn'"
+  local scenarios = "A B C D E F G"
+  foreach scen in `scenarios' {
+  clear
+  import delim "`path_data'/scenario_13`scen'_`Nn'.csv", encoding(ISO-8859-2)  case(preserve) clear
+  rename TT tt
+
+  * Matrice de taille 1000 * 4 items + 1 DIF + beta + std beta + 1 dif
+  local nbitems = 4
+  local nbdif = 2
+  local taillemat = `nbitems'+`nbdif'+4
+  mat outmat = J(1000,`taillemat',.)
+  mat colnames outmat = "item1" "item2" "item3" "item4" "dif1" "dif2" "beta" "se_beta" "dif_item_1" "dif_item_2"
+  di "Scenario 13`scen' / N=`Nnn'"
+  forvalues k=1/1000 {
+    if (mod(`k',100)==0) {
+      di "`k'/1000"
+    }
+    preserve
+    qui keep if replication==`k'
+    local difitems1=dif1
+    local difitems2=dif2
+    if (`difitems1'<`difitems2') {
+      local difitemsmin `difitems1'
+      local difitemsmax `difitems2'
+    }
+    else {
+      local difitemsmin `difitems2'
+      local difitemsmax `difitems1'
+    }
+    local mod "gsem "
+    forvalues i=1/`nbitems' {
+      if (`i'==`difitemsmin' | `i'==`difitemsmax') {
+        local mod = "`mod'"+"(1.item`i'<-THETA@1 tt)"
+      }
+      else {
+        local mod = "`mod'"+"(1.item`i'<-THETA@1)"
+      }
+    }
+    local mod = "`mod'" + "(THETA<-tt), mlogit tol(0.01) iterate(500) latent(THETA) nocapslatent"
+    qui `mod'
+    mat V=r(table)
+    mat W=V[1..2,1...]
+    forvalues j=1/`nbitems' {
+      if (`j'<`difitemsmin') {
+        mat outmat[`k',`j'] = W[1,3*`j'] // items avant le premier dif
+      }
+      else if (`j'<`difitemsmax') {
+        mat outmat[`k',`j'] = W[1,1+3*`j'] // items après le premier dif
+      }
+      else {
+        mat outmat[`k',`j'] = W[1,2+3*`j'] // items après le deuxieme dif
+      }
+    }
+    mat outmat[`k',`nbitems'+1] = W[1,3*`difitemsmin'-1] // coef de dif
+    mat outmat[`k',`nbitems'+2] = W[1,3*`difitemsmax'] // coef de dif
+    mat outmat[`k',`nbitems'+3] = W[1,3*`nbitems'+3] // beta
+    mat outmat[`k',`nbitems'+4] = W[2,3*`nbitems'+3] // se beta
+    mat outmat[`k',`nbitems'+5] = `difitemsmin' // numéro item de dif
+    mat outmat[`k',`nbitems'+6] = `difitemsmax' // numéro item de dif
+    restore
+  }
+  putexcel set "`path_res'/out/13`scen'_`Nn'.xls", sheet("outmat") replace
+  putexcel A1=matrix(outmat), colnames
+}
+}
+
+
+
+** Scenario 14: J = 7 items / M = 4 modalities / DIF size 0.3 x2
+local N = "100 200 300"
+foreach Nnn in `N' {
+local Nn =  `Nnn'
+local path_data = "/home/corentin/Documents/These/Recherche/Simulations/Data/DIF/N`Nn'"
+local path_res = "/home/corentin/Documents/These/Recherche/Simulations/Analysis/DIF/N`Nn'"
+local scenarios = "A B C D E F G"
+foreach scen in `scenarios' {
+clear
+import delim "`path_data'/scenario_14`scen'_`Nn'.csv", encoding(ISO-8859-2)  case(preserve) clear
+rename TT tt
+
+* Matrice de taille 1000 * 4 items + 1 DIF + beta + std beta + 1 dif
+local nbitems = 4
+local nbdif = 2
+local taillemat = 3*`nbitems'+6+2+`nbdif'
+mat outmat = J(1000,`taillemat',.)
+mat colnames outmat = "item1_1" "item1_2" "item1_3" "item2_1" "item2_2" "item2_3" "item3_1" "item3_2" "item3_3" "item4_1" "item4_2" "item4_3" "dif1_1" "dif1_2" "dif1_3" "dif2_1" "dif2_2" "dif2_3" "beta" "se_beta" "dif_item_1" "dif_item_2"
+di "Scenario 14`scen' / N=`Nnn'"
+forvalues k=1/1000 {
+  if (mod(`k',100)==0) {
+    di "`k'/1000"
+  }
+  preserve
+  qui keep if replication==`k'
+  local difitems1=dif1
+  local difitems2=dif2
+  if (`difitems1'<`difitems2') {
+    local difitemsmin `difitems1'
+    local difitemsmax `difitems2'
+  }
+  else {
+    local difitemsmin `difitems2'
+    local difitemsmax `difitems1'
+  }
+  forvalues i=1/`nbitems' {
+    if (`i'==`difitemsmin') {
+      local constrnt = "constraint 1 2*([1.item`i']_cons-([1.item`i']_cons+[1.item`i'] tt))=([2.item`i']_cons-([2.item`i']_cons+[2.item`i'] tt))"
+      local constrnt2 = "constraint 2 3*([1.item`i']_cons-([1.item`i']_cons+[1.item`i'] tt))=([3.item`i']_cons-([3.item`i']_cons+[3.item`i'] tt))"
+    }
+  }
+  forvalues i=1/`nbitems' {
+    if (`i'==`difitemsmax') {
+      local constrn3 = "constraint 3 2*([1.item`i']_cons-([1.item`i']_cons+[1.item`i'] tt))=([2.item`i']_cons-([2.item`i']_cons+[2.item`i'] tt))"
+      local constrnt4 = "constraint 4 3*([1.item`i']_cons-([1.item`i']_cons+[1.item`i'] tt))=([3.item`i']_cons-([3.item`i']_cons+[3.item`i'] tt))"
+    }
+  }
+  local mod "gsem "
+  forvalues i=1/`nbitems' {
+    if (`i'==`difitemsmin' | `i'==`difitemsmax') {
+      local mod = "`mod'"+"(1.item`i'<-THETA@1 tt)(2.item`i'<-THETA@2 tt)(3.item`i'<-THETA@3 tt)"
+    }
+    else {
+      local mod = "`mod'"+"(1.item`i'<-THETA@1)(2.item`i'<-THETA@2)(3.item`i'<-THETA@3)"
+    }
+  }
+  local mod = "`mod'" + "(THETA<-tt), mlogit tol(0.01) iterate(500) latent(THETA) nocapslatent constraint(1 2)"
+  qui `constrnt'
+  qui `constrnt2'
+  qui `constrnt3'
+  qui `constrnt4'
+  `mod'
+  mat V=r(table)
+  mat W=V[1..2,1...]
+  forvalues j=1/`nbitems' {
+  if (`j'<`difitemsmin') {
+      mat outmat[`k',3*`j'-2] = W[1,7*(`j'-1)+3] // items avant le premier dif
+      mat outmat[`k',3*`j'-1] = W[1,7*(`j'-1)+5] // items avant le premier dif
+      mat outmat[`k',3*`j'] =   W[1,7*(`j'-1)+7] // items avant le premier dif
+      }
+  else if (`j'==`difitemsmin') {
+      mat outmat[`k',3*`j'-2] = W[1,7*(`j'-1)+4] // items du le premier dif
+      mat outmat[`k',3*`j'-1] = W[1,7*(`j'-1)+7] // items du le premier dif
+      mat outmat[`k',3*`j'] =   W[1,7*(`j'-1)+10] // items du le premier dif    }
+    }
+  else if (`j'<`difitemsmax') {
+      mat outmat[`k',3*`j'-2] = W[1,7*(`j'-1)+6] // items avant le premier dif
+      mat outmat[`k',3*`j'-1] = W[1,7*(`j'-1)+8] // items avant le premier dif
+      mat outmat[`k',3*`j'] =   W[1,7*(`j'-1)+10] // items avant le premier dif
+    }
+  else if (`j'==`difitemsmax') {
+      mat outmat[`k',3*`j'-2] = W[1,7*(`j'-1)+7] // items avant le premier dif
+      mat outmat[`k',3*`j'-1] = W[1,7*(`j'-1)+10] // items avant le premier dif
+      mat outmat[`k',3*`j'] =   W[1,7*(`j'-1)+13] // items avant le premier dif
+    }
+  else {
+    mat outmat[`k',3*`j'-2] = W[1,7*(`j'-1)+9] // items avant le premier dif
+    mat outmat[`k',3*`j'-1] = W[1,7*(`j'-1)+11] // items avant le premier dif
+    mat outmat[`k',3*`j'] =   W[1,7*(`j'-1)+13] // items avant le premier dif
+  }
+  }
+    mat outmat[`k',3*`nbitems'+1] = W[1,7*(`difitemsmin'-1)+2] // coef de dif
+    mat outmat[`k',3*`nbitems'+2] = W[1,7*(`difitemsmin'-1)+5] // coef de dif
+    mat outmat[`k',3*`nbitems'+3] = W[1,7*(`difitemsmin'-1)+8] // coef de dif
+    mat outmat[`k',3*`nbitems'+4] = W[1,7*(`difitemsmax'-1)+5] // coef de dif
+    mat outmat[`k',3*`nbitems'+5] = W[1,7*(`difitemsmax'-1)+8] // coef de dif
+    mat outmat[`k',3*`nbitems'+6] = W[1,7*(`difitemsmax'-1)+11] // coef de dif
+    mat outmat[`k',3*`nbitems'+7] = W[1,7*`nbitems'+7] // beta
+    mat outmat[`k',3*`nbitems'+8] = W[2,7*`nbitems'+7] // se beta
+    mat outmat[`k',3*`nbitems'+9] = `difitemsmin' // numéro item de dif
+    mat outmat[`k',3*`nbitems'+10] = `difitemsmax' // numéro item de dif
+    restore
+}
+putexcel set "`path_res'/out/14`scen'_`Nn'.xls", sheet("outmat") replace
+putexcel A1=matrix(outmat), colnames
+}
+}
+
+
+
+** Scenario 15: J = 7 items / M = 2 modalities / DIF size 0.5 x2
+  local N = "100 200 300"
+  foreach Nnn in `N' {
+  local Nn =  `Nnn'
+  local path_data = "/home/corentin/Documents/These/Recherche/Simulations/Data/DIF/N`Nn'"
+  local path_res = "/home/corentin/Documents/These/Recherche/Simulations/Analysis/DIF/N`Nn'"
+  local scenarios = "A B C D E F G"
+  foreach scen in `scenarios' {
+  clear
+  import delim "`path_data'/scenario_15`scen'_`Nn'.csv", encoding(ISO-8859-2)  case(preserve) clear
+  rename TT tt
+
+  * Matrice de taille 1000 * 4 items + 1 DIF + beta + std beta + 1 dif
+  local nbitems = 4
+  local nbdif = 2
+  local taillemat = `nbitems'+`nbdif'+4
+  mat outmat = J(1000,`taillemat',.)
+  mat colnames outmat = "item1" "item2" "item3" "item4" "dif1" "dif2" "beta" "se_beta" "dif_item_1" "dif_item_2"
+  di "Scenario 15`scen' / N=`Nnn'"
+  forvalues k=1/1000 {
+    if (mod(`k',100)==0) {
+      di "`k'/1000"
+    }
+    preserve
+    qui keep if replication==`k'
+    local difitems1=dif1
+    local difitems2=dif2
+    if (`difitems1'<`difitems2') {
+      local difitemsmin `difitems1'
+      local difitemsmax `difitems2'
+    }
+    else {
+      local difitemsmin `difitems2'
+      local difitemsmax `difitems1'
+    }
+    local mod "gsem "
+    forvalues i=1/`nbitems' {
+      if (`i'==`difitemsmin' | `i'==`difitemsmax') {
+        local mod = "`mod'"+"(1.item`i'<-THETA@1 tt)"
+      }
+      else {
+        local mod = "`mod'"+"(1.item`i'<-THETA@1)"
+      }
+    }
+    local mod = "`mod'" + "(THETA<-tt), mlogit tol(0.01) iterate(500) latent(THETA) nocapslatent"
+    qui `mod'
+    mat V=r(table)
+    mat W=V[1..2,1...]
+    forvalues j=1/`nbitems' {
+      if (`j'<`difitemsmin') {
+        mat outmat[`k',`j'] = W[1,3*`j'] // items avant le premier dif
+      }
+      else if (`j'<`difitemsmax') {
+        mat outmat[`k',`j'] = W[1,1+3*`j'] // items après le premier dif
+      }
+      else {
+        mat outmat[`k',`j'] = W[1,2+3*`j'] // items après le deuxieme dif
+      }
+    }
+    mat outmat[`k',`nbitems'+1] = W[1,3*`difitemsmin'-1] // coef de dif
+    mat outmat[`k',`nbitems'+2] = W[1,3*`difitemsmax'] // coef de dif
+    mat outmat[`k',`nbitems'+3] = W[1,3*`nbitems'+3] // beta
+    mat outmat[`k',`nbitems'+4] = W[2,3*`nbitems'+3] // se beta
+    mat outmat[`k',`nbitems'+5] = `difitemsmin' // numéro item de dif
+    mat outmat[`k',`nbitems'+6] = `difitemsmax' // numéro item de dif
+    restore
+  }
+  putexcel set "`path_res'/out/15`scen'_`Nn'.xls", sheet("outmat") replace
+  putexcel A1=matrix(outmat), colnames
+}
+}
+
+
+
+** Scenario 16: J = 7 items / M = 4 modalities / DIF size 0.5 x2
+local N = "100 200 300"
+foreach Nnn in `N' {
+local Nn =  `Nnn'
+local path_data = "/home/corentin/Documents/These/Recherche/Simulations/Data/DIF/N`Nn'"
+local path_res = "/home/corentin/Documents/These/Recherche/Simulations/Analysis/DIF/N`Nn'"
+local scenarios = "A B C D E F G"
+foreach scen in `scenarios' {
+clear
+import delim "`path_data'/scenario_16`scen'_`Nn'.csv", encoding(ISO-8859-2)  case(preserve) clear
+rename TT tt
+
+* Matrice de taille 1000 * 4 items + 1 DIF + beta + std beta + 1 dif
+local nbitems = 4
+local nbdif = 2
+local taillemat = 3*`nbitems'+6+2+`nbdif'
+mat outmat = J(1000,`taillemat',.)
+mat colnames outmat = "item1_1" "item1_2" "item1_3" "item2_1" "item2_2" "item2_3" "item3_1" "item3_2" "item3_3" "item4_1" "item4_2" "item4_3" "dif1_1" "dif1_2" "dif1_3" "dif2_1" "dif2_2" "dif2_3" "beta" "se_beta" "dif_item_1" "dif_item_2"
+di "Scenario 16`scen' / N=`Nnn'"
+forvalues k=1/1000 {
+  if (mod(`k',100)==0) {
+    di "`k'/1000"
+  }
+  preserve
+  qui keep if replication==`k'
+  local difitems1=dif1
+  local difitems2=dif2
+  if (`difitems1'<`difitems2') {
+    local difitemsmin `difitems1'
+    local difitemsmax `difitems2'
+  }
+  else {
+    local difitemsmin `difitems2'
+    local difitemsmax `difitems1'
+  }
+  forvalues i=1/`nbitems' {
+    if (`i'==`difitemsmin') {
+      local constrnt = "constraint 1 2*([1.item`i']_cons-([1.item`i']_cons+[1.item`i'] tt))=([2.item`i']_cons-([2.item`i']_cons+[2.item`i'] tt))"
+      local constrnt2 = "constraint 2 3*([1.item`i']_cons-([1.item`i']_cons+[1.item`i'] tt))=([3.item`i']_cons-([3.item`i']_cons+[3.item`i'] tt))"
+    }
+  }
+  forvalues i=1/`nbitems' {
+    if (`i'==`difitemsmax') {
+      local constrn3 = "constraint 3 2*([1.item`i']_cons-([1.item`i']_cons+[1.item`i'] tt))=([2.item`i']_cons-([2.item`i']_cons+[2.item`i'] tt))"
+      local constrnt4 = "constraint 4 3*([1.item`i']_cons-([1.item`i']_cons+[1.item`i'] tt))=([3.item`i']_cons-([3.item`i']_cons+[3.item`i'] tt))"
+    }
+  }
+  local mod "gsem "
+  forvalues i=1/`nbitems' {
+    if (`i'==`difitemsmin' | `i'==`difitemsmax') {
+      local mod = "`mod'"+"(1.item`i'<-THETA@1 tt)(2.item`i'<-THETA@2 tt)(3.item`i'<-THETA@3 tt)"
+    }
+    else {
+      local mod = "`mod'"+"(1.item`i'<-THETA@1)(2.item`i'<-THETA@2)(3.item`i'<-THETA@3)"
+    }
+  }
+  local mod = "`mod'" + "(THETA<-tt), mlogit tol(0.01) iterate(500) latent(THETA) nocapslatent constraint(1 2)"
+  qui `constrnt'
+  qui `constrnt2'
+  qui `constrnt3'
+  qui `constrnt4'
+  `mod'
+  mat V=r(table)
+  mat W=V[1..2,1...]
+  forvalues j=1/`nbitems' {
+  if (`j'<`difitemsmin') {
+      mat outmat[`k',3*`j'-2] = W[1,7*(`j'-1)+3] // items avant le premier dif
+      mat outmat[`k',3*`j'-1] = W[1,7*(`j'-1)+5] // items avant le premier dif
+      mat outmat[`k',3*`j'] =   W[1,7*(`j'-1)+7] // items avant le premier dif
+      }
+  else if (`j'==`difitemsmin') {
+      mat outmat[`k',3*`j'-2] = W[1,7*(`j'-1)+4] // items du le premier dif
+      mat outmat[`k',3*`j'-1] = W[1,7*(`j'-1)+7] // items du le premier dif
+      mat outmat[`k',3*`j'] =   W[1,7*(`j'-1)+10] // items du le premier dif    }
+    }
+  else if (`j'<`difitemsmax') {
+      mat outmat[`k',3*`j'-2] = W[1,7*(`j'-1)+6] // items avant le premier dif
+      mat outmat[`k',3*`j'-1] = W[1,7*(`j'-1)+8] // items avant le premier dif
+      mat outmat[`k',3*`j'] =   W[1,7*(`j'-1)+10] // items avant le premier dif
+    }
+  else if (`j'==`difitemsmax') {
+      mat outmat[`k',3*`j'-2] = W[1,7*(`j'-1)+7] // items avant le premier dif
+      mat outmat[`k',3*`j'-1] = W[1,7*(`j'-1)+10] // items avant le premier dif
+      mat outmat[`k',3*`j'] =   W[1,7*(`j'-1)+13] // items avant le premier dif
+    }
+  else {
+    mat outmat[`k',3*`j'-2] = W[1,7*(`j'-1)+9] // items avant le premier dif
+    mat outmat[`k',3*`j'-1] = W[1,7*(`j'-1)+11] // items avant le premier dif
+    mat outmat[`k',3*`j'] =   W[1,7*(`j'-1)+13] // items avant le premier dif
+  }
+  }
+    mat outmat[`k',3*`nbitems'+1] = W[1,7*(`difitemsmin'-1)+2] // coef de dif
+    mat outmat[`k',3*`nbitems'+2] = W[1,7*(`difitemsmin'-1)+5] // coef de dif
+    mat outmat[`k',3*`nbitems'+3] = W[1,7*(`difitemsmin'-1)+8] // coef de dif
+    mat outmat[`k',3*`nbitems'+4] = W[1,7*(`difitemsmax'-1)+5] // coef de dif
+    mat outmat[`k',3*`nbitems'+5] = W[1,7*(`difitemsmax'-1)+8] // coef de dif
+    mat outmat[`k',3*`nbitems'+6] = W[1,7*(`difitemsmax'-1)+11] // coef de dif
+    mat outmat[`k',3*`nbitems'+7] = W[1,7*`nbitems'+7] // beta
+    mat outmat[`k',3*`nbitems'+8] = W[2,7*`nbitems'+7] // se beta
+    mat outmat[`k',3*`nbitems'+9] = `difitemsmin' // numéro item de dif
+    mat outmat[`k',3*`nbitems'+10] = `difitemsmax' // numéro item de dif
+    restore
+}
+putexcel set "`path_res'/out/16`scen'_`Nn'.xls", sheet("outmat") replace
+putexcel A1=matrix(outmat), colnames
+}
+}
diff --git a/Scripts/Analysis/NoDIF/pcm_dif_100.do b/Scripts/Analysis/NoDIF/pcm_dif_100.do
deleted file mode 100644
index b15fbee..0000000
--- a/Scripts/Analysis/NoDIF/pcm_dif_100.do
+++ /dev/null
@@ -1,148 +0,0 @@
-  *=================================================================================================================================================
-  * Date : 2024-01-23
-  * Stata version : Stata 18 SE
-  *
-  * This program analyses simulated data accounting for DIF through a partial credit model
-  *
-  * ado-files needed : - pcm (version 5.5 October 25, 2023, available on gitea)
-  *
-  * outputs :  for N=100
-  *
-  *
-  *================================================================================================================================================
-
-  * Load pcm.ado
-  adopath+"/home/corentin/Documents/These/Recherche/Simulations/Modules/"
-
-  *==========================
-  * Scenarios with : J=4
-  *==========================
-
-  ** Scenario 5: J = 4 items / M = 2 modalities / DIF size 0.3
-  local N = "100 200 300"
-  foreach Nnn in `N' {
-  local Nn =  `Nnn'
-  local path_data = "/home/corentin/Documents/These/Recherche/Simulations/Data/DIF/N`Nn'"
-  local path_res = "/home/corentin/Documents/These/Recherche/Simulations/Analysis/DIF/N`Nn'"
-  local scenarios = "A B C D E F G"
-  foreach scen in `scenarios' {
-  clear
-  import delim "`path_data'/scenario_5`scen'_`Nn'.csv", encoding(ISO-8859-2)  case(preserve) clear
-  rename TT tt
-
-  * Matrice de taille 1000 * 4 items + 1 DIF + beta + std beta + 1 dif
-  local nbitems = 4
-  local nbdif = 1
-  local taillemat = `nbitems'+`nbdif'+3
-  mat outmat = J(1000,`taillemat',.)
-  mat colnames outmat = "item1" "item2" "item3" "item4" "dif1" "beta" "se_beta" "dif_item_1"
-  di "Scenario 5`scen' / N=`Nnn'"
-  forvalues k=1/1000 {
-    if (mod(`k',100)==0) {
-      di "`k'/1000"
-    }
-    preserve
-    qui keep if replication==`k'
-    local difitems1=dif1
-    local mod "gsem "
-    forvalues i=1/`nbitems' {
-      if (`i'==`difitems1') {
-        local mod = "`mod'"+"(1.item`i'<-THETA@1 tt)"
-      }
-      else {
-        local mod = "`mod'"+"(1.item`i'<-THETA@1)"
-      }
-    }
-    local mod = "`mod'" + "(THETA<-tt), mlogit tol(0.01) iterate(500) latent(THETA) nocapslatent"
-    qui `mod'
-    mat V=r(table)
-    mat W=V[1..2,1...]
-    forvalues j=1/`nbitems' {
-      if (`j'<`difitems1') {
-        mat outmat[`k',`j'] = W[1,3*`j'] // items avant le premier dif
-      }
-      else {
-        mat outmat[`k',`j'] = W[1,1+3*`j'] // items après le premier dif
-      }
-    }
-    mat outmat[`k',`nbitems'+1] = W[1,3*`difitems1'-1] // coef de dif
-    mat outmat[`k',`nbitems'+2] = W[1,3*`nbitems'+2] // beta
-    mat outmat[`k',`nbitems'+3] = W[2,3*`nbitems'+2] // se beta
-    mat outmat[`k',`nbitems'+4] = `difitems1' // numéro item de dif
-    restore
-  }
-  putexcel set "`path_res'/out/5`scen'_`Nn'.xls", sheet("outmat") replace
-  putexcel A1=matrix(outmat), colnames
-}
-}
-
-
-
-** Scenario 6: J = 4 items / M = 4 modalities / DIF size 0.3
-local N = "100 200 300"
-foreach Nnn in `N' {
-local Nn =  `Nnn'
-local path_data = "/home/corentin/Documents/These/Recherche/Simulations/Data/DIF/N`Nn'"
-local path_res = "/home/corentin/Documents/These/Recherche/Simulations/Analysis/DIF/N`Nn'"
-local scenarios = "A B C D E F G"
-foreach scen in `scenarios' {
-clear
-import delim "`path_data'/scenario_6`scen'_`Nn'.csv", encoding(ISO-8859-2)  case(preserve) clear
-rename TT tt
-
-* Matrice de taille 1000 * 4 items + 1 DIF + beta + std beta + 1 dif
-local nbitems = 4
-local nbdif = 1
-local taillemat = 3*`nbitems'+`nbdif'+3+2
-mat outmat = J(1000,`taillemat',.)
-mat colnames outmat = "item1_1" "item1_2" "item1_3" "item2_1" "item2_2" "item2_3" "item3_1" "item3_2" "item3_3" "item4_1" "item4_2" "item4_3" "dif1_1" "dif1_2" "dif1_3" "beta" "se_beta" "dif_item_1"
-di "Scenario 6`scen' / N=`Nnn'"
-forvalues k=1/1000 {
-  if (mod(`k',100)==0) {
-    di "`k'/1000"
-  }
-  preserve
-  qui keep if replication==`k'
-  local difitems1=dif1
-  local mod "gsem "
-  forvalues i=1/`nbitems' {
-    if (`i'==`difitems1') {
-      local mod = "`mod'"+"(1.item`i'<-THETA@1 tt)(2.item`i'<-THETA@2 tt)(3.item`i'<-THETA@3 tt)"
-    }
-    else {
-      local mod = "`mod'"+"(1.item`i'<-THETA@1)(2.item`i'<-THETA@2)(2.item`i'<-THETA@2)"
-    }
-  }
-  local mod = "`mod'" + "(THETA<-tt), mlogit tol(0.01) iterate(500) latent(THETA) nocapslatent"
-  qui `mod'
-  mat V=r(table)
-  mat W=V[1..2,1...]
-  forvalues j=1/`nbitems' {
-  if (`j'<`difitems1') {
-      mat outmat[`k',3*`j'-2] = W[1,6*`j'-3] // items avant le premier dif
-      mat outmat[`k',3*`j'-1] = W[1,6*`j'-1] // items avant le premier dif
-      mat outmat[`k',3*`j'] =   W[1,6*`j'] // items avant le premier dif
-      }
-  else if (`j'==`difitems1') {
-      mat outmat[`k',3*`j'-2] = W[1,6*`j'-2] // items du le premier dif
-      mat outmat[`k',3*`j'-1] = W[1,6*`j'+1] // items du le premier dif
-      mat outmat[`k',3*`j'] =   W[1,6*`j'+4] // items du le premier dif    }
-    }
-  else {
-      mat outmat[`k',3*`j'-2] = W[1,6*`j'+1] // items apres le premier dif
-      mat outmat[`k',3*`j'-1] = W[1,6*`j'+3] // items apres le premier dif
-      mat outmat[`k',3*`j'] =   W[1,6*`j'+4] // items apres le premier dif    }
-    }
-  }
-    mat outmat[`k',3*`nbitems'+1] = W[1,6*`difitems1'-4] // coef de dif
-    mat outmat[`k',3*`nbitems'+2] = W[1,6*`difitems1'-1] // coef de dif
-    mat outmat[`k',3*`nbitems'+3] = W[1,6*`difitems1'+2] // coef de dif
-    mat outmat[`k',3*`nbitems'+4] = W[1,6*`nbitems'+5] // beta
-    mat outmat[`k',3*`nbitems'+5] = W[2,6*`nbitems'+5] // se beta
-    mat outmat[`k',3*`nbitems'+6] = `difitems1' // numéro item de dif
-    restore
-}
-putexcel set "`path_res'/out/6`scen'_`Nn'.xls", sheet("outmat") replace
-putexcel A1=matrix(outmat), colnames
-}
-}
diff --git a/Scripts/Analysis/NoDIF/test.do b/Scripts/Analysis/NoDIF/test.do
new file mode 100644
index 0000000..b870129
--- /dev/null
+++ b/Scripts/Analysis/NoDIF/test.do
@@ -0,0 +1,12 @@
+
+local path_data = "/home/corentin/Documents/These/Recherche/Simulations/Data/NoDIF/N100"
+import delim "`path_data'/scenario_4A_100.csv", encoding(ISO-8859-2)  case(preserve) clear
+keep if replication==1
+rename TT tt
+gsem (1.item1 <- THETA@1)(2.item1 <- THETA@2)(3.item1 <- THETA@3)///
+(1.item2 <- THETA@1)(2.item2 <- THETA@2)(3.item2 <- THETA@3)///
+(1.item3 <- THETA@1)(2.item3 <- THETA@2)(3.item3 <- THETA@3)///
+(1.item4 <- THETA@1)(2.item4 <- THETA@2)(3.item4 <- THETA@3)///
+(THETA <- tt), mlogit tol(0.01) iterate(500) latent(THETA) nocapslatent
+
+pcm item1 item2 item3 item4 item5 item6 item7, categorical(tt)