Completed n=50 DIF analysis
parent
e3f0637db3
commit
510aca9bac
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,516 @@
|
|||||||
|
|
||||||
|
************************************************** Scenario 20: J = 7 items / M = 4 modalities / DIF size 0.3 x3
|
||||||
|
local N = "50"
|
||||||
|
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_20`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 = 7
|
||||||
|
local nbdif = 3
|
||||||
|
local taillemat = 3*`nbitems'+9+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" "item5_1" "item5_2" "item5_3" "item6_1" "item6_2" "item6_3" "item7_1" "item7_2" "item7_3" "dif1_1" "dif1_2" "dif1_3" "dif2_1" "dif2_2" "dif2_3" "dif3_1" "dif3_2" "dif3_3" "beta" "se_beta" "dif_item_1" "dif_item_2" "dif_item_3"
|
||||||
|
di "Scenario 20`scen' / N=`Nnn'"
|
||||||
|
forvalues k=1/1000 {
|
||||||
|
if (mod(`k',100)==0) {
|
||||||
|
di "`k'/1000"
|
||||||
|
}
|
||||||
|
preserve
|
||||||
|
qui keep if replication==`k'
|
||||||
|
|
||||||
|
|
||||||
|
* MERGE des modalités si non représentées
|
||||||
|
local com_z = 0
|
||||||
|
qui gen comz = 0
|
||||||
|
forvalues j = 1 / `nbitems' {
|
||||||
|
local recoda_`j' = 0
|
||||||
|
qui tab item`j' if tt == 0, matrow(rect1_g0_`j') matcell(nbrt1_g0_`j')
|
||||||
|
local maxm`j'_t1_g0 = rect1_g0_`j'[r(r),1]
|
||||||
|
local minm`j'_t1_g0 = rect1_g0_`j'[1,1]
|
||||||
|
|
||||||
|
qui tab item`j' if tt == 1, matrow(rect1_g1_`j') matcell(nbrt1_g1_`j')
|
||||||
|
local minm`j'_t1_g1 = rect1_g1_`j'[1,1]
|
||||||
|
local maxm`j'_t1_g1 = rect1_g1_`j'[r(r),1]
|
||||||
|
|
||||||
|
local minm_`j' = min(`minm`j'_t1_g0',`minm`j'_t1_g1')
|
||||||
|
local maxm_`j' = max(`maxm`j'_t1_g0',`maxm`j'_t1_g1')
|
||||||
|
local nbm_`j' = `=`maxm_`j''-`minm_`j'''
|
||||||
|
|
||||||
|
if `minm_`j'' != 0 & `com_z' == 0 {
|
||||||
|
local com_z = 1
|
||||||
|
}
|
||||||
|
qui count if item`j' == 3 & tt == 0
|
||||||
|
local mod3plac = r(N)
|
||||||
|
qui count if item`j' == 3 & tt == 1
|
||||||
|
local mod3tt = r(N)
|
||||||
|
local nb_rn3 = min(`mod3plac',`mod3tt')
|
||||||
|
if `nb_rn3'==0 {
|
||||||
|
qui replace comz = 1
|
||||||
|
}
|
||||||
|
|
||||||
|
forvalues m = 0/`=`nbm_`j''-1' {
|
||||||
|
qui count if item`j' == `m' & tt == 0
|
||||||
|
local nb_rn1_g0 = r(N)
|
||||||
|
qui count if item`j' == `m' & tt == 1
|
||||||
|
local nb_rn1_g1 = r(N)
|
||||||
|
local nb_rn = min(`nb_rn1_g0',`nb_rn1_g1')
|
||||||
|
if `nb_rn' == 0 {
|
||||||
|
qui replace comz = 1
|
||||||
|
local recoda_`j' = 1
|
||||||
|
if `m' == 0 | `m' < `minm`j'_t1_g0' | `m' < `minm`j'_t1_g1' {
|
||||||
|
local stop = 1
|
||||||
|
forvalues kk = 1/`=`nbm_`j''-`m'' {
|
||||||
|
qui count if item`j' == `=`m' + `kk'' & tt == 0
|
||||||
|
local v`kk'1_0 = r(N)
|
||||||
|
qui count if item`j' == `=`m' + `kk'' & tt == 1
|
||||||
|
local v`kk'1_1 = r(N)
|
||||||
|
if (`v`kk'1_0' != 0 | `v`kk'1_1' != 0) & `stop' != 0 {
|
||||||
|
qui replace item`j'= `=`m'+`kk'' if item`j'==`m'
|
||||||
|
local zzz=`j'+`nbitems'
|
||||||
|
*qui replace item`zzz'=`=`m'+`kk'' if item``=`j'+`nbitems'''==`m'
|
||||||
|
*di "WARNING SCENARIO `k': items `j': answers `m' and `=`m'+`kk'' merged"
|
||||||
|
local stop = 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if `m' == `=`nbm_`j''-1' | `m' >= `maxm`j'_t1_g1' {
|
||||||
|
local stop = 1
|
||||||
|
forvalues kk = 1/`=`m'' {
|
||||||
|
qui count if item`j' == `=`m' - `kk'' & tt == 0
|
||||||
|
local v`kk'1_0 = r(N)
|
||||||
|
qui count if item`j' == `=`m' - `kk'' & tt == 1
|
||||||
|
local v`kk'1_1 = r(N)
|
||||||
|
if (`v`kk'1_0' != 0 | `v`kk'1_1' != 0) & `stop' != 0 {
|
||||||
|
qui replace item`j'= `=`m' - `kk'' if item`j'==`m'
|
||||||
|
local zzz=`j'+`nbitems'
|
||||||
|
*qui replace item`zzz'= `=`m' - `kk'' if item`zzz'==`m'
|
||||||
|
*di "WARNING SCENARIO `k': items `j': answers `m' and `=`m'+`kk'' merged"
|
||||||
|
local stop = 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if runiform()>0.5{
|
||||||
|
local stop = 1
|
||||||
|
forvalues kk = 1/`m' {
|
||||||
|
qui count if item`j' == `=`m' - `kk'' & tt == 0
|
||||||
|
local v`kk'1_0 = r(N)
|
||||||
|
qui count if item`j' == `=`m' - `kk'' & tt == 1
|
||||||
|
local v`kk'1_1 = r(N)
|
||||||
|
if (`v`kk'1_0' != 0 | `v`kk'1_1' != 0) & `stop' != 0 {
|
||||||
|
qui replace item`j'= `=`m'-`kk'' if item`j'==`m'
|
||||||
|
local zzz=`j'+`nbitems'
|
||||||
|
*qui replace item`zzz'=`=`m'-`kk'' if item``=`j'+`nbitems'''==`m'
|
||||||
|
*di "WARNING SCENARIO `k': items `j': answers `m' and `=`m'+`kk'' merged"
|
||||||
|
local stop = 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
local stop = 1
|
||||||
|
forvalues kk = 1/`=`nbm_`j''-`m'' {
|
||||||
|
qui count if item`j' == `=`m' + `kk'' & tt == 0
|
||||||
|
local v`kk'1_0 = r(N)
|
||||||
|
qui count if item`j' == `=`m' + `kk'' & tt == 1
|
||||||
|
local v`kk'1_1 = r(N)
|
||||||
|
if (`v`kk'1_0' != 0 | `v`kk'1_1' != 0) & `stop' != 0{
|
||||||
|
qui replace item`j'=`=`m' + `kk'' if item`j'==`m'
|
||||||
|
local zzz=`j'+`nbitems'
|
||||||
|
*qui replace item`zzz'=`=`m' + `kk'' if item``=`j'+`nbitems'''==`m'
|
||||||
|
*di "WARNING SCENARIO `k': items `j': answers `m' and `=`m'+`kk'' merged"
|
||||||
|
local stop = 0
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if `stop' != 0 {
|
||||||
|
qui replace item`j'= `nbm_`j'' if item`j'==`m'
|
||||||
|
local zzz=`j'+`nbitems'
|
||||||
|
*qui replace item`zzz'= `nbm_`j'' if item``=`j'+`nbitems'''==`m'
|
||||||
|
*di "WARNING SCENARIO `k': items `j': answers `m' and `=`m'+`kk'' merged"
|
||||||
|
local stop = 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
qui levelsof item`j'
|
||||||
|
local val = r(levels)
|
||||||
|
local checker: word 1 of `val'
|
||||||
|
local checker2: word 2 of `val'
|
||||||
|
local checker3: word 3 of `val'
|
||||||
|
local nummoda=r(r)
|
||||||
|
if (`nummoda'==2) {
|
||||||
|
qui recode item`j' (`checker'=0) (`checker2'=1)
|
||||||
|
}
|
||||||
|
if (`nummoda'==3) {
|
||||||
|
if (`checker'!=0) {
|
||||||
|
qui recode item`j' (`checker'=0) (`checker2'=1) (`checker3'=2)
|
||||||
|
}
|
||||||
|
else if (`checker2'!=1) {
|
||||||
|
qui recode item`j' (`checker2'=1) (`checker3'=2)
|
||||||
|
}
|
||||||
|
else if (`checker3'!=2) {
|
||||||
|
qui recode item`j' (`checker3'=2)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
qui valuesof comz
|
||||||
|
local val = r(values)
|
||||||
|
local checker: word 1 of `val'
|
||||||
|
|
||||||
|
* replications avec 3 mod
|
||||||
|
if (`checker' == 1) {
|
||||||
|
local difitems1=dif1
|
||||||
|
local difitems2=dif2
|
||||||
|
local difitems3=dif3
|
||||||
|
local difcheck = 0
|
||||||
|
local difcheck2 = 0
|
||||||
|
local difcheck3 = 0
|
||||||
|
forvalues i=1/`nbitems' {
|
||||||
|
qui sum item`i'
|
||||||
|
local checker2 = r(max)
|
||||||
|
|
||||||
|
if (`i'==`difitems1') {
|
||||||
|
if (`checker2'==3) {
|
||||||
|
local difcheck = 1
|
||||||
|
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 constrnt3 = "constraint 3 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))"
|
||||||
|
}
|
||||||
|
else if (`checker2'==2) {
|
||||||
|
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))"
|
||||||
|
}
|
||||||
|
else if (`checker2'==1) {
|
||||||
|
local difcheck = 2
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (`i'==`difitems2') {
|
||||||
|
if (`checker2'==3) {
|
||||||
|
local difcheck2=1
|
||||||
|
local constrnt2 = "constraint 2 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))"
|
||||||
|
}
|
||||||
|
else if (`checker2'==2) {
|
||||||
|
local constrnt2 = "constraint 2 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))"
|
||||||
|
}
|
||||||
|
else if (`checker2'==1) {
|
||||||
|
local difcheck2 = 2
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (`i'==`difitems3') {
|
||||||
|
if (`checker2'==3) {
|
||||||
|
local difcheck3=1
|
||||||
|
local constrnt5 = "constraint 5 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 constrnt6 = "constraint 6 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))"
|
||||||
|
}
|
||||||
|
else if (`checker2'==2) {
|
||||||
|
local constrnt5 = "constraint 5 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))"
|
||||||
|
}
|
||||||
|
else if (`checker2'==1) {
|
||||||
|
local difcheck3 = 2
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
local mod "gsem "
|
||||||
|
forvalues i=1/`nbitems' {
|
||||||
|
qui sum item`i'
|
||||||
|
local checker2 = r(max)
|
||||||
|
if (`i'==`difitems1'| `i'==`difitems2'| `i'==`difitems3') {
|
||||||
|
if (`checker2'==3) {
|
||||||
|
local mod = "`mod'"+"(1.item`i'<-THETA@1 tt)(2.item`i'<-THETA@2 tt)(3.item`i'<-THETA@3 tt)"
|
||||||
|
}
|
||||||
|
else if (`checker2'==3) {
|
||||||
|
local mod = "`mod'"+"(1.item`i'<-THETA@1 tt)(2.item`i'<-THETA@2 tt)"
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
local mod = "`mod'"+"(1.item`i'<-THETA@1 tt)"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (`checker2'==3) {
|
||||||
|
local mod = "`mod'"+"(1.item`i'<-THETA@1)(2.item`i'<-THETA@2)(3.item`i'<-THETA@3)"
|
||||||
|
}
|
||||||
|
else if (`checker2'==2) {
|
||||||
|
local mod = "`mod'"+"(1.item`i'<-THETA@1)(2.item`i'<-THETA@2)"
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
local mod = "`mod'"+"(1.item`i'<-THETA@1)"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (`difcheck'==1) {
|
||||||
|
if (`difcheck2'==1) {
|
||||||
|
if (`difcheck3'==1) {
|
||||||
|
local mod = "`mod'" + "(THETA<-tt), mlogit tol(0.01) iterate(500) latent(THETA) nocapslatent constraint(1 2 3 4 5 6)"
|
||||||
|
}
|
||||||
|
else if (`difcheck3'==0) {
|
||||||
|
local mod = "`mod'" + "(THETA<-tt), mlogit tol(0.01) iterate(500) latent(THETA) nocapslatent constraint(1 2 3 4 5)"
|
||||||
|
}
|
||||||
|
else if (`difcheck3'==2) {
|
||||||
|
local mod = "`mod'" + "(THETA<-tt), mlogit tol(0.01) iterate(500) latent(THETA) nocapslatent constraint(1 2 3 4)"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (`difcheck2'==0) {
|
||||||
|
if (`difcheck3'==1) {
|
||||||
|
local mod = "`mod'" + "(THETA<-tt), mlogit tol(0.01) iterate(500) latent(THETA) nocapslatent constraint(1 2 3 5 6)"
|
||||||
|
}
|
||||||
|
else if (`difcheck3'==0) {
|
||||||
|
local mod = "`mod'" + "(THETA<-tt), mlogit tol(0.01) iterate(500) latent(THETA) nocapslatent constraint(1 2 3 5)"
|
||||||
|
}
|
||||||
|
else if (`difcheck3'==2) {
|
||||||
|
local mod = "`mod'" + "(THETA<-tt), mlogit tol(0.01) iterate(500) latent(THETA) nocapslatent constraint(1 2 3)"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (`difcheck2'==2) {
|
||||||
|
if (`difcheck3'==1) {
|
||||||
|
local mod = "`mod'" + "(THETA<-tt), mlogit tol(0.01) iterate(500) latent(THETA) nocapslatent constraint(1 3 5 6)"
|
||||||
|
}
|
||||||
|
else if (`difcheck3'==0) {
|
||||||
|
local mod = "`mod'" + "(THETA<-tt), mlogit tol(0.01) iterate(500) latent(THETA) nocapslatent constraint(1 3 5)"
|
||||||
|
}
|
||||||
|
else if (`difcheck3'==2) {
|
||||||
|
local mod = "`mod'" + "(THETA<-tt), mlogit tol(0.01) iterate(500) latent(THETA) nocapslatent constraint(1 3)"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (`difcheck'==1) {
|
||||||
|
if (`difcheck2'==1) {
|
||||||
|
if (`difcheck3'==1) {
|
||||||
|
local mod = "`mod'" + "(THETA<-tt), mlogit tol(0.01) iterate(500) latent(THETA) nocapslatent constraint(1 2 4 5 6)"
|
||||||
|
}
|
||||||
|
else if (`difcheck3'==0) {
|
||||||
|
local mod = "`mod'" + "(THETA<-tt), mlogit tol(0.01) iterate(500) latent(THETA) nocapslatent constraint(1 2 4 5)"
|
||||||
|
}
|
||||||
|
else if (`difcheck3'==2) {
|
||||||
|
local mod = "`mod'" + "(THETA<-tt), mlogit tol(0.01) iterate(500) latent(THETA) nocapslatent constraint(1 2 4)"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (`difcheck2'==0) {
|
||||||
|
if (`difcheck3'==1) {
|
||||||
|
local mod = "`mod'" + "(THETA<-tt), mlogit tol(0.01) iterate(500) latent(THETA) nocapslatent constraint(1 2 5 6)"
|
||||||
|
}
|
||||||
|
else if (`difcheck3'==0) {
|
||||||
|
local mod = "`mod'" + "(THETA<-tt), mlogit tol(0.01) iterate(500) latent(THETA) nocapslatent constraint(1 2 5)"
|
||||||
|
}
|
||||||
|
else if (`difcheck3'==2) {
|
||||||
|
local mod = "`mod'" + "(THETA<-tt), mlogit tol(0.01) iterate(500) latent(THETA) nocapslatent constraint(1 2)"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (`difcheck2'==2) {
|
||||||
|
if (`difcheck3'==1) {
|
||||||
|
local mod = "`mod'" + "(THETA<-tt), mlogit tol(0.01) iterate(500) latent(THETA) nocapslatent constraint(1 5 6)"
|
||||||
|
}
|
||||||
|
else if (`difcheck3'==0) {
|
||||||
|
local mod = "`mod'" + "(THETA<-tt), mlogit tol(0.01) iterate(500) latent(THETA) nocapslatent constraint(1 5)"
|
||||||
|
}
|
||||||
|
else if (`difcheck3'==2) {
|
||||||
|
local mod = "`mod'" + "(THETA<-tt), mlogit tol(0.01) iterate(500) latent(THETA) nocapslatent constraint(1)"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (`difcheck'==2) {
|
||||||
|
if (`difcheck2'==1) {
|
||||||
|
if (`difcheck3'==1) {
|
||||||
|
local mod = "`mod'" + "(THETA<-tt), mlogit tol(0.01) iterate(500) latent(THETA) nocapslatent constraint(2 4 5 6)"
|
||||||
|
}
|
||||||
|
else if (`difcheck3'==0) {
|
||||||
|
local mod = "`mod'" + "(THETA<-tt), mlogit tol(0.01) iterate(500) latent(THETA) nocapslatent constraint(2 4 5)"
|
||||||
|
}
|
||||||
|
else if (`difcheck3'==2) {
|
||||||
|
local mod = "`mod'" + "(THETA<-tt), mlogit tol(0.01) iterate(500) latent(THETA) nocapslatent constraint(2 4)"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (`difcheck2'==0) {
|
||||||
|
if (`difcheck3'==1) {
|
||||||
|
local mod = "`mod'" + "(THETA<-tt), mlogit tol(0.01) iterate(500) latent(THETA) nocapslatent constraint(2 5 6)"
|
||||||
|
}
|
||||||
|
else if (`difcheck3'==0) {
|
||||||
|
local mod = "`mod'" + "(THETA<-tt), mlogit tol(0.01) iterate(500) latent(THETA) nocapslatent constraint(2 5)"
|
||||||
|
}
|
||||||
|
else if (`difcheck3'==2) {
|
||||||
|
local mod = "`mod'" + "(THETA<-tt), mlogit tol(0.01) iterate(500) latent(THETA) nocapslatent constraint(2)"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (`difcheck2'==2) {
|
||||||
|
if (`difcheck3'==1) {
|
||||||
|
local mod = "`mod'" + "(THETA<-tt), mlogit tol(0.01) iterate(500) latent(THETA) nocapslatent constraint(5 6)"
|
||||||
|
}
|
||||||
|
else if (`difcheck3'==0) {
|
||||||
|
local mod = "`mod'" + "(THETA<-tt), mlogit tol(0.01) iterate(500) latent(THETA) nocapslatent constraint(5)"
|
||||||
|
}
|
||||||
|
else if (`difcheck3'==2) {
|
||||||
|
local mod = "`mod'" + "(THETA<-tt), mlogit tol(0.01) iterate(500) latent(THETA) nocapslatent"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (`difcheck'!=2) {
|
||||||
|
qui `constrnt'
|
||||||
|
}
|
||||||
|
if (`difcheck2'!=2) {
|
||||||
|
qui `constrnt2'
|
||||||
|
}
|
||||||
|
if (`difcheck3'!=2) {
|
||||||
|
qui `constrnt5'
|
||||||
|
}
|
||||||
|
if (`difcheck'==1) {
|
||||||
|
qui `constrnt3'
|
||||||
|
}
|
||||||
|
if (`difcheck2'==1) {
|
||||||
|
qui `constrnt4'
|
||||||
|
}
|
||||||
|
if (`difcheck3'==1) {
|
||||||
|
qui `constrnt6'
|
||||||
|
}
|
||||||
|
qui `mod'
|
||||||
|
mat V=r(table)
|
||||||
|
mat W=V[1..2,1...]
|
||||||
|
forvalues j=1/`nbitems' {
|
||||||
|
|
||||||
|
mat outmat[`k',3*`j'-2] = W[1,colnumb(W,"1.item`j':_cons")] // items avant le premier dif
|
||||||
|
mat outmat[`k',3*`j'-1] = W[1,colnumb(W,"2.item`j':_cons")] // items avant le premier dif
|
||||||
|
mat outmat[`k',3*`j'] = W[1,colnumb(W,"3.item`j':_cons")] // items avant le premier dif
|
||||||
|
}
|
||||||
|
mat outmat[`k',3*`nbitems'+1] = W[1,colnumb(W,"1.item`difitems1':tt")] // coef de dif
|
||||||
|
mat outmat[`k',3*`nbitems'+2] = W[1,colnumb(W,"2.item`difitems1':tt")] // coef de dif
|
||||||
|
mat outmat[`k',3*`nbitems'+3] = W[1,colnumb(W,"3.item`difitems1':tt")] // coef de dif
|
||||||
|
mat outmat[`k',3*`nbitems'+4] = W[1,colnumb(W,"1.item`difitems2':tt")] // coef de dif
|
||||||
|
mat outmat[`k',3*`nbitems'+5] = W[1,colnumb(W,"2.item`difitems2':tt")] // coef de dif
|
||||||
|
mat outmat[`k',3*`nbitems'+6] = W[1,colnumb(W,"3.item`difitems2':tt")] // coef de dif
|
||||||
|
mat outmat[`k',3*`nbitems'+7] = W[1,colnumb(W,"1.item`difitems3':tt")] // coef de dif
|
||||||
|
mat outmat[`k',3*`nbitems'+8] = W[1,colnumb(W,"2.item`difitems3':tt")] // coef de dif
|
||||||
|
mat outmat[`k',3*`nbitems'+9] = W[1,colnumb(W,"3.item`difitems3':tt")] // coef de dif
|
||||||
|
mat outmat[`k',3*`nbitems'+10] = W[1,colnumb(W,"THETA:tt")] // beta
|
||||||
|
mat outmat[`k',3*`nbitems'+11] = W[2,colnumb(W,"THETA:tt")] // se beta
|
||||||
|
mat outmat[`k',3*`nbitems'+12] = `difitems1' // numéro item de dif
|
||||||
|
mat outmat[`k',3*`nbitems'+13] = `difitems2' // numéro item de dif
|
||||||
|
mat outmat[`k',3*`nbitems'+14] = `difitems3' // numéro item de dif
|
||||||
|
restore
|
||||||
|
}
|
||||||
|
|
||||||
|
* replications sans problèmes
|
||||||
|
else {
|
||||||
|
local difitems1=dif1
|
||||||
|
local difitems2=dif2
|
||||||
|
local difitems3=dif3
|
||||||
|
if (`difitems1' < `difitems2') {
|
||||||
|
local difitemsmin= `difitems1'
|
||||||
|
local difitemsmax= `difitems2'
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
local difitemsmin= `difitems2'
|
||||||
|
local difitemsmax= `difitems1'
|
||||||
|
}
|
||||||
|
if (`difitems3' < `difitemsmin') {
|
||||||
|
local difitemsmid = `difitemsmin'
|
||||||
|
local difitemsmin= `difitems3'
|
||||||
|
}
|
||||||
|
else if (`difitems3' > `difitemsmax') {
|
||||||
|
local difitemsmid = `difitemsmax'
|
||||||
|
local difitemsmax= `difitems3'
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
local difitemsmid = `difitems3'
|
||||||
|
}
|
||||||
|
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))"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
forvalues i=1/`nbitems' {
|
||||||
|
if (`i'==`difitemsmid') {
|
||||||
|
local constrn5 = "constraint 5 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 constrnt6 = "constraint 6 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' | `i'==`difitemsmid') {
|
||||||
|
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 3 4 5 6)"
|
||||||
|
qui `constrnt'
|
||||||
|
qui `constrnt2'
|
||||||
|
qui `constrnt3'
|
||||||
|
qui `constrnt4'
|
||||||
|
qui `constrnt6'
|
||||||
|
qui `constrnt6'
|
||||||
|
qui `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'<`difitemsmid') {
|
||||||
|
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'==`difitemsmid') {
|
||||||
|
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 if (`j'<`difitemsmax') {
|
||||||
|
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
|
||||||
|
}
|
||||||
|
else if (`j'==`difitemsmax') {
|
||||||
|
mat outmat[`k',3*`j'-2] = W[1,7*(`j'-1)+10] // items avant le premier dif
|
||||||
|
mat outmat[`k',3*`j'-1] = W[1,7*(`j'-1)+13] // items avant le premier dif
|
||||||
|
mat outmat[`k',3*`j'] = W[1,7*(`j'-1)+16] // items avant le premier dif
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
mat outmat[`k',3*`j'-2] = W[1,7*(`j'-1)+12] // items avant le premier dif
|
||||||
|
mat outmat[`k',3*`j'-1] = W[1,7*(`j'-1)+14] // items avant le premier dif
|
||||||
|
mat outmat[`k',3*`j'] = W[1,7*(`j'-1)+16] // 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*(`difitemsmid'-1)+5] // coef de dif
|
||||||
|
mat outmat[`k',3*`nbitems'+5] = W[1,7*(`difitemsmid'-1)+8] // coef de dif
|
||||||
|
mat outmat[`k',3*`nbitems'+6] = W[1,7*(`difitemsmid'-1)+11] // coef de dif
|
||||||
|
mat outmat[`k',3*`nbitems'+7] = W[1,7*(`difitemsmax'-1)+8] // coef de dif
|
||||||
|
mat outmat[`k',3*`nbitems'+8] = W[1,7*(`difitemsmax'-1)+11] // coef de dif
|
||||||
|
mat outmat[`k',3*`nbitems'+9] = W[1,7*(`difitemsmax'-1)+14] // coef de dif
|
||||||
|
mat outmat[`k',3*`nbitems'+10] = W[1,7*`nbitems'+10] // beta
|
||||||
|
mat outmat[`k',3*`nbitems'+11] = W[2,7*`nbitems'+10] // se beta
|
||||||
|
mat outmat[`k',3*`nbitems'+12] = `difitemsmin' // numéro item de dif
|
||||||
|
mat outmat[`k',3*`nbitems'+13] = `difitemsmid' // numéro item de dif
|
||||||
|
mat outmat[`k',3*`nbitems'+14] = `difitemsmax' // numéro item de dif
|
||||||
|
restore
|
||||||
|
}
|
||||||
|
}
|
||||||
|
putexcel set "`path_res'/out/20`scen'_`Nn'.xls", sheet("outmat") replace
|
||||||
|
putexcel A1=matrix(outmat), colnames
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue