2017-09-19 2 views
0

Stataには、見積もりコマンドのコンテキストで因子変数や対話を扱うための膨大なビルトイン演算子があります。新しい見積もりコマンドを書くとき、因子演算子から因子値名を取得するにはどうすればよいですか?

------------------------------------------------------------------------------ 
    ln_wage |  Coef. Std. Err.  t P>|t|  [95% Conf. Interval] 
-------------+---------------------------------------------------------------- 
     sex | 
    female | ... 
      | 
     arm | 
    control | ... 
      | 
    sex#arm | 
femal#contr | ... 
      | 
     _cons | ... 
------------------------------------------------------------------------------ 

. regress outcome sex##arm 

出力に、したがって、インジケータ変数の推定値を生成する:例えば、sex(男性/女性)、及びarm(治療/対照)、次のコマンドという2つの要因変数が存在すると仮定すると

##オペレータは、のような3者間のやりとりにも対応します。さらに、ibまたは同義語bオペレータは、各因子変数のどの基本値を参照カテゴリとして使用するかを指定する手段を提供します。

新しい見積もりコマンドMyRegを作成している場合は、MyReg outcome sex##armのような呼び出しを許可する構文または構文解析ツールがありますが、これらの因子名/因子値名(上の表の左の列に表示されます)にアクセスすることはできません。 Stataのファクタ変数演算子の重要なセットのために私のパーサーを書く必要がありますか?

答えて

2

私は、私は完全にあなたが考えているが、ここでの例では、この道を行く得るために何を理解している場合、完全にわからない:

/* (1) Define MyReg */ 
capture program drop MyReg 

program define MyReg, eclass 
    version 14.2 
    syntax varlist(min=1 fv) 

    /* do the regression */ 
    regress `varlist' 

    /* pull out the column names from the coefficient matrix */ 
    local fvnames : colfullnames e(b) 

    /* drop omitted categories from column names list */ 
    foreach var of local fvnames { 
      _ms_parse_parts `var' 
      if !`r(omit)' { 
       local fvlist `fvlist' `var' 
      } 
     } 

    /* e-return the names */  
    ereturn local fvlist `fvlist' 

end; 

/* (2) An Example */ 
sysuse auto 
MyReg price i.foreign##c.weight 
display "Left Column Contents: " e(fvlist) 

プログラマのための便利な要因変数のコマンドの偉大な質問にもありますがhere

+0

+1ありがとうございました!それは私が自分自身の残りの部分を得ることができるようにほぼ完璧です。 ( "残りの方法"は単にe(fvlist)で返されるものの数値プレフィックスに対応する因子値ラベルの検索です:)。 FAQリンクをありがとう。 – Alexis

+0

あなたはestoutが何をしているのかを見て、それを複製したいと思うかもしれません。 –

関連する問題