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.

# Re: st: Why does this scalar calculation return the wrong value when using time series operators?

 From Nick Cox To statalist@hsphsun2.harvard.edu Subject Re: st: Why does this scalar calculation return the wrong value when using time series operators? Date Tue, 6 Nov 2012 21:45:15 +0000

```The short answer is that your "scalar calculation" is no such thing.

. di t

-- thinking that scalar t will be displayed --

but Stata has three rules that together cause this to do something different.

First off, variables and scalars share the same namespace.

Second, if there's ambiguity Stata plumps for the variable name interpretation.

Third, if asked to display a variable, -display- tries its best and
its best is varname[1], here t[1], here 1.

SJ-6-2  dm0021  . Stata tip 31: Scalar or variable? Problem of ambiguous names
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .  G. I. Kolev
Q2/06   SJ 6(2):279--280                                 (no commands)
tips for avoiding abbreviation conflicts with variables
when naming scalars

You're in very good company in being puzzled by this, as only a
concatenation of circumstances explains it all.

Nick

On Tue, Nov 6, 2012 at 9:25 PM, Aaron Kirkman <ak1795mailserv@gmail.com> wrote:

> I'm performing a simple linear regression on time series data and
> calculating the t-statistic for coefficients afterwards. However, I
> noticed that when using time series operators, the t-statistic always
> calculates to be one, even though the values from the regression are
> correct. For example, this code:
>
> ----------
> clear all
>
> local y0 0
> set obs 200
> quietly {
>      gen y = .
>      gen t = _n
>      tsset t
>
>      replace y = cond(t == 1, `y0', L.y + rnormal())
>      regress D.y L.y
> }
>
> di _b[L.y]
> di _se[L.y]
> di _b[L.y] / _se[L.y]
>
> scalar t = _b[L.y] / _se[L.y] // t = Beta / SE
>
> di t
> ----------
>
> outputs the following:
>
> -.02092465     // _b[L.y]
> .01391362      // _se[L.y]
> -1.5038971     // _b[L.y] / _se[L.y]
> 1                   // scalar "t"
>
> The first three numbers are the correct values from the regression,
> but the calculation for the t-statistic is incorrect. If I remove the
> time series operators from the code and instead refer to observations
> numbers (I would prefer to use time series operators, but just as an
> example), the resulting t-statistic is correct:
>
> ----------
> clear all
> local y0 0
> set obs 200
> quietly {
>     gen y = .
>     gen ly = .
>     gen dy = .
>
>     replace y = cond(_n == 1, `y0', y[_n - 1] + rnormal())
>     replace ly = y[_n - 1]
>     replace dy = y - ly
>
>     regress dy ly
> }
>
> di _b[ly]
> di _se[ly]
> di _b[ly] / _se[ly]
>
> scalar t = _b[ly] / _se[ly] // t = Beta / SE
> di t
> ----------
>
> This code outputs the correct t-statistic of  -1.5038971
>
> -.02092465     // _b[L.y]
> .01391362      // _se[L.y]
> -1.5038971     // _b[L.y] / _se[L.y]
> -1.5038971     // scalar "t"
>
>
> I read through "[U] 13.5 Accessing coefficients and standard errors"
> and --help scalar--, but I don't see anything in either of those
> manuals that would cause the problem. Any ideas?
*
*   For searches and help try:
*   http://www.stata.com/help.cgi?search
*   http://www.stata.com/support/faqs/resources/statalist-faq/
*   http://www.ats.ucla.edu/stat/stata/
```