You are on page 1of 51

GiỚI THIỆU PHẦN MỀM XỬ

LÝ SỐ LIỆU STATA

TRUNG TÂM NGHIÊN CỨU CHÍNH SÁCH VÀ PHÁT


TRIỂN
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 Stata
Tạ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 Stata
Tạ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 Stata
Tạo dataset

Sử dụng dataset trên mạng


webuse lifeexp : Sử dụng lifeexp được lưu tại
http://www.stata-press.com/data/r10
Quản lý số liệu trong Stata
Import dữ liệu

Sử dụng StatTransfer


Sử dụng câu lệnh insheet
Sử dụng câu lênh odbc
Quản lý số liệu trong Stata
StatTransfer
Quản lý số liệu trong Stata
insheet

• Đọc các file dữ liệu từ định dạng text bằng insheet


insheet [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ệnh


label 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à keep
drop 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ỗi
tostring varlist , {generate(newvarlist)|replace} [tostring_options]
Ví dụ: sử dụng số liệu destring1.dta, tostring.dta
Chú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 %fmt
Vớ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# %#s
Ví dụ: sử dụng sốliệu auto
sysuse auto
format 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 2
display 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ọc
ví 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 khoang


Khoảng:
#: Hiển thị giá trị của biế n thứ #
#/#: từ vị trị nào đến vị trí nào
f/#: 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 generate


Cú 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 if
replace q1=0 if q1==1
replace 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_age
recode 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à 3
Khoả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.dta
use Đường_dẫn_đến sốliệu odd.dta
append using Đường_dẫn_đến_số_liệu even.dta
list  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.dta
use “Đường_dẫn_chứa_file_even.dta”,clear
merge 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”,clear
sort number // sắp sốliệu theo chiều tăng dần của biến number
save, replace // lưu và thay sốliệu trong file
use “Đườ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 number
merge 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ình


 Thê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 sum
bysort m4ac10a: sum tongTN  Chia theo ngành nghề
Kết hợp if với sum
sum tongTN if m4ac10a ==4 & m4ac10b==1  Mô tả
tongTN theo kinh tếNN và là cán bộ công chức
sum 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, n
tabstat 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

Bảng 1.1
Variable Obs Mean Std. Dev. Min Max
price 34 6073 2315.435 3748 12990

Variable Obs Mean Std. Dev. Min Max Bảng 1.2


price 29 6011.37 2055.312 3748 11995
9
Bảng tần suất 1 chiều

Để mô tả các biế


n rời rạc
Cú 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ến
Ví 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ọn
tabulate 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 foreign
keep 1/10
outsheet 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, ci
tabform 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

You might also like