Corrected error in dif parameterization for uncomplete answers

This commit is contained in:
2024-02-27 01:20:32 +01:00
parent 8ea76db3f4
commit e329a3432b
2 changed files with 109 additions and 27 deletions

View File

@ -382,22 +382,52 @@ local checker: word 1 of `val'
* replications avec 3 mod
if (`checker' == 1) {
local difitems1=dif1
local difcheck = 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 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))"
}
else {
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 mod "gsem "
forvalues i=1/`nbitems' {
qui sum item`i'
local checker2 = r(max)
if (`i'==`difitems1') {
local mod = "`mod'"+"(1.item`i'<-THETA@1 tt)(2.item`i'<-THETA@2 tt)"
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 {
local mod = "`mod'"+"(1.item`i'<-THETA@1)(2.item`i'<-THETA@2)"
local mod = "`mod'"+"(1.item`i'<-THETA@1 tt)(2.item`i'<-THETA@2 tt)"
}
}
else {
if (`checker2'==3) {
local mod = "`mod'"+"(1.item`i'<-THETA@1)(2.item`i'<-THETA@2)(3.item`i'<-THETA@3)"
}
else {
local mod = "`mod'"+"(1.item`i'<-THETA@1)(2.item`i'<-THETA@2)"
}
}
}
if (`difcheck'==1) {
local mod = "`mod'" + "(THETA<-tt), mlogit tol(0.01) iterate(500) latent(THETA) nocapslatent constraint(1 2)"
}
if (`difcheck'==0) {
local mod = "`mod'" + "(THETA<-tt), mlogit tol(0.01) iterate(500) latent(THETA) nocapslatent constraint(1)"
}
qui `constrnt'
if (`difcheck'==1) {
qui `constrnt2'
}
qui `mod'
mat V=r(table)
mat W=V[1..2,1...]
@ -719,26 +749,78 @@ local checker: word 1 of `val'
if (`checker' == 1) {
local difitems1=dif1
local difitems2=dif2
local difcheck = 0
local difcheck2 = 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 {
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))"
}
}
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 {
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 mod "gsem "
forvalues i=1/`nbitems' {
qui sum item`i'
local checker2 = r(max)
if (`i'==`difitems1'| `i'==`difitems2') {
local mod = "`mod'"+"(1.item`i'<-THETA@1 tt)(2.item`i'<-THETA@2 tt)"
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 {
local mod = "`mod'"+"(1.item`i'<-THETA@1 tt)(2.item`i'<-THETA@2 tt)"
}
}
else {
if (`checker2'==3) {
local mod = "`mod'"+"(1.item`i'<-THETA@1)(2.item`i'<-THETA@2)(3.item`i'<-THETA@3)"
}
else {
local mod = "`mod'"+"(1.item`i'<-THETA@1)(2.item`i'<-THETA@2)"
}
}
local mod = "`mod'" + "(THETA<-tt), mlogit tol(0.01) iterate(500) latent(THETA) nocapslatent constraint(1 2)"
}
if (`difcheck'==1) {
if (`difcheck2'==1) {
local mod = "`mod'" + "(THETA<-tt), mlogit tol(0.01) iterate(500) latent(THETA) nocapslatent constraint(1 2 3 4)"
}
else {
local mod = "`mod'" + "(THETA<-tt), mlogit tol(0.01) iterate(500) latent(THETA) nocapslatent constraint(1 2 3)"
}
}
else {
if (`difcheck2'==1) {
local mod = "`mod'" + "(THETA<-tt), mlogit tol(0.01) iterate(500) latent(THETA) nocapslatent constraint(1 2 4)"
}
else {
local mod = "`mod'" + "(THETA<-tt), mlogit tol(0.01) iterate(500) latent(THETA) nocapslatent constraint(1 2)"
}
}
qui `constrnt'
qui `constrn2'
qui `constrnt2'
if (`difcheck'==1) {
qui `constrnt3'
}
if (`difcheck2'==1) {
qui `constrnt4'
}
qui `mod'
mat V=r(table)
mat W=V[1..2,1...]