使用SPSS

时间:2015-07-06 10:19:09

标签: spss

开头的一些解释事实: 我通过以下方式在SPSS中构建了数据。 我有20个变量(case_number,a_1,b_1,c_1,a_2,b_2,c_2,....) 变量以这种方式命名,因为我采用不同的设备(名为a,b和c)重复测量(在不同的时间点,这里命名为1和2)。所有设备都应该测量相同的。

我想做什么现在为所有设备创建散点图所有时间点,例如我想在x轴上设备a,在y轴上设备b和c然后绘制 (a_1,b_1) (a_1,c_1) (a_2,b_2) (a_2,c_2) 等等。

我希望使用y轴上的设备b 的所有点具有相同的颜色(例如绿色),p 使用设备c < / strong>应该有另一种颜色(例如红色)。 我不想在不同的时间点使用不同的颜色,因此(a_1,b_1)和(a_2,b_2)都应该是绿色。

1 个答案:

答案 0 :(得分:1)

如果您使用长格式而不是宽格式数据,则您的特定示例更容易构建。以下是一个例子。

*Make some fake data.
SET SEED 10.
INPUT PROGRAM.
LOOP ID = 1 TO 50.
END CASE.
END LOOP.
END FILE.
END INPUT PROGRAM.
DATASET NAME Sim.
VECTOR a_(3).
VECTOR b_(3).
VECTOR c_(3).
DO REPEAT v = a_1 TO c_3.
  COMPUTE v = RV.NORMAL(0,1).
END REPEAT.
EXECUTE.

*Reshape from wide to long.
VARSTOCASES 
  /MAKE a FROM a_1 TO a_3
  /MAKE b FROM b_1 TO b_3
  /MAKE c FROM c_1 TO c_3
  /INDEX Time.
FORMATS a b c Time (F2.0).

*Now make scatterplot.
GGRAPH
  /GRAPHDATASET NAME="graphdataset" VARIABLES=a b c
  /GRAPHSPEC SOURCE=INLINE.
BEGIN GPL
  SOURCE: s=userSource(id("graphdataset"))
  DATA: a=col(source(s), name("a"))
  DATA: b=col(source(s), name("b"))
  DATA: c=col(source(s), name("c"))
  GUIDE: axis(dim(1), label("a"))
  GUIDE: axis(dim(2), label("b and c"))
  ELEMENT: point(position(a*b), color.interior(color.green))
  ELEMENT: point(position(a*c), color.interior(color.red))
END GPL.

这产生了我认为你要求的情节:

enter image description here

在长格式中,您还有其他几个简单的选项,例如为每个时间段构建小的倍数或为每个时间段使用不同的符号。

*Small multiple graphs.
GGRAPH
  /GRAPHDATASET NAME="graphdataset" VARIABLES=a b c Time
  /GRAPHSPEC SOURCE=INLINE.
BEGIN GPL
  SOURCE: s=userSource(id("graphdataset"))
  DATA: a=col(source(s), name("a"))
  DATA: b=col(source(s), name("b"))
  DATA: c=col(source(s), name("c"))
  DATA: Time=col(source(s), name("Time"), unit.category())
  COORD: rect(dim(1,2))
  GUIDE: axis(dim(1), label("a"))
  GUIDE: axis(dim(2), label("b and c"))
  GUIDE: axis(dim(3), opposite())
  ELEMENT: point(position(a*b*Time), color.interior(color.green))
  ELEMENT: point(position(a*c*Time), color.interior(color.red))
END GPL.

*Different shapes for different time periods.
GGRAPH
  /GRAPHDATASET NAME="graphdataset" VARIABLES=a b c Time ID
  /GRAPHSPEC SOURCE=INLINE.
BEGIN GPL
  SOURCE: s=userSource(id("graphdataset"))
  DATA: a=col(source(s), name("a"))
  DATA: b=col(source(s), name("b"))
  DATA: c=col(source(s), name("c"))
  DATA: Time=col(source(s), name("Time"), unit.category())
  DATA: ID=col(source(s), name("ID"), unit.category())
  COORD: rect(dim(1,2))
  GUIDE: axis(dim(1), label("a"))
  GUIDE: axis(dim(2), label("b and c"))
  GUIDE: axis(dim(3), opposite())
  ELEMENT: point(position(a*b), color.interior(color.green), shape(Time))
  ELEMENT: point(position(a*c), color.interior(color.red), shape(Time))
END GPL.

另一种选择是绘制每个人的痕迹。在此示例中,由于数据非常混乱,因此不适合,但大多数时间序列数据将显示更平滑的趋势。对于此示例数据,下面是前5个观测值在其自身的小倍数中的小数倍示例。 (有关这些图表和漂亮示例的一些讨论,请参阅here。)

*Path traces.
TEMPORARY.
SELECT IF ID <= 5.
GGRAPH
  /GRAPHDATASET NAME="graphdataset" VARIABLES=a b c Time ID
  /GRAPHSPEC SOURCE=INLINE.
BEGIN GPL
  SOURCE: s=userSource(id("graphdataset"))
  DATA: a=col(source(s), name("a"))
  DATA: b=col(source(s), name("b"))
  DATA: c=col(source(s), name("c"))
  DATA: Time=col(source(s), name("Time"), unit.category())
  DATA: ID=col(source(s), name("ID"), unit.category())
  COORD: rect(dim(1,2), wrap())
  GUIDE: axis(dim(1), label("a"))
  GUIDE: axis(dim(2), label("b and c"))
  GUIDE: axis(dim(3), opposite())
  ELEMENT: point(position(a*b*ID), color.interior(color.green), shape(Time))
  ELEMENT: point(position(a*c*ID), color.interior(color.red), shape(Time))
  ELEMENT: path(position(a*b*ID))
  ELEMENT: path(position(a*c*ID))
END GPL.
EXECUTE.

评论中用于生成图例的更新代码对我来说很好,但内联模板除外(可能与我的个人图表模板冲突)。如果要在图表中添加回归线,请参阅GPL reference guide中的smooth.linear函数。

GGRAPH
  /GRAPHDATASET NAME="graphdataset" VARIABLES=a b c
  /GRAPHSPEC SOURCE=INLINE INLINETEMPLATE=["<addFitline type='linear' target='pair'/>"]. 
BEGIN GPL 
  SOURCE: s=userSource(id("graphdataset")) 
  DATA: a=col(source(s), name("a")) 
  DATA: b=col(source(s), name("b")) 
  DATA: c=col(source(s), name("c")) 
  GUIDE: axis(dim(1), label("a")) 
  GUIDE: axis(dim(2), label("b and c")) 
  SCALE: cat(aesthetic(aesthetic.color.interior), map(("b", color.green), ("c", color.blue))) 
  ELEMENT: point(position(a*b), color.interior("b")) 
  ELEMENT: point(position(a*c), color.interior("c")) 
END GPL.

enter image description here