Bookmark and Share

Notice: On March 31, it was announced that Statalist is moving from an email list to a forum. The old list will shut down on April 23, and its replacement, statalist.org is already up and running.


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: st: Bootstrap not reporting observed coefficient as the mean of expression


From   Jaime Ruiz-Tagle <jaimeruiztagle@gmail.com>
To   statalist@hsphsun2.harvard.edu
Subject   Re: st: Bootstrap not reporting observed coefficient as the mean of expression
Date   Tue, 19 Apr 2011 11:46:56 -0400

Thanks a lot Nick!!!
Perfectly clear.

Jaime.

On Tue, Apr 19, 2011 at 11:35 AM, Nick Cox <njcoxstata@gmail.com> wrote:
> It's trivial by comparison, and not even a problem, but note that
>
> program define myderivative, rclass
>        version 11
>        tempname derivative2
>        quietly regress mpg weight weight2 gear foreign
>        capture drop derivative2
>        gen derivative2 =_b[weight] + 2*weight*_b[weight]
>        quietly summarize derivative2, meanonly
>        scalar `derivative2' = r(mean)
>        return scalar derivative2 = `derivative2'
>  end
>
> can be slimmed down. You take a saved result, put it into a scalar,
> and then save it as another scalar. But the relay race is not needed.
> You can do it directly.
>
> program define myderivative, rclass
>        version 11
>        quietly regress mpg weight weight2 gear foreign
>        capture drop derivative2
>        gen derivative2 =_b[weight] + 2*weight*_b[weight]
>        summarize derivative2, meanonly
>        return scalar derivative2 = r(mean)
>  end
>
> -summarize, meanonly- is always done quietly.
>
> On Tue, Apr 19, 2011 at 4:19 PM, Nick Cox <njcoxstata@gmail.com> wrote:
>> The problem I think is that you are expecting something that
>> -bootstrap- will not and cannot do. You are supplying an expression
>> that defines a variable after -regress-, but each such expression fed
>> to -bootstrap- should define a constant.
>>
>> Consider
>>
>> . regress mpg weight weight2 gear foreign
>>
>>      Source |       SS       df       MS              Number of obs =      74
>> -------------+------------------------------           F(  4,    69) =   39.78
>>       Model |   1704.4337     4  426.108425           Prob > F      =  0.0000
>>    Residual |  739.025759    69  10.7105182           R-squared     =  0.6975
>> -------------+------------------------------           Adj R-squared =  0.6800
>>       Total |  2443.45946    73  33.4720474           Root MSE      =  3.2727
>>
>> ------------------------------------------------------------------------------
>>         mpg |      Coef.   Std. Err.      t    P>|t|     [95% Conf. Interval]
>> -------------+----------------------------------------------------------------
>>      weight |   -.016404   .0039597    -4.14   0.000    -.0243033   -.0085047
>>     weight2 |   1.65e-06   6.25e-07     2.64   0.010     4.04e-07    2.90e-06
>>  gear_ratio |   1.772766    1.48421     1.19   0.236    -1.188151    4.733683
>>     foreign |  -2.919893   1.214474    -2.40   0.019    -5.342702   -.4970839
>>       _cons |   50.31328   8.083446     6.22   0.000     34.18724    66.43931
>> ------------------------------------------------------------------------------
>>
>> . di (_b[weight] + 2*weight*_b[weight]),
>> -96.143738
>>
>> . di (_b[weight] + 2*weight[1]*_b[weight]),
>> -96.143738
>>
>> After -regress- _b[weight] is defined, otherwise this would not work.
>> However, -weight- will in this context always be interpreted as
>> -weight[1]-, the value in the first observation, which gives the
>> results you found.
>>
>> Compare
>>
>> FAQ     . . . . . . . . . . . . . . . . . . . . .  if command vs. if qualifier
>>        . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  J. Wernow
>>        6/00    I have an if or while command in my program that
>>                only seems to evaluate the first observation,
>>                what's going on?
>>                http://www.stata.com/support/faqs/lang/ifqualifier.html
>>
>> for a different but also similar problem.
>>
>> Nick
>>
>> On Tue, Apr 19, 2011 at 2:52 PM, Jaime Ruiz-Tagle
>> <jaimeruiztagle@gmail.com> wrote:
>>> Hi all,
>>>
>>> I found a problem in bootstrap, which is not reporting the "mean" of
>>> an expression as the "observed coefficient".
>>>
>>> Here comes an example where bootstrap gives the correct "observed
>>> coefficient" only when invoked through a user defined program.
>>>
>>> Hopefully somebody can help me since I'm very puzzled.
>>>
>>> Thanks,
>>>
>>> Jaime.
>>>
>>>
>>> // //////////////////////////////////////////
>>> use http://www.stata-press.com/data/r11/auto, clear
>>>
>>> gen weight2=weight^2
>>>
>>> regress mpg weight weight2 gear foreign
>>>
>>> gen derivative1 = (_b[weight] + 2*weight*_b[weight])
>>> sum derivative1, detail
>>>
>>> // Using bootstrap with expression:
>>> bootstrap derivative = (_b[weight] + 2*weight*_b[weight]), reps(100)
>>> seed(1): regress mpg weight weight2 gear foreign
>>>
>>> // The "observed coefficient" is reported as -96.14374, but the mean
>>> is -99.07872
>>>
>>> // Now using a user defined program that does the same as expression above
>>>
>>> capture pr drop myderivative
>>> program define myderivative, rclass
>>>        version 11
>>>        tempname derivative2
>>>        quietly regress mpg weight weight2 gear foreign
>>>        capture drop derivative2
>>>        gen derivative2 =_b[weight] + 2*weight*_b[weight]
>>>        quietly summarize derivative2, meanonly
>>>        scalar `derivative2' = r(mean)
>>>        return scalar derivative2 = `derivative2'
>>> end
>>>
>>> bootstrap r(derivative2), reps(100) seed(1): myderivative
>>>
>>> // The "observed coefficient" is now reported as equal to the mean = -99.07872
>>>
>>
>
> *
> *   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/
>



-- 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Jaime Ruiz-Tagle V.
Profesor
Centro de Microdatos, Departamento de Economía, Universidad de Chile
Diagonal Paraguay 257, Torre 26, Oficina 1603 A
Santiago - CHILE

Tel: (56 2) 978 3586 / 978 3421
Fax: (56 2) 634 7342
jaimert@econ.uchile.cl
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

*
*   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/


© Copyright 1996–2014 StataCorp LP   |   Terms of use   |   Privacy   |   Contact us   |   Site index