約 40 個の変数を含むデータ セットがあります。これらの約半分は測定値であり、残りの半分はその観測に関する人口統計情報です。各 ID には、入口と出口の 2 つの観測値があります。入り口と出口での測定値の平均を比較しています。
測定ごとに ttest を実行し、txt ファイルに保存するコードを作成しましたが、これはうまく機能します。
次に、人口統計変数によるグループ化を行う必要があります。
私は以下を使用しています
by var1, sort: ttest var2 by stage
ステージは、観察が入り口か出口かを定義する変数です。var1 は、人口統計変数 (性別、喫煙、飲酒など) の 1 つで、2 ~ 4 個のコード化された値を持つことができます。
私がやろうとしているのは、このコードをループで実行し、テキスト ファイルに書き込むことです。ただし、r() コマンドは、ttest が実行された最後のグループの結果のみを返します。
すべての ttest 結果が結果画面に出力されるため、コード自体は機能しますが、すべての結果がファイルに書き込まれるわけではありません。
たとえば、var1 の値が 1 、2 、3 および 4 の場合、グループ 4 の結果のみが得られます。
foreach var of var ttlchol-exvol{
foreach v of var sex dm chf diastolic copd ckd Depression {
capture by `v',sort: ttest `var' , by(stage)
if !_rc {
by `v',sort: ttest `var', by(stage)
file write myfile2 ///
%9s "`var'" _tab %7.3f (r(N_1)) ///
_tab %7.3f (r(N_2)) _tab %7.5f (r(p_l)) ///
_tab %7.5f (r(p_u)) _tab %7.5f (r(p)) ///
_tab %7.5f (r(se)) _tab %7.3f (r(t)) ///
_tab %7.3f (r(sd_1)) _tab %7.3f (r(sd_2)) ///
_tab %7.3f (r(mu_1)) _tab %7.3f (r(mu_2)) ///
_tab %7.3 (r(df_t)) ///
_n
}
}
}
STATA が by 、 sort: を処理する方法の詳細を探しましたが、各反復の結果をキャプチャする方法を見つけることができませんでした。
by 、 sort: 関数の反復ごとに結果を取得することは可能ですか? もしそうなら、どうすればいいですか?