You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1141 lines
41 KiB
Plaintext

/********************************************************************************/
/* v1.1 : Bug fixed regarding the estimation of the latent trait standard error */
/* v2 : Bugs with temporary names fixed, New options have been added, */
/* modifications of the output */
/********************************************************************************/
program define pcmodel, eclass
version 11.0
syntax [varlist] [if] [in] [, CATegorical(string) CONTinuous(string) DIFficulties(string) ITerate(string) ADapt RObust From(string) RSM ESTimateonly nip(string) TRace Level(string)]
preserve
tempfile bddinip
qui save `bddinip',replace
local Cond=0
if "`level'"==""{
local level=c(level)
}
if replay() {
capture local cmdavant=e(cmd)
if _rc!=0 | "`cmdavant'"!="pcmodel"{
noi di in red "pcmodel was not the last command"
error 100
}
if "`categorical'`continuous'`difficulties'`iterate'`adapt'`robust'`from'`rsm'`estimateonly'`nip'"==""{
local rsm=e(rsm)
local LLfull=e(ll)
local estimateonly=e(estimateonly)
local R2Nag=e(r2)
local Nbid=e(N)
local nbit=e(Nit)
local categorical=e(categorical)
local continuous=e(continuous)
if "`continuous'"=="."{
local continuous=""
}
if "`categorical'"=="."{
local categorical=""
}
local nbcov: word count `categorical'
local nbcovquant: word count `continuous'
local varlist=e(items)
tokenize `varlist' `categorical' `continuous'
local difficulties=e(difficulties)
local contrR=e(constr)
tempname eB eV VarExpSS
matrix `eB'=e(b)
matrix `eV'=e(V)
matrix `VarExpSS'=e(VarExpSS)
local nbc=colsof(`eB')
local nbdifftotbis=e(ndtb)
if `nbcov'!=0{
forvalues i=`=`nbit'+1'/`=`nbit'+`nbcov''{
local ``i''_m=e(``i'')
local k=1
local nbModCov`=`i'-`nbit''=wordcount("```i''_m'")
foreach m in ```i''_m'{
local ident`=`i'-`nbit''_`k'=`m'
local k=`k'+1
}
}
}
if "`rsm'"!="."{
di in gr "Model : " in ye "Rating Scale Model"
}
else{
di in gr "Model : " in ye "Partial Credit Model"
}
di in gr ""
di in gr " log likelihood: " in ye %-18.3f `LLfull'
if "`estimateonly'"=="."{
di in gr " Marginal McFadden's pseudo R2: " in ye %-4.1f `=`R2Nag'*100' "%"
}
di in gr " Number of individuals: "in ye "`Nbid'"
di in gr " Number of items: "in ye "`nbit'"
if `=`nbcov'+`nbcovquant''!=0{
di in gr " Number of covariates: "in ye "`=`nbcov'+`nbcovquant''"
}
di in gr ""
di ""
di in gr "Parameters of the Latent trait distribution:"
di ""
if "`difficulties'"=="."{
di in gr " Identifiability constraint: `contrR'set to 0"
}
di in gr " Variance of the Latent trait: Sigma²=" in ye %-8.3f (`=`=`eB'[1,`nbc']'')^2 in gr " (SE:"in ye %-8.3f `= sqrt((2*`=`eB'[1,`nbc']')^2 *`=`eV'[`nbc',`nbc']' )' in gr ")"
local varTheta=(`=`=`eB'[1,`nbc']'')^2
local Varvartheta=(2*`=`eB'[1,`nbc']')^2 *`=`eV'[`nbc',`nbc']'
di ""
if `nbcov'+`nbcovquant'!=0{
di in gr "Latent trait group effect:"
di ""
di in gr "{hline 66}"
di _col(20) in gr "Coef." _col(30) in gr "S.E." _col(41) in gr "z" _col(45) in gr "P>|z|" _col(57) in gr "[`level'% C.I.]"
di in gr "{hline 66}"
local compteur=1
if "`difficulties'"=="."{
local compteur=`nbdifftotbis'
}
if `nbcov'!=0{
forvalues i=`=`nbit'+1'/`=`nbit'+`nbcov''{
local compteur=`compteur'+1
noi{
di _col(1) in gr "``i'':"
di _col(4) in gr "`=abbrev("``i''",10)':" in ye " `ident`=`i'-`nbit''_1'" _col(24) in ye "0" _col(33) in ye "." _col(41) in ye "." _col(49) in ye "." _col(57) in ye "." _col(66) in ye "."
}
forvalues k=2/`nbModCov`=`i'-`nbit'''{
local compteur=`compteur'+1
local estimate_e=`eB'[1,`compteur']
local se_e=sqrt(`=`eV'[`compteur',`compteur']')
noi{
di _col(4) in gr "`=abbrev("``i''",10)':" in ye " `ident`=`i'-`nbit''_`k''" _col(19) in ye %6.3f `estimate_e' _col(28) in ye %6.3f `se_e' _col(37) in ye %5.2f `=`estimate_e'/`se_e'' _col(44) in ye %6.3f `=2*(1-normal(abs(`estimate_e'/`se_e')))' _col(52) in ye %6.3f `=`estimate_e'-`=(1+`level'/100)/2'*`se_e'' _col(61) in ye %6.3f `=`estimate_e'+`=(1+`level'/100)/2'*`se_e''
}
}
di in gr "{hline 66}"
}
}
if `nbcovquant'!=0{
forvalues i=`=`nbit'+`nbcov'+1'/`=`nbit'+`nbcov'+`nbcovquant''{
local compteur=`compteur'+1
local estimate_e=`eB'[1,`compteur']
local se_e=sqrt(`=`eV'[`compteur',`compteur']')
noi{
di _col(1) in gr "``i'':" _col(19) in ye %6.3f `estimate_e' _col(28) in ye %6.3f `se_e' _col(37) in ye %5.2f `=`estimate_e'/`se_e'' _col(44) in ye %6.3f `=2*(1-normal(abs(`estimate_e'/`se_e')))' _col(52) in ye %6.3f `=`estimate_e'-`=(1+`level'/100)/2'*`se_e'' _col(61) in ye %6.3f `=`estimate_e'+`=(1+`level'/100)/2'*`se_e''
}
di in gr "{hline 66}"
}
}
if "`difficulties'"!="."{
di _col(1) in gr "_Cons" _col(19) in ye %6.3f `=`eB'[1,1]' _col(28) in ye %6.3f `=sqrt(`eV'[1,1])' _col(37) in ye %5.2f `=`=`eB'[1,1]'/`=sqrt(`eV'[1,1])'' _col(44) in ye %6.3f `=2*(1-normal(abs(`=`eB'[1,1]'/`=sqrt(`eV'[1,1])')))' _col(52) in ye %6.3f `=`=`eB'[1,1]'-`=(1+`level'/100)/2'*`=sqrt(`eV'[1,1])'' _col(61) in ye %6.3f `=`=`eB'[1,1]'+`=(1+`level'/100)/2'*`=sqrt(`eV'[1,1])''
di in gr "{hline 66}"
}
if "`estimateonly'"=="."{
di ""
di "Proportion of latent trait variance explained by covariates"
di ""
di in gr "{hline 53}"
di _col(23) in gr "SS.III" _col(34) in gr "df" _col(38) in gr "V.exp." _col(47) in gr "R2.exp."
di in gr "{hline 53}"
local compteur=1
if "`difficulties'"=="."{
local compteur=`nbdifftotbis'
}
local compte=1
if `nbcov'!=0{
forvalues i=`=`nbit'+1'/`=`nbit'+`nbcov''{
local ss3=`VarExpSS'[`compte',1]
local df=`VarExpSS'[`compte',2]
local vexp=`VarExpSS'[`compte',3]
local r2exp=`VarExpSS'[`compte',4]
local compteur=`compteur'+1
local compte=`compte'+1
noi di _col(1) in gr "``i'':" _col(22) in ye %6.3f `ss3' _col(34) in ye %2.0f `df' _col(37) in ye %6.1f `vexp' "%" _col(46) in ye %6.1f `r2exp' "%"
}
}
if `nbcovquant'!=0{
forvalues i=`=`nbit'+`nbcov'+1'/`=`nbit'+`nbcov'+`nbcovquant''{
local ss3=`VarExpSS'[`compte',1]
local df=`VarExpSS'[`compte',2]
local vexp=`VarExpSS'[`compte',3]
local r2exp=`VarExpSS'[`compte',4]
local compteur=`compteur'+1
local compte=`compte'+1
noi di _col(1) in gr "``i'':" _col(22) in ye %6.3f `ss3' _col(34) in ye %2.0f `df' _col(37) in ye %6.1f `vexp' "%" _col(46) in ye %6.1f `r2exp' "%"
}
}
di in gr "{hline 53}"
local sssc=`VarExpSS'[`=`compte'',1]
local dfsc=`VarExpSS'[`=`compte'',2]
local ssac=`VarExpSS'[`=`compte'+1',1]
local dfac=`VarExpSS'[`=`compte'+1',2]
di _col(23) in gr "SS.res" _col(34) in gr "df"
di _col(1) in gr "Model without cov." _col(22) in ye %6.3f `sssc' _col(31) in ye %5.0f `dfsc'
di _col(1) in gr "Full model" _col(22) in ye %6.3f `ssac' _col(31) in ye %5.0f `dfac'
di in gr "{hline 53}"
di ""
}
}
else if "`difficulties'"!="."{
di in gr "Latent trait distribution"
di in gr "{hline 80}"
di _col(18) in gr "Coef." _col(31) in gr "S.E." _col(43) in gr "z" _col(52) in gr "P>|z|" _col(61) in gr "[`level'% Conf. Interval]"
di in gr "{hline 80}"
di _col(1) in gr "Mu" _col(15) in ye %8.5f `=`eB'[1,1]' _col(27) in ye %8.5f `=sqrt(`eV'[1,1]) ' _col(39) in ye %5.2f `=`=`eB'[1,1]'/`=sqrt(`eV'[1,1]) '' _col(51) in ye %6.3f `=2*(1-normal(abs(`=`eB'[1,1]'/`=sqrt(`eV'[1,1]) ')))' _col(61) in ye %8.5f `=`=`eB'[1,1]'-`=(1+`level'/100)/2'*`=sqrt(`eV'[1,1]) '' _col(73) in ye %8.5f `=`=`eB'[1,1]'+`=(1+`level'/100)/2'*`=sqrt(`eV'[1,1]) ''
di _col(1) in gr "Sigma" _col(15) in ye %8.5f `=abs(`eB'[1,`nbc'])' _col(27) in ye %8.5f `=sqrt(`=`eV'[`nbc',`nbc']')' _col(39) in ye %5.2f `=`eB'[1,`nbc']/sqrt(`=`eV'[`nbc',`nbc']')' _col(51) in ye %6.3f `=2*(1-normal(abs(`eB'[1,`nbc']/sqrt(`=`eV'[`nbc',`nbc']'))))' _col(61) in ye %8.5f `=`eB'[1,`nbc']-`=(1+`level'/100)/2'*sqrt(`=`eV'[`nbc',`nbc']')' _col(73) in ye %8.5f `=`eB'[1,`nbc']+`=(1+`level'/100)/2'*sqrt(`=`eV'[`nbc',`nbc']')'
di in gr "{hline 80}"
di ""
}
if "`difficulties'"=="."{
di in gr "Items difficulty parameters:"
di ""
di in gr "{hline 52}"
di _col(1) in gr "Item" _col(21) in gr "Coef." _col(31) in gr "S.E." _col(43) in gr "[`level'% C.I.]" _col(66)
di in gr "{hline 52}"
local compteur=1
if "`rsm'"=="."{
forvalues i=1/`nbit'{
tempname rep__`i'
qui tab ``i'', matrow(`rep__`i'')
local moda`i'=`=r(r)'
di _col(1) in gr "``i'':"
forvalues g=1/`=`moda`i''-1'{
di _col(4) in gr "response: " in ye %-6.2g `=`rep__`i''[`=`g'+1',1]' _col(20) in ye %6.3f `=`eB'[1,`compteur']' _col(29) in ye %6.3f `=sqrt(`=`eV'[`compteur',`compteur']')' _col(38) in ye %6.3f `=`eB'[1,`compteur']-`=(1+`level'/100)/2'*sqrt(`=`eV'[`compteur',`compteur']')' _col(47) in ye %6.3f `=`eB'[1,`compteur']+`=(1+`level'/100)/2'*sqrt(`=`eV'[`compteur',`compteur']')'
local compteur=`compteur'+1
}
di in gr "{hline 52}"
}
di ""
}
else{
tempname tau
matrix `tau'=e(Tau)
forvalues i=1/`nbit'{
tempname rep__`i'
qui tab ``i'', matrow(`rep__`i'')
local moda`i'=`=r(r)'
di _col(1) in gr "``i'':" _col(20) in ye %6.3f `=`eB'[1,`compteur']' _col(29) in ye %6.3f `=sqrt(`=`eV'[`compteur',`compteur']')' _col(38) in ye %6.3f `=`eB'[1,`compteur']-`=(1+`level'/100)/2'*sqrt(`=`eV'[`compteur',`compteur']')' _col(47) in ye %6.3f `=`eB'[1,`compteur']+`=(1+`level'/100)/2'*sqrt(`=`eV'[`compteur',`compteur']')'
local compteur=`compteur'+`=`moda1'-1'
}
di in gr "{hline 52}"
forvalues i=2/`=`moda1'-1'{
di _col(1) in gr "tau`=`i'-1':" _col(20) in ye %6.3f `=`tau'[1,`i']' _col(29) in ye %6.3f `=`tau'[2,`i']' _col(38) in ye %6.3f `=`=`tau'[1,`i']'-`=(1+`level'/100)/2'*`=`tau'[2,`i']'' _col(47) in ye %6.3f `=`=`tau'[1,`i']'+`=(1+`level'/100)/2'*`=`tau'[2,`i']''
}
di in gr "{hline 52}"
}
}
else{
di in gr "Items difficulty parameters: fixed for the analysis"
}
}
else{
local Cond=1
local varlist=e(items)
if "`categorical'"=="" & "`=e(categorical)'"!="."{
local categorical=e(categorical)
}
if "`continuous'"=="" & "`=e(continuous)'"!="."{
local continuous=e(continuous)
}
if "`difficulties'"=="" & "`=e(difficulties)'"!="."{
local difficulties=e(difficulties)
}
if "`iterate'"=="" & "`=e(iterate)'"!="."{
local iterate=e(iterate)
}
if "`adapt'"=="" & "`=e(adapt)'"!="."{
local adapt=e(adapt)
}
if "`robust'"=="" & "`=e(robust)'"!="."{
local robust=e(robust)
}
if "`from'"=="" & "`=e(from)'"!="."{
local from=e(from)
}
if "`rsm'"=="" & "`=e(rsm)'"!="."{
local rsm=e(rsm)
}
if "`estimateonly'"=="" & "`=e(estimateonly)'"!="."{
local estimateonly=e(estimateonly)
}
}
}
else{
local Cond=1
}
if `Cond'==1{
tokenize `varlist' `categorical' `continuous'
local nbit: word count `varlist'
local nbcov: word count `categorical'
local nbcovquant: word count `continuous'
local nbit2:word count `difficulties'
local NIP ""
if "`nip'"!=""{
local NIP "nip(`nip')"
}
tempname nom val
if `nbit2'==0{
local itest=1
}
else{
local itest=0
}
if "`from'"!=""{
local verifFrom=colsof(`from')
}
tempfile bddini bddinib
qui{
marksample touse,novarlist
keep if `touse'
local ordre=0
forvalues i=1/`nbit'{
tempname rep__`i'
tab ``i'', matrow(`rep__`i'')
local ordre=`ordre'+`=rowsof(`rep__`i'')'-1
forvalues j=1/`=rowsof(`rep__`i'')'{
replace ``i''=`j'-1 if ``i''==`rep__`i''[`j',1]
}
}
save `bddinib',replace
q memory
}
local matsizeini=r(matsize)
if "`rsm'"!=""{
local nbtotmodait=rowsof(`rep__1')
forvalues i=2/`nbit'{
if `=rowsof(`rep__`i'')'!=`nbtotmodait'{
noi di in red "The number of item response categories must be equal for each item when using Rating Scale models"
use `bddinip',replace
error 100
}
}
if "`difficulties'"!=""{
noi di in red "RSM option only available for unknow difficulties"
use `bddinip',replace
error 100
}
}
if "`from'"!=""{
if "`difficulties'"!=""{
noi di in red "From option only available for unknow difficulties"
use `bddinip',replace
error 100
}
if "`rsm'"!=""{
noi di in red "From option only available for the Partial Credit model"
use `bddinip',replace
error 100
}
}
/*************************************/
/* Verifications */
/*************************************/
if "`iterate'"==""{
local it=""
}
else{
local iterateII="it(`iterate')"
}
tempvar one id item reponse obs wt x choix it covariable covverytemp
qui save `bddinib', replace
if "`difficulties'"!=""{
if `nbit2'!=`nbit'{
noi di in red "Not the same number of difficulty vectors and of items"
use `bddinip',replace
error 100
}
forvalues i=1/`nbit'{
if strpos("`varlist'",word("`difficulties'",`i'))==0{
noi di in red "The item difficulty vectors must have the same names than the item variables"
use `bddinip',replace
error 100
}
}
}
/*************************************/
/* Estimation of the parameters */
/*************************************/
local nbtotmodacov=0
if `nbcov'!=0{
forvalues i=1/`nbcov'{
qui tab ``=`nbit'+`i''', matrow(`nom') matcell(`val')
local nbModCov`i'=r(r)
forvalues k=1/`nbModCov`i''{
local valmod`k'cov`i'=`nom'[`k',1]
local nbmod`k'cov`i'=`val'[`k',1]
}
local nbtotmodacov=`nbtotmodacov'+`nbModCov`i''
if `nbModCov`i''>15{
noi di in ye "Are you sure that ``=`nbit'+`i''' is a categorical variable? (``=`nbit'+`i''' has `nbModCov`i'' categories)"
noi di in gr ""
}
local tot`i'=r(N)
forvalues k=1/`nbModCov`i''{
local sum=0
forvalues k2=1/`nbModCov`i''{
if `k2'!=`k'{
local sum=`sum'+`val'[`k2',1]
}
}
local a`i'_`k'=round((`sum'-`tot`i'')/`tot`i'',0.01)
local b`i'_`k'=round((`sum')/`tot`i'',0.01)
}
}
}
local nbparcov=`nbtotmodacov'+`nbcovquant'
qui{
keep `varlist' `categorical' `continuous'
local nbdifftotbis=0
local nbdifftot=0
if "`difficulties'"=="" & "`rsm'"==""{
forvalues i=1/`nbit'{
gen `reponse'`i' = ``i''
drop ``i''
tab `reponse'`i'
local moda`i'=`=r(r)'
local nbdifftot=`nbdifftot'+`moda`i''-1
local nbdifftotbis=`nbdifftotbis'+`moda`i''-1
}
}
else if "`difficulties'"=="" & "`rsm'"!=""{
forvalues i=1/`nbit'{
gen `reponse'`i' = ``i''
drop ``i''
tab `reponse'`i'
local moda`i'=`=r(r)'
local nbdifftot=`nbdifftot'+1
local nbdifftotbis=`nbdifftotbis'+`moda`i''-1
}
local nbdifftot=`nbdifftot'+`nbtotmodait'-2
}
else{
forvalues i=1/`nbit'{
gen `reponse'`i' = ``i''
drop ``i''
local moda`i'=colsof(``i'')+1
}
}
if "`from'"!=""{
if `nbcov'!=0{
if `verifFrom'!=`nbtotmodacov'-`nbcov'+1+`nbdifftot'+`nbcovquant'{
noi di in red "Mismatch between the number of parameters to estimate and the number of provided parameters"
use `bddinip',replace
error 100
}
}
else{
if `verifFrom'!=1+`nbdifftot'+`nbcovquant'{
noi di in red "Mismatch between the number of parameters to estimate and the number of provided parameters"
use `bddinip',replace
error 100
}
}
}
gen `one'=1
su `one'
local Nbid=r(N)
collapse (sum) `wt'2=`one', by(`reponse'1-`reponse'`nbit' `categorical' `continuous')
gen `id'=_n
reshape long `reponse', i(`id') j(`item')
drop if `reponse'==.
ologit `reponse' [fweight=`wt'2]
local LLL00=e(ll)
tempname eBLLL00
matrix `eBLLL00'=e(b)
gen `obs'=_n
su `wt'2
local ddlssIII=r(sum)-1
forvalues i=1/`nbit'{
expand `moda`i'' if `item'==`i'
}
by `obs', sort: gen `x'=_n-1
gen `choix'=`reponse'==`x'
tab `item', gen(`it')
forvalues i=1/`nbit'{
forvalues g=1/`=`moda`i''-1'{
gen d_``i''_`g'=(-1)*`it'`i'*(`x'>=`g')
}
}
forvalues i=1/`nbit'{
forvalues g=1/`=`moda`i''-1'{
capture gen __dd_`g'=0
}
}
forvalues i=1/`nbit'{
forvalues g=1/`=`moda`i''-1'{
replace __dd_`g'=(-1)*`it'`i'*(`x'>=`g') if ((-1)*`it'`i'*(`x'>=`g'))<__dd_`g'
}
}
if "`difficulties'"!=""{
gen difficulties=0
forvalues i=1/`nbit'{
forvalues g=1/`=`moda`i''-1'{
replace difficulties=difficulties+``i''[1,`g']*d_``i''_`g'
}
}
}
if `nbcov'!=0{
forvalues i=1/`nbcov'{
gen `covverytemp'=``=`nbit'+`i'''
drop ``=`nbit'+`i'''
rename `covverytemp' ``=`nbit'+`i'''
tab ``=`nbit'+`i''', gen(``=`nbit'+`i'''__) matrow(`nom')
local nbModCov`i'=r(r)
forvalues k=1/`nbModCov`i''{
gen ``=`nbit'+`i'''__`k'_old=``=`nbit'+`i'''__`k'
order ``=`nbit'+`i'''__`k'_old, first
replace ``=`nbit'+`i'''__`k'=``=`nbit'+`i'''__`k'*`x'
local ident`i'_`k'=`nom'[`k',1]
if `k'==1 & `i'==1{
local ident1=`ident`i'_`k''
}
rename ``=`nbit'+`i'''__`k' ``=`nbit'+`i'''_`ident`i'_`k''
}
}
forvalues i=1/`nbcov'{
drop ``=`nbit'+`i'''
}
}
if `nbcovquant'!=0{
forvalues i=1/`nbcovquant'{
gen `covverytemp'=``=`nbit'+`nbcov'+`i'''*`x'
rename ``=`nbit'+`nbcov'+`i''' ``=`nbit'+`nbcov'+`i'''_old
rename `covverytemp' ``=`nbit'+`nbcov'+`i'''
}
}
rename `id' theta
rename `x' estimates
}
eq slope:estimates
gen obs=`obs'
gen choix=`choix'
gen wt=`wt'
local contrainte ""
local contrainteit ""
if "`rsm'"!="" & "`difficulties'"==""{
forvalues i=2/`nbit'{
forvalues j=2/`=`nbtotmodait'-1'{
constraint free
local con=r(free)
local contrainteit "`contrainteit' `con'"
constraint `con' d_`1'_`j'-d_`1'_1=d_``i''_`j'-d_``i''_1
}
}
}
local offset "offset(difficulties)"
local covariablesit ""
if "`difficulties'"==""{
local covariablesit "d_`1'_1-d_``nbit''_`=`moda`nbit''-1'"
local offset ""
}
local nbitdiffpara=0
forvalues i=1/`nbit'{
forvalues j=1/`=`moda`nbit''-1'{
local nbitdiffpara=`nbitdiffpara'+1
}
}
local covariables ""
if `nbcov'!=0{
local covariables "`covariables' ``=`nbit'+1''_`ident1'-``=`nbit'+`nbcov'''_`ident`nbcov'_`nbModCov`nbcov'''"
forvalues i=1/`nbcov'{
constraint free
local con=r(free)
local contrainte "`contrainte' `con'"
constraint `con' ``=`nbit'+`i'''_`ident`i'_1'=0
}
}
if `nbcovquant'!=0{
local covariables "`covariables' ``=`nbit'+`nbcov'+1''-``=`nbit'+`nbcov'+`nbcovquant'''"
}
tempname a
matrix `a'=(0,0)
local skipcopy "skip"
if "`difficulties'"==""{
if "`from'"!=""{
matrix `a'=`from'
local skipcopy "copy"
}
}
gen cons=estimates
local varcons ""
if "`difficulties'"!=""{
local varcons "cons"
}
/**********************/
/*Estimation du modèle*/
/**********************/
unab vars : `covariables' , min(0)
local _c1= `: word count `vars''
local _c2= `: word count `contrainte''
gllamm estimates `varcons' `covariablesit' `covariables' , `offset' i(theta) eqs(slope) link(mlogit) expand(`obs' `choix' o) weight(`wt') `adapt' `robust' nocons `iterateII' nodis constraint(`contrainteit' `contrainte') from(`a') `skipcopy' `NIP' `trace'
local convergeance=e(converged)
tempname eB eV
matrix `eB'=e(b)
local nbc=colsof(`eB')
matrix `eV'=e(V)
local nbpar=e(k)
local nbN=e(N)
local LLfull=e(ll)
local ccnn=e(cn)
local dfree_ModComp=`ddlssIII'-`=colsof(`eB')'+ wordcount("`contrainteit' `contrainte'")
local SS_ModComp=(`eB'[1,`=colsof(`eB')']^2)*`dfree_ModComp'
local dfree_ModSsCov=`dfree_ModComp'+`nbparcov'- wordcount("`contrainte'")
local ordre=`ordre'- wordcount("`contrainteit'")+1
if "`rsm'"!=""{
tempname tau
matrix `tau'=J(2,`=`moda1'-1',.)
forvalues i=2/`=`moda1'-1'{
qui lincom d_`1'_`i'-d_`1'_1
local tau`i'=r(estimate)
local setau`i'=r(se)
matrix `tau'[1,`i']=`tau`i''
matrix `tau'[2,`i']=`setau`i''
}
}
qui{
capture su difficulties
if _rc==0{
gen difficultiespost=difficulties
}
else{
gen difficultiespost=0
local indent=1
forvalues i=1/`nbit'{
forvalues g=1/`=`moda`i''-1'{
replace difficultiespost=difficultiespost+`eB'[1,`indent']*d_``i''_`g'
local indent=1+`indent'
}
}
}
/* Commande GLLAMM qui est responsable de génération de matrices résiduelles */
qui gllamm estimates cons , offset(difficultiespost) i(theta) eqs(slope) link(mlogit) expand(`obs' `choix' o) weight(`wt') `adapt' `robust' nocons from(`eB') skip `NIP'
tempname eB_tot
matrix `eB_tot'=e(b)
local SS_ModSsCov=(`eB_tot'[1,`=colsof(`eB_tot')']^2)*`dfree_ModSsCov'
}
local mugauss=`eB_tot'[1,1]
local sdgauss=abs(`eB_tot'[1,2])
if "`estimateonly'"==""{
noi di in gr " "
if `nbcov'+`nbcovquant'!=0{
noi di "McFadden's pseudo R square and type III Sums of squares computation"
}
else{
noi di "McFadden's pseudo R square computation"
}
/**********************************************************/
/* Modèle nul (juste intercept et effets aléatoires -> R2 */
/**********************************************************/
qui gllamm estimates __dd_* , i(theta) eqs(slope) link(mlogit) expand(`obs' `choix' o) weight(`wt') `adapt' `robust' nocons `iterateII' from(`a') skip `NIP'
local LLinterSS=e(ll)
tempname eB4
matrix `eB4'=e(b)
local R2Nag=1-(`LLfull'/`LLinterSS')
/*****************/
/* Calcul des SS */
/*****************/
qui{
local covariables2 ""
forvalues covs=`=`nbit'+1'/`=`nbit'+`nbcov''{
local covariables2 "`covariables2' ``covs''_`ident`=`covs'-`nbit''_1'-``covs''_`ident`=`covs'-`nbit''_`nbModCov`=`covs'-`nbit''''"
}
forvalues covs=`=`nbit'+`nbcov'+1'/`=`nbit'+`nbcov'+`nbcovquant''{
local covariables2 "`covariables2' ``covs''"
}
if `nbcov'+`nbcovquant'!=0{
forvalues covs=`=`nbit'+1'/`=`nbit'+`nbcov'+`nbcovquant''{
noi di " for " in ye "``covs''" in gr " covariate"
if strpos("`categorical'","``covs''")!=0 & "``covs''"!=""{
local covsans= subinword("`covariables2'","``covs''_`ident`=`covs'-`nbit''_1'-``covs''_`ident`=`covs'-`nbit''_`nbModCov`=`covs'-`nbit''''","",.)
local dfree_Mss``covs''=`dfree_ModComp'+ `nbModCov`=`covs'-`nbit'''-1
}
else{
local covsans= subinword("`covariables2'","``covs''","",.)
local dfree_Mss``covs''=`dfree_ModComp'+1
}
capture constraint drop `contrainterep'
local contrainterep ""
if `nbcov'!=0{
forvalues i=1/`nbcov'{
if `=`nbit'+`i''!=`covs'{
constraint free
local con=r(free)
local contrainterep "`contrainterep' `con'"
constraint `con' ``=`nbit'+`i'''_`ident`i'_1'=0
}
}
}
gllamm estimates cons `covsans' , offset(difficultiespost) i(theta) eqs(slope) link(mlogit) expand(`obs' `choix' o) weight(`wt') `adapt' `robust' nocons `iterateII' constraint(`contrainterep') from(`eB') skip `NIP'
tempname eB``covs''
matrix `eB``covs'''=e(b)
local SS_Mss``covs''=(`eB``covs'''[1,`=colsof(`eB``covs''')']^2)*`dfree_Mss``covs'''
local LLfullmoin=e(ll)
tempname eB4
matrix `eB4'=e(b)
local R2N_``covs''=1-(`LLfullmoin'/`LLinterSS')
tempname eB2
matrix `eB2'=e(b)
local nbpar2=e(k)
}
}
}
noi di in gr " "
}
di in gr ""
if "`rsm'"!=""{
di in gr "Model : " in ye "Rating Scale Model"
}
else{
di in gr "Model : " in ye "Partial Credit Model"
}
di in gr ""
di in gr " log likelihood: " in ye %-18.3f `LLfull'
local lll=e(ll)
if "`estimateonly'"==""{
di in gr " Marginal McFadden's pseudo R2: " in ye %-4.1f `=`R2Nag'*100' "%"
}
di in gr " Number of individuals: "in ye "`Nbid'"
di in gr " Number of items: "in ye "`nbit'"
if `=`nbcov'+`nbcovquant''!=0{
di in gr " Number of covariates: "in ye "`=`nbcov'+`nbcovquant''"
}
di in gr ""
di ""
di in gr "Parameters of the Latent trait distribution:"
di ""
local contrR ""
if "`difficulties'"==""{
if `=`nbcov'+`nbcovquant''!=0{
local subgroup0 ""
if `nbcov'!=0{
forvalues i=1/`nbcov'{
local subgroup0 "`subgroup0'``=`nbit'+`i''' = `ident`i'_1', "
}
}
if `nbcovquant'!=0{
forvalues i=1/`nbcovquant'{
local subgroup0 "`subgroup0'``=`nbit'+`nbcov'+`i''' = 0, "
}
}
local subgroup0b "`=reverse(subinstr(reverse("`subgroup0'"), ",", ":", 1))'"
local contrR "latent trait for `subgroup0b'"
}
else{
local contrR "overall latent trait mean "
}
di in gr " Identifiability constraint: `contrR'set to 0"
}
di in gr " Variance of the Latent trait: Sigma²=" in ye %-8.3f (`=`=`eB'[1,`nbc']'')^2 in gr " (SE:"in ye %-8.3f `= sqrt((2*`=`eB'[1,`nbc']')^2 *`=`eV'[`nbc',`nbc']' )' in gr ")"
local varTheta=(`=`=`eB'[1,`nbc']'')^2
local Varvartheta=(2*`=`eB'[1,`nbc']')^2 *`=`eV'[`nbc',`nbc']'
di ""
if `nbcov'+`nbcovquant'!=0{
if "`estimateonly'"=="" & `=`nbcov'+`nbcovquant''>0 {
tempname VarExpSS
matrix `VarExpSS'=J(`=`nbcov'+`nbcovquant'+2',4,.)
local compte=1
if `nbcov'!=0{
forvalues i=`=`nbit'+1'/`=`nbit'+`nbcov''{
matrix `VarExpSS'[`compte',1]=`SS_Mss``i'''-`SS_ModComp'
matrix `VarExpSS'[`compte',2]=`dfree_Mss``i'''-`dfree_ModComp'
matrix `VarExpSS'[`compte',3]=(`SS_Mss``i'''-`SS_ModComp')/`SS_Mss``i'''*100
matrix `VarExpSS'[`compte',4]=(`R2Nag'-`R2N_``i''')/`R2Nag'*100
local compte=`compte'+1
}
}
if `nbcovquant'!=0{
forvalues i=`=`nbit'+`nbcov'+1'/`=`nbit'+`nbcov'+`nbcovquant''{
matrix `VarExpSS'[`compte',1]=`SS_Mss``i'''-`SS_ModComp'
matrix `VarExpSS'[`compte',2]=`dfree_Mss``i'''-`dfree_ModComp'
matrix `VarExpSS'[`compte',3]=(`SS_Mss``i'''-`SS_ModComp')/`SS_Mss``i'''*100
matrix `VarExpSS'[`compte',4]=(`R2Nag'-`R2N_``i''')/`R2Nag'*100
local compte=`compte'+1
}
}
matrix `VarExpSS'[`=`compte'',1]=`SS_ModSsCov'
matrix `VarExpSS'[`=`compte'',2]=`dfree_ModSsCov'
matrix `VarExpSS'[`=`compte'+1',1]=`SS_ModComp'
matrix `VarExpSS'[`=`compte'+1',2]=`dfree_ModComp'
}
if c(linesize)>=101{
di in gr "Latent trait group effect:"
di ""
di in gr "{hline 101}"
di _col(20) in gr "Coef." _col(30) in gr "S.E." _col(41) in gr "z" _col(45) in gr "P>|z|" _col(57) in gr "[`level'% C.I.]" _col(73) in gr "SS.III" _col(81) in gr "df" _col(85) in gr "V.exp." _col(95) in gr "R2.exp."
di in gr "{hline 101}"
local compteur=1
if "`difficulties'"==""{
local compteur=`nbdifftotbis'
}
if `nbcov'!=0{
forvalues i=`=`nbit'+1'/`=`nbit'+`nbcov''{
local ss3=.
local df=.
local vexp=.
local r2exp=.
if "`estimateonly'"==""{
local ss3=`SS_Mss``i'''-`SS_ModComp'
local df=`dfree_Mss``i'''-`dfree_ModComp'
local vexp=(`SS_Mss``i'''-`SS_ModComp')/`SS_Mss``i'''*100
local r2exp=(`R2Nag'-`R2N_``i''')/`R2Nag'*100
}
local compteur=`compteur'+1
noi{
di _col(1) in gr "``i'':" _col(72) in ye %6.3f `ss3' _col(81) in ye %2.0f `df' _col(84) in ye %6.1f `vexp' "%" _col(94) in ye %6.1f `r2exp' "%"
di _col(4) in gr "`=abbrev("``i''",10)':" in ye " `ident`=`i'-`nbit''_1'" _col(24) in ye "0" _col(33) in ye "." _col(41) in ye "." _col(49) in ye "." _col(57) in ye "." _col(66) in ye "."
}
forvalues k=2/`nbModCov`=`i'-`nbit'''{
local compteur=`compteur'+1
local estimate_e=`eB'[1,`compteur']
local se_e=sqrt(`=`eV'[`compteur',`compteur']')
noi{
di _col(4) in gr "`=abbrev("``i''",10)':" in ye " `ident`=`i'-`nbit''_`k''" _col(19) in ye %6.3f `estimate_e' _col(28) in ye %6.3f `se_e' _col(37) in ye %5.2f `=`estimate_e'/`se_e'' _col(44) in ye %6.3f `=2*(1-normal(abs(`estimate_e'/`se_e')))' _col(52) in ye %6.3f `=`estimate_e'-`=(1+`level'/100)/2'*`se_e'' _col(61) in ye %6.3f `=`estimate_e'+`=(1+`level'/100)/2'*`se_e''
}
}
di in gr "{hline 101}"
}
}
if `nbcovquant'!=0{
forvalues i=`=`nbit'+`nbcov'+1'/`=`nbit'+`nbcov'+`nbcovquant''{
local ss3=.
local df=.
local vexp=.
local r2exp=.
if "`estimateonly'"==""{
local ss3=`SS_Mss``i'''-`SS_ModComp'
local df=`dfree_Mss``i'''-`dfree_ModComp'
local vexp=(`SS_Mss``i'''-`SS_ModComp')/`SS_Mss``i'''*100
local r2exp=(`R2Nag'-`R2N_``i''')/`R2Nag'*100
}
local compteur=`compteur'+1
local estimate_e=`eB'[1,`compteur']
local se_e=sqrt(`=`eV'[`compteur',`compteur']')
noi{
di _col(1) in gr "``i'':" _col(19) in ye %6.3f `estimate_e' _col(28) in ye %6.3f `se_e' _col(37) in ye %5.2f `=`estimate_e'/`se_e'' _col(44) in ye %6.3f `=2*(1-normal(abs(`estimate_e'/`se_e')))' _col(52) in ye %6.3f `=`estimate_e'-`=(1+`level'/100)/2'*`se_e'' _col(61) in ye %6.3f `=`estimate_e'+`=(1+`level'/100)/2'*`se_e'' _col(72) in ye %6.3f `ss3' _col(81) in ye %2.0f `df' _col(84) in ye %6.1f `vexp' "%" _col(94) in ye %6.1f `r2exp' "%"
}
di in gr "{hline 101}"
}
}
if "`difficulties'"!=""{
di _col(1) in gr "_Cons" _col(19) in ye %6.3f `=`eB'[1,1]' _col(28) in ye %6.3f `=sqrt(`eV'[1,1])' _col(37) in ye %5.2f `=`=`eB'[1,1]'/`=sqrt(`eV'[1,1])'' _col(44) in ye %6.3f `=2*(1-normal(abs(`=`eB'[1,1]'/`=sqrt(`eV'[1,1])')))' _col(52) in ye %6.3f `=`=`eB'[1,1]'-`=(1+`level'/100)/2'*`=sqrt(`eV'[1,1])'' _col(61) in ye %6.3f `=`=`eB'[1,1]'+`=(1+`level'/100)/2'*`=sqrt(`eV'[1,1])''
di in gr "{hline 101}"
}
local sssc=.
local dfsc=.
local ssac=.
local dfac=.
if "`estimateonly'"==""{
local sssc=`SS_ModSsCov'
local dfsc=`dfree_ModSsCov'
local ssac=`SS_ModComp'
local dfac=`dfree_ModComp'
}
di _col(73) in gr "SS.res" _col(84) in gr "df"
di _col(45) in gr "Model without covariates" _col(72) in ye %6.3f `sssc' _col(81) in ye %5.0f `dfsc'
di _col(59) in gr "Full model" _col(72) in ye %6.3f `ssac' _col(81) in ye %5.0f `dfac'
di in gr "{hline 101}"
di ""
}
else{
di in gr "Latent trait group effect:"
di ""
di in gr "{hline 66}"
di _col(20) in gr "Coef." _col(30) in gr "S.E." _col(41) in gr "z" _col(45) in gr "P>|z|" _col(57) in gr "[`level'% C.I.]"
di in gr "{hline 66}"
local compteur=1
if "`difficulties'"==""{
local compteur=`nbdifftotbis'
}
if `nbcov'!=0{
forvalues i=`=`nbit'+1'/`=`nbit'+`nbcov''{
local compteur=`compteur'+1
noi{
di _col(1) in gr "``i'':"
di _col(4) in gr "`=abbrev("``i''",10)':" in ye " `ident`=`i'-`nbit''_1'" _col(24) in ye "0" _col(33) in ye "." _col(41) in ye "." _col(49) in ye "." _col(57) in ye "." _col(66) in ye "."
}
forvalues k=2/`nbModCov`=`i'-`nbit'''{
local compteur=`compteur'+1
local estimate_e=`eB'[1,`compteur']
local se_e=sqrt(`=`eV'[`compteur',`compteur']')
noi{
di _col(4) in gr "`=abbrev("``i''",10)':" in ye " `ident`=`i'-`nbit''_`k''" _col(19) in ye %6.3f `estimate_e' _col(28) in ye %6.3f `se_e' _col(37) in ye %5.2f `=`estimate_e'/`se_e'' _col(44) in ye %6.3f `=2*(1-normal(abs(`estimate_e'/`se_e')))' _col(52) in ye %6.3f `=`estimate_e'-`=(1+`level'/100)/2'*`se_e'' _col(61) in ye %6.3f `=`estimate_e'+`=(1+`level'/100)/2'*`se_e''
}
}
di in gr "{hline 66}"
}
}
if `nbcovquant'!=0{
forvalues i=`=`nbit'+`nbcov'+1'/`=`nbit'+`nbcov'+`nbcovquant''{
local compteur=`compteur'+1
local estimate_e=`eB'[1,`compteur']
local se_e=sqrt(`=`eV'[`compteur',`compteur']')
noi{
di _col(1) in gr "``i'':" _col(19) in ye %6.3f `estimate_e' _col(28) in ye %6.3f `se_e' _col(37) in ye %5.2f `=`estimate_e'/`se_e'' _col(44) in ye %6.3f `=2*(1-normal(abs(`estimate_e'/`se_e')))' _col(52) in ye %6.3f `=`estimate_e'-`=(1+`level'/100)/2'*`se_e'' _col(61) in ye %6.3f `=`estimate_e'+`=(1+`level'/100)/2'*`se_e''
}
di in gr "{hline 66}"
}
}
if "`difficulties'"!=""{
di _col(1) in gr "_Cons" _col(19) in ye %6.3f `=`eB'[1,1]' _col(28) in ye %6.3f `=sqrt(`eV'[1,1])' _col(37) in ye %5.2f `=`=`eB'[1,1]'/`=sqrt(`eV'[1,1])'' _col(44) in ye %6.3f `=2*(1-normal(abs(`=`eB'[1,1]'/`=sqrt(`eV'[1,1])')))' _col(52) in ye %6.3f `=`=`eB'[1,1]'-`=(1+`level'/100)/2'*`=sqrt(`eV'[1,1])'' _col(61) in ye %6.3f `=`=`eB'[1,1]'+`=(1+`level'/100)/2'*`=sqrt(`eV'[1,1])''
di in gr "{hline 66}"
}
if "`estimateonly'"==""{
di ""
di "Proportion of latent trait variance explained by covariates"
di ""
di in gr "{hline 53}"
di _col(23) in gr "SS.III" _col(34) in gr "df" _col(38) in gr "V.exp." _col(47) in gr "R2.exp."
di in gr "{hline 53}"
local compteur=1
if "`difficulties'"==""{
local compteur=`nbdifftotbis'
}
if `nbcov'!=0{
forvalues i=`=`nbit'+1'/`=`nbit'+`nbcov''{
local ss3=`SS_Mss``i'''-`SS_ModComp'
local df=`dfree_Mss``i'''-`dfree_ModComp'
local vexp=(`SS_Mss``i'''-`SS_ModComp')/`SS_Mss``i'''*100
local r2exp=(`R2Nag'-`R2N_``i''')/`R2Nag'*100
local compteur=`compteur'+1
noi di _col(1) in gr "``i'':" _col(22) in ye %6.3f `ss3' _col(34) in ye %2.0f `df' _col(37) in ye %6.1f `vexp' "%" _col(46) in ye %6.1f `r2exp' "%"
}
}
if `nbcovquant'!=0{
forvalues i=`=`nbit'+`nbcov'+1'/`=`nbit'+`nbcov'+`nbcovquant''{
local ss3=`SS_Mss``i'''-`SS_ModComp'
local df=`dfree_Mss``i'''-`dfree_ModComp'
local vexp=(`SS_Mss``i'''-`SS_ModComp')/`SS_Mss``i'''*100
local r2exp=(`R2Nag'-`R2N_``i''')/`R2Nag'*100
local compteur=`compteur'+1
noi di _col(1) in gr "``i'':" _col(22) in ye %6.3f `ss3' _col(34) in ye %2.0f `df' _col(37) in ye %6.1f `vexp' "%" _col(46) in ye %6.1f `r2exp' "%"
}
}
di in gr "{hline 53}"
local sssc=`SS_ModSsCov'
local dfsc=`dfree_ModSsCov'
local ssac=`SS_ModComp'
local dfac=`dfree_ModComp'
di _col(23) in gr "SS.res" _col(34) in gr "df"
di _col(1) in gr "Model without cov." _col(22) in ye %6.3f `sssc' _col(31) in ye %5.0f `dfsc'
di _col(1) in gr "Full model" _col(22) in ye %6.3f `ssac' _col(31) in ye %5.0f `dfac'
di in gr "{hline 53}"
di ""
}
}
}
else if "`difficulties'"!=""{
di in gr "Latent trait distribution"
di in gr "{hline 80}"
di _col(18) in gr "Coef." _col(31) in gr "S.E." _col(43) in gr "z" _col(52) in gr "P>|z|" _col(61) in gr "[`level'% Conf. Interval]"
di in gr "{hline 80}"
di _col(1) in gr "Mu" _col(15) in ye %8.5f `=`eB'[1,1]' _col(27) in ye %8.5f `=sqrt(`eV'[1,1]) ' _col(39) in ye %5.2f `=`=`eB'[1,1]'/`=sqrt(`eV'[1,1]) '' _col(51) in ye %6.3f `=2*(1-normal(abs(`=`eB'[1,1]'/`=sqrt(`eV'[1,1]) ')))' _col(61) in ye %8.5f `=`=`eB'[1,1]'-`=(1+`level'/100)/2'*`=sqrt(`eV'[1,1]) '' _col(73) in ye %8.5f `=`=`eB'[1,1]'+`=(1+`level'/100)/2'*`=sqrt(`eV'[1,1]) ''
di _col(1) in gr "Sigma" _col(15) in ye %8.5f `=abs(`eB'[1,`nbc'])' _col(27) in ye %8.5f `=sqrt(`=`eV'[`nbc',`nbc']')' _col(39) in ye %5.2f `=`eB'[1,`nbc']/sqrt(`=`eV'[`nbc',`nbc']')' _col(51) in ye %6.3f `=2*(1-normal(abs(`eB'[1,`nbc']/sqrt(`=`eV'[`nbc',`nbc']'))))' _col(61) in ye %8.5f `=`eB'[1,`nbc']-`=(1+`level'/100)/2'*sqrt(`=`eV'[`nbc',`nbc']')' _col(73) in ye %8.5f `=`eB'[1,`nbc']+`=(1+`level'/100)/2'*sqrt(`=`eV'[`nbc',`nbc']')'
di in gr "{hline 80}"
di ""
}
if "`difficulties'"==""{
di in gr "Items difficulty parameters:"
di ""
di in gr "{hline 52}"
di _col(1) in gr "Item" _col(21) in gr "Coef." _col(31) in gr "S.E." _col(43) in gr "[`level'% C.I.]" _col(66)
di in gr "{hline 52}"
local compteur=1
if "`rsm'"==""{
forvalues i=1/`nbit'{
di _col(1) in gr "``i'':"
forvalues g=1/`=`moda`i''-1'{
di _col(4) in gr "response: " in ye %-6.2g `=`rep__`i''[`=`g'+1',1]' _col(20) in ye %6.3f `=`eB'[1,`compteur']' _col(29) in ye %6.3f `=sqrt(`=`eV'[`compteur',`compteur']')' _col(38) in ye %6.3f `=`eB'[1,`compteur']-`=(1+`level'/100)/2'*sqrt(`=`eV'[`compteur',`compteur']')' _col(47) in ye %6.3f `=`eB'[1,`compteur']+`=(1+`level'/100)/2'*sqrt(`=`eV'[`compteur',`compteur']')'
local compteur=`compteur'+1
}
di in gr "{hline 52}"
}
di ""
}
else{
forvalues i=1/`nbit'{
di _col(1) in gr "``i'':" _col(20) in ye %6.3f `=`eB'[1,`compteur']' _col(29) in ye %6.3f `=sqrt(`=`eV'[`compteur',`compteur']')' _col(38) in ye %6.3f `=`eB'[1,`compteur']-`=(1+`level'/100)/2'*sqrt(`=`eV'[`compteur',`compteur']')' _col(47) in ye %6.3f `=`eB'[1,`compteur']+`=(1+`level'/100)/2'*sqrt(`=`eV'[`compteur',`compteur']')'
local compteur=`compteur'+`=`moda1'-1'
}
di in gr "{hline 52}"
forvalues i=2/`=`moda1'-1'{
di _col(1) in gr "tau`=`i'-1':" _col(20) in ye %6.3f `tau`i'' _col(29) in ye %6.3f `setau`i'' _col(38) in ye %6.3f `=`tau`i''-`=(1+`level'/100)/2'*`setau`i''' _col(47) in ye %6.3f `=`tau`i''+`=(1+`level'/100)/2'*`setau`i'''
}
di in gr "{hline 52}"
}
}
else{
di in gr "Items difficulty parameters: fixed for the analysis"
}
/*************************************/
/* ereturn */
/*************************************/
qui{
if "`difficulties'"==""{
tempname Varbeta Vardelta beta delta Vartheta theta
matrix `Varbeta'=`eV'
local Varsigma=`Varbeta'[`=colsof(`Varbeta')',`=colsof(`Varbeta')']
matrix `Vardelta'=`Varbeta'[1..`nbdifftotbis',1..`nbdifftotbis']
matrix `beta'=`eB'
local sigma=abs(`beta'[1,`=colsof(`beta')'])
matrix `delta'=`beta'[1,1..`nbdifftotbis']
if `=`nbcov'+`nbcovquant''!=0{
matrix `Vartheta'=`Varbeta'[`=`nbdifftotbis'+1'..`=colsof(`Varbeta')-1',`=`nbdifftotbis'+1'..`=colsof(`Varbeta')-1']
matrix `theta'=`beta'[1,`=`nbdifftotbis'+1'..`=colsof(`beta')-1']
}
else{
local thetas=0
local Varthetas=0
}
}
else{
if `=`nbcov'+`nbcovquant''!=0{
tempname Vartheta theta
matrix `Vartheta'=`eV'
local Varsigma=`Vartheta'[`=colsof(`Vartheta')',`=colsof(`Vartheta')']
matrix `Vartheta'=`Vartheta'[1..`=colsof(`Vartheta')-1',1..`=colsof(`Vartheta')-1']
matrix `theta'=`eB'
local sigma=abs(`theta'[1,`=colsof(`theta')'])
matrix `theta'=`theta'[1,1..`=colsof(`theta')-1']
}
else{
tempname theta Vtheta
matrix `theta'=`eB'
local sigma=abs(`theta'[1,`=colsof(`theta')'])
matrix `Vtheta'=`eV'
local Varsigma=`Vtheta'[`=colsof(`Vtheta')',`=colsof(`Vtheta')']
local thetas=`theta'[1,1]
local varthetas=`Vtheta'[1,1]
}
}
ereturn clear
if `=`nbcov'+`nbcovquant''!=0{
matrix b=`eB'
matrix V=`eV'
ereturn post b V, depname(theta)
ereturn matrix theta=`theta'
ereturn matrix Vartheta=`Vartheta'
}
else{
if "`difficulties'"==""{
matrix V=`eV'
tempname thetatemp Varthetatemp
matrix `thetatemp'=(0)
matrix `Varthetatemp'=(0)
matrix coleq `Varthetatemp'=estimates
matrix coln `Varthetatemp'=mu
matrix roweq `Varthetatemp'=estimates
matrix rown `Varthetatemp'=mu
matrix b=`eB'
matrix coleq `thetatemp'=estimates
matrix coln `thetatemp'=mu
matrix rown `thetatemp'=y1
ereturn post b V, depname(theta)
ereturn matrix theta=`thetatemp'
ereturn matrix Vartheta=`Varthetatemp'
}
else{
tempname thetatemp Varthetatemp
matrix `Varthetatemp'=(`varthetas')
matrix coleq `Varthetatemp'=estimates
matrix coln `Varthetatemp'=mu
matrix roweq `Varthetatemp'=estimates
matrix rown `Varthetatemp'=mu
matrix `thetatemp'=(`thetas')
matrix coleq `thetatemp'=estimates
matrix coln `thetatemp'=mu
matrix rown `thetatemp'=y1
matrix V=`eV'
matrix b=`eB'
ereturn post b V, depname(theta)
tempname vvvt vvvVt
matrix `vvvt'=(`thetas')
matrix `vvvVt'=(`varthetas')
ereturn matrix theta=`vvvt'
ereturn matrix Vartheta=`vvvVt'
}
}
ereturn scalar ll=`LLfull'
ereturn scalar cn=`ccnn'
ereturn scalar r2=`R2Nag'
ereturn scalar N=`Nbid'
ereturn scalar Nit=`nbit'
ereturn scalar converged=`convergeance'
ereturn scalar ndtb=`nbdifftotbis'
ereturn scalar mugauss=`mugauss'
ereturn scalar sdgauss=`sdgauss'
if "`nip'"!=""{
ereturn scalar nip=`nip'
}
ereturn local items `varlist'
ereturn local categorical `categorical'
ereturn local continuous `continuous'
ereturn local estimateonly `estimateonly'
ereturn local constr `contrR'
ereturn local difficulties `difficulties'
if `nbcov'!=0{
forvalues i=`=`nbit'+1'/`=`nbit'+`nbcov''{
local ``i''_m ""
forvalues k=1/`nbModCov`=`i'-`nbit'''{
local ``i''_m "```i''_m' `ident`=`i'-`nbit''_`k''"
ereturn local ``i'' ```i''_m'
}
}
}
ereturn local rsm `rsm'
ereturn local from `from'
ereturn local robust `robust'
ereturn local adapt `adapt'
ereturn local iterate `iterate'
ereturn local itest `itest'
ereturn local datatest `bddinib'
ereturn local if `if'
ereturn local in `in'
ereturn local cmd "pcmodel"
ereturn scalar order=`ordre'
if `=`nbcov'+`nbcovquant''!=0{
ereturn scalar Ncat=`nbcov'
ereturn scalar Ncont=`nbcovquant'
}
if "`difficulties'"==""{
ereturn matrix Vardelta=`Vardelta'
ereturn matrix delta=`delta'
ereturn scalar sigma=`sigma'
ereturn scalar Varsigma=`Varsigma'
if "`rsm'"!=""{
ereturn matrix Tau=`tau'
}
}
else{
if `=`nbcov'+`nbcovquant''!=0{
ereturn scalar sigma=`sigma'
ereturn scalar Varsigma=`Varsigma'
}
else{
ereturn scalar sigma=`sigma'
ereturn scalar Varsigma=`Varvartheta'
}
}
if "`estimateonly'"=="" & `=`nbcov'+`nbcovquant''>0 {
ereturn matrix VarExpSS `VarExpSS'
}
}
use `bddinip', replace
}
restore
end