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
Jaime Ruiz-Tagle <[email protected]>
To
[email protected]
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 <[email protected]> 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 <[email protected]> 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
>> <[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/
>
--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
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
[email protected]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*
* 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/