Posted by
Art Kendall on
Jan 03, 2015; 3:25pm
URL: http://spssx-discussion.165.s1.nabble.com/Question-About-Tests-of-Normality-and-Choice-of-Statistical-Analysis-tp5728302p5728331.html
As a general rule, I try to have the operationalization (variable to represent) a construct be no more coarse than is necessary. When you pre-test an instrument, see whether respondents like those you are going to study can deal with more points on a response scale. I try to use pre-existing summative scales so that that there are more legitimate values that the resulting variable may take. [I abhor committing the nefarious median split which is a totally unnecessary coarsening of measurement.]
If one is concerned about whether to treat a single five point response scale item as ordinal vs interval,
try running CATREG. Use the built-in options to to compare the fit under both sets of assumptions.
Does any observed difference in results pass the "SO WHAT?" test?
The syntax below simulates an underlying continuous construct that is operationalized as a 5 point scale. The intervals between values are tweaked,
Paste the syntax below into a the syntax window of a new instance of SPSS. Run it. In the output editor fit regression and loess curves to the graphs.
try scatter plotting different modifications of the variables and in the output editor fit regression and loess curves.
The simulation only uses a fairly small set of cases, i.e., 100. change the loop for ID to try other sample sizes.
* demo that item intervals may not make much practical import.
INPUT PROGRAM.
LOOP id=1 TO 100.
COMPUTE x = rnd(rv.uniform(.5,5.5)).
compute x_sq = x**2.
compute x_cubed = x**3.
compute x_sqrt =sqrt(x).
compute x_spread1.10 = (x-1)+((x-1)*1.10).
compute x_spread1.25 = (x-1)+((x-1)*1.25).
compute x_spread1.50 = (x-1)+((x-1)*1.50).
compute x_spread2 = (x-1)+((x-1)*2.00).
compute x_spread3 = (x-1)+((x-1)*3.00).
compute x_spread4 = (x-1)+((x-1)*4.00).
END CASE.
END LOOP.
END FILE.
END INPUT PROGRAM.
do repeat fuzz = .01, .02,.05,.10,.25,.50 1.00/
xfuzzed = xfuzzed.01, xfuzzed.02,xfuzzed.05,xfuzzed.10,xfuzzed.25,xfuzzed.50 xfuzzed1.
compute xfuzzed = x + rv.uniform(0,fuzz).
*compute xfuzzed = x + rv.uniform(0,fuzz*x).
end repeat.
FORMATS id (F3.0) X to x_cubed x_spread2 to x_spread4(F3) x_sqrt X_spread1.10 to x_spread1.50 (f6.2).
FREQUENCIES VARS= X to xfuzzed1.
correlations vars = x_sq to xfuzzed1 with x.
crosstabs x_sq to x_spread4 by x.
*edit graph in output to put in a linear fit line and loess curve.
* Chart Builder.
GGRAPH
/GRAPHDATASET NAME="graphdataset" VARIABLES=x x_cubed MISSING=LISTWISE REPORTMISSING=NO
/GRAPHSPEC SOURCE=INLINE.
BEGIN GPL
SOURCE: s=userSource(id("graphdataset"))
DATA: x=col(source(s), name("x"))
DATA: x_cubed=col(source(s), name("x_cubed"))
GUIDE: axis(dim(1), label("x"))
GUIDE: axis(dim(2), label("x_cubed"))
ELEMENT: point(position(x*x_cubed))
END GPL.
* Chart Builder.
GGRAPH
/GRAPHDATASET NAME="graphdataset" VARIABLES=x xfuzzed1 MISSING=LISTWISE REPORTMISSING=NO
/GRAPHSPEC SOURCE=INLINE.
BEGIN GPL
SOURCE: s=userSource(id("graphdataset"))
DATA: x=col(source(s), name("x"))
DATA: xfuzzed1=col(source(s), name("xfuzzed1"))
GUIDE: axis(dim(1), label("x"))
GUIDE: axis(dim(2), label("xfuzzed1"))
ELEMENT: point(position(x*xfuzzed1))
END GPL.
Art Kendall
Social Research Consultants