*Stata [#oa4bb7d4] Ver.13が出ている。 -新機能 http://www.lightstone.co.jp/stata/stata13_new.htm #contents **条件文の書き方 [#dcc9c369] |意味|記号| |等しい|==| |等しくない|!=| |等しくない|半角で〜=| |以上|>=| |以下|<=| |かつ|&| |または|半角で|| ・・・if hoge == 1 の「==1」は省略できるらしい。 **変数の操作 [#j2a1e955] -変数の作成 -sum関数の利用 gen 【新しい変数】=sum(【利用する変数】) #br 例)gen var2=sum(var1) 「gen」では上からその値までの合計値が入るが、全体の合計値を入れたい場合には「egen」を利用する。 例)egen var3=sum(var1) |var1|var2|var3| |1|1|6| |2|3|6| |3|6|6| -変数の書き換え **文字列の操作 [#b784ad57] -文字列から任意の文字を抽出する。 gen str2(←この場合は2byteの文字列) 【新しい変数名】=substr(【元の変数名】,【開始文字】,【文字数】) #br 例)gen str6 var2=substr(var1,1,6) -文字列を数値に変換して、元の変数を置き換える。 destring 【変換したい変数名】, replace #br 例)destring var1, replace -文字列を数値に変換した新しい変数を作る。 destring 【元の変数名】, gen(【新しい変数名】) #br 例)destring var1, gen(var2) -数値を文字列に変換して、元の変数を置き換える。 gen 【一時的な変数名】=string(【変換したい変数名】) drop 【変換したい変数名】 rename 【一時的な変数名】 【変換したい変数名】 #br 例)gen val3=string(val2) drop val2 rename val3 val2 -通し番号を振る。 gen 【通し番号の変数名】=_n #br 例)gen ID=_n -カテゴリー毎に通し番号を振る。~ カテゴリーとなる変数についてソートを実行し、それぞれについて1から通し番号を振る。 bysort 【カテゴリーとなる変数名】: gen 【通し番号の変数名】=_n #br 例)bysort year: gen ID=_n ただし、カテゴリーとなる変数内に同じ値が複数ある場合には、それらについての順番はランダムとなる。同じ値のものたちの中での順番についてはソート前の順番と同じにしたいときは、次のようにする。 例)sort year, stable by year: gen ID=_n **繰り返し [#b59b9d80] -区間を利用する場合 for num 【最初】/【最後】: 【プログラム:「X」のところに区間の数字が順に代入される】 #br 例)for num 3/10: replace valX=0 if valX==. -区間を利用する場合(複数のプログラム) forvalues 【任意の文字】 = 【最初】/【最後】 { 【プログラム:「`【任意の文字】'」のところに区間の数字が順に代入される】 ・ ・ ・ 【プログラム】 } #br 例)forvalues i = 3/10 { replace val`i'=0 if val`i'==. replace val99 = 1 if val0==`i' } -文字を利用する場合 foreach 【任意の文字】 in 【文字1】 【文字2】 ・・・ { 【プログラム:「`【任意の文字】'」のところに【文字1】から順に代入される】 ・ ・ ・ 【プログラム】 } #br 例)foreach x in ID Year Date { replace `x'=0 if `x'==. replace val99 = 1 if val0=="`x'" } 例)foreach i in 2 5 17 { replace val`i'=0 if val`i'==. replace val99 = 1 if val0==`i' } 上記は、次のように記述しても同じである(上が「varlist」で、下が「numlist」となることに注意。)。 例)foreach x of varlist ID Year Date { replace `x'=0 if `x'==. replace val99 = 1 if val0=="`x'" } 例)foreach i of numlist 2 5 17 { replace val`i'=0 if val`i'==. replace val99 = 1 if val0==`i' } 頭文字で共通する変数列(「val1,val2,val3」や「x1,x11,x100」など)を選ぶ方法 ※一つだの変数(「ID」など)も並記できる。 例)foreach x of varlist var* x* ID { replace val`x'=0 if val`x'==. replace val99 = 1 if val0==`x' } ***平均の表を作成 [#mefec9ab] タイプ2に関係する変数hogehogeの平均の表を作成する。 table gyou retsu if type==2, contents(mean hogehoge) **データの結合 [#lfac481f] -データが一部しか共通しない場合(※もちろん全てが共通していても使える)~ 主データと追加データに共通する変数については、(「update」オプションを付けない場合には)主データが採用される。空白(欠損値)の部分であっても主データが優先される。~ 「update」オプションを付けると、空白(欠損値)の場合のみ追加データの値が採用される。 use 【追加データ】 sort 【両データで共通する変数名】 save 【追加データ】 clear use 【主データ】 sort 【両データで共通する変数名】 merge 【両データで共通する変数名】 using 【追加データ】, update #br 例)use data2.dta sort ID save data2.dta clear use data1.dta sort ID merge ID using data2.dta, update #br 「update」オプションを利用しない場合には、次のように省略して記述できる。 例)use data2.dta sort ID save data2.dta use data1.dta, clear merge ID using data2.dta, sort -3つ以上のデータを結合する。 use 【追加1データ】 sort 【3つのデータで共通する変数名】 save 【追加1データ】 clear use 【追加2データ】 sort 【3つのデータで共通する変数名】 save 【追加2データ】 clear use 【主データ】 sort 【3つのデータで共通する変数名】 merge 【3つのデータで共通する変数名】 using 【追加1データ】, update drop _merge sort 【3つのデータで共通する変数名】 merge 【3つのデータで共通する変数名】 using 【追加2データ】, update drop _merge #br 例)use data2.dta sort ID save data2.dta clear use data3.dta sort ID save data3.dta clear use data1.dta sort ID merge ID using data2.dta, update drop _merge sort ID merge ID using data3.dta, update drop _merge #br 「update」オプションを利用しない場合には、次のように省略して記述できる。 例)use data2.dta sort ID save data2.dta use data3.dta, clear sort ID save data3.dta use data1.dta, clear merge ID using data2.dta, sort drop _merge merge ID using data3.dta, sort drop _merge **Tips [#s2474fee] -表示等の日本語化 http://www.lightstone.co.jp/stata/ug000.htm -log をとる。 log using log.txt, replace text -回帰結果の表をtex形式にする(要[[outtex.ado>http://ideas.repec.org/c/boc/bocode/s420101.html]])。 outtex, level detail -表をtex形式にする。 latab var_name if jogai == "n" & group=="G" & sp==1 -数値にlabelを付ける。 label define new_var_name 0 "0\%" 1 "0\%-16.7\%" 2 "16.7\%-33.3\%" 3 "33.3\%-50\%" 4 "50\%-" label values var_name new_var_name -トービット分析の例 tobit offer_rate sp yd r2 r3 if jogai == "n" & group=="G" & member == 1 , ll(0) ul(1) **パネル [#xe31cc19] [[別ページ>Stata/パネル]]にまとめる。 **オンライン・マニュアル類 [#td5f4d37] -Stataの「使える」adoファイル http://homepage3.nifty.com/sociology/index_folder/stata_ado.html -統計パッケージメモ http://www.kagitaku.com/play/stats-package.php -R and Stata Handouts http://www.stat.uchicago.edu/~collins/resources/handouts.html -Stata......φ(..`o)memo http://statamemo.jugem.jp/ -他人のコンテンツを勝手に用途順に並べ替えてみるテスト(STATAの細かいtips) http://d.hatena.ne.jp/sdmt/20061106/1162633144