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