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.
204 lines
4.1 KiB
Plaintext
204 lines
4.1 KiB
Plaintext
8 months ago
|
capture program drop rel
|
||
|
program rel,rclass
|
||
|
syntax varlist, PARTition(numlist integer >0) [SCOrename(string) Alpha(real 0.7) Delta(real 0.9) h(real 0.3) HJmin(real 0.3)]
|
||
|
|
||
|
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
|
||
|
}
|
||
|
|
||
|
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
|
||
|
}
|
||
|
}
|
||
|
di as result "{hline}"
|
||
|
di "{bf:Reliability}"
|
||
|
di as result "{hline}"
|
||
|
di
|
||
|
|
||
|
local y = 1
|
||
|
local nbitems = 0
|
||
|
matrix aa = J(`P',4,.)
|
||
|
|
||
|
foreach z in `partition' {
|
||
|
local nbitems = `nbitems' + `z'
|
||
|
}
|
||
|
|
||
|
local i = 1
|
||
|
foreach x in `varlist' {
|
||
|
local var`i' = "`x'"
|
||
|
local `++i'
|
||
|
}
|
||
|
|
||
|
matrix d = J(`nbitems',2,.)
|
||
|
|
||
|
local i = 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 count if !=.
|
||
|
|
||
|
capture qui alpha `liste', asi item std
|
||
|
local al`i' = r(alpha)
|
||
|
local n`i' = e(N)
|
||
|
|
||
|
capture qui loevh `liste', pairwise
|
||
|
local h`i' = r(loevH)
|
||
|
mat a = r(Obs)
|
||
|
*local n`i' = a[1,1]
|
||
|
matrix c = r(loevHj)
|
||
|
matrix ct = c'
|
||
|
|
||
|
|
||
|
local lister = ""
|
||
|
forvalues w = `y'/`s' {
|
||
|
tempvar z
|
||
|
qui gen `z' = round(`var`w'')
|
||
|
local lister `lister' `z'
|
||
|
}
|
||
|
|
||
|
capture qui delta `lister'
|
||
|
local delt`i' = r(delta)
|
||
|
|
||
|
|
||
|
// on remplit d avec les valeurs de ct
|
||
|
local k = 0
|
||
|
forvalues j = `y'/`s' {
|
||
|
local k = `k'+1
|
||
|
matrix d[`j',1] = ct[`k',1]
|
||
|
matrix d[`j',2] = `i'
|
||
|
}
|
||
|
|
||
|
matrix aa [`i',1] = `al`i''
|
||
|
matrix aa [`i',2] = `delt`i''
|
||
|
matrix aa [`i',3] = `h`i''
|
||
|
|
||
|
local `i++'
|
||
|
local y = `s'+1
|
||
|
}
|
||
|
|
||
|
matrix rownames d = `varlist'
|
||
|
local i = 1
|
||
|
local y = 1
|
||
|
|
||
|
foreach x in `partition' {
|
||
|
if `i' == 1 local s = `x'
|
||
|
else local s = `s' +`x'
|
||
|
|
||
|
matrix C = d[`y'..`s',1.]
|
||
|
local min`i' = C[1,1]
|
||
|
local n : rownames C
|
||
|
tokenize `n'
|
||
|
local t`i' = "`1'"
|
||
|
forvalues j = 1/`x' {
|
||
|
local t = "``j''"
|
||
|
if C[`j',1] <= `min`i'' {
|
||
|
local min`i' = C[`j',1]
|
||
|
local t`i' = "``j''"
|
||
|
local itmin`i' = "``j''"
|
||
|
}
|
||
|
}
|
||
|
*di "`t`i''"
|
||
|
matrix aa [`i',4] = `min`i''
|
||
|
local `i++'
|
||
|
local y = `s'+1
|
||
|
}
|
||
|
|
||
|
matrix colnames aa = "alpha" "delta" "H" "Hj_min"
|
||
|
|
||
|
if "`scorename'"=="" {
|
||
|
local i = 1
|
||
|
local y = 1
|
||
|
local name
|
||
|
local nname
|
||
|
forvalues i = 1/`P' {
|
||
|
local name "Dim`i'"
|
||
|
local nname `nname' `name'
|
||
|
}
|
||
|
local scorename = "`nname'"
|
||
|
}
|
||
|
|
||
|
local maxlen = 0
|
||
|
foreach sco in `scorename' {
|
||
|
local w = length("`sco'")
|
||
|
if `w' > `maxlen' local maxlen = `w'
|
||
|
}
|
||
|
|
||
|
local i = 1
|
||
|
local j = 1
|
||
|
local y = 1
|
||
|
local col = `maxlen'+8
|
||
|
di _col(`col') "{bf:n}" _c
|
||
|
local col = `col'+5
|
||
|
di _col(`col') "{bf:alpha}" _c
|
||
|
local col = `col'+8
|
||
|
di _col(`col') "{bf:delta}" _c
|
||
|
local col = `col'+11
|
||
|
di _col(`col') "{bf:H}" _c
|
||
|
local col = `col'+5
|
||
|
di _col(`col') "{bf:Hj_min}"
|
||
|
*di "{hline 41}"
|
||
|
|
||
|
|
||
|
foreach s in `scorename' {
|
||
|
di in blue "{bf:`s'}" _c
|
||
|
local col = `maxlen'+3
|
||
|
local n : di %6.0f `n`i''
|
||
|
di in blue _col(`col') "{text:`n'}" _c
|
||
|
local col = `col'+10
|
||
|
|
||
|
local a : di %5.2f `al`i''
|
||
|
if `a' < `alpha' {
|
||
|
di _col(`col') "{error:`a'} " _c
|
||
|
}
|
||
|
else di _col(`col') "{text:`a'}" _c
|
||
|
|
||
|
local col = `col'+8
|
||
|
local d : di %5.2f `delt`i''
|
||
|
if `d' < `delta' {
|
||
|
di _col(`col') "{error:`d'} " _c
|
||
|
}
|
||
|
else di _col(`col') "{text:`d'}" _c
|
||
|
|
||
|
local col = `col'+8
|
||
|
local h : di %4.2f `h`i''
|
||
|
if `h' < `h' {
|
||
|
di _col(`col') "{error:`h'} " _c
|
||
|
}
|
||
|
else di _col(`col') "{text:`h'}" _c
|
||
|
|
||
|
local col = `col'+8
|
||
|
local m : di %6.2f `min`i''
|
||
|
if `m' < `hjmin' {
|
||
|
di _col(`col') "{error:`m'} " _c
|
||
|
di "{text:(item `itmin`i'')}" _c
|
||
|
}
|
||
|
else di _col(`col') "{text:`m'}" _c
|
||
|
|
||
|
di
|
||
|
local `++i'
|
||
|
}
|
||
|
|
||
|
end
|
||
|
|
||
|
*rel ioc1-ioc37, partition(4 4 7 3 3 4 7 5) scorename(HA PSE W BCC AC AE LI MOC) a(0.7) d(0.9) h(0.3) hjmin(0.3)
|
||
|
*rel x1-x40, partition(5 5 5 5 5 5 5 5) scorename(HA PSE W BCC AC AE LI MOC) a(0.7) d(0.9) h(0.3) hjmin(0.3)
|