Setup initial file structure
This commit is contained in:
89
Modules/ado/plus/c/confa_p.ado
Normal file
89
Modules/ado/plus/c/confa_p.ado
Normal file
@ -0,0 +1,89 @@
|
||||
*! v.1.0 -- prediction commands for confa suite; 16 Oct 2008
|
||||
program define confa_p
|
||||
version 10
|
||||
|
||||
* set trace on
|
||||
|
||||
* di as inp "`0'"
|
||||
|
||||
syntax anything [if] [in], [EBayes EMPiricalbayes REGression MLE BARTlett SCores]
|
||||
|
||||
* fork to equation scores or factor scores
|
||||
|
||||
if "`scores'"!="" EqScores `0'
|
||||
else if "`ebayes'`empiricalbayes'`regression'`mle'`bartlett'" != "" FScores `0'
|
||||
else {
|
||||
di as err "cannot figure those options out"
|
||||
exit 198
|
||||
}
|
||||
|
||||
end
|
||||
|
||||
program define EqScores
|
||||
|
||||
* implicitly used by _robust and svy
|
||||
* typical request: predict stub*, scores
|
||||
* stub* is not parsed well by newvarlist, have to use anything
|
||||
syntax anything [if] [in], scores
|
||||
marksample touse, novarlist
|
||||
ml score `anything' if `touse'
|
||||
end
|
||||
|
||||
program define FScores
|
||||
|
||||
* user requested factor predictions
|
||||
|
||||
syntax newvarlist [if] [in], [EBayes EMPiricalbayes REGression MLE BARTlett]
|
||||
|
||||
marksample touse, novarlist
|
||||
|
||||
if "`ebayes'`empiricalbayes'`regression'`mle'`bartlett'" == "" | ///
|
||||
( ("`ebayes'`empiricalbayes'`regression'"~="" ) & ("`mle'`bartlett'"~="" ) ) {
|
||||
|
||||
di as err "One and only one factor scoring option must be specified"
|
||||
exit 198
|
||||
}
|
||||
else {
|
||||
|
||||
local nfactors = rowsof( e(Phi) )
|
||||
|
||||
if "`: word count `varlist''" ~= "`nfactors'" {
|
||||
di as err "Must specify as many new variables as there were factors in confa model"
|
||||
exit 198
|
||||
}
|
||||
|
||||
* generate new variables
|
||||
forvalues k=1/`nfactors' {
|
||||
tempname f`k'
|
||||
qui gen double `f`k'' = .
|
||||
local flist `flist' `f`k''
|
||||
}
|
||||
|
||||
if "`ebayes'`empiricalbayes'`regression`" ~= "" {
|
||||
* Empirical Bayes:
|
||||
mata : CONFA_P_EB("`flist'", "`e(observed)'", "`touse'")
|
||||
}
|
||||
|
||||
if "`mle'`bartlett'" ~= "" {
|
||||
* MLE/Bartlett scoring:
|
||||
mata : CONFA_P_MLE("`flist'", "`e(observed)'", "`touse'")
|
||||
}
|
||||
|
||||
nobreak {
|
||||
forvalues k=1/`nfactors' {
|
||||
local type : word `k' of `typlist'
|
||||
local name : word `k' of `varlist'
|
||||
qui gen `type' `name' = `f`k'' if `touse'
|
||||
label var `name' `"`e(factor`k')', `ebayes'`empiricalbayes'`regression'`mle'`bartlett' method"'
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
end
|
||||
|
||||
exit
|
||||
|
||||
History:
|
||||
v.1.0 -- June 12, 2008: Empirical Bayes and MLE scoring
|
Reference in New Issue
Block a user