Added uniform DIF assessment
This commit is contained in:
@ -917,228 +917,19 @@ if "`group'"!="" & "`nodif'"=="" { // PARTIE 1 = Slmt si option group & pas de "
|
||||
local ++boucle
|
||||
}
|
||||
}
|
||||
|
||||
/* MODELE FINAL DE LA PARTIE 1. Si DIFT1 détecté (=Au moins 2 boucles dans l'étape C)*/
|
||||
if `nb_stepC' > 1 {
|
||||
forvalues j=1/`nbitems'{
|
||||
local model ""
|
||||
local listconst ""
|
||||
if dif_rc[`j',1]==. | dif_rc[`j',1]==0 { /*si pas de DIF: contraintes 1-200*/
|
||||
forvalues p=1/`nbdif_`j''{
|
||||
qui local listconst "`listconst' `=0+`maxdif'*(`j'-1)+`p''"
|
||||
qui constraint list `=0+`maxdif'*(`j'-1)+`p''
|
||||
}
|
||||
}
|
||||
else {
|
||||
if dif_rc[`j',2]!=. & dif_rc[`j',2]!=0 { /*DIF U: contraintes 201-400*/
|
||||
forvalues p=2/`nbdif_`j''{
|
||||
qui local listconst "`listconst' `=200+`maxdif'*(`j'-1)+`p''"
|
||||
qui constraint list `=200+`maxdif'*(`j'-1)+`p''
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
forvalues j=1/`nbitems'{
|
||||
forvalues p=1/`nbdif_`j''{
|
||||
local model "`model' (`p'.``j''<-THETA@`p')"
|
||||
}
|
||||
}
|
||||
|
||||
qui gsem `model', mlogit tol(0.01) iterate(100) group(`gp') ginvariant(coef loading) var(0: THETA@v) var(1:THETA@v) constraint(`listconst') from(esti_B) latent(THETA) nocapslatent
|
||||
/* Stockage des estimations du modèle */
|
||||
estimates store modeldifCFin
|
||||
matrix val_mC = r(table)
|
||||
|
||||
/* Calcul des difficultés d'item (delta_j) */
|
||||
matrix delta_mCFin=J(`nbitems',`=`nbdif_max'*2',.)
|
||||
local name_partOneC ""
|
||||
forvalues p=1/`nbdif_max' {
|
||||
forvalues g=0/1 {
|
||||
local name_partOneC "`name_partOneC' delta_`p'_gp`g'"
|
||||
}
|
||||
}
|
||||
local name_partOneL ""
|
||||
forvalues j=1/`nbitems' {
|
||||
local name_partOneL "`name_partOneL' ``j''"
|
||||
}
|
||||
matrix colnames delta_mCFin = `name_partOneC'
|
||||
matrix rownames delta_mCFin = `name_partOneL'
|
||||
|
||||
matrix delta_mCFin_se=J(`nbitems',`=`nbdif_max'*2',.)
|
||||
local name_partOneC_se ""
|
||||
|
||||
forvalues p=1/`nbdif_max' {
|
||||
forvalues g=0/1 {
|
||||
local name_partOneC_se "`name_partOneC_se' delta_`p'_gp`g'_se"
|
||||
}
|
||||
}
|
||||
matrix colnames delta_mCFin_se = `name_partOneC_se'
|
||||
matrix rownames delta_mCFin_se = `name_partOneL'
|
||||
|
||||
forvalues j=1/`nbitems'{
|
||||
forvalues p=1/`nbdif_`j''{
|
||||
forvalues g=0/1{
|
||||
qui lincom -[`p'.``j'']:`g'.`gp'
|
||||
local delta`j'_`p'g`g'mCFin=r(estimate)
|
||||
local delta`j'_`p'g`g'mCFin_se=r(se)
|
||||
if `p'>1{
|
||||
qui lincom [`=`p'-1'.``j'']:`g'.`gp' - [`p'.``j'']:`g'.`gp'
|
||||
local delta`j'_`p'g`g'mCFin = r(estimate)
|
||||
local delta`j'_`p'g`g'mCFin_se = r(se)
|
||||
}
|
||||
matrix delta_mCFin[`j',`=2*`p'-1+`g'']=`delta`j'_`p'g`g'mCFin'
|
||||
matrix delta_mCFin_se[`j',`=2*`p'-1+`g'']=`delta`j'_`p'g`g'mCFin_se'
|
||||
}
|
||||
}
|
||||
}
|
||||
if "`group'" != "" { //Variance et se mA
|
||||
matrix var_mC = (val_mC[1,"/var(THETA)#0bn.`gp'"]\val_mC[2,"/var(THETA)#0bn.`gp'"])
|
||||
}
|
||||
/*group effect*/
|
||||
qui lincom [/]:mean(THETA)#1.`gp'-[/]:mean(THETA)#0bn.`gp'
|
||||
local geffmCFin=r(estimate)
|
||||
local segeffmCFin=r(se)
|
||||
qui test [/]:mean(THETA)#1.`gp'-[/]:mean(THETA)#0bn.`gp'=0
|
||||
local gcmCFinp=r(p)
|
||||
local gcmCFinchi=r(chi2)
|
||||
local gcmCFindf=r(df)
|
||||
}
|
||||
}
|
||||
|
||||
*********************************
|
||||
*** BILAN ***
|
||||
*********************************
|
||||
|
||||
if "`group'" != "" & "`nodif'" == "" {
|
||||
di
|
||||
di %~84s as result "SUMMARY"
|
||||
di as result _col(2) "{hline 80}"
|
||||
di as result _col(18) "Difference in"
|
||||
di as result _col(2) "Item" _col(18) "groups at T1" _col(36) "Recalibration" _col(54) "RC " abbrev("`gp'",10) " 0" _col(72) "RC " abbrev("`gp'",10) " 1"
|
||||
di as result _col(2) "{hline 80}"
|
||||
forvalues j=1/`nbitems' {
|
||||
local RC
|
||||
local RCg0
|
||||
local RCg1
|
||||
local difft1
|
||||
if (dif_rc[`j',3] != . & dif_rc[`j',3] != 0 & dif_rc[`j',4] == 0) {
|
||||
local RC "Common"
|
||||
}
|
||||
if (dif_rc[`j',3] != . & dif_rc[`j',3] != 0 & dif_rc[`j',4] != 0) {
|
||||
local RC "Differential"
|
||||
}
|
||||
if `nbmoda_`j'' > 2 {
|
||||
if (dif_rc[`j',6]!=. & dif_rc[`j',6] != 0) {
|
||||
local RCg0 "Uniform"
|
||||
}
|
||||
if (dif_rc[`j',6] == 0) {
|
||||
local RCg0 "Non-uniform"
|
||||
}
|
||||
if (dif_rc[`j',8]!=. & dif_rc[`j',8] != 0) {
|
||||
local RCg1 "Uniform"
|
||||
}
|
||||
if ( dif_rc[`j',8] == 0) {
|
||||
local RCg1 "Non-uniform"
|
||||
}
|
||||
if (dif_rc[`j',1] != . ) {
|
||||
if (dif_rc[`j',2]!=0) {
|
||||
local difft1 "Uniform"
|
||||
}
|
||||
else {
|
||||
local difft1 "Non-uniform"
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
if dif_rc[`j',6] != . {
|
||||
local RCg0 " X "
|
||||
}
|
||||
if dif_rc[`j',8] != . {
|
||||
local RCg1 " X "
|
||||
}
|
||||
if dif_rc[`j',1] != . {
|
||||
local difft1 " X "
|
||||
}
|
||||
}
|
||||
di as result _col(2) abbrev("``j''",15) as text _col(18) "`difft1'" _col(36) "`RC'" _col(54) "`RCg0'" _col(72) "`RCg1'"
|
||||
}
|
||||
di as result _col(2) "{hline 80}"
|
||||
di
|
||||
}
|
||||
else if "`group'" != "" & "`nodif'" != "" {
|
||||
di
|
||||
di %~90s as result "SUMMARY"
|
||||
di as result _col(10) "{hline 70}"
|
||||
di as result _col(10) "Item" _col(26) "Recalibration" _col(46) "RC `gp' 0" _col(62) "RC `gp' 1"
|
||||
di _col(10) "{hline 70}"
|
||||
forvalues j=1/`nbitems' {
|
||||
local RC
|
||||
local RCg0
|
||||
local RCg1
|
||||
if (dif_rc[`j',3] != . & dif_rc[`j',3] != 0 & dif_rc[`j',4] == 0) {
|
||||
local RC "Common"
|
||||
}
|
||||
if (dif_rc[`j',3] != . & dif_rc[`j',3] != 0 & dif_rc[`j',4] != 0) {
|
||||
local RC "Differential"
|
||||
}
|
||||
if `nbmoda_`j'' > 2 {
|
||||
if (dif_rc[`j',6]!=. & dif_rc[`j',6] != 0) {
|
||||
local RCg0 "Uniform"
|
||||
}
|
||||
if (dif_rc[`j',6] == 0) {
|
||||
local RCg0 "Non-uniform"
|
||||
}
|
||||
if (dif_rc[`j',8]!=. & dif_rc[`j',8] != 0) {
|
||||
local RCg1 "Uniform"
|
||||
}
|
||||
if ( dif_rc[`j',8] == 0) {
|
||||
local RCg1 "Non-uniform"
|
||||
}
|
||||
}
|
||||
else {
|
||||
if dif_rc[`j',6] != . {
|
||||
local RCg0 " X "
|
||||
}
|
||||
if dif_rc[`j',8] != . {
|
||||
local RCg1 " X "
|
||||
}
|
||||
}
|
||||
di as result _col(10) "``j''" as text _col(26) "`RC'" _col(44) "`RCg0'" _col(62) "`RCg1'"
|
||||
}
|
||||
di as result _col(10) "{hline 70}"
|
||||
}
|
||||
else if "`group'" == "" {
|
||||
di
|
||||
di %~60s as result "SUMMARY"
|
||||
di as result _col(10) "{hline 40}"
|
||||
di _col(10) "Item" _col(36) "Recalibration"
|
||||
di _col(10) "{hline 40}"
|
||||
forvalues j=1/`nbitems' {
|
||||
local RC
|
||||
if dif_rc[`j',3] != . {
|
||||
if `nbmoda_`j'' > 2 {
|
||||
if (dif_rc[`j',6]!=. & dif_rc[`j',6] != 0) {
|
||||
local RC "Uniform"
|
||||
}
|
||||
if (dif_rc[`j',6] == 0) {
|
||||
local RC "Non-uniform"
|
||||
}
|
||||
}
|
||||
else {
|
||||
local RC " X "
|
||||
}
|
||||
}
|
||||
di as result _col(10) "``j''" as text _col(38) "`RC'"
|
||||
}
|
||||
di as result _col(10) "{hline 40}"
|
||||
di
|
||||
}
|
||||
|
||||
matrix dif_detect = J(1,`nbitems',.)
|
||||
matrix dif_detect = J(1,2*`nbitems',.)
|
||||
local numdif=1
|
||||
forvalues j=1/`nbitems' {
|
||||
if dif_rc[`j',1] != . {
|
||||
matrix dif_detect[1,`numdif']=`j'
|
||||
if dif_rc[`j',2] == 0 {
|
||||
matrix dif_detect[1,`nbitems'+`numdif']=0
|
||||
}
|
||||
if dif_rc[`j',2] != 0 {
|
||||
matrix dif_detect[1,`nbitems'+`numdif']=1
|
||||
}
|
||||
local numdif = `numdif'+1
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user