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
36 lines
927 B
Plaintext
9 months ago
|
*! 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
|