Hi everyone; I use Stata version 16.
As the title suggests, I am facing syntax issues with programming for maximum likelihood estimation.
I aim to run the following model:
The program for such model is:
However, when I use ml check to understand what is happening, I receive the following message:
All help is immensely appreciated, thanks in advance
As the title suggests, I am facing syntax issues with programming for maximum likelihood estimation.
I aim to run the following model:
Code:
ml model lf our_ML_crraax (r: choice probMit0 probFix0 ra mfMit0total mfMit1total mfFix0total mfFix1total = ) (LNw: ), cluster(accountid) missing maximize technique(nr) difficult constraint(1)
Code:
program our_ML_crraax args lnf r LNw muRA tempvar ra proba1 proba2 probb1 probb2 mA1 mA2 mB1 mB2 yA1 yA2 yB1 yB2 wp1 wp2 euF euM euDiff tempvar w syntax varlist [if] [in] [fweight pweight] [, noLOg Robust CLuster(varname) svy EForm *] marksample touse if "`svy'" !="" { svymarkout `touse' } quietly { generate double `proba1' = $ML_y2 generate double `proba2' = 1 -`proba1' generate double `probb1' = $ML_y3 generate double `probb2' = 1 - `probb1' generate double `ra' = $ML_y4 generate double `mA1' = $ML_y5 generate double `mA2' = $ML_y6 generate double `mB1' = $ML_y7 generate double `mB2' = $ML_y8 generate double `w' = exp(`LNw') generate double `yA1' = ((`w' + `mA1')^(1-`r'))/(1-`r') if `ra'== 1 generate double `yA2' = ((`w' + `mA2')^(1-`r'))/(1-`r') if `ra'== 1 generate double `yB1' = ((`w' + `mB1')^(1-`r'))/(1-`r') if `ra'== 1 generate double `yB2' = ((`w' + `mB2')^(1-`r'))/(1-`r') if `ra'== 1 replace `yA1' = ln(`w'+`mA1') if `ra' == 1 & `r'==1 replace `yA2' = ln(`w'+`mA2') if `ra' == 1 & `r'==1 replace `yB1' = ln(`w'+`mB1') if `ra' == 1 & `r'==1 replace `yB2' = ln(`w'+`mB2') if `ra' == 1 & `r'==1 generate double `euA' = (`proba1'*`yA1') + (`proba2'*`yA2') if `ra' == 1 generate double `euB' = (`probb1'*`yB1') + (`probb2'*`yB2') if `ra' == 1 generate double `euDiff' = `euF' - `euM' replace `lnf' = ln(normal(`euDiff')) if `choice' == 2 replace `lnf' = ln(normal(-`euDiff')) if `choice' == 1 replace `lnf' = ln(normal(`euDiff'))/2 + `lnf' = ln(normal(-`euDiff'))/2 if `$ML_y1' & `ra'==1 } end
Code:
ml check Test 1: Calling our_ML_crraay to check if it computes log likelihood and does not alter coefficient vector... FAILED; our_ML_crraay returned error 198. Here is a trace of its execution: ------------------------------------------------------------------------------ -> our_ML_crraay __000008 __000009 - `begin' = capture noisily version 16: our_ML_crraay __000008 __000009 ------------------------------------------------------------------------------------------------------------------------ begin our_ML_crraay --- - args lnf r LNw muRA - tempvar ra proba1 proba2 probb1 probb2 mA1 mA2 mB1 mB2 yA1 yA2 yB1 yB2 wp1 wp2 euF euM euDiff - tempvar w - syntax varlist [if] [in] [fweight pweight] [, noLOg Robust CLuster(varname) svy EForm *] - marksample touse - if "`svy'" !="" { = if "" !="" { svymarkout `touse' } - quietly { - generate double `proba1' = $ML_y2 = generate double __00000B = probMit0 - generate double `proba2' = 1 -`proba1' = generate double __00000C = 1 -__00000B - generate double `probb1' = $ML_y3 = generate double __00000D = probFix0 - generate double `probb2' = 1 - `probb1' = generate double __00000E = 1 - __00000D - generate double `ra' = $ML_y4 = generate double __00000A = ra - generate double `mA1' = $ML_y5 = generate double __00000F = mfMit0total - generate double `mA2' = $ML_y6 = generate double __00000G = mfMit1total - generate double `mB1' = $ML_y7 = generate double __00000H = mfFix0total - generate double `mB2' = $ML_y8 = generate double __00000I = mfFix1total - generate double `w' = exp(`LNw') = generate double __00000S = exp() invalid syntax generate double `yA1' = ((`w' + `mA1')^(1-`r'))/(1-`r') if `ra'== 1 generate double `yA2' = ((`w' + `mA2')^(1-`r'))/(1-`r') if `ra'== 1 generate double `yB1' = ((`w' + `mB1')^(1-`r'))/(1-`r') if `ra'== 1 generate double `yB2' = ((`w' + `mB2')^(1-`r'))/(1-`r') if `ra'== 1 replace `yA1' = ln(`w'+`mA1') if `ra' == 1 & `r'==1 replace `yA2' = ln(`w'+`mA2') if `ra' == 1 & `r'==1 replace `yB1' = ln(`w'+`mB1') if `ra' == 1 & `r'==1 replace `yB2' = ln(`w'+`mB2') if `ra' == 1 & `r'==1 generate double `euA' = (`proba1'*`yA1') + (`proba2'*`yA2') if `ra' == 1 generate double `euB' = (`probb1'*`yB1') + (`probb2'*`yB2') if `ra' == 1 generate double `euDiff' = `euF' - `euM' replace `lnf' = ln(normal(`euDiff')) if `choice' == 2 replace `lnf' = ln(normal(-`euDiff')) if `choice' == 1 replace `lnf' = ln(normal(`euDiff'))/2 + `lnf' = ln(normal(-`euDiff'))/2 if `$ML_y1' & `ra'==1 } -------------------------------------------------------------------------------------------------------------------------- end our_ML_crraay --- - `end' = set trace off Fix our_ML_crraax. r(198);
Comment