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: Bootstrap not reporting observed coefficient as the mean of expression
From
Nick Cox <[email protected]>
To
[email protected]
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
<[email protected]> 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/