|
|
|
|
capture program drop valid
|
|
|
|
|
program valid
|
|
|
|
|
syntax varlist, PARTition(numlist integer >0) [SCOrename(string) IMPute NORound CALCmethod(string) DESCitems GRAPHs cfa CFAMethod(string) CFAStand CONVdiv TCONVdiv(real 0.4) CONVDIVBoxplots Alpha(real 0.7) Delta(real 0.9) h(real 0.3) HJmin(real 0.3) REPet(varlist) KAPpa ICKAPpa(integer 0) kgv(varlist) KGVBoxplots KGVGroupboxplots conc(varlist) tconc(real 0.4)]
|
|
|
|
|
preserve
|
|
|
|
|
|
|
|
|
|
qui set autotabgraphs on
|
|
|
|
|
|
|
|
|
|
qui set more off
|
|
|
|
|
|
|
|
|
|
local C = 0
|
|
|
|
|
foreach z in `partition' {
|
|
|
|
|
local C = `C' + `z'
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
local nbvars : word count `varlist'
|
|
|
|
|
/*
|
|
|
|
|
if `C' > `nbvars' {
|
|
|
|
|
di in red "The sum of the numbers in the partition option is greater than the number of variables in the dataset"
|
|
|
|
|
exit 119
|
|
|
|
|
}
|
|
|
|
|
*/
|
|
|
|
|
local nbvars : word count `varlist'
|
|
|
|
|
if `C' != `nbvars' {
|
|
|
|
|
di in red "The sum of the numbers in the partition option is different from the number of variables precised in varlist"
|
|
|
|
|
exit 119
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
local P:word count `partition'
|
|
|
|
|
|
|
|
|
|
if "`scorename'" !="" {
|
|
|
|
|
local S:word count `scorename'
|
|
|
|
|
if `P'!=`S' {
|
|
|
|
|
di in red "The number of score names given is different from the number of dimensions in the partition option"
|
|
|
|
|
exit 119
|
|
|
|
|
}
|
|
|
|
|
foreach sco in `scorename' {
|
|
|
|
|
capture confirm variable `sco'
|
|
|
|
|
if !_rc {
|
|
|
|
|
di in red "`sco' is a variable of the dataset. Choose another name"
|
|
|
|
|
exit 119
|
|
|
|
|
}
|
|
|
|
|
tokenize `scorename'
|
|
|
|
|
local g = 0
|
|
|
|
|
forvalues i = 1/`S' {
|
|
|
|
|
if "`sco'" == "``i''" {
|
|
|
|
|
local `++g'
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if `g' > 1 {
|
|
|
|
|
di in red "2 or more dimensions have the same name"
|
|
|
|
|
exit 119
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
local name
|
|
|
|
|
local nname
|
|
|
|
|
|
|
|
|
|
forvalues i = 1/`P' {
|
|
|
|
|
local name "Dim`i'"
|
|
|
|
|
local nname `nname' `name'
|
|
|
|
|
}
|
|
|
|
|
local scorename = "`nname'"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
if "`ident'" == "" {
|
|
|
|
|
tempvar id
|
|
|
|
|
qui gen `id' = _n
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
qui tab `ident', nofreq
|
|
|
|
|
local u = r(r)
|
|
|
|
|
if `u' != _N {
|
|
|
|
|
di in red "`ident' has not unique values"
|
|
|
|
|
exit 119
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
*/
|
|
|
|
|
/*
|
|
|
|
|
if "`repitems'" !="" {
|
|
|
|
|
local a : word count `repitems'
|
|
|
|
|
if mod(`a',2) != 0 {
|
|
|
|
|
di in red "error repitems: odd number"
|
|
|
|
|
exit
|
|
|
|
|
}
|
|
|
|
|
foreach r in `repitems' {
|
|
|
|
|
capture confirm variable `r'
|
|
|
|
|
if _rc!=0 {
|
|
|
|
|
di in red "`r' does not exist"
|
|
|
|
|
exit 119
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
*/
|
|
|
|
|
/*
|
|
|
|
|
local y = 0
|
|
|
|
|
if "`repscores'" !="" {
|
|
|
|
|
local a : word count `repscores'
|
|
|
|
|
if mod(`a',2) != 0 {
|
|
|
|
|
di in red "error repscores : odd number"
|
|
|
|
|
exit 119
|
|
|
|
|
}
|
|
|
|
|
foreach r in `repscores' {
|
|
|
|
|
local x = 0
|
|
|
|
|
local y = 0
|
|
|
|
|
capture confirm variable `r'
|
|
|
|
|
if _rc!=0 local x = 1
|
|
|
|
|
foreach s in `scorename' {
|
|
|
|
|
if "`r'" == "`s'" local y = `y'+1
|
|
|
|
|
}
|
|
|
|
|
if `x' == 1 & `y' < 1 {
|
|
|
|
|
di "`r' " "non d<>fini"
|
|
|
|
|
exit 119
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
if "`kgv'" !="" {
|
|
|
|
|
foreach k in `kgv' {
|
|
|
|
|
capture confirm variable `k'
|
|
|
|
|
if _rc!=0 {
|
|
|
|
|
di in red "`k' does not exist"
|
|
|
|
|
exit 119
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if "`conc'" !="" {
|
|
|
|
|
foreach c in `conc' {
|
|
|
|
|
capture confirm variable `c'
|
|
|
|
|
if _rc!=0 {
|
|
|
|
|
di in red "`c' does not exist"
|
|
|
|
|
exit 119
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
/*
|
|
|
|
|
if `t2from' > _N {
|
|
|
|
|
di in red "Reproductibility : invalid range for observations at time 2 (`t2from' > number of observations)"
|
|
|
|
|
exit 119
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if `t2to' > _N {
|
|
|
|
|
di in red "Reproductibility : invalid range for observations at time 2 (`t2to' > number of observations)"
|
|
|
|
|
exit 119
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if "`t2from'" != "" & "`t2to'" != "" {
|
|
|
|
|
if `t2from' > `t2to' {
|
|
|
|
|
di in red "Reproductibility : invalid range for observations at time 2"
|
|
|
|
|
exit 119
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if "`t2from'" == "" local t2from = 1
|
|
|
|
|
if "`t2to'" == "" local t2to = _N
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
local i = 1
|
|
|
|
|
foreach x in `varlist' {
|
|
|
|
|
local var`i' = "`x'"
|
|
|
|
|
local `++i'
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
di as result "Items used for calculation of the scores"
|
|
|
|
|
di
|
|
|
|
|
|
|
|
|
|
local i = 1
|
|
|
|
|
local j = 1
|
|
|
|
|
local y = 1
|
|
|
|
|
foreach p in `partition' {
|
|
|
|
|
tokenize `scorename'
|
|
|
|
|
di "{bf:``i''} : " _c
|
|
|
|
|
|
|
|
|
|
if `j' == 1 local s = `p'
|
|
|
|
|
else local s = `s' +`p'
|
|
|
|
|
forvalues z = `y'/`s' {
|
|
|
|
|
di "{text:`var`z'' }" _c
|
|
|
|
|
}
|
|
|
|
|
local `i++'
|
|
|
|
|
local `j++'
|
|
|
|
|
local y = `s'+1
|
|
|
|
|
di
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
qui destring _all, replace
|
|
|
|
|
di
|
|
|
|
|
/*
|
|
|
|
|
local cpt = 0
|
|
|
|
|
if "`sum'" != "" {
|
|
|
|
|
local cpt `cpt' + 1
|
|
|
|
|
}
|
|
|
|
|
if "`mean'" != "" {
|
|
|
|
|
local cpt `cpt' + 1
|
|
|
|
|
}
|
|
|
|
|
if "`stand'" != "" {
|
|
|
|
|
local cpt `cpt' + 1
|
|
|
|
|
}
|
|
|
|
|
if `cpt'>1 {
|
|
|
|
|
di in red "You must choose between mean, sum or stand (the options are exclusive)"
|
|
|
|
|
exit 119
|
|
|
|
|
}
|
|
|
|
|
*/
|
|
|
|
|
calcscore `varlist', scorename(`scorename') partition(`partition') calcmethod(`calcmethod')
|
|
|
|
|
|
|
|
|
|
if "`descitems'" != "" {
|
|
|
|
|
di as result "{hline}"
|
|
|
|
|
di "Description of items"
|
|
|
|
|
di as result "{hline}"
|
|
|
|
|
di
|
|
|
|
|
descitems `varlist', partition(`partition')
|
|
|
|
|
di
|
|
|
|
|
}
|
|
|
|
|
if "`graphs'" != "" {
|
|
|
|
|
_graph `varlist', partition(`partition') scorename(`scorename') calcmethod(`calcmethod')
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if "`repet'" != "" {
|
|
|
|
|
if "`descitems'" != "" {
|
|
|
|
|
di as result "{hline}"
|
|
|
|
|
di "Description of items (time 2)"
|
|
|
|
|
di as result "{hline}"
|
|
|
|
|
di
|
|
|
|
|
descitems `repet', partition(`partition')
|
|
|
|
|
di
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if "`impute'" != "" {
|
|
|
|
|
*if "`noround'" != "" {
|
|
|
|
|
*di "Missing data handling (noround)"
|
|
|
|
|
*di
|
|
|
|
|
|
|
|
|
|
imp `varlist', partition(`partition') `noround'
|
|
|
|
|
if "`descitems'" != "" {
|
|
|
|
|
di as result "{hline}"
|
|
|
|
|
di "Description of items after missing data handling"
|
|
|
|
|
di as result "{hline}"
|
|
|
|
|
di
|
|
|
|
|
descitems `varlist', partition(`partition')
|
|
|
|
|
di
|
|
|
|
|
}
|
|
|
|
|
if "`graphs'" != "" {
|
|
|
|
|
*_graph `varlist', partition(`partition') scorename(`scorename')
|
|
|
|
|
}
|
|
|
|
|
if "`repet'" != "" {
|
|
|
|
|
imp `repet', partition(`partition') `noround'
|
|
|
|
|
if "`descitems'" != "" {
|
|
|
|
|
di as result "{hline}"
|
|
|
|
|
di "Description of items after missing data handling (time 2)"
|
|
|
|
|
di as result "{hline}"
|
|
|
|
|
di
|
|
|
|
|
descitems `repet', partition(`partition')
|
|
|
|
|
di
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
*}
|
|
|
|
|
/*else {
|
|
|
|
|
di "Missing data handling (round)"
|
|
|
|
|
di
|
|
|
|
|
imp `varlist', partition(`partition')
|
|
|
|
|
di "Description of items after missing data handling"
|
|
|
|
|
di
|
|
|
|
|
desc_item `varlist', partition(`partition')
|
|
|
|
|
if "`graphs'" != "" {
|
|
|
|
|
*_graph `varlist', partition(`partition') scorename(`scorename')
|
|
|
|
|
}
|
|
|
|
|
di "Description of items after missing data handling (time 2)"
|
|
|
|
|
di
|
|
|
|
|
if "`repet'" != "" {
|
|
|
|
|
imp `repet', partition(`partition')
|
|
|
|
|
desc_item `repet', partition(`partition')
|
|
|
|
|
}
|
|
|
|
|
di "{hline}"
|
|
|
|
|
}*/
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
if "`imp'" == "" & "`noround'" != "" {
|
|
|
|
|
*di "noround"
|
|
|
|
|
di
|
|
|
|
|
imp `varlist', partition(`partition') `noround'
|
|
|
|
|
if "`desc_items'" != "" {
|
|
|
|
|
di "Description of items after missing data handling"
|
|
|
|
|
di
|
|
|
|
|
desc_item `varlist', partition(`partition')
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
if "`graphs'" != "" {
|
|
|
|
|
*_graph `varlist', partition(`partition') scorename(`scorename')
|
|
|
|
|
}
|
|
|
|
|
di "Description of items after missing data handling (time 2)"
|
|
|
|
|
di
|
|
|
|
|
imp `repet', partition(`partition') `noround'
|
|
|
|
|
desc_item `repet', partition(`partition')
|
|
|
|
|
di "{hline}"
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
*di "{hline}"
|
|
|
|
|
|
|
|
|
|
if "`convdiv'" != "" {
|
|
|
|
|
convdiv `varlist', scorename(`scorename') partition(`partition') tconvdiv(`tconvdiv') `convdivboxplots'
|
|
|
|
|
*di as result "{hline}"
|
|
|
|
|
di
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
if "`cfa'" != "" {
|
|
|
|
|
local cpt = 0
|
|
|
|
|
if "`cfa_ml'" != ""{
|
|
|
|
|
local method = "cfa_ml"
|
|
|
|
|
local cpt `cpt' + 1
|
|
|
|
|
}
|
|
|
|
|
if "`cfa_mlmv'" != "" {
|
|
|
|
|
local method = "cfa_mlmv"
|
|
|
|
|
local cpt `cpt' + 1
|
|
|
|
|
}
|
|
|
|
|
if "`cfa_adf'" != "" {
|
|
|
|
|
local method = "cfa_adf"
|
|
|
|
|
local cpt `cpt' + 1
|
|
|
|
|
}
|
|
|
|
|
else local method = "cfa_ml"
|
|
|
|
|
if `cpt' > 1 {
|
|
|
|
|
di in red "You must choose between cfa_ml, cfa_mlmv or cfa_adf (the options are exclusive)"
|
|
|
|
|
exit 119
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
cfa `varlist', scorename(`scorename') partition(`partition') `method' `cfa_stand'
|
|
|
|
|
di as result "{hline}"
|
|
|
|
|
}
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
if "`cfa'" != "" {
|
|
|
|
|
cfa `varlist', scorename(`scorename') partition(`partition') cfamethod(`cfamethod') `cfastand'
|
|
|
|
|
*di as result "{hline}"
|
|
|
|
|
di
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
rel `varlist', scorename(`scorename') partition(`partition') alpha(`alpha') delta(`delta') h(`h') hjmin(`hjmin')
|
|
|
|
|
di
|
|
|
|
|
*di "{hline}"
|
|
|
|
|
|
|
|
|
|
if "`repet'" != "" {
|
|
|
|
|
repet `varlist', t2(`repet') partition(`partition') scorename(`scorename') `kappa' ickappa(`ickappa') calcmethod(`calcmethod')
|
|
|
|
|
*di "{hline}"
|
|
|
|
|
di
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if "`kgv'" != "" {
|
|
|
|
|
kgv `scorename', categ(`kgv') `kgvboxplots' `kgvgroupboxplots'
|
|
|
|
|
*di "{hline}"
|
|
|
|
|
di
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if "`conc'" != "" {
|
|
|
|
|
conc `scorename', comp(`conc') tconc(`tconc')
|
|
|
|
|
*di "{hline}"
|
|
|
|
|
}
|
|
|
|
|
end
|