Lazy Pseudo Statistician Looking for Computer To Do Work For Him
March 17, 2009 8:05 PM   Subscribe

How can I take a Myers-Briggs test entered into SPSS in a per question format and get a Myers-Briggs Type for each of 92 participants?

I've tried Google and am getting nothing. I downloaded a trial so I can work on it at home while I'm on Spring Break, and the Help files didn't install or something to where the end result is that I can't use them. I'm also kicking myself for not getting my text back after letting someone borrow it for my school's stats class.

I have 92 surveys, part of which is a Myers-Briggs Personality Test. I've entered the data on a question by question basis, where each of the 20 Myers-Briggs questions has an option value of either 1 or 2 (representing E or I, S or N, T or F, or J or P depending on the question).

I know I can get a frequency to get the personality type of the entire sample population. But how can get SPSS to score he Myers-Briggs for me on a survey by survey basis?

If it would be easier, I also have the surveys available and can go score them all by hand. But I'd rather not to that if I don't have to.
posted by theichibun to Computers & Internet (5 answers total)
 
Best answer: I'm not sure I understand your question - is it that you know which item loads on which scale, but you don't know how to make SPSS calculate the scores? You *do* have the data set up such that each row is a person and each column is a different item, right?

If that's the case, the answer is simple. You can be old fashoned and open a new syntax window and use the COMPUTE and IF statements.

If I understand what you're describing, it sounds like you need to create totals based on which option (1 or 2) is chosen for each item. If, for example, an Item1 score of 1 means to bump up the E scale, while a score of 2 on that item means to bump up the I scale, you'd write syntax like this:

COMPUTE E = 0.
COMPUTE I = 0.
DO IF (ITEM1 = 1).
COMPUTE E=E+1.
ELSE IF (ITEM1=2).
COMPUTE I=I+1.
END IF.
EXECUTE.

The first two statements just initialize your scales at 0. The EXECUTE statement is needed at the end the syntax, and periods are needed after each statement. You just highlight the statements and click on the Run button. There are many tutorials on the web that can help you learn how to use SPSS syntax.
posted by jasper411 at 8:45 PM on March 17, 2009


Response by poster: Sweet. I knew I should have asked this question earlier. Hopefully I won't break things tomorrow when I attempt to have this do the entire test in one shot tomorrow as opposed to having it do just the Es and Is like it is now.

If anyone else knows of a way to do it I'd love to hear it, but this method does everything I need it to.
posted by theichibun at 10:04 PM on March 17, 2009


I don't know any SPSS, but a bit of googling suggests that this might work.


Basically, create four variables, one for each Myers-Briggs axis, and initialize them to zero.

Then for each of your twenty answers (per person), convert a "2" to 1, and a "1" to negative 1.

Then look up in the answerkey string which of the four Myers-Briggs axes that answrer applies to. The string is 20 charcters long; each character encodes the axis that answer applies to.

Then add the 1 or -1 to the accumulating value for that axis.


Again, I never saw SPSS syntax before today, and I just cribbed some crap from the web. Obviously, it would have been better to make answerkey's values numeric, and then use that number as an index into an array of accumulators, e.g.:

int answerkey[] = ( 0, 1, 2, 3, 0, 1, 2, 3, 2, 2, 3, 3 ....};
int accums[4] = { 0, 0, 0, 0 };

for( i = 0 ; i < 20; ++i)
accums[ answerkey[i] ] += items[i] == 2 ? 1 : -1 ;

But the above is C, and I don't knw how to do that in SPSS, so the SPSS below looks like:

compute ei = 0.
compute sn = 0.
compute tf = 0.
compute pj = 0.
string answerkey (A20).
computer answerkey = 'entpentpeeeennnnttttpppp'.
vector q = item1 to item20.
loop i = 1 to 20.
compute qc = q(i).
recode qc (2=1) (1=-1).
if (answerkey(i) = 'e' ) ei = ei + qc.
if (answerkey(i) = 'n' ) sn = sn + qc.
if (answerkey(i) = 't' ) tf = tf + qc.
if (answerkey(i) = 'p' ) pj = pj + qc.
end loop.
execute.
posted by orthogonality at 2:58 AM on March 18, 2009


unrelated ... but ... I have been looking for a paper based MB test. Where did you get yours?
posted by jannw at 4:49 AM on March 18, 2009


Response by poster: This is it online with some explanations of stuff and here it is from a different site in a downloadable, text format all zipped up.
posted by theichibun at 6:36 AM on March 18, 2009


« Older How can I automatically split GPS tracklogs?   |   Monster Trucks Newer »
This thread is closed to new comments.