我必须进行一些配对t检验,我想知道如何自动化整个程序。 假设我只有以下变量:
int_ma est_ma tot_ma int_pa est_pa tot_pa
我需要的是计算:
ttest int_ma=int_pa
ttest est_ma=est_pa
ttest tot_ma=tot_pa
当然在某种程度上应该可以利用每一对都有唯一前缀和“_pa,_ma”后缀的事实,但不幸的是我找不到一种简单的方法来仅引用每个变量名称的一部分..
非常感谢您的帮助!
答案 0 :(得分:4)
有几种方法可以做到这一点。我会使用带有常规列表的foreach
循环。在这里,我遍历您的三个前缀,Stata将这些前缀作为本地宏传递给循环,并将_ma
和_pa
附加到generate
和ttest
变量。
* generate some data
clear
set obs 100
foreach x in int est tot {
foreach y in ma pa {
generate `x'_`y' = runiform()
}
}
* -ttest- in -foreach- loop
foreach x in int est tot {
ttest `x'_pa = `x'_ma
}
foreach
帮助文件与macro
帮助文件一样值得一读。一开始语法有点奇怪(更像是比R或Matlab的bash脚本),但它非常灵活。