Computed theoretical power for N=100 and N=200 scenarios
This commit is contained in:
146
Modules/ado/personal/t/tri.ado
Normal file
146
Modules/ado/personal/t/tri.ado
Normal file
@ -0,0 +1,146 @@
|
||||
program define tri
|
||||
syntax varlist [fweight iweight] [,global test(int 2) all]
|
||||
|
||||
preserve
|
||||
local nbvar:word count `varlist'
|
||||
tokenize `varlist'
|
||||
/*forvalues i=1/`nbvar' {
|
||||
qui su ``i'' [`weight'`exp']
|
||||
qui replace ``i''=(``i''-r(mean))/r(sd)
|
||||
} */
|
||||
|
||||
|
||||
/*METHOD GLOBAL */
|
||||
|
||||
|
||||
/* COVARIANCE OR CORRELATION MATRIX*/
|
||||
|
||||
if "`global'"!="" {
|
||||
tempname Cov W
|
||||
qui matrix accum `Cov'=`varlist' [`weight'`exp'],nocons dev
|
||||
qui matrix `Cov'=`Cov'/(`nbind'-1)
|
||||
matrix `W'=J(2,`nbvar',0)
|
||||
|
||||
local newlist
|
||||
tempvar centroid
|
||||
genscore `varlist',mean score(`centroid')
|
||||
|
||||
forvalues i=1/`nbvar' {
|
||||
qui corr ``i'' `centroid' [`weight'`exp']
|
||||
matrix `W'[1,`i']=`r(rho)'
|
||||
}
|
||||
|
||||
forvalues c=1/`nbvar'{
|
||||
local corrmin=2
|
||||
local var=0
|
||||
forvalues i=1/`nbvar' {
|
||||
if `W'[1,`i']<`corrmin'&`W'[2,`i']==0 {
|
||||
local corrmin=`W'[1,`i']
|
||||
local var=`i'
|
||||
}
|
||||
}
|
||||
matrix `W'[2,`var']=`c'
|
||||
}
|
||||
matrix list `W'
|
||||
forvalues c=1/`nbvar' {
|
||||
forvalues i=1/`nbvar' {
|
||||
if `W'[2,`i']==`c' {
|
||||
local newlist `newlist' ``i''
|
||||
}
|
||||
}
|
||||
}
|
||||
local varlist "`newlist'"
|
||||
tokenize `varlist'
|
||||
}
|
||||
if "`all'"=="" {
|
||||
local time=1
|
||||
}
|
||||
else {
|
||||
local time=`nbvar'
|
||||
}
|
||||
|
||||
local maxc=-99
|
||||
local part
|
||||
forvalues t=1/`time' {
|
||||
tempname W
|
||||
matrix `W'=J(1,`nbvar',0)
|
||||
matrix `W'[1,`t']=1
|
||||
forvalues iter=1/`nbvar' {
|
||||
local dejaselect
|
||||
forvalues i=1/`nbvar' {
|
||||
if `W'[1,`i']!=0 {
|
||||
local dejaselect `dejaselect' ``i''
|
||||
}
|
||||
}
|
||||
tempvar centroid
|
||||
qui genscore `dejaselect',score(`centroid') standardized
|
||||
local maxr=-2
|
||||
local maxi=0
|
||||
forvalues i=1/`nbvar' {
|
||||
if `W'[1,`i']==0 {
|
||||
qui corr `centroid' ``i''
|
||||
local r=r(rho)
|
||||
if `r'>`maxr' {
|
||||
local maxr=`r'
|
||||
local maxi=`i'
|
||||
}
|
||||
}
|
||||
}
|
||||
if `maxi'!=0 {
|
||||
matrix `W'[1,`maxi']=`iter'+1
|
||||
}
|
||||
}
|
||||
local list
|
||||
forvalues class=1/`nbvar' {
|
||||
forvalues i=1/`nbvar' {
|
||||
if `W'[1,`i']==`class' {
|
||||
local list `list' ``i''
|
||||
}
|
||||
}
|
||||
}
|
||||
di "`list'"
|
||||
forvalues i=0/`nbvar' {
|
||||
local j=`nbvar'-`i'
|
||||
if `test'>2 {
|
||||
local jb `j'
|
||||
}
|
||||
else {
|
||||
local jb 0
|
||||
}
|
||||
forvalues k=0/`jb' {
|
||||
local l=`nbvar'-`i'-`k'
|
||||
if `test'>3 {
|
||||
local lb=`l'
|
||||
}
|
||||
else {
|
||||
local lb=0
|
||||
}
|
||||
forvalues m=0/`lb' {
|
||||
local n=`nbvar'-`i'-`k'-`m'
|
||||
qui di "compart `list',part(`i' `k' `m' `n')"
|
||||
di "`i' `k' `m' `n'"
|
||||
if `i'>=0&`k'>=0&`m'>=0&`n'>=0 {
|
||||
di " compart `list',part(`i' `k' `m' `n')"
|
||||
qui compart2 `list',part(`i' `k' `m' `n')
|
||||
local c=r(compart)
|
||||
di "`c'"
|
||||
if `c'>`maxc' {
|
||||
local maxc=`c'
|
||||
local part=r(part)
|
||||
local savlist `list'
|
||||
*di "Best : `c'"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
di "The best partition in two groups is `part'"
|
||||
di "for `savlist'"
|
||||
di "COMPART=`maxc'"
|
||||
|
||||
|
||||
|
||||
|
||||
restore
|
||||
end
|
Reference in New Issue
Block a user