SPSS macro performs K-means Cluster analysis and does the “heavy lifting”

SPSS macroI frequently play around with multivariate techniques like K-means cluster analysis in SPSS.  There were some big holes in the SPSS procedure that performs cluster analysis so wrote an SPSS Macro to automate what I wanted to be done.    Below is a  quick demo of the macro in use. It can really save a bunch of time!  A few things mine does differently is:

  1. assigns labels to the segments (these will be changed later but butter than just a 1,2,3)
  2. Computes frequencies on the size of the segments (Why SPSS doesn’t do this automatically is beyond me)
  3. Color-codes and merges the significance testing in with the profile-plot showing what is different.

SPSS macro performing K-means Cluster analysis

 

Automating the creation of randomly split-out text files with an SPSS macro

SPSS macro

I frequently need to randomize my lists and save them into separate text files. This SPSS macro makes it a breeze!

If you haven’t already played with macros you’ll want to get yourself familiar with them by reviewing this post on Intro to Macros.  The macro will need a few parameters from you like: the path to save the files, Stem (beginning) name of the files to create, # of groups to create and whether or not to keep the variable used to create the groups.

Below is the SPSS Macro which will automate the process.

 
*/////////////////////.
DEFINE !Rand_Gp_txt (Path !Tokens(1)/Stem !Tokens (1)/Groups !TOKENS (1)  /DropNewVars !Tokens(1))
*/////drop GP if already exists . 
Match files file=* / DROP Temp_GP 
Compute Rand=RV.UNIFORM(0,1).
RANK  VARIABLES=rand (A) /NTILES (!Groups) into Temp_GP /PRINT=Yes /TIES=HIGH.
Freq Temp_GP.
***********************break out and save in groups********************************.
!DO !cnt=1 !TO !Groups.
Temp.
Select if Temp_GP=!cnt.
SAVE TRANSLATE OUTFILE = !Path+!stem+!QUOTE(!CONCAT(!cnt,'.txt'))
  /TYPE=TAB /FIELDNAMES /replace /KEEP= ALL  /drop=Temp_GP rand.
!DOEND

***Drop unwanted vars if *******.
!IF (!Unquote(!Upcase(!DropNewVars))="Y") !THEN  
	Match files file=* / DROP Rand Temp_GP. 
!IFEND

!ENDDEFINE.
*/////////////////////.
!Rand_Gp_txt Path="c:\temp\" Stem="Rand_" Groups=2  DropNewVars="Y".
Remember to define the SPSS macro before calling it!.

SPSS Macros for replacing missing data

SPSS macro

SPSS Macros for replacing missing data

A lot of online vendor tools provide a data value on a multi-select question however they leave the value missing if the respondent didn’t select it. Most of the analysis I want to do needs to have a zero (or some other value) present in order to calculate the statistics correctly.

I wrote a few SPSS Macros that make it very easy to replace the missing values on your data.  Here are the two macros

 
*///////////////.
DEFINE !Rep_Miss  (Beg !TOKENS (1) /Prez !TOKENS (1)  /End !TOKENS (1))
Do if !PREZ>0.
do repeat v=!BEG to !END.
if missing (v) v=0.
end repeat.
end if.
exe.
!ENDDEFINE.
*///////////////.

/*!Rep_Miss  Prez=presentvariable  Beg=v11  End=v19.

*///////////////.
DEFINE !Rep_Miss2  (Beg !TOKENS (1)   /End !TOKENS (1))
do repeat v=!BEG to !END.
if missing (v) v=0.
end repeat.
exe.
!ENDDEFINE.
*///////////////.
/*!Rep_Miss2   Beg=v11  End=v19.