我有一个情绪反应的时间序列,我想根据这些反应之间的绝对差之和来计算一个变量。例如,我有10个变量用于T1-T10的悲伤强度。但是,某些参与者缺少一些数据,因为有些仅响应了例如T1-5或T1-8。因此,我对每个参与者的回应数量各不相同。
现在,我要根据这些变量之间的绝对差之和来计算一个新变量(SAD_s)(T1s是T1的悲伤强度,T2是T2的悲伤强度,依此类推):
COMPUTE SAD_s=abs(T2s-T1s)+abs(T3s-T2s) + abs(T4s-T3s) +abs(T5s-T4s)+abs(T6s-T5s) + abs(T7s-T6s) +abs(T8s-T7s)+abs(T9s-T8s) + abs(T10s-T9s) .
EXECUTE.
但是,这仅适用于参与者尽可能多的回应。对于其他所有缺少数据的人,我一无所有。
我该如何针对在时间序列末尾缺少数据的参与者(例如,从T7开始缺少值,但在此之前完整的数据)进行这项工作?原则上,我也想为介于两者之间缺少值(例如T1-T7完成,T8丢失,T9-T10完成)的参与者提供解决方案,但是我会优先考虑前者。
我还有一个变量,指示参与者响应的Ts数量。我有一个模糊的主意,我需要使用一个循环,该循环要重复执行此变量指示的次数,但是我不知道如何实现该循环,以及是否完全可以在SPSS中实现,或者我是否需要诉诸于此为此。任何帮助表示赞赏!
如果您只想跳过缺失值并仍然计算所有相邻有效值对之间的差,则可以采用这种方式:
compute #lstvr=T1.
compute sad_s=0.
do repeat vr=T2 to T10.
if not missing(vr) and not missing (#lstvr) sad_s=sad_s+abs(vr-#lstvr).
if not missing(vr) #lstvr=vr.
end repeat.
如果,据我从您的评论中了解到,您不想比较缺失值两侧的值,只需像这样固定循环中的第二行:
compute #lstvr=vr. /* instead of "if not missing(vr) #lstvr=vr."