SPSS:使用循环计算时间序列的绝对差之和

问题描述 投票:0回答:1

我有一个情绪反应的时间序列,我想根据这些反应之间的绝对差之和来计算一个变量。例如,我有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中实现,或者我是否需要诉诸于此为此。任何帮助表示赞赏!

r loops time-series spss
1个回答
0
投票

如果您只想跳过缺失值并仍然计算所有相邻有效值对之间的差,则可以采用这种方式:

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."
© www.soinside.com 2019 - 2024. All rights reserved.