Great!
-777 is very much like
how I end DO IF blocks
else.
Print / 'OOPS should not have
arrived here'.
compute result = -777
end if.
remember just because I am paranoid does not mean the
computer is not trying to mess me up.
Art Kendall
Social Research Consultants
On 4/26/2013 1:54 PM, David Marso [via SPSSX Discussion] wrote:
I guess I would revise the value label and make it
even more explicit and diagnostic.
Again, The system could not carry out the projected game plan
-> SYSMIS .
But, upon further reflection, I guess the User Missing has an
upside since
1. You can't assign a VALUE LABEL to sysmis ;-(
2. The variable could be system missing for reasons other than a
zero divide attempt.
I think I shall do some code revision ;-)
VALUE LABELS varlist
-999 'Trapped math error: Attempted Division by 0 : Inspect
(varlist) involved in denominator'
-888 'Unable to evaluate formula: Missing numerator :Inspect
(varlist) involved in numerator '.
-777 'Some other things got screwed up'.
Good Catch Art.
--
Art
Kendall wrote
Much of my time
has
been spent on providing just-in-time help of stat
methods, and
SPSS.
I developed a lot of my soapboxes by seeing how
people were shooting themselves in the foot.
My use of SYSMIS is this.
There is a value for a variable such as the system was
unable to
follow my instructions.
I use the occurrence of a SYSMIS value as a clue in
going back to
find out what was wrong with my instructions (syntax).
(Over the years I have come to believe that it is
almost always
the instructions that are to blame.).
I then go back and change the instruction so that they
provide for
the special cases that caused the original SYSMIS.
Hence, in this instance
value labels varlist -999 'missing to
avoid dividing by zero' .
in public policy issues and program evaluation it is
very common
to do what in auditing is called "referencing" . This
is a
process where another person goes over the whole data
gathering,
transformation, and analysis, to check that the
statements made
are consistent with what was done. I would not want
legislation
or a court case to rely on my statements unless I
exercised due
diligence.
In addition to redrafting the syntax to provide for
the special
cases, I also redraft syntax to include comments that
explain why
there are warnings.
These go along with my soapbox about readability.
Except for my
first few years of using computers, by 1974 or so, I
came to value
human factors criteria, such as readability of syntax
and
listings, over machine efficiency. YMMV but I find it
much more
saving of my time in the long run to use syntax that
explains what
is going on.
BTW even when I am the only one who is going to see
the syntax,
emphasizing readability also helps me when I am
inevitably
interrupted during an analysis. Even a short effort
such as
replying to a post on this list may be subject to
phone calls,
calls of nature, meals, etc. Foe example, I had two
phone calls
from my physicians while responding to this post.
I also have a soapbox about about carefully
differentiating the
different kinds of user missing values including
things like
'missing to avoid dividing by zero' . I find this
very useful
in the reasoning that the statistics are in support
of. But that
is another story.
Art Kendall
Social Research Consultants
On 4/26/2013 10:03 AM, David Marso [via SPSSX
Discussion] wrote:
Art,
What is your concept of SYSMIS and do you think it
should ever
remain in a data file?
Isn't the very essence of system missing an entity
that cannot be
assigned a value by the 'system'?
I would consider division by zero as a candidate for
treatment as
SYSTEM MISSING rather than USER MISSING.
Interesting, you have been using SPSS 11 years longer
than I have
(1983).
However, I did spend 11 years working at SPSS in the
trenches (6
doing teksport,5 as a Full time Consultant)- Teksport
was
existence in the belly of the beast-answering all
sorts of 'exotic
questions' (Macro, INPUT PROGRAM, MATRIX etc -yeah,
all the
weirdness that nobody else wanted to touch with a 10
foot pole-
).
In the early days of my taking on the 'exotic' I
probably learned
more from the users calling in than they learned from
me. My very
first exposure to macro was someone trying to do:
!LET !arg2=!arg1 + 1.
Well, that had me baffled. Well it is beyond obvious
now, but
believe it or not, once upon a time I was a rank
newbie too.
I didn't pop out of my mother with a full blown SPSS
manual in my
brain ;-)
There was even a special folder in the support
database called
"Marso Madness". I wanted to call it "Doing Unnatural
Acts with
SPSS" but that got vetoed ;-).
I LEARNED what I know today by being exposed to all
the weird
things 'weird' people try to do with SPSS for 6 years,
8 hours a
day.
I seriously doubt that support will even consider
answering those
sorts of questions any more. Maybe I'll call them for
the heck of
it and screw with their minds with some easy but
actual 'how do I
do this' question. and see how long it takes them to
refer me to
the consulting department ;-)))
Art
Kendall wrote
I admit it is a
soapbox
topic.
You surely are not a beginner and despite
having used
SPSS since
1972 I still learn
from your
posts.
However, people who
follow the
list or search the
archives
are at least
to some degree
learners.
To aid debugging and
for
quality assurance review I
try to have
people catch
all instances of sysmis,
redraft the
syntax, and
provide for that condition
in the
transformations.
Then assign a missing value
that can
be labelled.
Redrafting would not be
finished
until all sysmis
had been changed to
to user
missing with
value labels
for example in this
instance I would
put
value labels varlist -999
'missing to avoid
dividing by
zero' .
Art Kendall
Social Research Consultants
On 4/25/2013 1:47 PM, David Marso [via
SPSSX
Discussion] wrote:
In principle I agree with the sysmis on
right side
for the most part.
However in this case it is a direct
correlate to the
notion that
the SYSTEM could NOT carry out some
operation namely
an attempted
division by 0 (which would indeed end up
as SYSMIS in
normal
calculations after spewing a host of
warning messages.
Protecting
the division with DO IF will render the
same result.
So, my using
SYSMIS in this case is deliberate and
significant in
reflecting
the inability of the system to caary out
the
computation.
--
In MATRIX such an misadventure results in
a fatal
untrappable
error and SPSS takes its ball and goes
home (end of
game), leading
to unhappy emails and or phone calls.
My shameless hack attempts to capitalize
on the
cranked up
energizer bunny properties of MATRIX
vector efficiency
while
gracefully avoiding division by 0. It is
crucial to
mop up
afterwards internally to avoid ludicrous
results but
it is easier
than protecting EVERY DIVISION in MATRIX
with the
following
awkward monstrosity.
DO IF (zero_check_matrix).
COMPUTE newarray = oldarray / value.
ELSE.
COMPUTE
newarray=MAKE(NROW(oldarray),NCOL(oldArray),0).
LOOP #=1 TO NROW(oldarray).
LOOP ##=1 TO NCOL(oldArray).
COMPUTE
newarray(#,##)=oldarray(#,##)/value.
END LOOP.
END LOOP.
END IF.
This also ends up being a PITA because one
must take
great care to
treat the resulting 0 appropriately in
subsequent
calculations.
In the HACK mode one can test for HUGE
values which
are
distinguishable from 0's which can
legitimately arise
from 0
numerators .
Yeah, there are trade offs, and I am
nowhere near
solving every
weird thing that can crop up in complex
situations.
But, I do stand by my using SYSMIS for
this situation
;-)
--
Art
Kendall wrote
OOPS! sysmis on
right side of
assignment operator.
RECODE ALL (LO THRU 1.0 =
COPY)
(ELSE -999
= ).
missing values all (-999).
Art Kendall
Social Research Consultants
On 4/25/2013 12:15 PM, Richard
Ristow [via
SPSSX
Discussion]
wrote:
At 09:43 AM 4/25/2013, David
Marso wrote:
>If the numbers are all
positive then
you can nuke
the very
small fudge factor
>and remove the recode.
>If you have negative
values then you
will need to
modify the
recode (I'm
>sure you can sort that).
>RECODE ALL (1.000001 THRU
HI=SYSMIS).
I think a cleaner way to do
this RECODE,
sidestepping
having to
choose a fudge factor, is
RECODE ALL (LO THRU 1.0 =
COPY)
(ELSE =
SYSMIS).
But actually, I think the
dividing-by-zero
problem is
a strong
reason
to do the computation in a
transformation
program,
rather than
MATRIX.
=====================
To manage your subscription to
SPSSX-L,
send a message
to
[hidden email]
(not to SPSSX-L), with no body
text except
the
command. To leave the list,
send the
command
SIGNOFF SPSSX-L
For a list of commands to
manage
subscriptions, send
the command
INFO REFCARD
If you reply to this email,
your
message will be added to
the
discussion below:
http://spssx-discussion.1045642.n5.nabble.com/do-repeat-tp5719707p5719720.html
To start a new topic under
SPSSX
Discussion, email
[hidden
email]
To unsubscribe from SPSSX
Discussion,
click
here .
NAML
Please
reply to the list and not to my personal
email.
Those desiring my consulting or training
services
please feel
free to email me.
---
"Nolite dare sanctum canibus neque
mittatis
margaritas vestras
ante porcos ne forte conculcent eas
pedibus suis."
Cum es damnatorum possederunt porcos
iens ut salire
off
sanguinum cliff in abyssum?"
If you reply to this email, your
message will be added to the
discussion below:
http://spssx-discussion.1045642.n5.nabble.com/do-repeat-tp5719707p5719723.html
To start a new topic under SPSSX
Discussion, email
[hidden
email]
To unsubscribe from SPSSX Discussion,
click
here .
NAML
Please
reply to the list and not to my personal email.
Those desiring my consulting or training services
please feel
free to email me.
---
"Nolite dare sanctum canibus neque mittatis
margaritas vestras
ante porcos ne forte conculcent eas pedibus suis."
Cum es damnatorum possederunt porcos iens ut salire
off
sanguinum cliff in abyssum?"
If you reply to this email, your
message will be added to the discussion below:
http://spssx-discussion.1045642.n5.nabble.com/do-repeat-tp5719707p5719750.html
To start a new topic under SPSSX Discussion, email
[hidden
email]
To unsubscribe from SPSSX Discussion, click
here .
NAML
Please
reply to the list and not to my personal email.
Those desiring my consulting or training services please feel
free to email me.
---
"Nolite dare sanctum canibus neque mittatis margaritas vestras
ante porcos ne forte conculcent eas pedibus suis."
Cum es damnatorum possederunt porcos iens ut salire off
sanguinum cliff in abyssum?"
If you reply to this email, your
message will be added to the discussion below:
http://spssx-discussion.1045642.n5.nabble.com/do-repeat-tp5719707p5719763.html
To start a new topic under SPSSX Discussion, email
[hidden email]
To unsubscribe from SPSSX Discussion, click
here .
NAML