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.

36 lines
927 B
Plaintext

*! v 1.1 26Oct2004
*! Roger Harbord
/*
log-likelihood evaluator (method d0) for metareg v2.
Estimates tau2 by REML.
Variables :
$ML_y1 holds the y-vector of study estimates,
$ML_y2 holds the within-study variances
$REML_x holds the covariates
$REML_nocons is flag "" or "noconstant"
*/
program define metareg_ll
version 7
args todo b lnf
tempvar lnfj v r
tempname R tau2
mleval `tau2' = `b', scalar
quietly {
gen double `v' = $ML_y2 +`tau2' /* v_i = sigma_i^2 + tau^2 */
capture regress $ML_y1 $REML_x [iw=1/`v'] if $ML_samp, $REML_nocons
if _rc == 0 {
predict double `r' if $ML_samp, resid
gen double `lnfj' = `r'^2/`v' +log(`v')
mlsum `lnf' = `lnfj'
matrix accum R = $REML_x [iw=1/`v'] if $ML_samp, $REML_nocons
/* R = X'V^-1X is reml correction to -2logL */
scalar `lnf' = -0.5 * ( `lnf' +log( det(R) ) )
}
else {
scalar `lnf' = .
}
}
end