Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: st: Introducing constraints to biprobit model
From
Nick Cox <[email protected]>
To
[email protected]
Subject
Re: st: Introducing constraints to biprobit model
Date
Tue, 28 Aug 2012 16:54:10 +0100
Someone with experience with these models should now be able to comment.
Nick
On Tue, Aug 28, 2012 at 4:38 PM, Huybregts <[email protected]> wrote:
> Dear Nick, I think there was a misunderstanding. I did post the syntax, but I think you want to see the output. Here is the complete output. First the syntax I have been using, which didn't work, then What Maarten wrote, which is much better. However, I have a remaining question on the r111 error. I don't know if the results obtained by the LR test are correct.
> Many thanks for any feedback you can provide on this and my apologies for misunderstanding. I did read the rules well to make this as clear as possible. I use Stata 11.1.
> Lieven
>
>
> First you can see what I have been doing, which didn't work:
>
> /*My original synthax */
> . sysuse auto.dta,clear
> (1978 Automobile Data)
>
> . egen cat=cut(rep78),grou(2) label
> (5 missing values generated)
>
> .
> . // model without constraints
> . xi: biprobit (cat mpg price) (foreign mpg price)
>
> Fitting comparison equation 1:
>
> Iteration 0: log likelihood = -28.552789
> Iteration 1: log likelihood = -27.110671
> Iteration 2: log likelihood = -27.076711
> Iteration 3: log likelihood = -27.076625
> Iteration 4: log likelihood = -27.076625
>
> Fitting comparison equation 2:
>
> Iteration 0: log likelihood = -42.400729
> Iteration 1: log likelihood = -33.271394
> Iteration 2: log likelihood = -33.188125
> Iteration 3: log likelihood = -33.188014
> Iteration 4: log likelihood = -33.188014
>
> Comparison: log likelihood = -60.26464
>
> Fitting full model:
>
> Iteration 0: log likelihood = -60.26464
> Iteration 1: log likelihood = -57.973106
> Iteration 2: log likelihood = -57.880512
> Iteration 3: log likelihood = -57.873467
> Iteration 4: log likelihood = -57.873061
> Iteration 5: log likelihood = -57.873057
>
> Seemingly unrelated bivariate probit Number of obs = 69
> Wald chi2(4) = 14.79
> Log likelihood = -57.873057 Prob > chi2 = 0.0052
>
> ------------------------------------------------------------------------------
> | Coef. Std. Err. z P>|z| [95% Conf. Interval]
> -------------+----------------------------------------------------------------
> cat |
> mpg | .0710587 .0454513 1.56 0.118 -.0180242 .1601416
> price | .0000924 .0000748 1.24 0.216 -.0000541 .0002389
> _cons | -.9485728 1.211113 -0.78 0.433 -3.322311 1.425166
> -------------+----------------------------------------------------------------
> foreign |
> mpg | .140959 .0373519 3.77 0.000 .0677506 .2141674
> price | .0001253 .0000681 1.84 0.066 -8.08e-06 .0002588
> _cons | -4.377398 1.114323 -3.93 0.000 -6.561432 -2.193365
> -------------+----------------------------------------------------------------
> /athrho | 1.259137 2.237519 0.56 0.574 -3.12632 5.644595
> -------------+----------------------------------------------------------------
> rho | .8508261 .6177676 -.9961567 .999975
> ------------------------------------------------------------------------------
> Likelihood-ratio test of rho=0: chi2(1) = 4.78317 Prob > chi2 = 0.0287
>
> . estimates store R1
>
> . matrix define coef=e(b)
>
> . matrix list coef
>
> coef[1,7]
> cat: cat: cat: foreign: foreign: foreign: athrho:
> mpg price _cons mpg price _cons _cons
> y1 .07105866 .00009241 -.94857276 .14095901 .00012534 -4.3773984 1.2591375
>
> . constraint define 1 coef[1,1] = coef[1,4]
>
> . constraint define 2 coef[1,2] = coef[1,5]
>
> .
> . // Model with constraints
> . xi: biprobit (cat mpg price) (foreign mpg price), constraint (1 2)
>
> Fitting comparison equation 1:
>
> (note: constraint number 1 caused error r(131))
> (note: constraint number 2 caused error r(131))
> Iteration 0: log likelihood = -28.552789
> Iteration 1: log likelihood = -27.110671
> Iteration 2: log likelihood = -27.076711
> Iteration 3: log likelihood = -27.076625
> Iteration 4: log likelihood = -27.076625
>
> Fitting comparison equation 2:
>
> (note: constraint number 1 caused error r(131))
> (note: constraint number 2 caused error r(131))
> Iteration 0: log likelihood = -42.400729
> Iteration 1: log likelihood = -33.271394
> Iteration 2: log likelihood = -33.188125
> Iteration 3: log likelihood = -33.188014
> Iteration 4: log likelihood = -33.188014
>
> Comparison: log likelihood = -60.26464
>
> Fitting full model:
> (note: constraint number 1 caused error r(131))
> (note: constraint number 2 caused error r(131))
>
> Iteration 0: log likelihood = -60.26464
> Iteration 1: log likelihood = -57.973106
> Iteration 2: log likelihood = -57.880512
> Iteration 3: log likelihood = -57.873467
> Iteration 4: log likelihood = -57.873061
> Iteration 5: log likelihood = -57.873057
>
> Seemingly unrelated bivariate probit Number of obs = 69
> Wald chi2(4) = 14.79
> Log likelihood = -57.873057 Prob > chi2 = 0.0052
>
> ------------------------------------------------------------------------------
> | Coef. Std. Err. z P>|z| [95% Conf. Interval]
> -------------+----------------------------------------------------------------
> cat |
> mpg | .0710587 .0454513 1.56 0.118 -.0180242 .1601416
> price | .0000924 .0000748 1.24 0.216 -.0000541 .0002389
> _cons | -.9485728 1.211113 -0.78 0.433 -3.322311 1.425166
> -------------+----------------------------------------------------------------
> foreign |
> mpg | .140959 .0373519 3.77 0.000 .0677506 .2141674
> price | .0001253 .0000681 1.84 0.066 -8.08e-06 .0002588
> _cons | -4.377398 1.114323 -3.93 0.000 -6.561432 -2.193365
> -------------+----------------------------------------------------------------
> /athrho | 1.259137 2.237519 0.56 0.574 -3.12632 5.644595
> -------------+----------------------------------------------------------------
> rho | .8508261 .6177676 -.9961567 .999975
> ------------------------------------------------------------------------------
> Likelihood-ratio test of rho=0: chi2(1) = 4.78317 Prob > chi2 = 0.0287
>
> . estimates store R2
>
> . lrtest R1 R2
> df(unrestricted) = df(restricted) = 7
> r(498);
> end of do-file
>
>
>
> Here you can see what Maarten proposed in his previous posting, my question is how to interpret the (note: constraint number 2 caused error r(111)).
>
> . /* Maarten's proposal */
> . sysuse auto.dta,clear
> (1978 Automobile Data)
>
> . egen cat=cut(rep78),grou(2) label
> (5 missing values generated)
>
> .
> . // model without constraints
> . biprobit (cat mpg price) ///
>> (foreign mpg price)
>
> Fitting comparison equation 1:
>
> Iteration 0: log likelihood = -28.552789
> Iteration 1: log likelihood = -27.110671
> Iteration 2: log likelihood = -27.076711
> Iteration 3: log likelihood = -27.076625
> Iteration 4: log likelihood = -27.076625
>
> Fitting comparison equation 2:
>
> Iteration 0: log likelihood = -42.400729
> Iteration 1: log likelihood = -33.271394
> Iteration 2: log likelihood = -33.188125
> Iteration 3: log likelihood = -33.188014
> Iteration 4: log likelihood = -33.188014
>
> Comparison: log likelihood = -60.26464
>
> Fitting full model:
>
> Iteration 0: log likelihood = -60.26464
> Iteration 1: log likelihood = -57.973106
> Iteration 2: log likelihood = -57.880512
> Iteration 3: log likelihood = -57.873467
> Iteration 4: log likelihood = -57.873061
> Iteration 5: log likelihood = -57.873057
>
> Seemingly unrelated bivariate probit Number of obs = 69
> Wald chi2(4) = 14.79
> Log likelihood = -57.873057 Prob > chi2 = 0.0052
>
> ------------------------------------------------------------------------------
> | Coef. Std. Err. z P>|z| [95% Conf. Interval]
> -------------+----------------------------------------------------------------
> cat |
> mpg | .0710587 .0454513 1.56 0.118 -.0180242 .1601416
> price | .0000924 .0000748 1.24 0.216 -.0000541 .0002389
> _cons | -.9485728 1.211113 -0.78 0.433 -3.322311 1.425166
> -------------+----------------------------------------------------------------
> foreign |
> mpg | .140959 .0373519 3.77 0.000 .0677506 .2141674
> price | .0001253 .0000681 1.84 0.066 -8.08e-06 .0002588
> _cons | -4.377398 1.114323 -3.93 0.000 -6.561432 -2.193365
> -------------+----------------------------------------------------------------
> /athrho | 1.259137 2.237519 0.56 0.574 -3.12632 5.644595
> -------------+----------------------------------------------------------------
> rho | .8508261 .6177676 -.9961567 .999975
> ------------------------------------------------------------------------------
> Likelihood-ratio test of rho=0: chi2(1) = 4.78317 Prob > chi2 = 0.0287
>
> . estimates store R1
>
> .
> . // replay the model, but see the coefficient names:
> . biprobit, coeflegend
>
> Seemingly unrelated bivariate probit Number of obs = 69
> Wald chi2(4) = 14.79
> Log likelihood = -57.873057 Prob > chi2 = 0.0052
>
> ------------------------------------------------------------------------------
> | Coef. Legend
> -------------+----------------------------------------------------------------
> cat |
> mpg | .0710587 _b[cat:mpg]
> price | .0000924 _b[cat:price]
> _cons | -.9485728 _b[cat:_cons]
> -------------+----------------------------------------------------------------
> foreign |
> mpg | .140959 _b[foreign:mpg]
> price | .0001253 _b[foreign:price]
> _cons | -4.377398 _b[foreign:_cons]
> -------------+----------------------------------------------------------------
> /athrho | 1.259137 _b[athrho:_cons]
> -------------+----------------------------------------------------------------
> rho | .8508261
> ------------------------------------------------------------------------------
> Likelihood-ratio test of rho=0: chi2(1) = 4.78317 Prob > chi2 = 0.0287
>
> .
> . // use those name to define the constraints
> . constraint define 1 _b[cat:mpg] = _b[foreign:mpg]
>
> . constraint define 2 _b[cat:price] = _b[foreign:price]
>
> .
> . // Model with constraints
> . biprobit (cat mpg price) ///
>> (foreign mpg price), constraint (1 2)
>
> Fitting comparison equation 1:
>
> (note: constraint number 1 caused error r(111))
> (note: constraint number 2 caused error r(111))
> Iteration 0: log likelihood = -28.552789
> Iteration 1: log likelihood = -27.110671
> Iteration 2: log likelihood = -27.076711
> Iteration 3: log likelihood = -27.076625
> Iteration 4: log likelihood = -27.076625
>
> Fitting comparison equation 2:
>
> (note: constraint number 1 caused error r(111))
> (note: constraint number 2 caused error r(111))
> Iteration 0: log likelihood = -42.400729
> Iteration 1: log likelihood = -33.271394
> Iteration 2: log likelihood = -33.188125
> Iteration 3: log likelihood = -33.188014
> Iteration 4: log likelihood = -33.188014
>
> Comparison: log likelihood = -60.26464
>
> Fitting full model:
>
> Iteration 0: log likelihood = -83.049875
> Iteration 1: log likelihood = -65.030586 (not concave)
> Iteration 2: log likelihood = -59.728978
> Iteration 3: log likelihood = -58.803484
> Iteration 4: log likelihood = -58.800879
> Iteration 5: log likelihood = -58.800664
> Iteration 6: log likelihood = -58.800664
>
> Seemingly unrelated bivariate probit Number of obs = 69
> Wald chi2(2) = 14.07
> Log likelihood = -58.800664 Prob > chi2 = 0.0009
>
> ( 1) [cat]mpg - [foreign]mpg = 0
> ( 2) [cat]price - [foreign]price = 0
> ------------------------------------------------------------------------------
> | Coef. Std. Err. z P>|z| [95% Conf. Interval]
> -------------+----------------------------------------------------------------
> cat |
> mpg | .1214969 .0324577 3.74 0.000 .057881 .1851127
> price | .0001177 .0000556 2.12 0.034 8.82e-06 .0002267
> _cons | -2.072698 .8765444 -2.36 0.018 -3.790693 -.3547025
> -------------+----------------------------------------------------------------
> foreign |
> mpg | .1214969 .0324577 3.74 0.000 .057881 .1851127
> price | .0001177 .0000556 2.12 0.034 8.82e-06 .0002267
> _cons | -3.888234 .9489108 -4.10 0.000 -5.748065 -2.028403
> -------------+----------------------------------------------------------------
> /athrho | 1.776488 175.2688 0.01 0.992 -341.744 345.2969
> -------------+----------------------------------------------------------------
> rho | .9443162 18.97581 -1 1
> ------------------------------------------------------------------------------
> Likelihood-ratio test of rho=0: chi2(1) = 2.92795 Prob > chi2 = 0.0871
>
> . estimates store R2
>
> . lrtest R1 R2
>
> Likelihood-ratio test LR chi2(2) = 1.86
> (Assumption: R2 nested in R1) Prob > chi2 = 0.3955
>
> .
> end of do-file
>
>
>
>
>
>
> On Aug 28, 2012, at 3:35 PM, Nick Cox wrote:
>
>> There is plenty of good will to help you, but there is no way round
>> this: you have yet to post the entire syntax that you used. So I don't
>> think anyone can see what you are doing wrong even in trying to
>> reproduce Maarten's example. This logic should seem compelling even to
>> first-time posters.
>>
>> Nick
>>
>> On Tue, Aug 28, 2012 at 12:50 PM, Huybregts <[email protected]> wrote:
>>> Nick, you're quite right, it' s the first time I post here, thought it would add my first message as well.
>>> Maarten corrected mistakes in my original coding (so that's solved). My remaining question is regarding the code he proposed.
>>>
>>> If I run Maarten's code, for the "model with constraints" (biprobit (cat mpg price) (foreign mpg price), constraint (1 2),
>>> I get the error message:
>>> (note: constraint number 1 caused error r(111)) ( no variables defined;)
>>> (note: constraint number 2 caused error r(111))
>>> It does not seem to accept the constraints, but runs the full model nevertheless. Can I assume for this that since the constraints entail coefficients from both models, when stata runs model 1 and model 2 separately it cannot apply the constraints because they are not known yet (seems logic enough). Just to be sure. The LR test gives results do I assume that stata acknowledged the constraints (as difference in df).
>>>
>>> Thanks for your help and sorry for the mess,
>>> Lieven
>>>
>>>
>>>
>>> On Aug 28, 2012, at 11:29 AM, Nick Cox wrote:
>>>
>>>> Asking this question without showing what you typed wastes everybody's time.
>>>>
>>>> What is the entire and exact syntax that you typed?
>>>>
>>>> Can you reproduce Maarten's example? What is different about what you typed.
>>>>
>>>> Nick
>>>>
>>>> On Tue, Aug 28, 2012 at 10:29 AM, Huybregts <[email protected]> wrote:
>>>>> Many thanks for the reply and the coding Maarten, however if I run the model with constraints, I get the error message:
>>>>> (note: constraint number 1 caused error r(111)) ( no variables defined;)
>>>>> (note: constraint number 2 caused error r(111))
>>>>>
>>>>> It does not seem to accept the constraints, but runs the full model nevertheless. Can I assume for this that since the constraints entail coefficients from both models, when stata runs model 1 and model 2 separately it cannot apply the constraints because they are not known yet (seems logic enough). Just to be sure.
>>>>> Cheers,
>>>>>
>>>>> Lieven
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> On Aug 28, 2012, at 11:05 AM, Maarten Buis wrote:
>>>>>
>>>>>> sysuse auto.dta,clear
>>>>>> egen cat=cut(rep78),grou(2) label
>>>>>>
>>>>>> // model without constraints
>>>>>> biprobit (cat mpg price) ///
>>>>>> (foreign mpg price)
>>>>>> estimates store R1
>>>>>>
>>>>>> // replay the model, but see the coefficient names:
>>>>>> biprobit, coeflegend
>>>>>>
>>>>>> // use those name to define the constraints
>>>>>> constraint define 1 _b[cat:mpg] = _b[foreign:mpg]
>>>>>> constraint define 2 _b[cat:price] = _b[foreign:price]
>>>>>>
>>>>>> // Model with constraints
>>>>>> biprobit (cat mpg price) ///
>>>>>> (foreign mpg price), constraint (1 2)
>>>>>> estimates store R2
>>>>>> lrtest R1 R2
>>>
>>>
>>>
>>>>> On Aug 28, 2012, at 10:05 AM, Huybregts wrote:
>>> <Dear Stata listers,
>>> <
>>> <To test if two binary outcomes have the same underlying pattern of predictors, we compared 2 biprobit models (one with constraints, one without) using a LR test. However we encounter a <recurring error for which we can't find a solution. To make this understandable I use the auto.dta dataset to replicate our problem from a different dataset.
>>> <
>>> <************************************************
>>> sysuse auto.dta,clear
>>> egen cat=cut(rep78),grou(2) label
>>>
>>> * model without constraints
>>> xi: biprobit (cat mpg price) (foreign mpg price)
>>> estimates store R1
>>> matrix define coef=e(b)
>>> matrix list coef
>>> constraint define 1 coef[1,1] = coef[1,4]
>>> constraint define 2 coef[1,2] = coef[1,5]
>>>
>>> * Model with constraints
>>> xi: biprobit (cat mpg price) (foreign mpg price), constraint (1 2)
>>> estimates store R2
>>> lrtest R1 R2
>>> <************************************************
>>> <The error I get is (just after the model with constraints)
>>> <
>>> <Fitting comparison equation 1:
>>> <(note: constraint number 1 caused error r(131))
>>> <(note: constraint number 2 caused error r(131))
>>> <
>>> <I did not find a similar problem on the statalist, would it be impossible for the biprobit to converge adding constraints of equal coefficients?
>>> <I use Stata 11.1.
>>> <Many thanks for any help anyone could provide.
>>> <
>>
>> *
>> * 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/
>
>
> *
> * 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/
*
* 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/