首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在SPSS语法中运行一个循环来计算多组变量之间的差异?

如何在SPSS语法中运行一个循环来计算多组变量之间的差异?
EN

Stack Overflow用户
提问于 2022-11-18 17:45:10
回答 2查看 29关注 0票数 1

我有一组变量(A1,A2,B1,B2,C1,C3 .)我需要计算差异,以便最终创建一组Bland图,在使用OMS从t检验中提取差异的平均值和sd之后。

作为第一步,我让它处理单个变量(例如,A1和A2),现在我正在尝试创建一个宏,它将作为一个测试循环遍历前几对:

代码语言:javascript
复制

定义BlandAlt (scan1vars=!CMDEND / scan2vars=!CMDEND)

计算diff = scan1vars - scan2vars。

执行。

T检验

/TESTVAL=0

/MISSING=ANALYSIS

/VARIABLES=diff

/CRITERIA=CI(.95)。

!ENDDEFINE。

BlandAlt

scan1vars = JumpJumpHeightcm.1 JumpJumpHeightt_score.1 JumpMaxChangeinAccelerations3.1 JumpMaxChangeinAccelerationt_score.1 JumpMaxAcceleration2.1 JumpMaxAccelerationt_score.1

scan2vars= JumpJumpHeightcm.2 JumpJumpHeightt_score.2 JumpMaxChangeinAccelerations3.2 JumpMaxChangeinAccelerationt_score.2 JumpMaxAccelerations2.2 JumpMaxAccelerationt_score.2。

代码语言:javascript
复制

当我运行这个宏时,我会得到第一个变量的一个错误:

第35栏中的

错误# 4381。文本: JumpJumpHeightt_score.1表达式意外结束。此命令将停止执行。

当它试图运行t-测试时,它会发出警告:

文本: diff : T-TEST一个未定义的变量名,或者在变量list >中指定一个划痕或系统变量,它只接受标准变量。检查拼写并验证此变量是否存在。此命令将停止执行。

有人能帮我完成这个任务吗?我希望这样可以轻松地将其他命令包含在宏中。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-11-20 04:37:23

请参阅我的评论,以更正您原来的宏。在修正macru之后,它应该工作得很好,只是您没有使用宏调用的构建方式。你需要这样称呼它:

代码语言:javascript
复制
BlandAlt scan1vars = JumpJumpHeightcm.1 / scan2vars= JumpJumpHeightcm.2 .
BlandAlt scan1vars = JumpJumpHeightt_score.1 / scan2vars=JumpJumpHeightt_score.2 .
...

这显然不是在你的变量列表中循环。SPSS宏的问题是很难让它同时循环两个列表。但是在您的例子中,没有必要--只有一个实际的列表要循环,同时让宏向变量名添加12后缀。试试这个:

代码语言:javascript
复制
DEFINE BlandAlt (vrs=!CMDEND) 
!do !vr !in(!vrs)
COMPUTE diff = !concat(!vr,".1") - !concat(!vr,".2").
EXECUTE.
TTEST.....
!doend
!enddefine.

现在,宏调用将如下所示:

代码语言:javascript
复制
BlandAlt vrs = JumpJumpHeightcm JumpJumpHeightt_score JumpMaxChangeinAccelerationms3  
  JumpMaxChangeinAccelerationt_score JumpMaxAccelerationms2 JumpMaxAccelerationt_score .
票数 0
EN

Stack Overflow用户

发布于 2022-11-20 08:39:44

我还有另一个解决方案--把它放在一个单独的答案中,因为它使用的是完全不同的方法。这样做的想法是,有时可以通过将变量重组为long格式,然后使用split file只进行一次分析来获得相同的结果,而不是遍历变量进行分析。如下所示:

代码语言:javascript
复制
varstocases 
  make scan1vars from JumpJumpHeightcm.1 JumpJumpHeightt_score.1 JumpMaxChangeinAccelerationms3.1
     JumpMaxChangeinAccelerationt_score.1 JumpMaxAccelerationms2.1 JumpMaxAccelerationt_score.1 /
  make scan2vars from JumpJumpHeightcm.2 JumpJumpHeightt_score.2  JumpMaxChangeinAccelerationms3.2
     JumpMaxChangeinAccelerationt_score.2  JumpMaxAccelerationms2.2 JumpMaxAccelerationt_score.2 /
  index=origvar(scan1vars).

* now you can do the whole process only once.
COMPUTE diff = scan1vars - scan2vars.
sort cases by origvar.
split file by origvar.
T-TEST
/TESTVAL=0
/MISSING=ANALYSIS
/VARIABLES=diff
/CRITERIA=CI(.95).
split file off.
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74493524

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档