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.

276 lines
6.2 KiB
Plaintext

7 months ago
capture program drop repet
program repet,rclass
syntax varlist [in], t2(varlist) PARTition(numlist integer >0) calcmethod(string) [SCOrename(string) KAPpa ICKAPpa(integer 0)]
preserve
local nbvars : word count `varlist'
if "`in'"!="" {
qui keep `in'
}
if `ickappa' <= 0 {
local ickappa = ""
}
/*
if "`ickappa'" != "" & "`kappa'" == "" {
di "{it:The ickappa option is ignored}"
}
*/
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
}
/*
qui tab `id', nofreq
local u = r(r)
if `u' != _N {
di in red "The variable `ident' has not unique values"
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
}
}
else {
local name
local nname
forvalues i = 1/`P' {
local name "Dim`i'"
local nname `nname' `name'
}
local scorename = "`nname'"
}
local a:word count `varlist'
local b:word count `t2'
if `a' != `b' di in red "The number of items is not the same in t1 and t2"
/* coupure noms des scores */
/*
local i = 1
foreach s in `scorename' {
local len = length("`s'")
if `len' > 10 {
local c = substr("`s'",1,9)
local d = substr("`s'",-1,1)
local s`i' "`c'" "~" "`d'"
}
else local s`i' = "`s'"
local sc `sc' `s`i''
local `++i'
}
*/
local i = 1
foreach s in `scorename' {
local s`i' = abbrev("`s'",10)
local sc `sc' `s`i''
local `++i'
}
/* 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 var`i' "`c'"
}
else local var`i' = "`s'"
local `++i'
}
*/
local i = 1
foreach v in `varlist' {
local var`i' = abbrev("`v'",10)
local `++i'
}
local maxit = 1
forvalues i=1/`nbvars' {
local len = length("`var`i''")
if `len' > `maxit' local maxit = `len'
}
local decit = `maxit' + 4
local colit = `decit'
di as result "{hline}"
di as result "{bf:Reproducibility}"
di as result "{hline}"
di
foreach sco in `scorename' {
*local t = "`sco'bis"
tempname s
local scorename2 `scorename2' `s'
}
qui calcscore `t2', scorename(`scorename2') partition(`partition') calcmethod(`calcmethod')
local i = 1
foreach var in `varlist' {
tokenize `t2'
qui kap `var' ``i''
local k`i' = r(kappa)
if "`ickappa'" != "" {
qui kapci `var' ``i'', reps(`ickappa')
local lbk`i' = r(lb_bc)
local ubk`i' = r(ub_bc)
}
local `++i'
}
local i = 1
foreach s in `scorename' {
tokenize `scorename2'
tempname score id temps
qui gen `id' = _n
qui gen `score'_1 = `s'
qui gen `score'_2 = ``i'' if ``i''!=.
qui reshape long `score'_, i(`id') j(`temps')
qui icc `score'_ `id'
local n`i' = r(N_target)
local icc`i' = r(icc_i)
local lb`i' = r(icc_i_lb)
local ub`i' = r(icc_i_ub)
*qui drop `score' `temps' `id'
qui sort `id'
qui duplicates drop `id', force
local `++i'
}
tokenize `sc'
local max = length("dimension")
forvalues j=1/`P' {
local len`j' = length("`s`j''")
if `len`j'' > `max' local max = `len`j''
}
local dec = `max' + 5
local i = 1
local j = 1
local y = 1
di "{bf:Dimension}" _c
di _col(`=`dec'+2') "{bf:n}" _c
local col = `dec'+6
di _col(`col') "{bf:Item}" _c
local col = `col'+`decit'
if "`kappa'" != "" {
di _col(`col') "{bf:Kappa}" _c
local col = `col'+10
if "`ickappa'" != "" {
di _col(`col') "{bf:95% CI for Kappa}" _c
local col = `col'+20
}
}
di _col(`=`col'+2') "{bf:ICC}" _c
local col = `col'+9
di _col(`col') "{bf:95% CI for ICC}"
local zz = 0
foreach var in `varlist' {
qui levelsof `var', local(levels)
local z : word count `levels'
if `z' > 2 local zz = 1
}
if "`kappa'" != "" & "`ickappa'" != "" & `zz' == 1 {
local col = `dec'+`decit'+16
di _col(`col') "{bf:(bootstrapped)}"
}
if "`ickappa'" != "" local h = `dec'+6+`decit'+10+8+21+12+1
else if "`kappa'" != "" local h = `dec'+6+`decit'+10+8+21+12-20
else local h = `dec'+6+`decit'+10+8+21+12-30
di "{hline `h'}"
local i = 1
foreach p in `partition' {
tokenize `sc'
di "{bf:``i''}" _c
di _col(`dec') "{text:`n`i''}" _c
if `j' == 1 local s = `p'
else local s = `s' +`p'
local col = `dec'+6
di _col(`col') "{text:`var`y''}" _c
if "`kappa'" != "" {
local k : di %5.2f `k`y''
local col = `col'+`decit'
di _col(`col') "{text:`k'}" _c
if "`ickappa'" != "" {
local lbk : di %5.2f `lbk`i''
local ubk : di %5.2f `ubk`i''
local col = `col'+11
di _col(`col') "{text:[`lbk' ; `ubk']}" _c
local col = `decit'+50
}
else local col = `decit'+30
}
else local col = `decit'+20
*local col = `decit'+30
local icc : di %5.2f `icc`i''
di _col(`col') "{text:`icc'}" _c
local lb : di %5.2f `lb`i''
local ub : di %5.2f `ub`i''
local col = `col'+8
di _col(`col')"{text:[`lb' ; `ub']}"
local w = `y'+1
forvalues z = `w'/`s' {
local col = `dec'+6
di _col(`col') "{text:`var`z''}" _c
if "`kappa'" != "" {
local k : di %5.2f `k`z''
local col = `col'+`decit'
di _col(`col') "{text:`k'}" _c
if "`ickappa'" != "" {
local lbk : di %5.2f `lbk`z''
local ubk : di %5.2f `ubk`z''
local col = `col'+11
di _col(`col')"{text:[`lbk' ; `ubk']}"
}
else di
}
else di
}
local `i++'
local `j++'
local y = `s'+1
di
}
end
*repet ioc1-ioc37, t2(ptgi1-peur16) partition(4 4 7 3 3 4 7 5) scorename(HA PSE W BCC AC AE LI MOC) kappa ickappa(20)
*repet sf36_3q_intenses sf36_3q_moderees sf36_3q_soulever sf36_3q_etages sf36_3q_etage sf36_3q_pencher sf36_3q_15km sf36_3q_500m sf36_3q_100m sf36_3q_douche sf36_4q_limite_temps_travail sf36_4q_moins_choses sf36_4q_type_travail sf36_4q_effort , t2(sf36_3q_intenses_v5 sf36_3q_moderees_v5 sf36_3q_soulever_v5 sf36_3q_etages_v5 sf36_3q_etage_v5 sf36_3q_pencher_v5 sf36_3q_15km_v5 sf36_3q_500m_v5 sf36_3q_100m_v5 sf36_3q_douche_v5 sf36_4q_limite_temps_travail_v5 sf36_4q_moins_choses_v5 sf36_4q_type_travail_v5 sf36_4q_effort_v5 ) partition(10 4)