作者mushiue (mushiue)
看板NCHU-AE98
標題[轉錄]我常用到的stata命令(二)
時間Thu Nov 18 20:49:15 2010
我常用到的stata命令:
(續)
實證工作中往往接觸的是原始資料。這些資料沒有經過整理,有一些錯漏和不統一的地方
。比如,對某個變數的缺失觀察值,有時會用點,有時會用-9,-99等來表示。回歸時如
果使用這些觀察,往往得出非常錯誤的結果。還有,在不同的資料檔案中,相同變數有時
使用的變數名不同,會給合併資料造成麻煩。因此,拿到原始資料後,往往需要根據需要
重新生成新的資料庫,並且只使用這個新庫處理資料。這部分工作不難,但是非常基礎。
因為如果在這裡你不夠小心,後面的事情往往會白做。
假設你清楚地知道所需的變數,現在要做的是檢查資料、生成必要的資料並形成資料庫供
將來使用。檢查資料的重要命令包括codebook,su,ta,des和list。其中,codebook提
供的資訊最全面,缺點是不能使用if條件限制範圍,所以,有時還要用別的幫幫忙。su空
格加變數名報告相應變數的非缺失的觀察個數,均值,標準差,最小值和最大值。ta空格
後面加一個(或兩個)變數名是報告某個變數(或兩個變數二維)的取值(不含缺失值)
的頻數,比率和按大小排列的累積比率。des後面可以加任意個變數名,只要資料中有。
它報告變數的存儲的類型,顯示的格式和標籤。標籤中一般記錄這個變數的定義和單位。
list報告變數的觀察值,可以用if或in來限制範圍。所有這些命令都可以後面不加任何變
數名,報告的結果是正在使用的資料庫中的所有變數的相應資訊。說起來蒼白無力,打開
stata親自實驗一下吧。
順帶說點兒題外話。除了codebook之外,上述統計類的命令都屬於r族命令(又稱一般命
令)。執行後都可以使用return list報告儲存在r()中的統計結果。最典型的r族命令
當屬summarize。它會把樣本量、均值、標準差、方差、最小值、最大值、總和等統計資
訊儲存起來。你在執行su之後,只需敲入return list就可以得到所有這些資訊。其實,
和一般命令的return命令類似,估計命令(又稱e族命令)也有ereturn命令,具有報告,
儲存資訊的功能。在更複雜的程式設計中,比如對回歸分解,計算一些程式中無法直接計
算的統計量,這些功能更是必不可少。
檢查資料時,先用codebook看一下它的值域和單位。如果有-9,-99這樣的取值,查一下
問卷中對缺失值的記錄方法。確定它們是缺失值後,改為用點記錄。命令是replace (變
數名)=. if (變數名)==-9。再看一下用點記錄的缺失值有多少,作為選用變數的一個依
據。
得到可用的資料後,我會給沒有標籤的變數加上注解。或者統一標籤;或者統一變數的命
名規則。更改變數名的命令是ren (原變數名)空格(新變數名)。定義標籤的命令是
label var (變數名)空格”(標籤內容)”。整齊劃一的變數名有助於記憶,簡明的標
籤有助於明確變數的單位等資訊。
如果你需要使用通過原始變數派生出的新變數,那麼就需要瞭解gen,egen和replace這三
個命令。gen和replace常常在一起使用。它們的基本語法是gen (或replace)空格(變數
名)=(運算式)。二者的不同之處在于gen是生成新變數,replace是重新定義舊變數。
虛擬變數是我們常常需要用到的一類派生變數。如果你需要生成的虛擬變數個數不多,可
以有兩種方法生成。一種是簡明方法:gen空格(變數名)=((限制條件))[這外面的
小括弧是命令需要的,裡面的小括弧不是命令需要的,只是說明“限制條件”並非命令]
。如果某個觀察滿足限制條件,那麼它的這個虛擬變數取值為1,否則為0。另一種要麻煩
一點。就是
gen (變數名)=1 if (取值為一限制條件)
replace(相同的變數名)=0 if (取值為零的限制條件)
兩個方法貌似一樣,但有一個小小的區別。如果限制條件中使用的變數都沒有任何缺失值
,那麼兩種方法的結果一樣。如果有缺失值,第一種方法會把是缺失值的觀察的虛擬變數
都定義為0。而第二種方法可以將虛擬變數的取值分為三種,一是等於1,二是等於0,三
是等於缺失值。這樣就避免了把本來資訊不明的觀察錯誤地納入到回歸中去。下次再講如
何方便地生成成百上千個虛擬變數。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.120.95.44