4

我必须进行一些配对 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”后缀这一事实,但不幸的是,我找不到一种简单的方法来仅引用每个变量名的一部分。

非常感谢您的帮助!

4

1 回答 1

4

有几种方法可以做到这一点。我会使用foreach带有一般列表的循环。在这里,我循环遍历您的三个前缀,Stata 作为本地宏传递给循环,并附加_ma_pageneratettest变量。

* 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
}

The foreach help file is a worth a few reads, as is the macro help file. The syntax is a little odd at first (more like bash scripting than R or Matlab), but it is very flexible.

于 2012-12-20T09:50:12.720 回答