View
102
Download
6
Embed Size (px)
Citation preview
TRUNG TÂM NGHIÊN CỨU CHÍNH SÁCH VÀ PHÁT TRIỂN
GiỚI THIỆU PHẦN MỀM XỬ LÝ SỐ LIỆU STATA
Quản lý số liệu trong Stata Log file
• Sử dụng log file: – Nếu bạn muốn ghi lại tất cả những gì bạn làm?– Chúng ta sử dụng log file.– Logfile chứa các câu lệnh và bảng kết quả, không chứa biểu đồ, đồ
thị.
• Để mở một log file: Từ menu vào File – Log – Begin hoặc gõ trực tiếp log using ten_log tại dòng lệnh. log using filename [, append replace [text|smcl]]
• Đuôi mở rộng của log file: .log; .smcl; .doc• Đóng logfile sử dụng câu lệnh
log close
Quản lý số liệu trong StataTạo dataset
• Một vài câu lệnh trong phần này: use, browse, edit, format, generate, list, merge, append, replace, save, set, sort, tabulate, label, keep, drop.
• Tạo một dataset: set obs #: tạo một dataset mới với số # quan sát và chưa có bất kỳ biến nào.
dùng lệnh tạo biến generate. Tạo mới: gõ edit tại dòng lệnh (ctrl + 7) hoặc Window data editor. Cú
pháp: edit [varlist] [if] [in] [, nolabel]• Mở dataset:
– Mở một data hệ thống: sysuse Ten_data_hethong– File đã có sẵn (File Open) hoặc dùng lệnh (use, clear)– Sử dụng dataset trên mạng: webuse
• Lưu dataset với save và saveold (dùng cho các version 8,9) save [filename] [, save_options]
• Xem dữ liệu (browser) browse [varlist] [if] [in] [, nolabel]
Quản lý số liệu trong StataTạo dataset
• sysuse auto (sử dụng một số dữ liệu sẵn có trong Stata)
• Chúng ta có thể xem các số liệu: File Example datasets
Quản lý số liệu trong StataTạo dataset
Sử dụng dataset trên mạngwebuse lifeexp : Sử dụng lifeexp được lưu tại http://www.stata-press.com/data/r10
Quản lý số liệu trong StataImport dữ liệu
Sử dụng StatTransferSử dụng câu lệnh insheetSử dụng câu lênh odbc
Quản lý số liệu trong Stata StatTransfer
Quản lý số liệu trong Statainsheet
• Đọc các file dữ liệu từ định dạng text bằng insheetinsheet [varlist] using filename [, options]
Một số options:– [no] double: xác định kiểu dữ liệu double (mặc định), nếu không
có thì kiểu dữ liệu sẽ là float.– tab: Các giá trị trong số liệu cách nhau bởi tab– comma: Các giá trị cách nhau bởi dấu phẩy– delimiter( “char”): Chúng ta có thể xác định kí tự trong số liệu– clear: xóa số liệu trong bộ nhớ– [no] names: mặc định tên biến là dòng đầu tiên. Nếu bạn xác định
no thì ngược lại
Quản lý số liệu trong Stata insheet (tiếp)
Để biết được loại file dữ liệu định dạng theo cách nào gõ type “tên_file”
Ví dụ:type “đường_dẫn_fem.dat” Xem dữ liệu theo định dạng loại gìinsheet using "E:\ebook\stata\Lecture\Data example\Handbook of Stata\fem.dat“, tab
Từ menu: File Import ASCII data created by a sheet
Quản lý số liệu trong Stata odbc
Các bạn sử dụng câu lệnh odbc cho excel odbc load, dsn("Excel Files;DBQ=d:\
Book1.xls") table("Sheet1$")File Import ODBC data source chọn
MS excel (chọn đường dẫn đến file excel)
Quản lý số liệu trong Stata (tiếp)Biến
Một số quy ước: độ dài tối đa của biến là 32 kí tự, nhãn để mô tả biến có độ dài tối đa là 224 kí tự.
Tạo biến (generate)Gán label và value label cho biến?
Quản lý số liệu trong Stata (tiếp)Biến
Có 2 cách gán giá trị và label của biến Dùng menu Dùng giao diện dòng lệnh
Quản lý số liệu trong Stata (tiếp)Biến (dùng menu)
generate q1=. (Tạo ra biến q1 và gán cho biến q1 giá trị missing )
Gán nhãn cho biến: Data Labels Label variable
Quản lý số liệu trong Stata (tiếp)Biến (dùng menu)
Định nghĩa một nhãn giá trị: Data Labels Label values Define or modify value labels
Quản lý số liệu trong Stata (tiếp)Biến(dùng menu)
Bây giờ, khi đã định nghĩa một tên nhãn giá trị (yesno), chúng ta phải gán cho một biến nào đó? (q1)
Vào Data Labels Label Values Assign value label to variable
Quản lý số liệu trong Stata (tiếp)Biến( giao diện dòng lệnh)
Thao tác với tại dòng lệnhlabel variable q1 “Bạn đã lập gia đình chưa?”label define yesno 1 “yes” 2 “no”label values q1 yesno
Nếu chúng ta muốn thêm nhãn giá trị cho biến q1, ta làm như sau:label define yesno 8 “don’t know”,add
Nếu chúng ta chỉnh sửa nhãn giá trị cho biến q1, ta làm như sau:label define yesno 8 “No Responding", modify
Quản lý số liệu trong Stata (tiếp)Một số thao tác trên biến
Mô tả cấu trúc dữ liệu hoặc biến ? (describe)des varlist
Để đổi tên biến: rename old_var new_var.Muốn xóa một biến trong Stata? (drop hoặc keep)
Ngược lại với drop là keepdrop var1 [var2….]
drop if var1 >=15
Quản lý số liệu trong Stata (tiếp)Cấu trúc của file dữ liệu
Một ai đó đưa cho chúng ta một dữ liệu mà không có bảng hỏi, chúng ta muốn kiểm tra cấu trúc dữ liệu, các khoảng giá trị của biến, các nhãn của biến, các nhãn của giá trị
Sử dụng: codebook2 hoặc codebook: hiển thị codebook cửa dữ
liệu describe: mô tả số liệu hoặc mô tả biến như đã giới
thiệu ở trên list: dùng để hiển thị giá trị của biến trên màn hình
kết quả (thường kết hợp với if, in)
Quản lý số liệu trong Stata (tiếp)Chuyển biến kiểu số sang chuỗi và ngược lại
destring: chuyển biến kiểu chuỗi (kí tự) sang biến kiểu sốdestring [varlist] , {generate(newvarlist)|replace} [destring_options]
tostring: chuyển biến kiểu số sang kiểu chuỗitostring varlist , {generate(newvarlist)|replace} [tostring_options]
Ví dụ: sử dụng số liệu destring1.dta, tostring.dtaChúng ta có thể cộng 2 hay nhiều biến string được với
nhau.
Quản lý số liệu trong Stata (tiếp)Hàm định dạng - format
Cú pháp: format varlist %fmtVới %fmt: %w.df: w là chiều dài của số đó, d là số chữ số sau phần
thập phân ví dụ: 1.5235 nếu định dạng %8.2f 1.52 %w.0g: w chiều dài của số đó
int %8.0g byte %8.0g long %12.0g float %9.0g double %10.0g
str# %#sVí dụ: sử dụng số liệu auto
sysuse autoformat length %9.0g
Quản lý số liệu trong Stata (tiếp)Hàm toán học và Toán tử
Chúng ta muốn tính toán, hiển thị kết quả như một máy tính: display
Các hàm toán học: mod(x,y), sign(x), max(x1,x2, …x3)
Ví dụ: Muốn lấy phần dư của 5 chia cho 2display mod(5,2) kết quả bằng 1
Kết hợp lệnh gen với các hàm toán họcví dụ: gen phandu = mod(5,2)
Quản lý số liệu trong Stata (tiếp) Hàm toán học và Toán tử
Trước tiên, chúng phải biết các toán tử so sánh và toán tử logic và các phép cộng, trừ, nhân…
Toán tử Ý nghĩa
== So sánh bằng
!= (~=) So sánh không bằng
> Lớn hơn
< Nhỏ hơn
>= Lớn hơn hoặc bằng
<= Nhỏ hơn hoặc bằng
& And
| Or
!(~) not
Quản lý số liệu trong Stata (tiếp)if và in
Cú pháp lệnh if
if biểu_thức
Ví dụ: Số liệu “stock 2 final.dta”.summarize q1 if q34 ==1
Chúng ta có thể kết hợp các toán tử với lệnh generate và replace.
Ví dụ:
gen var1 = 3^2 * 5 và
replace var1 = 1 if var1 ==.
Quản lý số liệu trong Stata (tiếp)if và in
Cú pháp: cau_lenh in khoangKhoảng:
#: Hiển thị giá trị của biến thứ ##/#: từ vị trị nào đến vị trí nàof/#: từ vị trí đầu tiên đến vị trí ##/l(last): từ vị trí # đến cuối
Ví dụ: list q1 1/10 hiển thị giá trị của q1 từ vị trí 1 đến 10
Quản lý số liệu trong Stata (tiếp)egen
Là hàm mở rộng của generateCú pháp
egen [type] newvar = fcn(arguments) [if] [in] [, options]
Ví dụ: Tính tổng thu nhập ngoài tiền công, lương từ câu 12a đến câu 12e (muc4a.dta) Bạn dùng help egen tại dòng lệnh để tìm hiểu thêm các option của lệnh egen.
Quản lý số liệu trong Stata (tiếp)Mã hóa lại biến
Chúng ta cần mã hóa lại biến. Ví dụ biến q1 được gán với nhãn giá trị là yesno (recode).recode q1 (1=0) (2=1)
Tương với lệnh replace kết hợp với ifreplace q1=0 if q1==1replace q1 = 1 if q1 == 2
Chúng ta muốn tạo ra một biến mới new và nhãn giá trị new_q1.recode q1 (1=0 “yes”) (2=1 “no”), pre(new) label(new_q1)
Quản lý số liệu trong Stata (tiếp)Mã hóa lại biến
Một câu hỏi đặt ra là chúng ta muốn recode biến theo khoảng giá trị của biến đó? ta làm như thế nào?
Ví dụ biến tuổi (age): 0 – 17: 1 Dưới độ tuổi lao động; 18-65:2 Độ tuổi lao động; 67 trở đi: 3 Ngoài độ tuổi lao động; và tạo ra một biến mới là newage và nhãn giá trị new_agerecode age (0/17 = 1 “Dưới độ tuổi lao động”) (18/65=2 “Độ tuổi lao động”) (65/105 = 3 “Ngoài độ tuổi lao động”), pre(newage) label(new_age)
Quản lý số liệu trong Stata (tiếp)Mã hóa lại biến (Bài tập)
Dùng số liệu VHLSS06 (phần thông tin chung) muc1a.dta
Câu hỏi: Tính tuổi thành viên(indage) từ năm sinh Giới tính của chủ hộ (hhsex) Tổng số con (hhchild) của chủ hộ
Quản lý số liệu trong Stata (tiếp)Quản lý bộ nhớ
Mặc định Stata thiết lập bộ nhớ là 10MB, nhưng nếu dữ liệu của bạn lớn hơn 10MB thì sao? (set mem kich_cỡ) – set mem 120m.
Muốn màn hình kết quả hiển thị tất cả kết quả mà không có more? set more off Câu lệnh này rất được hay dùng trong dofile.
Quản lý số liệu trong Stata (tiếp)Một số ép kiểu dữ liệu
Hàm int(), float(), string(). chúng ta muốn ép từ kiểu dữ liệu này sang kiểu dữ liệu khác Vậy nó khác gì với các hàm chuyển kiểu như destring() và tostring()?
Ví dụ: display int(3.45) kết quả sẽ là 3Khoảng biến: var1-var5 (var1 var2 var3 var4 var5).Bạn cũng có thể dùng các kí tự ?, * để thay thế cho các
kí tự; ví dụ: var* - sẽ tìm tất cả các biến bắt đầu bằng var.
Quản lý số liệu trong Stata (tiếp)Nối số liệu
Nối 2 hay nhiều file dữ liệu stata (append hoặc merge).Nối 2 số liệu theo observation (case) ta sử dụng append.Nối 2 số liệu theo biến ta sử dụng merge (chú ý khi trước
khi sử dụng lệnh merge thì cả 2 số liệu phải được sắp xếp – lệnh sort).
Quản lý số liệu trong Stata (tiếp)Nối số liệu (append)
Cú pháp: append using filename [, options]options: keep(varlist) Chúng ta có thể chỉ nối một số biến cụ thể từ số liệu using được xác định trong varlist, nếu không có xác định keep thì mặc định là tất cả các biến sẽ được nối.
Sử dụng 2 số liệu even.dta và odd.dtause Đường_dẫn_đến số liệu odd.dta
append using Đường_dẫn_đến_số_liệu even.dtalist Hiển thị kết quả sau khi nối.
Quản lý số liệu trong Stata (tiếp)Nối số liệu
Trong lệnh merge số liệu master là trong bộ nhớ, còn số liệu using là dữ liệu để merge vào.
merge [varlist] using filename [filename ...] [, options]
Mặc định tạo ra biến _merge nhận 3 giá trị 1 Quan sát chỉ có trong số liệu master 2 Quan sát chỉ có trong số liệu using 3 Quan sát có cả trong master và using
Merge bạn có thể quan hệ 1-1, 1-nhiều, nhiều nhiều
Quản lý số liệu trong Stata (tiếp)Nối số liệu
Ví dụ 1: nối 1-1, trước khi nối ta phải sort số liệu trước. Chúng ta vẫn sử dụng 2 số liệu even.dta và odd.dtause “Đường_dẫn_chứa_file_even.dta”,clearmerge using “Đường_dẫn_chứa_file_odd.dta”
Ở đây, file even.dta là master file, còn file odd.dta là using file
Ví dụ 2: sử dụng biến để nối ( thường là biến id)use “Đường_dẫn_chứa_file_even.dta”,clearsort number // sắp số liệu theo chiều tăng dần của biến numbersave, replace // lưu và thay số liệu trong fileuse “Đường_dẫn_chứa_file_odd2.dta”,clear là số liệu master.sort number // sắp số liệu theo chiều tăng dần của biến numbermerge number using “Đường_dẫn_chứa_file_even.dta”
Quản lý số liệu trong Stata (tiếp)Nối số liệu
Ví dụ 3: merge 2 số liệu province và merge province (master). chúng ta sẽ nối theo biến procode.
Quản lý số liệu trong Stata (tiếp)Tạo số ngẫu nhiên
Tạo dữ liệu ngẫu nhiên và mẫu ngẫu nhiên.Một số hàm:
uniform() tạo số ngẫu nhiên trong khoảng (0,1). set obs rownum: thiết lập số observation cho một dữ liệu set seed số_bất_kỳ: có tác dụng biết số ngẫu nhiên đó lần sau. sample: lấy số liệu ngẫu nhiên từ dữ liệu sẵn có. sample có 2 dạng là
chọn theo %; sample n(phần trăm) và chọn theo số lượng; sample n, count
Quản lý số liệu trong Stata (tiếp)Sử dụng biến hệ thống
Khi số liệu đã có trong bộ nhớ thì _N đại diện cho tổng số quan sát
_n đại diện cho quan sát số: _n=1 quan sát thứ nhất, _n=2 cho quan sát thứ hai, đến _n=_N cho quan sát cuối cùng.
Chúng ta có thể ứng dụng _n để tạo chỉ mục.gen caseID = _n
Quản lý số liệu trong Stata (tiếp) Sử dụng biến hệ thống
Trong stata còn cho phép hiển thị dữ liệu của một ô cụ thể trong dữ liệu.
Biến hệ thống _n còn có ứng dụng trong dữ liệu dạng series. Nếu chúng ta có dữ liệu hàng ngày về giá của một cổ phiếu cụ thể trên thị trường chứng khoán với tên biến là open. Như vậy, chúng ta muốn tính giao động giá của ngày hôm sau so với hôm trước:sysuse sp500
gen difopen = open – open[_n-1]
Bài tập
Lưu lại nhật kí làm việc của mìnhThêm nhãn, nhãn giá trị trong bảng hỏi
VHLSS2006 phần số liệu muc4a (thu nhập) cho các câu m4ac1a, m4ac1b, m4ac1c, m4ac2, m4ac3, m4ac10b. Từ đó tính tổng thu nhập (câu 11 + câu 12f + câu 21 + câu 22f + câu 25 trong bảng hỏi)
Sử dụng số liệu muc1a, tạo một biến reg8 (phân thành 8 vùng) từ tỉnh; 1 "Red River Delta" 2 "North East" 3 "North West" 4 "North Central Coast“ 5 "South Central Coast" 6 "Central Highlands" 7 "South East" 8 "Mekong River Delta"
Mô tả thống kêCác lệnh: summarize, tabulate, tabstat,tab1, tab2.Mô tả thống kê với các biến liên tục.Xử lý các giá trị missing và ví dụ.Bảng tần suất và bảng tương quan quan 2 chiều(cross-
tabulation).Export dữ liệu
Mô tả thống kê với các biến liên tục
Để mô tả thống kê với biến liên tục ta sử dụng lệnh nào trong Stata? summarize
Trong lệnh summarize: chỉ tính bị các observation không có missing. Sẽ loại bỏ các observation có giá trị missing.
bysort kết hợp với summarize. Để tính summarize và tách theo biến rời rạc.
summarize kết hợp với if
Mô tả thống kê với các biến liên tục (tiếp)
Ví dụ: muc4a.dta, tính tổng thu nhập trung bình, theo ngành nghề làm việc (câu 10a)Kết hợp bysort với sumbysort m4ac10a: sum tongTN Chia theo ngành nghề
Kết hợp if với sumsum tongTN if m4ac10a ==4 & m4ac10b==1 Mô tả tongTN theo kinh tế NN và là cán bộ công chứcsum tongTN if m4ac10a ==6 Mô tả tongTN theo kinh tế tư nhân
Mô tả thống kê với các biến liên tục (tiếp)
tabstat: cung cấp cho bạn mô tả thống kê theo ý muốn của bạn.Từ ví dụ trước: ta muốn hiển thị mean, sd, median, variance, ntabstat m4ac11, sta(mean sd median variance n)
Mô tả thống kê với các biến liên tục (tiếp)
tabstat kết hợp với by
tabstat m4ac11, sta(mean sd median variance n) by ( m4ac10b)
m4ac10b mean sd p50 variance N
có 16785.07 10389.17 15600 1.08e+08 716
không 11715.51 9470.253 9550 8.97e+07 384
Total 15015.33 10359.63 14000 1.07e+08 1100
Nếu bạn muốn tính thống kê với giá trị missing của biến điều kiện (q34) thì ta chỉ cần gõ thêm lựa chọn missing như sau
tabstat m4ac11, sta(mean sd median variance n) by ( m4ac10b) missing
Chúng ta có thể định dạng lại số liệu bằng lựa chọn format
tabstat m4ac11, sta(mean sd median variance n) by ( m4ac10b) format(%9.1f)
Xử lý các giá trị missing và ví dụ
Có 27 giá trị missing có thể có trong Stata, mặc định giá trị missing là dấu chấm(.)
Còn lại là 26 giá trị missing trùng với 26 kí tự trong bảng chữ cái nhưng có dấu chấm ở đằng trước(.a, .b, .c,…..).
Các giá trị missing trong Stata được coi như các số vô cùng lớn.
Xử lý các giá trị missing và ví dụ(tiếp)
Ví dụ: chúng ta muốn tính tính summarize (mô tả thống kê) với dữ liệu auto, ta tính mean của biến price, theo rep78.
sysuse auto
summarize price if rep78>3 kết quả bảng 1.1
sum price if rep78>3 & rep78 <. Kết quả bảng 1.2
Variable Obs Mean Std. Dev. Min Maxprice 34 6073 2315.435 3748 12990
Variable Obs Mean Std. Dev. Min Maxprice 29 6011.37
9 2055.312
3748 11995
Bảng 1.1
Bảng 1.2
Bảng tần suất 1 chiều
Để mô tả các biến rời rạcCú pháp: có 2 câu lệnh cho chúng ta lựa chọn
tabulate varname [if] [in] [weight] [, tabulate1_options]
tab1 varlist [if] [in] [weight] [, tab1_options] chạy cùng một lúc nhiều biếnVí dụ: tính frequencies giới tính của chủ hộtabulate m1ac2 if matv ==1 Chạy nhiều frequecies cùng lúc tab1 m1ac2 m1ac3 m1ac6
Bảng tần suất và bảng tương quan quan 2 chiều(cross-tabulation)
Sử dụng bảng tần suất và bảng tương quan 2 chiều với tabulate.
Cú pháp: có 2 lựa chọntabulate varname1 varname2 [if] [in] [weight] [, options]
tab2 varlist [if] [in] [weight] [, options] tính tần suất 2 chiều theo cách khác
Mô tả thống kê theo bảng của Mean, Median, và các đại lượng thống kê khác Ví dụ: tabulate var, sum(varlist) Tương tự như tabstat kết
hợp với by Với var là biến rời rạc, varlist là biến liên tục
Mô tả thông kê (tiếp)Export dữ liệu
Dùng outsheet tabout để export dữ liệu ra các định dạng khác nhau như excel từ số liệu gốc.outsheet [varlist] using filename [if] [in] [, options]
Ví dụkeep make price mpg rep78 foreignkeep 1/10outsheet make price mpg re78 foreign using “D:\test.xls”, delimiter(“;")
Mô tả thông kê (tiếp)Export dữ liệu
tabform export dữ liệu bằng cách tính mean, sd, citabform varlist using filename [if] [in] [aw fw], [ by(varname) sd se ci level (#) nototal bdec(#) sdbracket cibrace mte st mtprob mtse mtbdec vertical ]
Ví dụ:tabform price mpg trunk weight using "D:\test.xls", by(foreign) sd ci level(90) bdec(2) sdbracket cibrace
Mô tả thông kê (tiếp)Export dữ liệu
Dùng log file, với đuôi mở rộng là file doc