在我的数据集中,我有几个自变量(这里名为" predictor1"," predictor2" 等)和几个因变量(&# 34; 结果A","结果B "等)。此外,我有几个协变量(" covariate1"," covariate2" 等)。
我想做线性回归分析,其中我
我知道如何构建一个循环,使用 predictor1 来预测所有结果,然后使用 predictor2 来预测所有结果等。我也知道如何添加协变量这将用于所有模型,无论有问题的预测器,但没有用。
我不知道是这样的:我如何"情侣"与预测变量协变,因此当我使用 predictor1 预测结果时,我还会调整 covariate1 ?然后,当我使用 predictor2 预测结果时,我会调整 covariate2 等。
下面是我执行此操作的语法,以便所有模型包含相同的协变量。如何更改此值以便SPSS不会对所有模型使用所有这些协变量,而是根据自变量选择它们?我可以为循环将经历的独立变量构建两个列表(例如"!indepvars1"和#34;!indepvars2")或类似的东西,或者我可以做什么?
显然,我没有编程方面的经验,我也无法让自己独立工作。也许答案很明显。
PRESERVE.
SET TVARS NAMES.
oms select tables
/destination format = sav
numbered = "Table_Number"
outfile = '\\ATKK\visit1_TEMP1.sav'
/if commands = ['regression']
subtypes = ['Coefficients']
/tag = "reg".
*////////////////////.
DEFINE !regtest100 (indepvars=!charend ('/') /depvars=!CMDEND)
!DO !depvar !IN (!depvars)
!DO !indepvar !IN (!indepvars)
regression
/STATISTICS COEFF OUTS CI(95) R ANOVA
/dependent = !depvar
/method = enter !indepvar covariate1 covariate2 covariate3.
!DOEND
!DOEND
!ENDDEFINE.
*///////////////////
!regtest100
indepvars= predictor1 predictor2 predictor3.
/ depvars= outcomeA outcomeB outcomeC.
EXECUTE.
答案 0 :(得分:1)
根据您对输入的预期,您可以通过多种方式实现此目标。
下面是一种方法,其中回归变量和协变量变量都作为宏参数的参数提供。变量在它们的位置上配对。 (您可能希望在indepvars
宏参数和covars
参数中输入的变量数量相等。我会建立一个明确的检查,以便彻底检查。
我在宏体中添加了注释来解释一些逻辑,我希望这可以帮助。
*////////////////////.
define !RunJob1 (depvars=!charend ('/') /indepvars=!charend ('/') /covars=!charend ('/'))
!do !dv !in (!depvars)
!let !cv=!covars /* make copy of original list of variables */
!do !iv !in (!indepvars)
!let !cvhead=!head(!cv) /* retrieve first variable in list */
!let !cv=!tail(!cv) /* retrieve all but first variable in list */
title !dv !iv !cvhead /* print results as test */ .
!doend
!doend
!enddefine.
*////////////////////.
!RunJob1 depvars=dv1 dv2 dv3 /indepvars=Apple Bananna Carrot /covars=A1 B2 C3.
或者,如果您的输入变量具有特定格式,其中它们具有预定义的预加密存根,后跟数字后缀,那么您可以稍微不同地处理这种情况,这也会更容易编码。这里再次证明了这一点:
*////////////////////.
define !RunJob2 (depvars=!charend ('/'))
!do !dv !in (!depvars)
!let !cv=!covars
!do !i = 1 !to 3
title !dv !concat("iv", !i) !concat("cv",!i) .
!doend
!doend
!enddefine.
*////////////////////.
!RunJob2 depvars=dv1 dv2 dv3.
显然,这里有很多假设。您必须评估您的数据,以查看最适合您需求的数据(如果有的话或其他更合适的话)
答案 1 :(得分:1)
由于没有编程经验,我还需要一段时间才能将Jignesh Sutar提供的好建议付诸实践。这是最终的SPSS语法,以防它帮助其他真正需要脚本的傻瓜式例子。
*////////////////////.
DEFINE
!regtest101 (depvars=!charend ('/') /indepvars=!charend ('/') /covars=!charend ('/'))
!DO !depvar !IN (!depvars)
!let !cv=!covars
!DO !indepvar !IN (!indepvars)
!let !cvhead=!head(!cv)
!let !cv=!tail(!cv)
regression
/STATISTICS COEFF OUTS CI(95) R ANOVA
/dependent = !depvar
/method = enter !indepvar !cvhead extracovariateA extracovariateB.
!doend
!doend
!enddefine.
*////////////////////.
!regtest101
depvars= outcomeA outcomeB outcomeC
/indepvars= predictor1 predictor2 predictor3
/covars= covariate1 covariate2 covariate3.
EXECUTE.
两个额外的协变量( extracovariateA,extracovariateB )是包含在所有模型中的其他协变量,而 covariate1 , covariate2 和< em> covariate3 是在连续模型中添加的(与预测变量1,预测变量2,预测变量3 配对)。