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