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.
69 lines
1.8 KiB
Plaintext
69 lines
1.8 KiB
Plaintext
10 months ago
|
************************************************************************************************************
|
||
|
* based on the command "detect" by Jean-Benoit Hardouin
|
||
|
************************************************************************************************************
|
||
|
program define detect2 , rclass
|
||
|
version 7.0
|
||
|
syntax varlist(min=2 numeric), PARTition(numlist integer >0) [noSCOres noRESTscores]
|
||
|
|
||
|
local nbitemstest=0
|
||
|
tokenize `partition'
|
||
|
local Q:word count `partition'
|
||
|
local firstitem=0
|
||
|
local dim0=1
|
||
|
forvalues i=1/`Q' {
|
||
|
local dim`i'=``i''
|
||
|
local firstitem`i'=`firstitem`=`i'-1''+`dim`=`i'-1''
|
||
|
local nbitemstest=`nbitemstest'+`dim`i''
|
||
|
tempvar score`i'
|
||
|
qui gen `score`i''=0
|
||
|
forvalues j=`firstitem`i''/`=`firstitem`i''+`dim`i''-1' {
|
||
|
local item`j': word `j' of `varlist'
|
||
|
qui replace `score`i''=`score`i''+`item`j''
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
local nbitems:word count `varlist'
|
||
|
tokenize `varlist'
|
||
|
|
||
|
if `nbitems'!=`nbitemstest' {
|
||
|
di in red "The sum of the numbers of items in all the dimensions is different of the total number of items precised in varlist"
|
||
|
exit
|
||
|
}
|
||
|
|
||
|
|
||
|
tempname Corrscores Corrrestscores
|
||
|
|
||
|
matrix define `Corrscores'=J(`nbitems',`Q',0)
|
||
|
matrix define `Corrrestscores'=J(`nbitems',`Q',0)
|
||
|
|
||
|
|
||
|
forvalues i=1/`nbitems' {
|
||
|
forvalues j=1/`Q' {
|
||
|
tempvar restscore`i's`j'
|
||
|
qui gen `restscore`i's`j''=`score`j''-``i''
|
||
|
qui corr ``i'' `score`j''
|
||
|
local corr`i's`j'=r(rho)
|
||
|
qui corr ``i'' `restscore`i's`j''
|
||
|
local corr`i'rs`j'=r(rho)
|
||
|
matrix `Corrscores'[`i',`j']=`corr`i's`j''
|
||
|
matrix `Corrrestscores'[`i',`j']=`corr`i'rs`j''
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
local namesdim
|
||
|
forvalues q=1/`Q' {
|
||
|
local namesdim "`namesdim' dim`q'"
|
||
|
}
|
||
|
|
||
|
matrix colnames `Corrscores'= `namesdim'
|
||
|
matrix colnames `Corrrestscores'= `namesdim'
|
||
|
return matrix Corrscores `Corrscores'
|
||
|
return matrix Corrrestscores `Corrrestscores'
|
||
|
|
||
|
|
||
|
end
|