[Date Prev][Date Next][Thread Prev][Thread Next][Date index][Thread index]
st: Re: NaN (the inedible kind)
--On Thursday, September 26, 2002 2:33 -0400 Roger wrote:
NaN is geekspeak for Not a Number. See
What precisely is a NaN? And does it have any connection with missing
values, or with the "magic number" 1e300 mentioned in -[R] tabstat-? I
can't find any reference to NaNs in -[R] matrix define-.
IMHO Stata does NOT make use of NaNs, which have the properties that
missing values should have (i.e. any op involving a NaN evaluates to a
NaN). If I say
g byte badrep = (rep78>3)
I get 5 obs of badrep=1 corresponding to rep78==. whereas in true NaN
arithmetic they would be discarded as having no defined value. (As the IEEE
std says, there are differences between three constructs, none of which can
be represented in finite arithmetic: NaN, +Inf, and -Inf). To do this right
in Stata, I would have to say
g byte badrep = (rep78>3 & rep78<.)
and forgetting the second clause will bite you (well, in this case maybe
Most lower-level programming languages (and some higher-level languages,
e.g. Mathematica, MATLAB) support NaNs per the IEEE standard. Stata does
not--it allows missing values to be treated as a very large positive
number--and that has been the topic of discussion at 'wishes and grumbles'
sessions at SUG meetings.
I don't know whether Bill Gould is saying that tabstat's 'magic number'
behavior is inappropriate, but it is established and well defined. Nick Cox
and I mimicked it in statsmat. It is very useful to be able to indicate
that a certain matrix cell is not zero but rather not defined.
* For searches and help try: