2010年10月04日
配列の利用
配列処理について説明します。
配列とは、「一連の処理を、複数の変数に対して一括して行う」処理のことです。
(※ただ、厳密には変数に限らず使えるようです)
・例)配列による一括欠損値処理
「配列に含めたい変数全て」は、:の後ろの「X」に順番に入れられ、999を.にする、というrecode処理をかけられるようになります。
配列とは、「一連の処理を、複数の変数に対して一括して行う」処理のことです。
(※ただ、厳密には変数に限らず使えるようです)
・例)配列による一括欠損値処理
for varlist 配列に含めたい変数全て : code X 欠損値コード =.
「配列に含めたい変数全て」は、:の後ろの「X」に順番に入れられ、999を.にする、というrecode処理をかけられるようになります。
2010年02月24日
変数は定義し直すべき?
dta形式のデータを重回帰分析するとき、
regress 目的変数 説明変数1 説明変数2 ・・・
としますが、
説明変数にもとのdta形式のデータの変数名をそのまま入力すると、うまく回帰できませんでした。
分析結果が(drop)となってしまいます。(ちなみにbyte型のダミー変数でした)
具体的には、
indepvarsA
だったものを、doファイルにおいて
gen indepvarsB=0
replace indepvarsB=1 if indepvarsA==1
と定義し、
indepvarsB
を説明変数にして回帰すると、うまくいきました。
理由について今後勉強します。
regress 目的変数 説明変数1 説明変数2 ・・・
としますが、
説明変数にもとのdta形式のデータの変数名をそのまま入力すると、うまく回帰できませんでした。
分析結果が(drop)となってしまいます。(ちなみにbyte型のダミー変数でした)
具体的には、
indepvarsA
だったものを、doファイルにおいて
gen indepvarsB=0
replace indepvarsB=1 if indepvarsA==1
と定義し、
indepvarsB
を説明変数にして回帰すると、うまくいきました。
理由について今後勉強します。
2010年02月24日
多重共線性とvif
回帰分析において、強い相関関係にある説明変数を同時に投入すると、分析結果が不安定になるような現象を、多重共線性といいます。多重共線性は、ときに回帰係数の符号を逆転させるほどの影響力を持つことがあります。
多重共線性の危険性を検討するのにはvifという指標があり、これが高いと多重共線性における影響がより懸念されます。
(例、vif = 1 ⇒ 説明変数同士の相関関係は分析に影響しない ; vif = 5 ⇒ 説明変数同士の相関関係に注意する必要がある)
Stataにおいては、重回帰分析の直後に
vif
というコマンドを入力するだけで、すべての説明変数のvifを表示することができます。
多重共線性の危険性を検討するのにはvifという指標があり、これが高いと多重共線性における影響がより懸念されます。
(例、vif = 1 ⇒ 説明変数同士の相関関係は分析に影響しない ; vif = 5 ⇒ 説明変数同士の相関関係に注意する必要がある)
Stataにおいては、重回帰分析の直後に
vif
というコマンドを入力するだけで、すべての説明変数のvifを表示することができます。
2010年02月24日
データ処理コマンド(基本)
現時点で(私の)認識している、基本的なデータ処理コマンドを列挙します。
【変数をいじる系】
generate:新しい変数を作る
replace:変数の値を関数などを使って置き換える
recode:特定の値を別の値に置き換える
drop:変数をデータから削除する
rename:変数の名前を変える
xi:元の変数の各値に対応したダミー変数を作る
【全般系】
save:dta形式データの保存
use:dta形式データの読み込み
browse:データブラウザ(一覧)の表示
コマンドの追加や、それぞれのコマンドの使用法については、追々更新していきます。
【変数をいじる系】
generate:新しい変数を作る
replace:変数の値を関数などを使って置き換える
recode:特定の値を別の値に置き換える
drop:変数をデータから削除する
rename:変数の名前を変える
xi:元の変数の各値に対応したダミー変数を作る
【全般系】
save:dta形式データの保存
use:dta形式データの読み込み
browse:データブラウザ(一覧)の表示
コマンドの追加や、それぞれのコマンドの使用法については、追々更新していきます。
2010年02月24日
度数分布の表示
Stataに入力されたデータにおいて、ある変数の度数分布を表示させたいときには、
tabulate 表示させたい変数名
と入力します。
結果、左から
変数名 , Freq. , Percent , Cum.
(変数の値、頻度、比率、累積比率)
が表示されます。
※tabulateのコマンドは、
ta
や
tab
でも代用可能です。
慣れたらこちらのほうが早いでしょう。
tabulate 表示させたい変数名
と入力します。
結果、左から
変数名 , Freq. , Percent , Cum.
(変数の値、頻度、比率、累積比率)
が表示されます。
※tabulateのコマンドは、
ta
や
tab
でも代用可能です。
慣れたらこちらのほうが早いでしょう。
2010年02月24日
基本統計量の出し方
muratsさんより運営を引き継ぎましたandyです。
記念すべき初投稿です(^^)v
stataはじめたばかりなので、簡単なコトから確認していこうと思います。
-------------------------------------------------------------------------------------------------
まずは基本統計量です。
doファイルを使ったりして読み込んだデータの確認のため、基本統計量を表示します。
コマンドは、
summarize
です。これにより、左から順に
variable , Obs , Mean , Std. Dev , Min , Max
(変数名、サンプル数、平均値、標準偏差、最小値、最大値)
と表示されます。
※コマンド入力後、Resultウィンドウに---more---と表示された時は、
ⅰ)スペース一押しで1画面分
ⅱ)Enter一押しで1行分
結果の続きを表示してくれます。
-----------------------------------------------------------------------------------------------------
ちなみに、読み込んだデータの確認のため、変数の度数分布表を表示する
tabulate
というコマンドもあります。
そちらについては、またの機会に。 続きを読む
記念すべき初投稿です(^^)v
stataはじめたばかりなので、簡単なコトから確認していこうと思います。
-------------------------------------------------------------------------------------------------
まずは基本統計量です。
doファイルを使ったりして読み込んだデータの確認のため、基本統計量を表示します。
コマンドは、
summarize
です。これにより、左から順に
variable , Obs , Mean , Std. Dev , Min , Max
(変数名、サンプル数、平均値、標準偏差、最小値、最大値)
と表示されます。
※コマンド入力後、Resultウィンドウに---more---と表示された時は、
ⅰ)スペース一押しで1画面分
ⅱ)Enter一押しで1行分
結果の続きを表示してくれます。
-----------------------------------------------------------------------------------------------------
ちなみに、読み込んだデータの確認のため、変数の度数分布表を表示する
tabulate
というコマンドもあります。
そちらについては、またの機会に。 続きを読む
2009年10月20日
ダミー変数を作る
路線コード(rosen_cd)
という変数に
12
18
45
・
・
・
などという値が入っているとします。
路線コードが1のダミー、路線コードが2のダミー変数・・・
と一つ一つ手作業で作っていくのは面倒です。
そこで使うのがxiコマンドです
【コマンド】
xi i.ダミー化したい変数名,noomit
です。
<例>
たとえば
路線コード(rosen_cd)に入っているすべての値についてダミー変数を作りたいときは
xi i.rosen_cd,noomit
このままだと生成されたダミー変数の名前の一番前のところにアンダーバーが入ってしまいます。。
<結果>
_ensen_cd_12
_ensen_cd_18
_ensen_cd_45
この新しく作る変数の名前の前のところ(アンダーバーのところ)
に文字を設定することができます。
xi i.rosen_cd,pre(dmy) noomit
とすると
dmyensen_cd_12
dmyensen_cd_18
dmyensen_cd_45
となります。
そのほかにもダミー変数を作る方法があるようです。
ダミー変数の作り方は
石黒格著「Stataによる社会調査データの分析」(←別ウィンドウでアマゾンに接続します)に
もっと詳しく(他の方法も)載っていました。
という変数に
12
18
45
・
・
・
などという値が入っているとします。
路線コードが1のダミー、路線コードが2のダミー変数・・・
と一つ一つ手作業で作っていくのは面倒です。
そこで使うのがxiコマンドです
【コマンド】
xi i.ダミー化したい変数名,noomit
です。
<例>
たとえば
路線コード(rosen_cd)に入っているすべての値についてダミー変数を作りたいときは
xi i.rosen_cd,noomit
このままだと生成されたダミー変数の名前の一番前のところにアンダーバーが入ってしまいます。。
<結果>
_ensen_cd_12
_ensen_cd_18
_ensen_cd_45
この新しく作る変数の名前の前のところ(アンダーバーのところ)
に文字を設定することができます。
xi i.rosen_cd,pre(dmy) noomit
とすると
dmyensen_cd_12
dmyensen_cd_18
dmyensen_cd_45
となります。
そのほかにもダミー変数を作る方法があるようです。
ダミー変数の作り方は
石黒格著「Stataによる社会調査データの分析」(←別ウィンドウでアマゾンに接続します)に
もっと詳しく(他の方法も)載っていました。
2009年09月07日
データの一部を取り出す
タイトルのうまいつけ方が見当たらなかったのですが、
たとえば
登録日(touroku_date)という変数に
20080101
20090312
20071225
・
・
・
とデータが入っているとします。
これは上4桁が年を、その下2つが月を、下二桁が日にちを表しています。
これの「月」の部分だけとってきたい。というときのコマンドです。
コマンドは
【ステップ1、まず、変数全体をString型に変えます。】
gen 文字列型に変えた変数の名前 =string(変数名)
<例>
gen touroku_str=string(touroku_date)
【ステップ2、何文字目から何個とってくるかを指定します。】
gen byte 新しく作る変数名=real(substr(さっき作った文字型の変数名,何個目から,いくつ))
<例>5文字目から2文字とってきます。
gen byte touroku_tuki=real(substr(touroku_str,5,2))
です。
【これでうまくいかないときは・・・】
文字に変えるときに
gen touroku_str=string(touroku_date,"%11.0g")
としてみてください。
<参考資料>
http://www.stata.com/help.cgi?string_functions
たとえば
登録日(touroku_date)という変数に
20080101
20090312
20071225
・
・
・
とデータが入っているとします。
これは上4桁が年を、その下2つが月を、下二桁が日にちを表しています。
これの「月」の部分だけとってきたい。というときのコマンドです。
コマンドは
【ステップ1、まず、変数全体をString型に変えます。】
gen 文字列型に変えた変数の名前 =string(変数名)
<例>
gen touroku_str=string(touroku_date)
【ステップ2、何文字目から何個とってくるかを指定します。】
gen byte 新しく作る変数名=real(substr(さっき作った文字型の変数名,何個目から,いくつ))
<例>5文字目から2文字とってきます。
gen byte touroku_tuki=real(substr(touroku_str,5,2))
です。
【これでうまくいかないときは・・・】
文字に変えるときに
gen touroku_str=string(touroku_date,"%11.0g")
としてみてください。
<参考資料>
http://www.stata.com/help.cgi?string_functions
タグ :Stata