Setup initial file structure
This commit is contained in:
69
Modules/ado/personal/s/senspescore.ado
Normal file
69
Modules/ado/personal/s/senspescore.ado
Normal file
@ -0,0 +1,69 @@
|
||||
program define senspescore, rclass
|
||||
version 8
|
||||
syntax varlist(min=1 max=1 numeric) [, Group(varname) Threshold(string) INVerse]
|
||||
|
||||
tempfile senspescorefile
|
||||
qui save `senspescorefile', replace
|
||||
|
||||
qui sort `group'
|
||||
tempname p0 p1 n0 n1 q0
|
||||
qui count
|
||||
local nind=r(N)
|
||||
qui gen `n0'=.
|
||||
qui gen `n1'=.
|
||||
qui gen `p0'=.
|
||||
qui gen `p1'=.
|
||||
|
||||
local l0=0
|
||||
local l1=1
|
||||
|
||||
if "`inverse'"=="" {
|
||||
local m0="<"
|
||||
local m1=">"
|
||||
}
|
||||
else {
|
||||
local m0=">"
|
||||
local m1="<"
|
||||
}
|
||||
qui count if `group'==`l0'
|
||||
local group0=r(N)
|
||||
qui count if `group'==`l1'
|
||||
local group1=r(N)
|
||||
|
||||
|
||||
forvalues i=1/`nind' {
|
||||
qui count if `varlist'`m0'`varlist'[`i']&`group'==`l0'
|
||||
qui replace `n0'=`r(N)' in `i'
|
||||
qui count if `varlist'`m1'`varlist'[`i']&`group'==`l1'
|
||||
qui replace `n1'=`r(N)' in `i'
|
||||
qui replace `p1'=`n`l1''/`group`l1'' in `i'
|
||||
qui replace `p0'=`n`l0''/`group`l0'' in `i'
|
||||
}
|
||||
tempname diff min
|
||||
if "`threshold'"!="" {
|
||||
qui gen `diff'=abs(`varlist'-`threshold')
|
||||
qui sort `diff'
|
||||
qui gen `min'=1 in 1
|
||||
}
|
||||
sort `varlist'
|
||||
|
||||
label variable `n0' "N bien class<73>es groupe `l0'"
|
||||
label variable `n1' "N bien class<73>es groupe `l1'"
|
||||
label variable `p0' "Specificity"
|
||||
label variable `p1' "Sensibility"
|
||||
twoway line `n0' `n1' `varlist',name(n,replace) xline(`threshold')
|
||||
twoway line `p0' `p1' `varlist',name(p,replace) xline(`threshold')
|
||||
qui gen `q0'=1-`p0'
|
||||
label variable `q0' "1-Specificity"
|
||||
local scatter
|
||||
if "`threshold'"!="" {
|
||||
local scatter "(scatter `p1' `q0' if `min'==1)"
|
||||
}
|
||||
twoway (line `p1' `q0') (line `q0' `q0') `scatter' ,name(roc,replace) legend(off)
|
||||
|
||||
|
||||
|
||||
|
||||
use `senspescorefile', clear
|
||||
end
|
||||
|
Reference in New Issue
Block a user