*Stata [#oa4bb7d4]
Ver.18が出ている。
Ver.14が出ている。
-新機能 http://www.lightstone.co.jp/stata/stata14_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