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.

90 lines
2.3 KiB
Plaintext

*! 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