capture program drop descitems program descitems syntax varlist, PARTition(numlist integer >0) local i = 1 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 different from the number of variables precised in varlist" exit 119 } local i = 1 foreach x in `varlist' { local var`i' = "`x'" local `++i' } /* qui su `var1' local min = r(min) local max = r(max) forvalue i=2/`nbvars' { qui su `var`i'' local minloc = r(min) local maxloc = r(max) if `minloc'<`min' local min = `minloc' if `maxloc'>`max' local max = `maxloc' } */ foreach var in `varlist' { qui replace `var' = round(`var') } local lev = "" foreach var in `varlist' { qui levelsof `var', local(levels) foreach l in `levels' { if strpos("`lev'","`l'") == 0 { local lev `lev' `l' } } } _qsort_index `lev' local lev = r(slist1) local i = 1 matrix d = J(`nbvars',4,.) foreach var in `varlist'{ qui count if missing(`var') local ct=r(N) local tx`i'=`ct'/_N matrix d[`i',1] = `tx`i'' local `i++' } matrix rownames d = `varlist' matrix colnames d = "missing" "alpha" "Hj" local i = 1 local y = 1 foreach x in `partition' { if `i' == 1 local s = `x' else local s = `s' +`x' local liste = "" forvalues w = `y'/`s' { local liste `liste' `var`w'' } qui capture alpha `liste', asi item std mat a = r(Alpha) mat at = a' qui capture loevh `liste', pairwise matrix e = r(loevHj) matrix et = e' matrix ns = r(nbHjkNS) matrix nst = ns' local k = 0 forvalues j = `y'/`s' { local k = `k'+1 matrix d[`j',2] = at[`k',1] matrix d[`j',3] = et[`k',1] matrix d[`j',4] = nst[`k',1] } local `i++' local y = `s'+1 } /* coupure noms des items */ /* local i = 1 foreach s in `varlist' { local len = length("`s'") if `len' > 10 { local c = substr("`s'",1,9) local d = substr("`s'",-1,1) local var`i' "`c'" "~" "`d'" } else local var`i' = "`s'" *local v `v' `var`i'' local `++i' } local max = 3 forvalues i=1/`nbvars' { local len = length("`var`i''") if `len' > `max' local max = `len' } */ local i = 1 foreach v in `varlist' { local var`i' = abbrev("`v'",8) local `++i' } local dec = 10 local col = `dec' local b : word count `lev' local i = 1 local j = 1 local y = 1 di in blue _col(`dec') "{bf:Missing}" _c local col = `col'+11 di in blue _col(`=`col'+2') "{bf:N}" _c local col = `col'+9 di _col(`col') "{bf:Response categories}" _c local col = `dec'+18+8*`b' di _col(`col') "{bf:Alpha}" _c local col = `col'+9 di _col(`col') "{bf:Loevinger}" _c local col = `col'+12 di _col(`col') "{bf:Number of}" local col = `dec'-1 di _col(`col') "{bf:data rate}" _c local col = `dec'+18 foreach m in `lev' { di _col(`=`col'+2') "`m'" _c local col = `col'+8 } local col = `dec'+17+8*`b' di as result _col(`col') "- item" _c local col = `col'+10 di as result _col(`col') "Hj coeff" _c local col = `col'+12 di as result _col(`col') "NS Hjk" local ch = `dec'+18+8*`b'+29 di "{hline `ch'}" local i = 1 foreach x in `varlist' { local varo`i' = "`x'" local `++i' } local y = 1 foreach p in `partition' { if `j' == 1 local s = `p' else local s = `s' +`p' forvalues z = `y'/`s' { local col = `dec' di "{bf:`var`z''}" _c local t = d[`z',1] local t : di %8.2f `t' di _col(`col') "{text:`t'}" _c qui count if missing(`varo`z'') local m = r(N) local N = _N-`m' local N : di %4.0f `N' local col = `col'+10 di _col(`col') "{text:`N'}" _c local col = `col'+8 foreach m in `lev' { local f = 0 qui levelsof `varo`z'', local(levels) foreach l in `levels' { if strpos("`levels'","`m'") == 0 { local f = 1 } } /*if `f' == 1 { di _col(`=`col'+2') "_" _c }*/ *else { qui count if round(`varo`z'') == `m' local n = r(N) qui count if `varo`z'' != . local d = r(N) local e = `n'/`d' local e : di %4.2f `e' if `e' != 0 di _col(`=`col'-1')"{text:`e'}" _c else di _col(`=`col'-1')"{text: -}" _c *} local col = `col'+8 } local col = `dec'+18+8*`b' local a = d[`z',2] local a : di %4.2f `a' di _col(`=`col'+1') "{text:`a'}" _c local h = d[`z',3] local h : di %5.2f `h' local col = `col'+10 di _col(`=`col'+3') "{text:`h'}" _c local ns = d[`z',4] local ns : di %1.0f `ns' local col = `col'+12 di _col(`=`col'+7') "{text:`ns'}" } local `i++' local `j++' local y = `s'+1 di "{dup `ch':-}" } end *descitems iociociociociocicocio1-ioc37, part(4 4 7 3 3 4 7 5) *descitems ptgi1-peur16, part(4 4 7 3 3 4 7 5) *descitems x1-x30, part(5 5 5 5 5 4 1)