Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.

# Re: st: Concavity issues using -gmm- estimating parameters from a normal distribution

 From Stas Kolenikov To statalist@hsphsun2.harvard.edu Subject Re: st: Concavity issues using -gmm- estimating parameters from a normal distribution Date Sun, 22 Aug 2010 22:47:52 -0500

```This is an identification issue, that is, your fault, not -gmm-'s one.
The parameters {mean} and {SD} are not identified: if you change the
scale of the normal variate to the standard normal, and redefine your
thresholds {NO}, {MAYBE}, {YES} accordingly, you will get exactly the
same observed data. As in any model with a latent index/latent
variables, you need to set the location and scale of those latents,
and your call to -gmm- does not specify these.

On Fri, Aug 20, 2010 at 11:05 AM, Keith Kapetan <keith.kapetan@gmail.com> wrote:
> Hi all,
>
> I am using stata 11.1 to estimate some parameters and the mean and
> standard deviation of a normal distribution using the -gmm- command.
>
> I have data in the form of 1's and 0's with 1's occurring if it falls
> left of a cutoff from some normal distribution.  I am trying to
> determine the mean and standard deviation of this distribution and
> also estimate the parameters that determine the cutoffs.
>
> Here is some sample code illustrating what I am trying to do:
>
> set obs 10000
> gen random=20+10*rnormal()
>
> gen X_1_NO=0
> gen X_2_NO=0
> gen X_1_MAYBE=0
> gen X_2_MAYBE=0
> gen X_1_YES=0
> gen X_2_YES=0
>
> replace X_1_NO = 1 if random<25
> replace X_2_NO = 1 if random<35
> replace X_1_MAYBE = 1 if random<15
> replace X_2_MAYBE = 1 if random<20
> replace X_1_YES = 1 if random<5
> replace X_2_YES = 1 if random<10
>
> gmm (X_1_NO-normal((25-{mean})/{
> SD}))(X_2_NO-normal((35-{mean})/{SD}))(X_1_MAYBE-normal((15-{mean})/{SD}))(X_2_MAYBE-normal((20-{mean})/{SD}))(X_1_YES-normal((5-{mean})/{SD}))(X_2_YES-normal((10-{mean})/{SD})),
> from(mean 5 SD 5) winitial(identity) onestep
>
>
> gmm (X_1_NO-normal((1*{P}-{NO}-20)/10))(X_2_NO-normal((2*{P}-{NO}-20)/10))(X_1_MAYBE-normal((1*{P}-{MAYBE}-20)/10))(X_2_MAYBE-normal((2*{P}-{MAYBE}-20)/10))(X_1_YES-normal((1*{P}-{YES}-20)/10))(X_2_YES-normal((2*{P}-{YES}-20)/10)),
> from(NO -20 MAYBE -5 YES 0 P .5) winitial(identity) onestep
>
> gmm (X_1_NO-normal((1*{P}-{NO}-{mean})/{SD}))(X_2_NO-normal((2*{P}-{NO}-{mean})/{SD}))(X_1_MAYBE-normal((1*{P}-{MAYBE}-{mean})/{SD}))(X_2_MAYBE-normal((2*{P}-{MAYBE}-{mean})/{SD}))(X_1_YES-normal((1*{P}-{YES}-{mean})/{SD}))(X_2_YES-normal((2*{P}-{YES}-{mean})/{SD})),
> from(NO -10 MAYBE -5 YES 0 P .5 mean 5 SD 5) winitial(identity)
> onestep
>
>
> The first gmm output correctly returns the mean and standard deviation
> of 20 and 10 respectively.
>
> The second gmm output correctly estimates the parameters P, NO, MAYBE, and YES.
>
> The last gmm output is what I am trying to do, which combines the
> first and second commands.  It does not converge and returns the error
> "(not concave)" on every iteration.  Is there a way to estimate P, NO,
> MAYBE, YES, mean, and SD using -gmm-?
>
> Keith
>
> *
> *   For searches and help try:
> *   http://www.stata.com/help.cgi?search
> *   http://www.stata.com/support/statalist/faq
> *   http://www.ats.ucla.edu/stat/stata/
>

--
Stas Kolenikov, also found at http://stas.kolenikov.name
Small print: I use this email account for mailing lists only.

*
*   For searches and help try:
*   http://www.stata.com/help.cgi?search
*   http://www.stata.com/support/statalist/faq
*   http://www.ats.ucla.edu/stat/stata/
```