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 | . | 0 | 0 |
如果5這個人沒回答language這項,那依照我們上面的語法,先產生變數,然後把它的值指為0。這樣作的時候本來missing的值,也會被指為0。所以我們還要再補救一下:
replace dEnglish=. if missing(language)
replace dSpanish=. if missing(language)
在Stata中,missing的值我們通常都把它的值設為.。整個步驟這樣才算大功告成,完整語法如下:
gen dEnglish=0
replace dEnglish =1 if language==2
replace dEnglish=. if missing(language)
gen dSpanish=0
replace dSpanish =1 if language==3
replace dSpanish=. if missing(language)
下次介紹進階版:使用tabulate與gen產生虛擬變數。
標籤: 統計分析