[Date Prev][Date Next][Thread Prev][Thread Next][Date index][Thread index]

From |
"Jesper K. Hansen" <jkh-stata@msecon.eu> |

To |
statalist@hsphsun2.harvard.edu |

Subject |
Re: st: st : Problem with nlcom (expression too long) |

Date |
Sat, 23 Feb 2008 13:49:22 +0100 |

Valérie, maybe you could subdivide the calculation of coefficients with very long expressions by calling -nlcom, post- multiple times, carrying through the subcalculations. The second -nlcom- will calculate on the basis of the estimation results from the first call to -nlcom-... Something like this (although you have to be careful how you subdivide or the variance estimates will not be valid): *----------------------------------------------------------* // exp(V_i) and CV estimates *----------------------------------------------------------* #delim ; nlcom (price: _b[egenbet]) (epen0: exp((_b[pen50] + _b[egenbet]*125 + _b[pen]))) (epen1: exp((_b[pen50] + _b[egenbet]*125 + _b[intmaal] + _b[pen]))) (einh0: exp(((_b[inh600]/5) + _b[egenbet]*800 + _b[dagXinh] + _b[hoste] + _b[inh]))) (einh1: exp((_b[dagXinh] + _b[egenbet]*800 + _b[hoste] + _b[inh]))) (epen0a: exp((_b[pen50] + _b[egenbet]*125 + _b[pen]))) (epen1a: exp((_b[pen50] + _b[egenbet]*125 + _b[intmaal] + _b[pen]))) (einh0a: exp(((_b[inh600]/5) + _b[egenbet]*125 + _b[dagXinh] + _b[hoste] + _b[inh]))) (einh1a: exp((_b[dagXinh] + _b[egenbet]*125 + _b[hoste] + _b[inh]))) , post; // CV estimates for section 5.8; nlcom (epen0: _b[epen0]) (epen1: _b[epen1]) (einh0: _b[einh0]) (einh1: _b[einh1]) (CV_pen: (-1/_b[price]) * (ln(_b[epen0] + _b[einh0]) - ln(_b[epen1] + _b[einh0])) ) (CV_inh: (-1/_b[price]) * (ln(_b[epen0] + _b[einh0]) - ln(_b[epen0] + _b[einh1])) ) , post; estimates store CV01; #delim cr -- Jesper K. Hansen On Thu, Feb 21, 2008 at 2:41 PM, Valerie Orozco <Valerie.Orozco@toulouse.inra.fr> wrote: > Hello, > > Since I didn't receive any answer to the problem I have, I am going to try to better explain what is going on...maybe I wasn't clear enough... > I have a problem with "nlcom" due to a problem of length. > > I try to estimate a lot of coefficients from a first estimation. My program consists in writing all the coefficients I want in some macros (local) and run the nlcom command with only one big macro. > The problem of length comes from the fact that some coefficients I have to estimate are also combinations of coefficients I estimate in the same "nlcom" command. > > For example, some coefficients I have to estimate after my estimation are: > > local a14 "(a14: 1 - ( _b[a1]+ _b[a2]+ _b[a3]+ _b[a4]+ _b[a5]+ _b[a6]+ _b[a7]+ _b[a8]+ _b[a9]+ _b[a10]+ _b[a11]+ _b[a12]+ _b[a13]))" > local nlcom "`nlcom' `a14'" > > local "(b14: - ( _b[b1]+ _b[b2]+ _b[b3]+ _b[b4]+ _b[b5]+ _b[b6]+ _b[b7]+ _b[b8]+ _b[b9]+ _b[b10]+ _b[b11]+ _b[b12]+ _b[b13]))" > local nlcom "`nlcom' `b14'" > > local g1vs1 "(g1vs1: _b[teta_1vs1] - _b[a1] * _b[a1] + _b[a1])" > local nlcom "`nlcom' `g1vs1'" > local g1vs2 "(g1vs2: _b[teta_1vs2] - _b[a1]* _b[a2])" > local nlcom "`nlcom' `g1vs2'" > local g1vs3 "(g1vs3: _b[teta_1vs3] - _b[a1]* _b[a3])" > local nlcom "`nlcom' `g1vs3'" > local g1vs4 "(g1vs4: _b[teta_1vs4] - _b[a1]* _b[a4])" > local nlcom "`nlcom' `g1vs4'" > local g1vs5 "(g1vs5: _b[teta_1vs5] - _b[a1]* _b[a5])" > local nlcom "`nlcom' `g1vs5'" > … > local g1vs14 "(g1vs14: -( _b[teta_1vs1] - _b[a1] * _b[a1] + _b[a1] + _b[teta_1vs2] - _b[a1] * _b[a2] + _b[teta_1vs3] - _b[a1] * _b[a3] + _b[teta_1vs4] - _b[a1] * _b[a4] + _b[teta_1vs5] - _b[a1] * _b[a5] + _b[teta_1vs6] - _b[a1] * _b[a6] + _b[teta_1vs7] - _b[a1] * _b[a7] + _b [teta_1vs8] - _b[a1] * _b[a8] + _b[teta_1vs9] - _b[a1] * _b[a9] + _b[teta_1vs10] - _b[a1] * _b[a10] + _b[teta_1vs11] - _b[a1] * _b[a1 1] + _b[teta_1vs12] - _b[a1] * _b[a12] + _b[teta_1vs13] - _b[a1] * _b[a13] + 0)) > > /*In fact g1vs14 is equal to: -( g1vs1 + g1vs2 + g1vs3+ g1vs4 + g1vs5 + …. +g1vs13) but I can't write this since the g1vs1, g1vs2...aren't estimated yet, they are in some locals*/ > local nlcom "`nlcom' `g1vs14'" > > local g2vs14 "(g2vs14: -( _b[teta_1vs2] - _b[a2] * _b[a1] + _b[teta_2vs2] - _b[a2] * _b[a2] + _b[a2] + _b[teta_2vs3] - _b[a2] * _b[a3] + _b[teta_2vs4] - _b[a2] * _b[a4] + _b[teta_2vs5] - _b[a2] * _b[a5] + _b[teta_2vs6] - _b[a2] * _b[a6] + _b[teta_2vs7] - _b[a2] * _b[a7] + _b[teta_2vs8] - _b[a2] * _b[a8] + _b[teta_2vs9] - _b[a2] * _b[a9] + _b[teta_2vs10] - _b[a2] * _b[a10] + _b[teta_2vs11] - _b[a2] * _b[a11] + _b[teta_2vs12] - _b[a2] * _b[a12] + _b[teta_2vs13] - _b[a2] * _b[a13] + 0))" > local nlcom "`nlcom' `g1vs14'" > …. > After that, I run : nlcom `nlcom', post > > The problem is that for some coefficient I want (g`i'vs14 with i from 1 to 14, especially the g14vs14) the expression is quite long because I use the expression of the g`i' `j' with i and j <14. So Stata stops tells me :expression too long r(130); > > How can I have all my coefficients in one matrix e(b) and e(V) doing several nlcom? (in order to have smaller expression using the coefficients obtained in a first nlcom...) > If someone has an idea… > > Thank you very much. > > Valérie > > ------------------------------- > Valérie OROZCO > Toulouse School of Economics (INRA-GREMAQ) > 21, allée de Brienne > F-31000 Toulouse, France > > MF 426 > +33 5 61 12 85 91 > ------------------------------- * * For searches and help try: * http://www.stata.com/support/faqs/res/findit.html * http://www.stata.com/support/statalist/faq * http://www.ats.ucla.edu/stat/stata/

**References**:**st: st : Problem with nlcom (expression too long)***From:*Valerie Orozco <Valerie.Orozco@toulouse.inra.fr>

- Prev by Date:
**Re: st: Regression Techniques** - Next by Date:
**st: store means as a new variable** - Previous by thread:
**st: st : Problem with nlcom (expression too long)** - Next by thread:
**st: RE: st : Problem with nlcom (expression too long)** - Index(es):

© Copyright 1996–2017 StataCorp LLC | Terms of use | Privacy | Contact us | What's new | Site index |