Stata是一套滿簡單、易學的統計軟體,最近在用它跑問卷分析,所以就產生了不少虛擬變量(dummy variables),於是就簡單寫篇教學文吧!
如果你拿到一個資料像是這樣的:
| id |
language |
| 1 |
1 |
| 2 |
1 |
| 3 |
2 |
| 4 |
3 |
language的數字代表不同的語言,1對應到Chinese,2對應到English,3對應到Spanish。要產生dummy variable,在stata最土法煉鋼的方式就是用gen指令(generate的縮寫,在stata輸入gen就行了)先產生一個變數,然後在用replace 將language的值指派給dummy variable。
Language有三個值,我們只要產生3-1=2 個虛擬變量,這點非常重要,一定要弄對,不然辛苦了半天跑出來的結果會非常怪。當然也有人傾向產生3個虛擬變量,到時候跑regression的時候少放一個當作是reference group,但一定要記得少放才行啊!
那我們就以Chinese為reference group,所以我們就不需要產生Chinese這個虛擬變量,而是產生dEnglish, dSpanish這兩個。開頭的d表示是虛擬變量,以示分別,免得自己弄錯。
gen是產生變數的指令,所以我們要先產生dEnglish與dSpanish。
gen dEnglish=0
gen dSpanish=0
再來就是要給這兩個新的變數1這個值。language欄位中2的值表示English,所以用replace把值指過去
replace dEnglish =1 if language==2
replace dSpanish =1 if language==3
注意:language==是兩個等號,不是筆誤。比較數值的時候用==,指派數值的時候用=。
很多人會搞混的一點就是:為什麼dEnglish跟dSpanish都要=1?產生虛擬變量的目的就是把上述的表格變成下面這樣:
| id |
language |
dEnglish |
dSpanish |
| 1 |
1 |
0 |
0 |
| 2 |
1 |
0 |
0 |
| 3 |
2 |
1 |
0 |
| 4 |
3 |
0 |
1 |
我們回顧一下每個變數的定義。Language是母語,dEnglish的定義則是此人的母語是English,是的話值就是1,不是的話值就是0。dSpanish同理可推,如母語為Spanish值為1,否的話值為0。所以上面的語法才會dEnglish與dSpanish的值為1。
想一想,上面這樣寫有什麼問題?如果我們的table像下面這樣,問題就出現了:
| id |
language |
dEnglish |
dSpanish |
| 1 |
1 |
0 |
0 |
| 2 |
1 |
0 |
0 |
| 3 |
2 |
1 |
0 |
| 4 |
3 |
0 |
1 |
| 5 |
. |
…