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   Nick Cox <njcoxstata@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 16:19:17 +0100

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/


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